[eccodes] 31/106: Upstream 2.0

Alastair McKinstry mckinstry at moszumanska.debian.org
Fri Jul 28 09:05:07 UTC 2017


This is an automated email from the git hooks/post-receive script.

mckinstry pushed a commit to branch debian/master
in repository eccodes.

commit ca7cfc5d3eeaa502da1798621524dff6ade8bdbb
Author: Alastair McKinstry <mckinstry at debian.org>
Date:   Sun Oct 23 04:32:30 2016 +0100

    Upstream 2.0
---
 CMakeLists.txt                                     |    30 +-
 INSTALL                                            |     1 +
 Makefile.in                                        |  1066 -
 NOTICE                                             |     5 +
 README                                             |     2 +-
 VERSION.cmake                                      |     2 +-
 aclocal.m4                                         |  1290 -
 cmake/FindAEC.cmake                                |    31 +-
 cmake/FindMKL.cmake                                |     7 +-
 cmake/FindOpenJPEG.cmake                           |    16 +-
 cmake/VERSION.cmake                                |     4 +-
 cmake/compiler_flags/Cray_C.cmake                  |    11 +-
 cmake/compiler_flags/Cray_CXX.cmake                |    11 +-
 cmake/compiler_flags/Cray_Fortran.cmake            |    12 +-
 .../contrib/GreatCMakeCookOff/AddCPP11Flags.cmake  |     5 +-
 .../GreatCMakeCookOff/CheckCXX11Features.cmake     |   125 +-
 cmake/ecbuild-config-version.cmake                 |     2 +-
 cmake/ecbuild-config.cmake                         |     6 +-
 cmake/ecbuild_add_executable.cmake                 |    64 +-
 cmake/ecbuild_add_fortran_flags.cmake              |    11 +-
 cmake/ecbuild_add_library.cmake                    |    64 +-
 cmake/ecbuild_add_option.cmake                     |    53 +-
 cmake/ecbuild_add_test.cmake                       |    21 +-
 cmake/ecbuild_bundle.cmake                         |     8 +-
 cmake/ecbuild_check_cxx11.cmake                    |    11 +-
 cmake/ecbuild_check_fortran.cmake                  |   126 +
 cmake/ecbuild_check_fortran_source_return.cmake    |    13 +-
 cmake/ecbuild_check_functions.cmake                |     9 +
 cmake/ecbuild_compiler_flags.cmake                 |   154 +-
 cmake/ecbuild_config.h.in                          |     6 +
 cmake/ecbuild_declare_project.cmake                |    47 +-
 cmake/ecbuild_download_resource.cmake              |     1 +
 cmake/ecbuild_find_python.cmake                    |   149 +-
 cmake/ecbuild_generate_fortran_interfaces.cmake    |     2 +-
 cmake/ecbuild_get_cxx11_flags.cmake                |     9 +-
 cmake/ecbuild_get_test_data.cmake                  |     1 +
 cmake/ecbuild_install_project.cmake                |    58 +-
 cmake/ecbuild_log.cmake                            |    21 +-
 cmake/ecbuild_pkgconfig.cmake                      |     2 +-
 cmake/ecbuild_print_summary.cmake                  |     8 +-
 cmake/ecbuild_remove_fortran_flags.cmake           |     5 +-
 cmake/ecbuild_separate_sources.cmake               |    24 +-
 cmake/ecbuild_source_flags.cmake                   |     6 +-
 cmake/ecbuild_system.cmake                         |     2 +
 cmake/ecbuild_target_flags.cmake                   |    91 +
 cmake/ecbuild_use_package.cmake                    |     1 +
 cmake/fortran_features/CheckFortranFeatures.cmake  |   167 +
 cmake/fortran_features/c_size_t.F90                |     8 +
 cmake/fortran_features/c_sizeof.F90                |     3 +
 cmake/fortran_features/derivedtype_interface.F90   |    54 +
 cmake/fortran_features/derivedtype_io.F90          |    42 +
 cmake/fortran_features/finalization.F90            |   141 +
 cmake/fortran_features/submodules.F90              |    35 +
 config.status                                      |  2625 --
 config/config.guess                                |  1568 --
 config/config.sub                                  |  1788 --
 config/depcomp                                     |   791 -
 config/install-sh                                  |   527 -
 config/ltmain.sh                                   |  9655 --------
 config/missing                                     |   215 -
 config/test-driver                                 |   127 -
 configure                                          | 24511 -------------------
 data/CMakeLists.txt                                |     2 +-
 data/Makefile.in                                   |   497 -
 data/bufr/bufr_data_files.txt                      |     6 +-
 data/bufr/bufr_ref_files.txt                       |    14 -
 data/tigge/CMakeLists.txt                          |     9 +
 definitions/Makefile.in                            | 17282 -------------
 definitions/boot.def                               |     8 +-
 definitions/budg/boot.def                          |    20 +-
 definitions/bufr/boot.def                          |    62 +-
 .../{boot_edition_1.def => boot_edition_0.def}     |     8 +-
 definitions/bufr/boot_edition_1.def                |     8 +-
 definitions/bufr/boot_edition_2.def                |     7 +-
 definitions/bufr/boot_edition_3.def                |     8 +-
 definitions/bufr/boot_edition_4.def                |     8 +-
 definitions/bufr/rdb_key.def                       |     2 -
 definitions/bufr/section.1.3.def                   |     9 +-
 definitions/bufr/section.1.4.def                   |     7 +-
 definitions/bufr/section.3.def                     |     4 +-
 definitions/grib1/2.98.140.table                   |   136 +-
 definitions/grib1/2.98.213.table                   |    56 +
 definitions/grib1/boot.def                         |    23 +-
 definitions/grib1/cfName.def                       |     6 +-
 definitions/grib1/cfVarName.def                    |    17 +-
 definitions/grib1/local/edzw/5.table               |     0
 definitions/grib1/localConcepts/ecmf/cfName.def    |     8 +-
 definitions/grib1/localConcepts/ecmf/cfVarName.def |   290 +
 definitions/grib1/localConcepts/ecmf/name.def      |   290 +
 definitions/grib1/localConcepts/ecmf/paramId.def   |   290 +
 definitions/grib1/localConcepts/ecmf/shortName.def |   290 +
 .../grib1/localConcepts/ecmf/typeOfLevel.def       |     0
 definitions/grib1/localConcepts/ecmf/units.def     |   292 +-
 definitions/grib1/localConcepts/edzw/name.def      |     2 +-
 definitions/grib1/localConcepts/edzw/paramId.def   |     2 +-
 definitions/grib1/localConcepts/edzw/shortName.def |     2 +-
 definitions/grib1/localConcepts/edzw/units.def     |     2 +-
 definitions/grib1/name.def                         |    15 -
 definitions/grib1/paramId.def                      |    15 -
 definitions/grib1/shortName.def                    |    15 -
 definitions/grib1/units.def                        |    15 -
 definitions/grib2/cfName.def                       |     2 +-
 definitions/grib2/localConcepts/ecmf/cfName.def    |     8 +-
 definitions/grib2/localConcepts/ecmf/units.def     |     2 +-
 definitions/grib2/localConcepts/edzw/name.def      |    10 +-
 definitions/grib2/localConcepts/edzw/paramId.def   |    10 +-
 definitions/grib2/localConcepts/edzw/shortName.def |    10 +-
 definitions/grib2/localConcepts/edzw/units.def     |    10 +-
 definitions/grib2/localConcepts/egrr/name.def      |    31 +
 definitions/grib2/localConcepts/egrr/paramId.def   |    31 +
 definitions/grib2/localConcepts/egrr/shortName.def |    31 +
 definitions/grib2/localConcepts/egrr/units.def     |    31 +
 definitions/grib2/products_uerra.def               |     8 -
 definitions/grib2/sections.def                     |     4 +-
 definitions/grib2/tables/15/4.5.table              |     2 +-
 definitions/grib2/tables/16/4.5.table              |     2 +-
 definitions/grib2/tables/17/4.225.table            |     2 +-
 definitions/grib2/tables/17/4.5.table              |     4 +-
 .../grib2/template.4.parameter_aerosol_optical.def |     2 +-
 definitions/grib2/template.5.42.def                |     7 +-
 definitions/gts/boot.def                           |    17 +-
 .../mars/{grib.moda.fc.def => grib.edmm.4v.def}    |     9 +-
 definitions/mars/grib.edmo.4v.def                  |     9 +
 .../mars/{grib.moda.fc.def => grib.mnth.4v.def}    |     9 -
 .../mars/{grib.moda.fc.def => grib.moda.4v.def}    |    10 +-
 definitions/mars/grib.moda.fc.def                  |     1 -
 definitions/metar/cccc.def                         |    12 +-
 definitions/parameters_version.def                 |     2 +-
 definitions/taf/cccc.def                           |    12 +-
 definitions/tide/boot.def                          |    17 +-
 definitions/wrap/boot.def                          |     4 +-
 examples/C/Makefile.in                             |  1701 --
 examples/C/bufr_clone.c                            |     2 +-
 examples/C/bufr_expanded.c                         |     4 +-
 examples/C/bufr_read_scatterometer.sh              |    22 +-
 examples/C/grib_get_data.c                         |     2 +-
 examples/C/grib_get_keys.c                         |    10 +
 examples/C/grib_pthreads.c                         |     2 +-
 examples/C/grib_set_data.c                         |     2 +-
 examples/C/large_grib1.c                           |     2 +-
 examples/C/new_sample.c                            |     2 +-
 examples/F90/CMakeLists.txt                        |     8 +-
 examples/F90/Makefile.am                           |    20 +-
 examples/F90/Makefile.in                           |  1846 --
 examples/F90/bufr_attributes.f90                   |     2 +-
 examples/F90/bufr_expanded.f90                     |    24 +-
 examples/F90/bufr_get_keys.f90                     |    46 +-
 examples/F90/bufr_get_string_array.f90             |    29 +-
 examples/F90/bufr_read_scatterometer.f90           |     2 +-
 examples/F90/bufr_read_scatterometer.sh            |    12 +-
 examples/F90/bufr_read_synop.f90                   |     2 +-
 examples/F90/bufr_read_tropical_cyclone.f90        |     2 +-
 examples/F90/bufr_read_tropical_cyclone.sh         |    15 +-
 examples/F90/bufr_set_keys.f90                     |    28 +-
 examples/F90/bufr_set_keys.sh                      |    10 +-
 examples/F90/get_product_kind.f90                  |    19 +-
 examples/F90/grib_clone.f90                        |     2 +-
 .../{copy_message.f90 => grib_copy_message.f90}    |     0
 .../F90/{copy_message.sh => grib_copy_message.sh}  |     2 +-
 examples/F90/{get_data.f90 => grib_get_data.f90}   |     0
 examples/F90/{get_data.sh => grib_get_data.sh}     |     2 +-
 examples/F90/grib_get_keys.f90                     |    28 +-
 examples/F90/{samples.f90 => grib_samples.f90}     |     4 +-
 examples/F90/{samples.sh => grib_samples.sh}       |     6 +-
 examples/F90/grib_set_keys.f90                     |    20 +-
 examples/F90/grib_set_keys.sh                      |     2 +
 .../F90/{set_missing.f90 => grib_set_missing.f90}  |     2 +-
 .../F90/{set_missing.sh => grib_set_missing.sh}    |     4 +-
 examples/F90/grib_set_pv.f90                       |     2 +-
 examples/Makefile.am                               |    37 -
 examples/ecmwf_link.sh                             |    18 -
 examples/fieldset.c                                |    84 -
 examples/get.c                                     |   114 -
 examples/get.sh                                    |     7 -
 examples/get_fortran.F                             |   130 -
 examples/get_fortran.sh                            |     7 -
 examples/grib_precipitation.c                      |    73 -
 examples/include.sh                                |    37 -
 examples/iterator.c                                |    89 -
 examples/iterator.sh                               |     8 -
 examples/iterator_fortran.F                        |    82 -
 examples/iterator_fortran.sh                       |     7 -
 examples/keys_iterator.c                           |   103 -
 examples/keys_iterator.sh                          |     8 -
 examples/keys_iterator_fortran.F                   |    78 -
 examples/keys_iterator_fortran.sh                  |     7 -
 examples/multi.c                                   |    71 -
 examples/multi.sh                                  |    12 -
 examples/multi_fortran.F                           |    78 -
 examples/multi_fortran.sh                          |    13 -
 examples/nearest.c                                 |    92 -
 examples/precision.c                               |   124 -
 examples/precision.sh                              |     7 -
 examples/precision_fortran.F                       |    97 -
 examples/precision_fortran.sh                      |     7 -
 examples/print_data.c                              |    80 -
 examples/print_data.sh                             |    13 -
 examples/print_data_fortran.F                      |    80 -
 examples/print_data_fortran.sh                     |    13 -
 examples/python/CMakeLists.txt                     |    15 +-
 examples/python/Makefile.am                        |     8 +-
 examples/python/Makefile.in                        |  1317 -
 examples/python/bufr_attributes.py                 |    16 +-
 examples/python/bufr_clone.py                      |     2 +-
 examples/python/bufr_expanded.py                   |    12 +-
 examples/python/bufr_get_keys.py                   |    24 +-
 examples/python/bufr_keys_iterator.py              |    10 +-
 examples/python/bufr_read_header.py                |     8 +-
 examples/python/bufr_read_scatterometer.py         |    16 +-
 examples/python/bufr_read_scatterometer.sh         |    19 +-
 examples/python/bufr_read_synop.py                 |    10 +-
 examples/python/bufr_read_tropical_cyclone.sh      |    14 +-
 examples/python/bufr_set_keys.py                   |    14 +-
 examples/python/bufr_subset.py                     |    14 +-
 .../python/{bufr_read_header.py => grib_ccsds.py}  |    37 +-
 examples/python/grib_ccsds.sh                      |     6 +
 .../{set_missing.py => grib_get_message_offset.py} |    35 +-
 .../grib_get_message_offset.sh}                    |    17 +-
 examples/python/{samples.py => grib_samples.py}    |     4 +-
 examples/python/grib_samples.sh                    |     7 +
 examples/python/grib_set_keys.sh                   |     2 +-
 .../python/{set_missing.py => grib_set_missing.py} |     2 +-
 examples/python/grib_set_missing.sh                |     7 +
 examples/python/grib_set_pv.py                     |     2 +-
 examples/python/include.ctest.sh.in                |     3 +-
 examples/python/samples.sh                         |     7 -
 examples/python/set_missing.sh                     |     7 -
 examples/run_examples.sh                           |    10 -
 examples/set.c                                     |    86 -
 examples/set.sh                                    |     7 -
 examples/set_bitmap.c                              |    92 -
 examples/set_fortran.F                             |    68 -
 examples/set_fortran.sh                            |     7 -
 examples/set_pv.c                                  |    79 -
 examples/set_pv_fortran.F                          |    55 -
 fortran/CMakeLists.txt                             |     5 +
 fortran/Makefile.in                                |   809 -
 fortran/eccodes_constants.h                        |     1 +
 fortran/eccodes_f90_head.f90                       |    19 +-
 fortran/eccodes_f90_int.f90                        |    10 +-
 fortran/eccodes_f90_long_int.f90                   |    10 +-
 fortran/eccodes_f90_tail.f90                       |  2067 +-
 fortran/eccodes_visibility.h                       |     3 +-
 fortran/grib_api_constants.h                       |     1 +
 fortran/grib_api_externals.h                       |     4 +-
 fortran/grib_f90_head.f90                          |     4 +-
 fortran/grib_f90_int.f90                           |     4 +-
 fortran/grib_f90_long_int.f90                      |     4 +-
 fortran/grib_f90_tail.f90                          |   282 +-
 fortran/grib_fortran.c                             |   180 +-
 fortran/grib_fortran_prototypes.h                  |    10 +
 html/annotated.html                                |   124 +
 html/bc_s.png                                      |   Bin 0 -> 676 bytes
 html/bdwn.png                                      |   Bin 0 -> 147 bytes
 html/classec_codes_1_1_codes_internal_error.html   |   109 +
 html/classeccodes.html                             |  6126 +++++
 html/classes.html                                  |   108 +
 html/clone_8f90-example.html                       |   101 -
 html/closed.png                                    |   Bin 0 -> 132 bytes
 html/copy__message_8f90-example.html               |    76 -
 html/dir_9d95adc37effe2d0447790667f945c24.html     |    99 +
 html/dir_d050070cc3e4bbd91d897ff8856046e0.html     |   177 +
 html/dir_d28a4824dc47e487b107a5db32ef43c4.html     |   101 +
 html/dir_da7ee69c60c6cc261c862ec60d8c4bc7.html     |   187 +
 html/doxygen.css                                   |  1581 +-
 html/doxygen.png                                   |   Bin 1281 -> 3779 bytes
 html/dynsections.js                                |    97 +
 html/eccodes_8h.html                               |   752 +
 html/examples.html                                 |    58 -
 html/files.html                                    |   120 +-
 html/ftv2blank.png                                 |   Bin 0 -> 86 bytes
 html/ftv2cl.png                                    |   Bin 0 -> 453 bytes
 html/ftv2doc.png                                   |   Bin 0 -> 746 bytes
 html/ftv2folderclosed.png                          |   Bin 0 -> 616 bytes
 html/ftv2folderopen.png                            |   Bin 0 -> 597 bytes
 html/ftv2lastnode.png                              |   Bin 0 -> 86 bytes
 html/ftv2link.png                                  |   Bin 0 -> 746 bytes
 html/ftv2mlastnode.png                             |   Bin 0 -> 246 bytes
 html/ftv2mnode.png                                 |   Bin 0 -> 246 bytes
 html/ftv2mo.png                                    |   Bin 0 -> 403 bytes
 html/ftv2node.png                                  |   Bin 0 -> 86 bytes
 html/ftv2ns.png                                    |   Bin 0 -> 388 bytes
 html/ftv2plastnode.png                             |   Bin 0 -> 229 bytes
 html/ftv2pnode.png                                 |   Bin 0 -> 229 bytes
 html/ftv2splitbar.png                              |   Bin 0 -> 314 bytes
 html/ftv2vertline.png                              |   Bin 0 -> 86 bytes
 html/functions.html                                |   512 +
 html/functions_func.html                           |   512 +
 html/get_8c-example.html                           |   128 -
 html/get_8f90-example.html                         |   134 -
 html/get__data_8f90-example.html                   |    90 -
 html/get__fortran_8_f-example.html                 |   151 -
 html/get__pl_8f90-example.html                     |    70 -
 html/get__pv_8f90-example.html                     |    70 -
 html/globals.html                                  |   932 +-
 html/globals_defs.html                             |   482 +-
 html/globals_func.html                             |   557 +-
 html/globals_type.html                             |    73 -
 html/grib__api_8h.html                             |  1602 --
 html/grib_compare.html                             |   281 -
 html/grib_convert.html                             |    59 -
 html/grib_copy.html                                |    82 -
 html/grib_debug.html                               |   649 -
 html/grib_dump.html                                |   242 -
 html/grib_dump_examples.html                       |    21 -
 html/grib_examples.html                            |    34 -
 html/grib_filter.html                              |   124 -
 html/grib_get.html                                 |    80 -
 html/grib_get_data.html                            |    67 -
 html/grib_keys.html                                |   153 -
 html/grib_ls.html                                  |    95 -
 html/grib_set.html                                 |   103 -
 html/group__codes__handle.html                     |   774 +
 html/group__codes__index.html                      |   660 +
 html/group__context.html                           |  1110 +-
 html/group__environment.html                       |    99 +
 html/group__errors.html                            |  1238 +
 html/group__get__set.html                          |  1178 +-
 html/group__grib__handle.html                      |   625 -
 html/group__handling__coded__messages.html         |   207 +-
 html/group__iterators.html                         |   706 +-
 html/group__keys__iterator.html                    |   483 +-
 html/index.html                                    |   164 +-
 html/installation.html                             |   161 +-
 html/interfaceeccodes_1_1codes__get.html           |   626 +
 html/interfaceeccodes_1_1codes__get__element.html  |   373 +
 ...erfaceeccodes_1_1codes__get__message__size.html |   218 +
 html/interfaceeccodes_1_1codes__get__size.html     |   236 +
 ...rfaceeccodes_1_1codes__grib__find__nearest.html |   429 +
 ...interfaceeccodes_1_1codes__grib__get__data.html |   250 +
 html/interfaceeccodes_1_1codes__index__get.html    |   351 +
 ...nterfaceeccodes_1_1codes__index__get__size.html |   239 +
 html/interfaceeccodes_1_1codes__index__select.html |   350 +
 ...erfaceeccodes_1_1codes__new__from__message.html |   230 +
 html/interfaceeccodes_1_1codes__read__bytes.html   |   557 +
 ...nterfaceeccodes_1_1codes__read__from__file.html |   341 +
 html/interfaceeccodes_1_1codes__set.html           |   676 +
 html/interfaceeccodes_1_1codes__write__bytes.html  |   557 +
 .../interfacegrib__api_1_1grib__find__nearest.html |     0
 html/interfacegrib__api_1_1grib__get.html          |     0
 html/interfacegrib__api_1_1grib__get__data.html    |     0
 html/interfacegrib__api_1_1grib__get__element.html |     0
 html/interfacegrib__api_1_1grib__set.html          |     0
 html/iterator_8c-example.html                      |   103 -
 html/iterator__fortran_8_f-example.html            |   103 -
 html/jquery.js                                     |    31 +
 html/keys.html                                     |    88 -
 html/keys__iterator_8c-example.html                |   115 -
 html/keys__iterator_8f90-example.html              |    86 -
 html/keys__iterator__fortran_8_f-example.html      |    99 -
 html/modules.html                                  |   126 +-
 html/multi_8c-example.html                         |    85 -
 html/multi_8f90-example.html                       |    72 -
 html/multi__fortran_8_f-example.html               |    99 -
 html/namespaceec_codes.html                        |  4170 ++++
 html/namespacegrib__api.html                       |     0
 html/namespacemembers.html                         |   375 +
 html/namespacemembers_func.html                    |   375 +
 html/namespaces.html                               |   100 +
 html/nav_f.png                                     |   Bin 0 -> 153 bytes
 html/nav_g.png                                     |   Bin 0 -> 95 bytes
 html/nav_h.png                                     |   Bin 0 -> 98 bytes
 html/nearest_8c-example.html                       |   107 -
 html/nearest_8f90-example.html                     |   104 -
 html/open.png                                      |   Bin 0 -> 123 bytes
 html/pages.html                                    |   144 +-
 html/precision_8c-example.html                     |   138 -
 html/precision_8f90-example.html                   |   119 -
 html/precision__fortran_8_f-example.html           |   118 -
 html/print__data_8c-example.html                   |    94 -
 html/print__data_8f90-example.html                 |    88 -
 html/print__data__fortran_8_f-example.html         |   101 -
 html/search/all_61.html                            |    26 +
 html/search/all_61.js                              |     4 +
 html/search/all_63.html                            |    26 +
 html/search/all_63.js                              |   301 +
 html/search/all_65.html                            |    26 +
 html/search/all_65.js                              |     8 +
 html/search/all_67.html                            |    26 +
 html/search/all_67.js                              |     6 +
 html/search/all_68.html                            |    26 +
 html/search/all_68.js                              |     4 +
 html/search/all_69.html                            |    26 +
 html/search/all_69.js                              |     5 +
 html/search/all_74.html                            |    26 +
 html/search/all_74.js                              |     6 +
 html/search/classes_63.html                        |    26 +
 html/search/classes_63.js                          |    25 +
 html/search/classes_65.html                        |    26 +
 html/search/classes_65.js                          |     4 +
 html/search/close.png                              |   Bin 0 -> 273 bytes
 html/search/files_65.html                          |    26 +
 html/search/files_65.js                            |     4 +
 html/search/functions_63.html                      |    26 +
 html/search/functions_63.js                        |   203 +
 html/search/functions_67.html                      |    26 +
 html/search/functions_67.js                        |     5 +
 html/search/groups_61.html                         |    26 +
 html/search/groups_61.js                           |     4 +
 html/search/groups_65.html                         |    26 +
 html/search/groups_65.js                           |     5 +
 html/search/groups_68.html                         |    26 +
 html/search/groups_68.js                           |     4 +
 html/search/groups_69.html                         |    26 +
 html/search/groups_69.js                           |     5 +
 html/search/groups_74.html                         |    26 +
 html/search/groups_74.js                           |     6 +
 html/search/mag_sel.png                            |   Bin 0 -> 563 bytes
 html/search/namespaces_65.html                     |    26 +
 html/search/namespaces_65.js                       |     4 +
 html/search/nomatches.html                         |    12 +
 html/search/pages_63.html                          |    26 +
 html/search/pages_63.js                            |     4 +
 html/search/pages_65.html                          |    26 +
 html/search/pages_65.js                            |     4 +
 html/search/pages_67.html                          |    26 +
 html/search/pages_67.js                            |     4 +
 html/search/search.css                             |   271 +
 html/search/search.js                              |   807 +
 html/search/search_l.png                           |   Bin 0 -> 604 bytes
 html/search/search_m.png                           |   Bin 0 -> 158 bytes
 html/search/search_r.png                           |   Bin 0 -> 612 bytes
 html/set_8c-example.html                           |   100 -
 html/set_8f90-example.html                         |   107 -
 html/set__bitmap_8f90-example.html                 |   102 -
 html/set__fortran_8_f-example.html                 |    89 -
 html/set__missing_8f90-example.html                |    69 -
 html/set__pv_8f90-example.html                     |    96 -
 html/structcodes__context.html                     |   100 +
 html/structcodes__handle.html                      |   100 +
 html/structcodes__index.html                       |   100 +
 html/structcodes__iterator.html                    |   100 +
 html/structcodes__keys__iterator.html              |   100 +
 html/structcodes__multi__handle.html               |   100 +
 html/structcodes__nearest.html                     |   100 +
 html/sync_off.png                                  |   Bin 0 -> 853 bytes
 html/sync_on.png                                   |   Bin 0 -> 845 bytes
 html/tab_a.png                                     |   Bin 0 -> 142 bytes
 html/tab_b.gif                                     |   Bin 35 -> 0 bytes
 html/tab_b.png                                     |   Bin 0 -> 169 bytes
 html/tab_h.png                                     |   Bin 0 -> 177 bytes
 html/tab_l.gif                                     |   Bin 706 -> 0 bytes
 html/tab_r.gif                                     |   Bin 2585 -> 0 bytes
 html/tab_s.png                                     |   Bin 0 -> 184 bytes
 html/tabs.css                                      |   130 +-
 html/tools.html                                    |    26 -
 ifs_samples/grib1/Makefile.in                      |   860 -
 ifs_samples/grib1_mlgrib2/Makefile.in              |   864 -
 ifs_samples/grib1_mlgrib2_ieee64/Makefile.in       |   865 -
 libtool                                            | 10395 --------
 m4/ax_linux_distribution.m4                        |    77 -
 m4/ax_python_devel.m4                              |   325 -
 m4/ax_rpm_init.m4                                  |   258 -
 m4/libtool.m4                                      |  7982 ------
 m4/ltoptions.m4                                    |   384 -
 m4/ltsugar.m4                                      |   123 -
 m4/ltversion.m4                                    |    23 -
 m4/lt~obsolete.m4                                  |    98 -
 perl/GRIB-API/Makefile.PL                          |    23 -
 perl/GRIB-API/lib/GRIB/API.pm                      |    97 +
 perl/GRIB-API/lib/GRIB/API/Debug.pm                |     7 +
 perl/GRIB-API/lib/GRIB/API/Tie.pm                  |    46 +
 perl/Makefile.in                                   |   532 -
 python/CMakeLists.txt                              |   143 +-
 python/Makefile.am                                 |     4 +
 python/Makefile.in                                 |   879 -
 python/eccode.i                                    |     8 -
 python/eccode_swig.i                               |   212 -
 python/{init_eccodes.py => eccodes/__init__.py}    |     0
 python/{ => eccodes}/eccodes.py                    |    17 +-
 python/extrules.am                                 |     6 +-
 python/grib_errors.h                               |     2 +
 python/grib_interface.c                            |    60 +-
 python/grib_interface.h                            |    10 +-
 python/{init_gribapi.py => gribapi/__init__.py}    |     0
 python/{ => gribapi}/gribapi.py                    |   721 +-
 python/gribapi_swig.i                              |    50 +-
 python/setup.py.in                                 |   125 +-
 python/swig_wrap_array.c                           |  8671 -------
 python/swig_wrap_array.py                          |   611 -
 python/swig_wrap_numpy.c                           |   193 +-
 python/swig_wrap_numpy.py                          |    26 +-
 rpms/CMakeLists.txt                                |     7 -
 rpms/eccodes.pc                                    |    12 -
 rpms/eccodes.pc.in                                 |    12 -
 rpms/eccodes.spec                                  |   131 -
 rpms/eccodes.spec.in                               |   131 -
 rpms/eccodes_f90.pc                                |    13 -
 rpms/eccodes_f90.pc.in                             |    13 -
 samples/BUFR3.tmpl                                 |   Bin 0 -> 231 bytes
 samples/BUFR3_local.tmpl                           |   Bin 0 -> 279 bytes
 samples/BUFR3_local_satellite.tmpl                 |   Bin 0 -> 289 bytes
 samples/BUFR4.tmpl                                 |   Bin 0 -> 231 bytes
 samples/BUFR4_local.tmpl                           |   Bin 0 -> 283 bytes
 samples/BUFR4_local_satellite.tmpl                 |   Bin 0 -> 546 bytes
 samples/Makefile.in                                |   622 -
 share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake     |    49 +
 share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake      |    52 +
 share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake    |    73 +
 share/ecbuild/toolchains/ichec-fionn-Intel.cmake   |    67 +
 show_compile.sh                                    |    49 +
 src/CMakeLists.txt                                 |    13 +-
 src/Makefile.am                                    |    15 +-
 src/Makefile.in                                    |  1739 --
 src/action.c                                       |    14 +-
 src/action_class_close.c                           |     2 +-
 src/action_class_section.c                         |     3 +
 src/action_class_transient_darray.c                |     3 +-
 src/action_class_write.c                           |     2 +-
 src/config.h                                       |   230 -
 src/config.h.in                                    |   229 -
 src/dumper.class                                   |     2 +-
 src/eccodes.c                                      |    13 +-
 src/eccodes.h                                      |   192 +-
 src/eccodes_version.h                              |    21 -
 src/grib_accessor.c                                |    13 +-
 src/grib_accessor_class.c                          |    33 +-
 src/grib_accessor_class.h                          |     3 +
 src/grib_accessor_class_bits.c                     |     8 +-
 src/grib_accessor_class_bufr_data_array.c          |   404 +-
 src/grib_accessor_class_bufr_data_element.c        |     8 +-
 src/grib_accessor_class_bufr_elements_table.c      |     2 +
 ...rib_accessor_class_bufr_extract_area_subsets.c} |   184 +-
 ..._accessor_class_bufr_extract_datetime_subsets.c |   402 +
 src/grib_accessor_class_bufr_extract_subsets.c     |    24 -
 ... => grib_accessor_class_bufr_simple_thinning.c} |   137 +-
 src/grib_accessor_class_data_ccsds_packing.c       |     4 +-
 ..._data_g1second_order_general_extended_packing.c |     1 +
 src/grib_accessor_class_data_jpeg2000_packing.c    |    11 +-
 src/grib_accessor_class_g1step_range.c             |    13 +-
 src/grib_accessor_class_g2grid.c                   |     4 +
 src/grib_accessor_class_gen.c                      |     2 +-
 src/grib_accessor_class_lookup.c                   |   169 +-
 src/grib_accessor_class_padding.c                  |     2 +-
 src/grib_accessor_factory.h                        |     3 +
 src/grib_accessor_factory_hash_list                |     3 +
 src/grib_api.h                                     |    42 +-
 src/grib_api_internal.h                            |     6 +-
 src/grib_api_prototypes.h                          |    14 +-
 src/grib_box_class.c                               |     4 +-
 src/grib_context.c                                 |    60 +-
 src/grib_date.c                                    |   247 +-
 src/grib_db.c                                      |     4 +-
 src/grib_dumper_class.c                            |    23 +-
 src/grib_dumper_class.h                            |    10 +-
 src/grib_dumper_class_bufr_decode_C.c              |   726 +
 src/grib_dumper_class_bufr_decode_filter.c         |   578 +
 src/grib_dumper_class_bufr_decode_fortran.c        |   639 +
 src/grib_dumper_class_bufr_decode_python.c         |   640 +
 src/grib_dumper_class_bufr_encode_C.c              |   830 +
 src/grib_dumper_class_bufr_encode_filter.c         |   719 +
 src/grib_dumper_class_bufr_encode_fortran.c        |   822 +
 src/grib_dumper_class_bufr_encode_python.c         |   789 +
 src/grib_dumper_class_debug.c                      |    18 +-
 ..._c_code.c => grib_dumper_class_grib_encode_C.c} |    38 +-
 src/grib_dumper_factory.h                          |    26 +-
 src/grib_errors.c                                  |    39 +-
 src/grib_errors.txt                                |     1 +
 src/grib_expression_class_is_in_dict.c             |     6 +-
 src/grib_expression_class_is_in_list.c             |     6 +-
 src/grib_fieldset.c                                |     9 +-
 src/grib_filepool.c                                |    25 +-
 src/grib_handle.c                                  |    64 +-
 src/grib_hash_keys.c                               | 10647 ++++----
 src/grib_index.c                                   |     8 +-
 src/grib_io.c                                      |     1 +
 src/grib_iterator.c                                |     3 +-
 src/grib_iterator_class.c                          |     4 +-
 src/grib_jasper_encoding.c                         |    21 +-
 src/grib_lex.c                                     |  1743 +-
 src/grib_nearest_class.c                           |     4 +-
 src/grib_openjpeg_encoding.c                       |   600 +-
 src/grib_templates.c                               |    57 +
 src/grib_util.c                                    |   192 +-
 src/grib_value.c                                   |    32 +-
 src/grib_yacc.c                                    |  1975 +-
 src/gribl.l                                        |     7 +-
 src/griby.y                                        |    12 +-
 src/makeyacc                                       |     2 +-
 src/stamp-h1                                       |     1 -
 tests/CMakeLists.txt                               |    37 +-
 tests/Makefile.am                                  |     7 +-
 tests/Makefile.in                                  |  1727 --
 tests/bufr_change_edition.sh                       |     3 +-
 tests/bufr_compare.sh                              |    85 +-
 tests/bufr_dump.sh                                 |    59 +-
 tests/bufr_dump_decode_C.sh                        |    85 +
 tests/bufr_dump_decode_filter.sh                   |    56 +
 tests/bufr_dump_decode_fortran.sh                  |    85 +
 tests/bufr_dump_decode_python.sh                   |    47 +
 tests/bufr_dump_encode_C.sh                        |    94 +
 tests/bufr_dump_encode_filter.sh                   |    67 +
 tests/bufr_dump_encode_fortran.sh                  |    88 +
 tests/bufr_dump_encode_python.sh                   |    56 +
 tests/bufr_filter.sh                               |   100 +-
 tests/bufr_filter_extract_area.sh                  |   138 +
 tests/bufr_filter_extract_datetime.sh              |   194 +
 tests/bufr_get.sh                                  |    21 +-
 tests/bufr_ls.sh                                   |     2 +-
 tests/ccsds.sh                                     |    16 +-
 tests/convert.sh                                   |    48 -
 tests/ecc-197.sh                                   |    18 +-
 tests/ecc-286.sh                                   |    41 +
 tests/ecc-288.sh                                   |    42 +
 tests/{debug.sh => grib_dump.sh}                   |     5 -
 tests/{debug.sh => grib_dump_debug.sh}             |     7 +-
 tests/grib_png.sh                                  |     6 +-
 tests/grib_util_set_spec.c                         |    20 +-
 tests/grib_util_set_spec.sh                        |    67 +-
 tests/include.ctest.sh.in                          |    10 +-
 tests/include.sh                                   |     2 +-
 tests/jpeg.sh                                      |    33 +-
 tests/keys                                         |  4114 ++--
 tests/make_hash.ksh                                |     0
 tests/tigge.sh                                     |    34 +-
 tigge/Makefile.in                                  |   726 -
 tigge/tigge_check.c                                |   145 +-
 tigge/tigge_check.h                                |   221 +-
 tools/Makefile.am                                  |     4 +-
 tools/Makefile.in                                  |  1327 -
 tools/bufr_compare.c                               |   310 +-
 tools/bufr_copy.c                                  |     2 +-
 tools/bufr_dump.c                                  |   260 +-
 tools/bufr_dump.sh                                 |    24 +-
 tools/bufr_filter                                  |    72 +
 tools/bufr_filter.c                                |    13 +-
 tools/bufr_filter.sh                               |    48 +-
 tools/bufr_get.c                                   |   117 +-
 tools/bufr_index_build.c                           |     8 +-
 tools/bufr_ls.c                                    |   273 +-
 tools/bufr_set.c                                   |     8 +-
 tools/{ => deprecated}/all_keys.c                  |     0
 tools/{ => deprecated}/dump.c                      |     0
 tools/{ => deprecated}/dumpload.c                  |     0
 tools/{ => deprecated}/grib_add.c                  |     0
 tools/{ => deprecated}/grib_cmp.c                  |     0
 tools/{ => deprecated}/grib_convert.c              |     0
 tools/{ => deprecated}/grib_corruption_check.c     |     0
 tools/{ => deprecated}/grib_debug.c                |     0
 tools/{ => deprecated}/grib_debug.dox              |     0
 tools/{ => deprecated}/grib_diff.c                 |     0
 tools/{ => deprecated}/grib_distance.c             |     0
 tools/{ => deprecated}/grib_error.c                |     0
 tools/{ => deprecated}/grib_gen.c                  |     0
 tools/{ => deprecated}/grib_keys.c                 |     0
 tools/{ => deprecated}/grib_moments.c              |     0
 tools/{ => deprecated}/grib_packing.c              |     0
 tools/{ => deprecated}/grib_points.c               |     0
 tools/grib_compare.c                               |    11 +-
 tools/grib_convert.dox                             |    38 -
 tools/grib_convert.sh                              |    18 -
 tools/grib_copy.c                                  |    19 +-
 tools/grib_copy.sh                                 |    14 +-
 tools/grib_count.desc                              |     2 +-
 tools/grib_debug.sh                                |    22 -
 tools/grib_dump.c                                  |    65 +-
 tools/grib_filter.c                                |     8 +-
 tools/grib_filter.sh                               |     4 +
 tools/grib_get.c                                   |     8 +-
 tools/grib_get_data.c                              |     6 +-
 tools/grib_get_data.sh                             |     5 +-
 tools/grib_index_build.c                           |     4 +-
 tools/grib_ls.c                                    |     3 +-
 tools/grib_ls.sh                                   |     6 +
 tools/grib_merge.c                                 |   207 +-
 tools/grib_options.c                               |     4 +-
 tools/grib_set.c                                   |    30 +-
 tools/grib_set.sh                                  |     4 +-
 tools/grib_to_netcdf.c                             |    15 +-
 tools/grib_to_netcdf.sh                            |     4 +-
 tools/grib_tools.c                                 |   214 +-
 tools/grib_tools.h                                 |     2 +-
 tools/gts_compare.c                                |     6 +-
 tools/gts_copy.c                                   |     2 +-
 tools/gts_dump.c                                   |     6 +-
 tools/gts_filter.c                                 |     2 +-
 tools/gts_get.c                                    |     2 +-
 tools/gts_ls.c                                     |     2 +-
 tools/make_dox.ksh                                 |     2 +-
 tools/metar_compare.c                              |     6 +-
 tools/metar_copy.c                                 |     2 +-
 tools/metar_dump.c                                 |     8 +-
 tools/metar_filter.c                               |     2 +-
 tools/metar_get.c                                  |     2 +-
 tools/metar_ls.c                                   |     8 +-
 tools/taf_dump.c                                   |     2 +-
 tools/taf_filter.c                                 |     2 +-
 tools/taf_get.c                                    |     2 +-
 tools/taf_ls.c                                     |     2 +-
 version.sh                                         |     4 +-
 windows/msvc/grib_api_lib/grib_api_lib.vcproj      |    50 +-
 691 files changed, 56856 insertions(+), 133940 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f49e569..b70c556 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,7 +24,7 @@ set( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}
 
 include( ecbuild_system NO_POLICY_SCOPE )
 
-ecbuild_requires_macro_version( 1.9 )
+ecbuild_requires_macro_version( 2.4 )
 
 ###############################################################################
 # local project
@@ -72,7 +72,7 @@ ecbuild_add_option( FEATURE AEC
 ecbuild_add_option( FEATURE PYTHON
     DESCRIPTION "build the ecCodes Python interface"
     DEFAULT ON
-    REQUIRED_PACKAGES "Python VERSION 2.6" NumPy
+    REQUIRED_PACKAGES "Python VERSION 2.6 NO_LIBS" NumPy
 )
 
 ecbuild_add_option( FEATURE FORTRAN
@@ -90,14 +90,19 @@ else()
     set( HAVE_FORTRAN 0 )
 endif()
 
-# memfs
-
+# memfs requires only Python executable and not its libraries
 ecbuild_add_option( FEATURE MEMFS
     DESCRIPTION "Memory based access to definitions/samples"
     DEFAULT OFF
     CONDITION EC_HAVE_FMEMOPEN OR EC_HAVE_FUNOPEN
-    REQUIRED_PACKAGES "Python VERSION 2.6"
+    REQUIRED_PACKAGES "Python VERSION 2.6 NO_LIBS"
 )
+
+#if( HAVE_MEMFS AND "${CMAKE_C_COMPILER_ID}" STREQUAL "Cray")
+#  set( HAVE_MEMFS OFF )
+#  ecbuild_warn("MEMFS not supported with Cray C compiler")
+#endif()
+
 # advanced options (not visible in cmake-gui )
 
 ecbuild_add_option( FEATURE MEMORY_MANAGEMENT   DESCRIPTION "enable memory management" DEFAULT OFF ADVANCED )
@@ -130,11 +135,11 @@ if( ENABLE_JPG )
     #       which can affect future package discovery if not undone by the caller.
     #       The current CMAKE_PREFIX_PATH is backed up as _CMAKE_PREFIX_PATH
     #
-    set(ECBUILD_NO_DEPRECATIONS ON)  # Suppress deprecation message
+    set(CMAKE_WARN_DEPRECATED OFF) # Suppress deprecation message
     ecbuild_add_extra_search_paths( jasper )
     find_package( Jasper )
     set(CMAKE_PREFIX_PATH ${_CMAKE_PREFIX_PATH})    # Restore CMAKE_PREFIX_PATH
-    set(ECBUILD_NO_DEPRECATIONS OFF) # Remove suppression
+    set(CMAKE_WARN_DEPRECATED ON)  # Remove suppression
 
     find_package( OpenJPEG )
 
@@ -297,10 +302,9 @@ add_subdirectory( ifs_samples ) # must come after samples
 # ecbuild_dont_pack( DIRS samples DONT_PACK_REGEX "*.grib" )
 ecbuild_dont_pack( DIRS
      concepts tests.ecmwf doxygen confluence examples.dev templates parameters java
-     gaussian_experimental gribex examples/F77
-     examples/extra bamboo fortran/fortranCtypes tigge/tools share/eccodes
-     src/.deps tests/.deps tools/.deps tigge/.deps examples/C/.deps examples/python/.deps
-     python/.deps fortran/.deps
+     config m4 rpms gaussian_experimental gribex examples/F77
+     examples/extra examples/deprecated bamboo fortran/fortranCtypes tigge/tools
+     share/eccodes  .settings
 )
 #ecbuild_dont_pack( DIRS data/bufr  DONT_PACK_REGEX "*.bufr" )
 #ecbuild_dont_pack( DIRS data/tigge DONT_PACK_REGEX "*.grib" )
@@ -336,6 +340,7 @@ ecbuild_pkgconfig(
   URL            "https://software.ecmwf.int/wiki/display/ECC/"
   DESCRIPTION    "The ecCodes library"
   LIBRARIES      eccodes
+  IGNORE_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIRS} ${NETCDF_INCLUDE_DIRS}
   VARIABLES      HAVE_JPG HAVE_LIBJASPER HAVE_LIBOPENJPEG
                  HAVE_ECCODES_THREADS HAVE_ECCODES_OMP_THREADS
                  HAVE_NETCDF HAVE_PYTHON HAVE_FORTRAN HAVE_PNG HAVE_AEC
@@ -347,6 +352,7 @@ if( EC_HAVE_FORTRAN )
     LIBRARIES           eccodes_f90 eccodes
     DESCRIPTION         "The ecCodes library for Fortran 90"
     IGNORE_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/fortran ${PROJECT_BINARY_DIR}/fortran
+                        ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIRS} ${NETCDF_INCLUDE_DIRS}
     VARIABLES           HAVE_JPG HAVE_LIBJASPER HAVE_LIBOPENJPEG
                         HAVE_ECCODES_THREADS HAVE_ECCODES_OMP_THREADS
                         HAVE_NETCDF HAVE_PYTHON HAVE_PNG HAVE_AEC
@@ -362,7 +368,7 @@ ecbuild_print_summary()
 
 ecbuild_info("")
 ecbuild_info("   +---------------------------+")
-ecbuild_info("   |  ecCodes version ${ECCODES_VERSION}   |")
+ecbuild_info("   |  ecCodes version ${ECCODES_VERSION}    |")
 ecbuild_info("   |  Configuration completed  |")
 ecbuild_info("   +---------------------------+")
 ecbuild_info("")
diff --git a/INSTALL b/INSTALL
index ec79cfb..f3da470 100644
--- a/INSTALL
+++ b/INSTALL
@@ -36,6 +36,7 @@ However it requires that cmake be installed on your system.
 You can also pass options to the cmake command above. Some typical examples are:
 
  -DBUILD_SHARED_LIBS=OFF         Install static libraries, not shared
+ -DENABLE_ECCODES_THREADS=ON     Enable POSIX threads
  -DENABLE_JPG=ON                 Enable JPEG encoding/decoding (for GRIB packing)
  -DCMAKE_Fortran_COMPILER=pgf90  Set Fortran compiler to Portland Group F90 compiler
  -DCMAKE_C_FLAGS="-O2 -Wall"     Prepend the specified flags at the front
diff --git a/Makefile.in b/Makefile.in
deleted file mode 100644
index 30f2f6a..0000000
--- a/Makefile.in
+++ /dev/null
@@ -1,1066 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = .
-DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
-	$(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/configure $(am__configure_deps) \
-	$(top_srcdir)/rpms/eccodes.pc.in \
-	$(top_srcdir)/rpms/eccodes.spec.in \
-	$(top_srcdir)/rpms/eccodes_f90.pc.in \
-	$(top_srcdir)/perl/GRIB-API/Makefile.PL.in COPYING \
-	config/config.guess config/config.sub config/depcomp \
-	config/install-sh config/missing config/ltmain.sh \
-	$(top_srcdir)/config/config.guess \
-	$(top_srcdir)/config/config.sub \
-	$(top_srcdir)/config/install-sh $(top_srcdir)/config/ltmain.sh \
-	$(top_srcdir)/config/missing
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno config.status.lineno
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES = rpms/eccodes.pc rpms/eccodes.spec \
-	rpms/eccodes_f90.pc perl/GRIB-API/Makefile.PL
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
-	ctags-recursive dvi-recursive html-recursive info-recursive \
-	install-data-recursive install-dvi-recursive \
-	install-exec-recursive install-html-recursive \
-	install-info-recursive install-pdf-recursive \
-	install-ps-recursive install-recursive installcheck-recursive \
-	installdirs-recursive pdf-recursive ps-recursive \
-	tags-recursive uninstall-recursive
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(pkgconfigdir)"
-DATA = $(pkgconfig_DATA)
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-am__recursive_targets = \
-  $(RECURSIVE_TARGETS) \
-  $(RECURSIVE_CLEAN_TARGETS) \
-  $(am__extra_recursive_targets)
-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-	cscope distdir dist dist-all distcheck
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-CSCOPE = cscope
-DIST_SUBDIRS = src tools definitions samples ifs_samples/grib1 \
-	ifs_samples/grib1_mlgrib2 ifs_samples/grib1_mlgrib2_ieee64 \
-	tests tigge @FORTRAN_MOD@ examples/C @F90_CHECK@ @PERLDIR@ \
-	python examples/python data
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
-  if test -d "$(distdir)"; then \
-    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-      && rm -rf "$(distdir)" \
-      || { sleep 5 && rm -rf "$(distdir)"; }; \
-  else :; fi
-am__post_remove_distdir = $(am__remove_distdir)
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-DIST_TARGETS = dist-gzip
-distuninstallcheck_listfiles = find . -type f -print
-am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
-  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-AEC_DIR = @AEC_DIR@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CCSDS_TEST = @CCSDS_TEST@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEVEL_RULES = @DEVEL_RULES@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECCODES_AGE = @ECCODES_AGE@
-ECCODES_CURRENT = @ECCODES_CURRENT@
-ECCODES_DEFINITION_PATH = @ECCODES_DEFINITION_PATH@
-ECCODES_MAIN_VERSION = @ECCODES_MAIN_VERSION@
-ECCODES_MAJOR_VERSION = @ECCODES_MAJOR_VERSION@
-ECCODES_MINOR_VERSION = @ECCODES_MINOR_VERSION@
-ECCODES_PATCH_VERSION = @ECCODES_PATCH_VERSION@
-ECCODES_REVISION = @ECCODES_REVISION@
-ECCODES_SAMPLES_PATH = @ECCODES_SAMPLES_PATH@
-ECCODES_VERSION_STR = @ECCODES_VERSION_STR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB = @EMOS_LIB@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-F90_CHECK = @F90_CHECK@
-F90_MODULE_FLAG = @F90_MODULE_FLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FORTRAN_MOD = @FORTRAN_MOD@
-GREP = @GREP@
-GRIB_API_INC = @GRIB_API_INC@
-GRIB_API_LIB = @GRIB_API_LIB@
-GRIB_DEVEL = @GRIB_DEVEL@
-IFS_SAMPLES_DIR = @IFS_SAMPLES_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JASPER_DIR = @JASPER_DIR@
-JPEG_TEST = @JPEG_TEST@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_AEC = @LIB_AEC@
-LIB_JASPER = @LIB_JASPER@
-LIB_OPENJPEG = @LIB_OPENJPEG@
-LIB_PNG = @LIB_PNG@
-LINUX_DISTRIBUTION_NAME = @LINUX_DISTRIBUTION_NAME@
-LINUX_DISTRIBUTION_VERSION = @LINUX_DISTRIBUTION_VERSION@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENJPEG_DIR = @OPENJPEG_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PERLDIR = @PERLDIR@
-PERL_INSTALL_OPTIONS = @PERL_INSTALL_OPTIONS@
-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_CHECK = @PYTHON_CHECK@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_DATA_HANDLER = @PYTHON_DATA_HANDLER@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RM = @RM@
-RPM_CONFIGURE_ARGS = @RPM_CONFIGURE_ARGS@
-RPM_HOST_CPU = @RPM_HOST_CPU@
-RPM_HOST_OS = @RPM_HOST_OS@
-RPM_HOST_VENDOR = @RPM_HOST_VENDOR@
-RPM_RELEASE = @RPM_RELEASE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_PEDANTIC = @WARN_PEDANTIC@
-WERROR = @WERROR@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-ACLOCAL_AMFLAGS = -I m4
-CONFIGURE_DEPENDENCIES = $(top_srcdir)/version.sh
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = rpms/eccodes.pc rpms/eccodes_f90.pc
- at WITH_PERL_FALSE@PERL_OPT = 
- at WITH_PERL_TRUE@PERL_OPT = @PERLDIR@
- at WITH_PYTHON_FALSE@PYTHON_OPT = 
- at WITH_PYTHON_TRUE@PYTHON_OPT = python
-SUBDIRS = src tools definitions samples ifs_samples/grib1 ifs_samples/grib1_mlgrib2 ifs_samples/grib1_mlgrib2_ieee64 \
-          tests tigge $(FORTRAN_MOD) examples/C $(F90_CHECK) $(PERL_OPT) $(PYTHON_OPT) examples/python data
-
-EXTRA_DIST = README AUTHORS NOTICE LICENSE ChangeLog version.sh html \
-		src/extrules.am \
-		definitions/extrules.am \
-		python/extrules.am \
-		src/dummy.am \
-		definitions/dummy.am \
-		definitions/make_makefile_am.pl \
-		data/grib_data_files.txt \
-		data/ls.log \
-		data/multi.ok \
-		data/local.good.log \
-		data/typeOfProcessedData.ok \
-		data/multi_step.txt \
-		data/bitmap.diff \
-		data/no_bitmap.diff \
-		data/ieee_test.good \
-		data/index.ok \
-		data/index_f90.ok \
-		data/spherical_model_level.grib1_32.good \
-		data/spherical_model_level.grib1.good \
-		data/statistics.out.good \
-		data/scan_x_regular_gg_5_7_good.dump \
-		data/scan_x_regular_ll_5_4_good.dump \
-		data/scan_x_regular_ll_5_7_good.dump \
-		data/scan_x_regular_ll_8_4_good.dump \
-		data/scan_x_regular_ll_8_7_good.dump \
-		data/scan_x_rotated_ll_5_4_good.dump \
-		data/scan_x_rotated_ll_5_7_good.dump \
-		data/scan_x_rotated_ll_8_4_good.dump \
-		data/scan_x_rotated_ll_8_7_good.dump \
-		data/scan_y_regular_ll_5_4_good.dump \
-		data/scan_y_regular_ll_5_7_good.dump \
-		data/scan_y_regular_ll_8_4_good.dump \
-		data/scan_y_regular_ll_8_7_good.dump \
-		data/scan_y_rotated_ll_5_4_good.dump \
-		data/scan_y_rotated_ll_5_7_good.dump \
-		data/scan_y_rotated_ll_8_4_good.dump \
-		data/scan_y_rotated_ll_8_7_good.dump \
-		data/tigge_pf_ecmwf.grib2.ref \
-		data/60_model_levels \
-		data/list_points \
-		data/step.log \
-		data/step_grib1.filter \
-		data/step_grib1.log \
-		data/julian.out.good \
-		data/tigge/tigge_data_files.txt \
-		data/read_any.ok \
-		data/download.sh \
-		perf/jmeter.awk \
-		perf/time.sh \
-		CMakeLists.txt \
-		project_summary.cmake \
-		VERSION.cmake \
-		eccodes_config.h.in \
-		examples/CMakeLists.txt \
-		data/CMakeLists.txt \
-		data/tigge/CMakeLists.txt \
-		data/bufr/CMakeLists.txt \
-		ifs_samples/grib1/CMakeLists.txt \
-		ifs_samples/grib1_mlgrib2_ieee64/CMakeLists.txt \
-		ifs_samples/grib1_mlgrib2_ieee32/CMakeLists.txt \
-		ifs_samples/CMakeLists.txt \
-		ifs_samples/grib1_mlgrib2/CMakeLists.txt \
-		samples/CMakeLists.txt \
-		windows/msvc/grib_api.sln \
-		windows/msvc/grib_api_lib/grib_api_lib.vcproj \
-		windows/msvc/grib_dump/grib_dump.vcproj \
-		windows/msvc/grib_compare/grib_compare.vcproj \
-		windows/msvc/grib_copy/grib_copy.vcproj \
-		windows/msvc/grib_filter/grib_filter.vcproj \
-		windows/msvc/grib_get/grib_get.vcproj \
-		windows/msvc/grib_get_data/grib_get_data.vcproj \
-		windows/msvc/grib_ls/grib_ls.vcproj \
-		windows/msvc/grib_set/grib_set.vcproj
-
-perf_dir = @abs_builddir@/perf
-rpmspec = rpms/$(PACKAGE_TARNAME).spec
-rpmmacros = \
-    --define="_rpmdir $${PWD}"\
-    --define="_srcrpmdir $${PWD}"\
-    --define="_sourcedir $${PWD}"\
-    --define="_specdir $${PWD}"\
-    --define="_builddir $${PWD}"
-
-RPMBUILD = rpmbuild
-RPMFLAGS = --nodeps --buildroot="$${PWD}/_rpm"
-main_package = $(abs_top_srcdir)/$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-$(host_os)-$(host_cpu)-$(RPM_RELEASE).tar
-all: all-recursive
-
-.SUFFIXES:
-am--refresh: Makefile
-	@:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
-	      $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    echo ' $(SHELL) ./config.status'; \
-	    $(SHELL) ./config.status;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	$(SHELL) ./config.status --recheck
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-rpms/eccodes.pc: $(top_builddir)/config.status $(top_srcdir)/rpms/eccodes.pc.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-rpms/eccodes.spec: $(top_builddir)/config.status $(top_srcdir)/rpms/eccodes.spec.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-rpms/eccodes_f90.pc: $(top_builddir)/config.status $(top_srcdir)/rpms/eccodes_f90.pc.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-perl/GRIB-API/Makefile.PL: $(top_builddir)/config.status $(top_srcdir)/perl/GRIB-API/Makefile.PL.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool config.lt
-install-pkgconfigDATA: $(pkgconfig_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
-	done
-
-uninstall-pkgconfigDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run 'make' without going through this Makefile.
-# To change the values of 'make' variables: instead of editing Makefiles,
-# (1) if the variable is set in 'config.status', edit 'config.status'
-#     (which will cause the Makefiles to be regenerated when you run 'make');
-# (2) otherwise, pass the desired values on the 'make' command line.
-$(am__recursive_targets):
-	@fail=; \
-	if $(am__make_keepgoing); then \
-	  failcom='fail=yes'; \
-	else \
-	  failcom='exit 1'; \
-	fi; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	for subdir in $$list; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    dot_seen=yes; \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-recursive
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
-	  include_option=--etags-include; \
-	  empty_fix=.; \
-	else \
-	  include_option=--include; \
-	  empty_fix=; \
-	fi; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test ! -f $$subdir/TAGS || \
-	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
-	  fi; \
-	done; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-recursive
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscope: cscope.files
-	test ! -s cscope.files \
-	  || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
-clean-cscope:
-	-rm -f cscope.files
-cscope.files: clean-cscope cscopelist
-cscopelist: cscopelist-recursive
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
-
-distdir: $(DISTFILES)
-	$(am__remove_distdir)
-	test -d "$(distdir)" || mkdir "$(distdir)"
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    $(am__make_dryrun) \
-	      || test -d "$(distdir)/$$subdir" \
-	      || $(MKDIR_P) "$(distdir)/$$subdir" \
-	      || exit 1; \
-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-	    $(am__relativize); \
-	    new_distdir=$$reldir; \
-	    dir1=$$subdir; dir2="$(top_distdir)"; \
-	    $(am__relativize); \
-	    new_top_distdir=$$reldir; \
-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-	    ($(am__cd) $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$new_top_distdir" \
-	        distdir="$$new_distdir" \
-		am__remove_distdir=: \
-		am__skip_length_check=: \
-		am__skip_mode_fix=: \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
-	-test -n "$(am__skip_mode_fix)" \
-	|| find "$(distdir)" -type d ! -perm -755 \
-		-exec chmod u+rwx,go+rx {} \; -o \
-	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
-	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
-	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
-	|| chmod -R a+r "$(distdir)"
-dist-gzip: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__post_remove_distdir)
-
-dist-bzip2: distdir
-	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
-	$(am__post_remove_distdir)
-
-dist-lzip: distdir
-	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
-	$(am__post_remove_distdir)
-
-dist-xz: distdir
-	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
-	$(am__post_remove_distdir)
-
-dist-tarZ: distdir
-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-	$(am__post_remove_distdir)
-
-dist-shar: distdir
-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-	$(am__post_remove_distdir)
-
-dist-zip: distdir
-	-rm -f $(distdir).zip
-	zip -rq $(distdir).zip $(distdir)
-	$(am__post_remove_distdir)
-
-dist dist-all:
-	$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
-	$(am__post_remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration.  Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
-	case '$(DIST_ARCHIVES)' in \
-	*.tar.gz*) \
-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
-	*.tar.bz2*) \
-	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
-	*.tar.lz*) \
-	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
-	*.tar.xz*) \
-	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
-	*.tar.Z*) \
-	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
-	*.shar.gz*) \
-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
-	*.zip*) \
-	  unzip $(distdir).zip ;;\
-	esac
-	chmod -R a-w $(distdir)
-	chmod u+w $(distdir)
-	mkdir $(distdir)/_build $(distdir)/_inst
-	chmod a-w $(distdir)
-	test -d $(distdir)/_build || exit 0; \
-	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
-	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-	  && am__cwd=`pwd` \
-	  && $(am__cd) $(distdir)/_build \
-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
-	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
-	    $(DISTCHECK_CONFIGURE_FLAGS) \
-	  && $(MAKE) $(AM_MAKEFLAGS) \
-	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
-	  && $(MAKE) $(AM_MAKEFLAGS) check \
-	  && $(MAKE) $(AM_MAKEFLAGS) install \
-	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
-	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
-	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
-	        distuninstallcheck \
-	  && chmod -R a-w "$$dc_install_base" \
-	  && ({ \
-	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
-	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
-	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
-	  && rm -rf "$$dc_destdir" \
-	  && $(MAKE) $(AM_MAKEFLAGS) dist \
-	  && rm -rf $(DIST_ARCHIVES) \
-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
-	  && cd "$$am__cwd" \
-	  || exit 1
-	$(am__post_remove_distdir)
-	@(echo "$(distdir) archives ready for distribution: "; \
-	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
-	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
-	@test -n '$(distuninstallcheck_dir)' || { \
-	  echo 'ERROR: trying to run $@ with an empty' \
-	       '$$(distuninstallcheck_dir)' >&2; \
-	  exit 1; \
-	}; \
-	$(am__cd) '$(distuninstallcheck_dir)' || { \
-	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
-	  exit 1; \
-	}; \
-	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
-	   || { echo "ERROR: files left after uninstall:" ; \
-	        if test -n "$(DESTDIR)"; then \
-	          echo "  (check DESTDIR support)"; \
-	        fi ; \
-	        $(distuninstallcheck_listfiles) ; \
-	        exit 1; } >&2
-distcleancheck: distclean
-	@if test '$(srcdir)' = . ; then \
-	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
-	  exit 1 ; \
-	fi
-	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
-	  || { echo "ERROR: files left in build directory after distclean:" ; \
-	       $(distcleancheck_listfiles) ; \
-	       exit 1; } >&2
-check-am: all-am
-check: check-recursive
-all-am: Makefile $(DATA)
-installdirs: installdirs-recursive
-installdirs-am:
-	for dir in "$(DESTDIR)$(pkgconfigdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-	distclean-local distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am: install-pkgconfigDATA
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-	-rm -rf $(top_srcdir)/autom4te.cache
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-pkgconfigDATA
-
-.MAKE: $(am__recursive_targets) install-am install-strip
-
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
-	am--refresh check check-am clean clean-cscope clean-generic \
-	clean-libtool cscope cscopelist-am ctags ctags-am dist \
-	dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
-	dist-xz dist-zip distcheck distclean distclean-generic \
-	distclean-libtool distclean-local distclean-tags \
-	distcleancheck distdir distuninstallcheck dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-pkgconfigDATA install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs installdirs-am \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am uninstall-pkgconfigDATA
-
-libtool: $(LIBTOOL_DEPS)
-	$(SHELL) ./configure_status libtool
-
-$(top_srcdir)/configure: $(top_srcdir)/version.sh
-
-check-perf:
-	@echo "Running and benchmarking tests $(perf_dir). This process will take some time."
-#       -rm -f $(perf_dir)/report.out*
-	for i in 1 2 3 ; do \
-		echo "Running iteration $$i" ;\
-			$(MAKE) check PYTHON=$(PYTHON) TOPBUILDDIR=$(abs_builddir) TESTS_ENVIRONMENT=$(perf_dir)/time.sh \
-                > $(perf_dir)/report.out.$$i 2>&1; done
-	cat $(perf_dir)/report.out* | $(AWK) -f $(perf_dir)/jmeter.awk -v JMETER="true" TIMESTAMP=`date +%s`000 > $(perf_dir)/report.jtl
-	cat $(perf_dir)/report.out* | $(AWK) -f $(perf_dir)/jmeter.awk -v JMETER="false" TIMESTAMP=`date +%s`000 > $(perf_dir)/report.xml
-#	-rm -f $(perf_dir)/report.out*
-	@echo "Testing and benchmarks have finished"
-
-rpmcheck:
-	@if [ which $(RPMBUILD) &> /dev/null ]; then \
-		echo "*** This make target requires an rpm-based Linux distribution"; \
-		(exit 1); exit 1; \
-	fi
-
-srcrpm: dist rpmcheck $(rpmspec)
-	$(RPMBUILD) $(RPMFLAGS) -bs $(rpmmacros) $(rpmspec)
-
-rpms: dist rpmcheck $(rpmspec)
-	$(RPMBUILD) $(RPMFLAGS) -ba $(rpmmacros) $(rpmspec)
-
-dist-defs:
-	@rm -f $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-defs.tar.gz
-	cd definitions; \
-	$(MAKE) top_distdir=$(abs_top_srcdir)/_distdefs distdir=$(abs_top_srcdir)/_distdefs/definitions distdir; \
-	cd $(abs_top_srcdir)/_distdefs; \
-	tar zcvf $(abs_top_srcdir)/$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-defs.tar.gz definitions > /dev/null
-	@rm -rf _distdefs
-	@echo "Created definitions tar ball \"$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-defs.tar.gz\""
-
-bindist:
-	$(MAKE) DESTDIR=$(abs_top_srcdir)/_dist
-	$(MAKE) DESTDIR=$(abs_top_srcdir)/_dist install
-	cd $(abs_top_srcdir)/_dist; \
-	find . -type f -o -type l | grep $(prefix) | \
-		cpio -ov -H ustar > $(main_package) ; \
-	gzip $(main_package)
-
-distclean-local:
-	rm -rf $${PWD}/_rpm
-	find $${PWD} -name "*.rpm" -exec rm {} \;
-	rm -f *.tar.gz
-	rm -rf $(RPM_HOST_CPU)
-	rm -rf _dist _distdefs
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/NOTICE b/NOTICE
index f494a65..8f0c435 100644
--- a/NOTICE
+++ b/NOTICE
@@ -18,3 +18,8 @@ Decoding double array optimisations provided by
 Norwegian Meteorological Institute.
 
 OpenMP API Support provided by Eric Millin.
+
+Fortran source code for grib_typeSizes.f90 from Robert Pincus
+Cooperative Institue for Meteorological Satellite Studies
+University of Wisconsin
+
diff --git a/README b/README
index c77a82d..f471c0e 100644
--- a/README
+++ b/README
@@ -3,7 +3,7 @@ and a set of tools for decoding and encoding messages in the following formats:
 
    * WMO FM-92 GRIB edition 1 and edition 2
    * WMO FM-94 BUFR edition 3 and edition 4
-   * WMO GTS abbreviated header (only decoding in this release).
+   * WMO GTS abbreviated header (only decoding in this release)
 
 A useful set of command line tools provide quick access to the messages.
 C, Fortran 90 and Python interfaces provide access to the main ecCodes functionality.
diff --git a/VERSION.cmake b/VERSION.cmake
index 3a8686c..5d3bef4 100644
--- a/VERSION.cmake
+++ b/VERSION.cmake
@@ -1 +1 @@
-set( ${PROJECT_NAME}_VERSION_STR  "0.16.0" )
+set( ${PROJECT_NAME}_VERSION_STR  "2.0.0" )
diff --git a/aclocal.m4 b/aclocal.m4
deleted file mode 100644
index 73ac7ea..0000000
--- a/aclocal.m4
+++ /dev/null
@@ -1,1290 +0,0 @@
-# generated automatically by aclocal 1.13.4 -*- Autoconf -*-
-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-# (This private macro should not be called outside this file.)
-AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.13'
-dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
-dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.13.4], [],
-      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
-])
-
-# _AM_AUTOCONF_VERSION(VERSION)
-# -----------------------------
-# aclocal traces this macro to find the Autoconf version.
-# This is a private macro too.  Using m4_define simplifies
-# the logic in aclocal, which can simply ignore this definition.
-m4_define([_AM_AUTOCONF_VERSION], [])
-
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.13.4])dnl
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-
-# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
-# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
-#
-# Of course, Automake must honor this variable whenever it calls a
-# tool from the auxiliary directory.  The problem is that $srcdir (and
-# therefore $ac_aux_dir as well) can be either absolute or relative,
-# depending on how configure is run.  This is pretty annoying, since
-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-# source directory, any form will work fine, but in subdirectories a
-# relative path needs to be adjusted first.
-#
-# $ac_aux_dir/missing
-#    fails when called from a subdirectory if $ac_aux_dir is relative
-# $top_srcdir/$ac_aux_dir/missing
-#    fails if $ac_aux_dir is absolute,
-#    fails when called from a subdirectory in a VPATH build with
-#          a relative $ac_aux_dir
-#
-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-# are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is '.', but things will broke when you
-# start a VPATH build or use an absolute $srcdir.
-#
-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
-#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-# and then we would define $MISSING as
-#   MISSING="\${SHELL} $am_aux_dir/missing"
-# This will work as long as MISSING is not called from configure, because
-# unfortunately $(top_srcdir) has no meaning in configure.
-# However there are other variables, like CC, which are often used in
-# configure, and could therefore not use this "fixed" $ac_aux_dir.
-#
-# Another solution, used here, is to always expand $ac_aux_dir to an
-# absolute PATH.  The drawback is that using absolute paths prevent a
-# configured tree to be moved without reconfiguration.
-
-AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
-
-# AM_CONDITIONAL                                            -*- Autoconf -*-
-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ([2.52])dnl
- m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-m4_define([_AM_COND_VALUE_$1], [$2])dnl
-if $2; then
-  $1_TRUE=
-  $1_FALSE='#'
-else
-  $1_TRUE='#'
-  $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-
-# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery.  Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
-      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
-      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
-      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
-      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                    [depcc="$$1"   am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
-               [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_$1_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
-  fi
-  am__universal=false
-  m4_case([$1], [CC],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac],
-    [CXX],
-    [case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac])
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_$1_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
-
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-
-
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE([dependency-tracking], [dnl
-AS_HELP_STRING(
-  [--enable-dependency-tracking],
-  [do not reject slow dependency extractors])
-AS_HELP_STRING(
-  [--disable-dependency-tracking],
-  [speeds up one-time build])])
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-AC_SUBST([am__nodep])dnl
-_AM_SUBST_NOTMAKE([am__nodep])dnl
-])
-
-# Generate code to set up dependency tracking.              -*- Autoconf -*-
-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
-  # Older Autoconf quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`AS_DIRNAME("$mf")`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`AS_DIRNAME(["$file"])`
-      AS_MKDIR_P([$dirpart/$fdir])
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each '.P' file that we will
-# need in order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
-     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
-
-# Do all the work for Automake.                             -*- Autoconf -*-
-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This macro actually does too much.  Some checks are only needed if
-# your package does certain things.  But this isn't really a big deal.
-
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out.  PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition.  After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.65])dnl
-dnl Autoconf wants to disallow AM_ names.  We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[AC_DIAGNOSE([obsolete],
-             [$0: two- and three-arguments forms are deprecated.])
-m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(
-  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
-  [ok:ok],,
-  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
- AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
-AM_MISSING_PROG([AUTOCONF], [autoconf])
-AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
-AM_MISSING_PROG([AUTOHEADER], [autoheader])
-AM_MISSING_PROG([MAKEINFO], [makeinfo])
-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
-	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-			     [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
-		  [_AM_DEPENDENCIES([CC])],
-		  [m4_define([AC_PROG_CC],
-			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-		  [_AM_DEPENDENCIES([CXX])],
-		  [m4_define([AC_PROG_CXX],
-			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-		  [_AM_DEPENDENCIES([OBJC])],
-		  [m4_define([AC_PROG_OBJC],
-			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
-		  [_AM_DEPENDENCIES([OBJCXX])],
-		  [m4_define([AC_PROG_OBJCXX],
-			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
-])
-AC_REQUIRE([AM_SILENT_RULES])dnl
-dnl The testsuite driver may need to know about EXEEXT, so add the
-dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
-dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
-AC_CONFIG_COMMANDS_PRE(dnl
-[m4_provide_if([_AM_COMPILER_EXEEXT],
-  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-])
-
-dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
-dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
-dnl mangled by Autoconf and run in a shell conditional statement.
-m4_define([_AC_COMPILER_EXEEXT],
-m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
-
-
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated.  The stamp files are numbered to have different names.
-
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_arg=$1
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-AC_SUBST([install_sh])])
-
-# Copyright (C) 2003-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# Check whether the underlying file-system supports filenames
-# with a leading dot.  For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# Check to see how 'make' treats includes.	            -*- Autoconf -*-
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check to see how make treats includes.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-
-# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it is modern enough.
-# If it is, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([missing])dnl
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
-else
-  am_missing_run=
-  AC_MSG_WARN(['missing' script is too old or missing])
-fi
-])
-
-# Helper functions for option handling.                     -*- Autoconf -*-
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-
-# _AM_SET_OPTION(NAME)
-# --------------------
-# Set option NAME.  Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
-
-# _AM_SET_OPTIONS(OPTIONS)
-# ------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-
-# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-# ---------------------------------------------------------------------------
-# Adds support for distributing Python modules and packages.  To
-# install modules, copy them to $(pythondir), using the python_PYTHON
-# automake variable.  To install a package with the same name as the
-# automake package, install to $(pkgpythondir), or use the
-# pkgpython_PYTHON automake variable.
-#
-# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as
-# locations to install python extension modules (shared libraries).
-# Another macro is required to find the appropriate flags to compile
-# extension modules.
-#
-# If your package is configured with a different prefix to python,
-# users will have to add the install directory to the PYTHONPATH
-# environment variable, or create a .pth file (see the python
-# documentation for details).
-#
-# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will
-# cause an error if the version of python installed on the system
-# doesn't meet the requirement.  MINIMUM-VERSION should consist of
-# numbers and dots only.
-AC_DEFUN([AM_PATH_PYTHON],
- [
-  dnl Find a Python interpreter.  Python versions prior to 2.0 are not
-  dnl supported. (2.0 was released on October 16, 2000).
-  m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
-[python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl
- python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
-
-  AC_ARG_VAR([PYTHON], [the Python interpreter])
-
-  m4_if([$1],[],[
-    dnl No version check is needed.
-    # Find any Python interpreter.
-    if test -z "$PYTHON"; then
-      AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :)
-    fi
-    am_display_PYTHON=python
-  ], [
-    dnl A version check is needed.
-    if test -n "$PYTHON"; then
-      # If the user set $PYTHON, use it and don't search something else.
-      AC_MSG_CHECKING([whether $PYTHON version is >= $1])
-      AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
-			      [AC_MSG_RESULT([yes])],
-			      [AC_MSG_RESULT([no])
-			       AC_MSG_ERROR([Python interpreter is too old])])
-      am_display_PYTHON=$PYTHON
-    else
-      # Otherwise, try each interpreter until we find one that satisfies
-      # VERSION.
-      AC_CACHE_CHECK([for a Python interpreter with version >= $1],
-	[am_cv_pathless_PYTHON],[
-	for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
-	  test "$am_cv_pathless_PYTHON" = none && break
-	  AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
-	done])
-      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
-      if test "$am_cv_pathless_PYTHON" = none; then
-	PYTHON=:
-      else
-        AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
-      fi
-      am_display_PYTHON=$am_cv_pathless_PYTHON
-    fi
-  ])
-
-  if test "$PYTHON" = :; then
-  dnl Run any user-specified action, or abort.
-    m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
-  else
-
-  dnl Query Python for its version number.  Getting [:3] seems to be
-  dnl the best way to do this; it's what "site.py" does in the standard
-  dnl library.
-
-  AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
-    [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
-  AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
-
-  dnl Use the values of $prefix and $exec_prefix for the corresponding
-  dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX.  These are made
-  dnl distinct variables so they can be overridden if need be.  However,
-  dnl general consensus is that you shouldn't need this ability.
-
-  AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
-  AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
-
-  dnl At times (like when building shared libraries) you may want
-  dnl to know which OS platform Python thinks this is.
-
-  AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
-    [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
-  AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
-
-  # Just factor out some code duplication.
-  am_python_setup_sysconfig="\
-import sys
-# Prefer sysconfig over distutils.sysconfig, for better compatibility
-# with python 3.x.  See automake bug#10227.
-try:
-    import sysconfig
-except ImportError:
-    can_use_sysconfig = 0
-else:
-    can_use_sysconfig = 1
-# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
-# <https://github.com/pypa/virtualenv/issues/118>
-try:
-    from platform import python_implementation
-    if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7':
-        can_use_sysconfig = 0
-except ImportError:
-    pass"
-
-  dnl Set up 4 directories:
-
-  dnl pythondir -- where to install python scripts.  This is the
-  dnl   site-packages directory, not the python standard library
-  dnl   directory like in previous automake betas.  This behavior
-  dnl   is more consistent with lispdir.m4 for example.
-  dnl Query distutils for this directory.
-  AC_CACHE_CHECK([for $am_display_PYTHON script directory],
-    [am_cv_python_pythondir],
-    [if test "x$prefix" = xNONE
-     then
-       am_py_prefix=$ac_default_prefix
-     else
-       am_py_prefix=$prefix
-     fi
-     am_cv_python_pythondir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pythondir in
-     $am_py_prefix*)
-       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
-       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
-       ;;
-     *)
-       case $am_py_prefix in
-         /usr|/System*) ;;
-         *)
-	  am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
-	  ;;
-       esac
-       ;;
-     esac
-    ])
-  AC_SUBST([pythondir], [$am_cv_python_pythondir])
-
-  dnl pkgpythondir -- $PACKAGE directory under pythondir.  Was
-  dnl   PYTHON_SITE_PACKAGE in previous betas, but this naming is
-  dnl   more consistent with the rest of automake.
-
-  AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
-
-  dnl pyexecdir -- directory for installing python extension modules
-  dnl   (shared libraries)
-  dnl Query distutils for this directory.
-  AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
-    [am_cv_python_pyexecdir],
-    [if test "x$exec_prefix" = xNONE
-     then
-       am_py_exec_prefix=$am_py_prefix
-     else
-       am_py_exec_prefix=$exec_prefix
-     fi
-     am_cv_python_pyexecdir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pyexecdir in
-     $am_py_exec_prefix*)
-       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
-       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
-       ;;
-     *)
-       case $am_py_exec_prefix in
-         /usr|/System*) ;;
-         *)
-	   am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
-	   ;;
-       esac
-       ;;
-     esac
-    ])
-  AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
-
-  dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
-
-  AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
-
-  dnl Run any user-specified action.
-  $2
-  fi
-
-])
-
-
-# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
-# ---------------------------------------------------------------------------
-# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
-# Run ACTION-IF-FALSE otherwise.
-# This test uses sys.hexversion instead of the string equivalent (first
-# word of sys.version), in order to cope with versions such as 2.2c1.
-# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
-AC_DEFUN([AM_PYTHON_CHECK_VERSION],
- [prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
-sys.exit(sys.hexversion < minverhex)"
-  AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_RUN_LOG(COMMAND)
-# -------------------
-# Run COMMAND, save the exit status in ac_status, and log it.
-# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
-AC_DEFUN([AM_RUN_LOG],
-[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
-   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   (exit $ac_status); }])
-
-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[[\\\"\#\$\&\'\`$am_lf]]*)
-    AC_MSG_ERROR([unsafe absolute working directory name]);;
-esac
-case $srcdir in
-  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
-    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$[*]" = "X"; then
-	# -L didn't work.
-	set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$[*]" != "X $srcdir/configure conftest.file" \
-	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-	# If neither matched, then we have a broken ls.  This can happen
-	# if, for instance, CONFIG_SHELL is bash and it inherits a
-	# broken ls alias from the environment.  This has actually
-	# happened.  Such a system could not be considered "sane".
-	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment])
-     fi
-     if test "$[2]" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$[2]" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT([yes])
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-AC_CONFIG_COMMANDS_PRE(
-  [AC_MSG_CHECKING([that generated files are newer than configure])
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   AC_MSG_RESULT([done])])
-rm -f conftest.file
-])
-
-# Copyright (C) 2009-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_SILENT_RULES([DEFAULT])
-# --------------------------
-# Enable less verbose build rules; with the default set to DEFAULT
-# ("yes" being less verbose, "no" or empty being verbose).
-AC_DEFUN([AM_SILENT_RULES],
-[AC_ARG_ENABLE([silent-rules], [dnl
-AS_HELP_STRING(
-  [--enable-silent-rules],
-  [less verbose build output (undo: "make V=1")])
-AS_HELP_STRING(
-  [--disable-silent-rules],
-  [verbose build output (undo: "make V=0")])dnl
-])
-case $enable_silent_rules in @%:@ (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
-esac
-dnl
-dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
-dnl do not support nested variable expansions.
-dnl See automake bug#9928 and bug#10237.
-am_make=${MAKE-make}
-AC_CACHE_CHECK([whether $am_make supports nested variables],
-   [am_cv_make_support_nested_variables],
-   [if AS_ECHO([['TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-	@$(TRUE)
-.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi])
-if test $am_cv_make_support_nested_variables = yes; then
-  dnl Using '$V' instead of '$(V)' breaks IRIX make.
-  AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AC_SUBST([AM_V])dnl
-AM_SUBST_NOTMAKE([AM_V])dnl
-AC_SUBST([AM_DEFAULT_V])dnl
-AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
-AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
-AM_BACKSLASH='\'
-AC_SUBST([AM_BACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
-])
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_STRIP
-# ---------------------
-# One issue with vendor 'install' (even GNU) is that you can't
-# specify the program used to strip binaries.  This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in "make install-strip", and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
-if test "$cross_compiling" != no; then
-  AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# Copyright (C) 2006-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
-# This macro is traced by Automake.
-AC_DEFUN([_AM_SUBST_NOTMAKE])
-
-# AM_SUBST_NOTMAKE(VARIABLE)
-# --------------------------
-# Public sister of _AM_SUBST_NOTMAKE.
-AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
-
-# Check how to create a tarball.                            -*- Autoconf -*-
-
-# Copyright (C) 2004-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_PROG_TAR(FORMAT)
-# --------------------
-# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of 'v7', 'ustar', or 'pax'.
-#
-# Substitute a variable $(am__tar) that is a command
-# writing to stdout a FORMAT-tarball containing the directory
-# $tardir.
-#     tardir=directory && $(am__tar) > result.tar
-#
-# Substitute a variable $(am__untar) that extract such
-# a tarball read from stdin.
-#     $(am__untar) < result.tar
-#
-AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AC_SUBST([AMTAR], ['$${TAR-tar}'])
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-
-m4_if([$1], [v7],
-  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
-
-  [m4_case([$1],
-    [ustar],
-     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
-      # There is notably a 21 bits limit for the UID and the GID.  In fact,
-      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
-      # and bug#13588).
-      am_max_uid=2097151 # 2^21 - 1
-      am_max_gid=$am_max_uid
-      # The $UID and $GID variables are not portable, so we need to resort
-      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
-      # below are definitely unexpected, so allow the users to see them
-      # (that is, avoid stderr redirection).
-      am_uid=`id -u || echo unknown`
-      am_gid=`id -g || echo unknown`
-      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
-      if test $am_uid -le $am_max_uid; then
-         AC_MSG_RESULT([yes])
-      else
-         AC_MSG_RESULT([no])
-         _am_tools=none
-      fi
-      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
-      if test $am_gid -le $am_max_gid; then
-         AC_MSG_RESULT([yes])
-      else
-        AC_MSG_RESULT([no])
-        _am_tools=none
-      fi],
-
-  [pax],
-    [],
-
-  [m4_fatal([Unknown tar format])])
-
-  AC_MSG_CHECKING([how to create a $1 tar archive])
-
-  # Go ahead even if we have the value already cached.  We do so because we
-  # need to set the values for the 'am__tar' and 'am__untar' variables.
-  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
-
-  for _am_tool in $_am_tools; do
-    case $_am_tool in
-    gnutar)
-      for _am_tar in tar gnutar gtar; do
-        AM_RUN_LOG([$_am_tar --version]) && break
-      done
-      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-      am__untar="$_am_tar -xf -"
-      ;;
-    plaintar)
-      # Must skip GNU tar: if it does not support --format= it doesn't create
-      # ustar tarball either.
-      (tar --version) >/dev/null 2>&1 && continue
-      am__tar='tar chf - "$$tardir"'
-      am__tar_='tar chf - "$tardir"'
-      am__untar='tar xf -'
-      ;;
-    pax)
-      am__tar='pax -L -x $1 -w "$$tardir"'
-      am__tar_='pax -L -x $1 -w "$tardir"'
-      am__untar='pax -r'
-      ;;
-    cpio)
-      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-      am__untar='cpio -i -H $1 -d'
-      ;;
-    none)
-      am__tar=false
-      am__tar_=false
-      am__untar=false
-      ;;
-    esac
-
-    # If the value was cached, stop now.  We just wanted to have am__tar
-    # and am__untar set.
-    test -n "${am_cv_prog_tar_$1}" && break
-
-    # tar/untar a dummy directory, and stop if the command works.
-    rm -rf conftest.dir
-    mkdir conftest.dir
-    echo GrepMe > conftest.dir/file
-    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
-    rm -rf conftest.dir
-    if test -s conftest.tar; then
-      AM_RUN_LOG([$am__untar <conftest.tar])
-      AM_RUN_LOG([cat conftest.dir/file])
-      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-    fi
-  done
-  rm -rf conftest.dir
-
-  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-]) # _AM_PROG_TAR
-
-m4_include([m4/ax_linux_distribution.m4])
-m4_include([m4/libtool.m4])
-m4_include([m4/ltoptions.m4])
-m4_include([m4/ltsugar.m4])
-m4_include([m4/ltversion.m4])
-m4_include([m4/lt~obsolete.m4])
-m4_include([acinclude.m4])
diff --git a/cmake/FindAEC.cmake b/cmake/FindAEC.cmake
index 767544f..717b2b5 100644
--- a/cmake/FindAEC.cmake
+++ b/cmake/FindAEC.cmake
@@ -3,24 +3,31 @@
 # This software is licensed under the terms of the Apache Licence Version 2.0
 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 # In applying this licence, ECMWF does not waive the privileges and immunities
-# granted to it by virtue of its status as an intergovernmental organisation nor
-# does it submit to any jurisdiction.
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
 
 # - Try to find AEC (Adaptive Entropy Coding library)
 # See https://www.dkrz.de/redmine/projects/aec/wiki
 
 # Once done this will define
-#  AEC_FOUND - System has AEC
+#  AEC_FOUND        - System has AEC
 #  AEC_INCLUDE_DIRS - The AEC include directories
-#  AEC_LIBRARIES - The libraries needed to use AEC
-
-if( DEFINED AEC_PATH )
-    find_path( AEC_INCLUDE_DIR szlib.h    PATHS ${AEC_PATH}/include PATH_SUFFIXES aec NO_DEFAULT_PATH )
-    find_library( AEC_LIBRARY  NAMES aec  PATHS ${AEC_PATH}/lib     PATH_SUFFIXES aec NO_DEFAULT_PATH )
-endif()
-
-find_path( AEC_INCLUDE_DIR szlib.h PATH_SUFFIXES aec )
-find_library( AEC_LIBRARY NAMES aec PATH_SUFFIXES aec )
+#  AEC_LIBRARIES    - The libraries needed to use AEC
+#
+# The following paths will be searched with priority if set in CMake or env
+#
+#  AEC_DIR          - prefix path of the AEC installation
+#  AEC_PATH         - prefix path of the AEC installation
+
+find_path( AEC_INCLUDE_DIR szlib.h
+           PATHS ${AEC_DIR} ${AEC_PATH} ENV AEC_DIR ENV AEC_PATH
+           PATH_SUFFIXES include include/aec NO_DEFAULT_PATH )
+find_path( AEC_INCLUDE_DIR szlib.h PATH_SUFFIXES include include/aec )
+
+find_library( AEC_LIBRARY  NAMES aec
+              PATHS ${AEC_DIR} ${AEC_PATH} ENV AEC_DIR ENV AEC_PATH
+              PATH_SUFFIXES lib lib64 lib/aec lib64/aec NO_DEFAULT_PATH )
+find_library( AEC_LIBRARY NAMES aec PATH_SUFFIXES lib lib64 lib/aec lib64/aec )
 
 set( AEC_LIBRARIES    ${AEC_LIBRARY} )
 set( AEC_INCLUDE_DIRS ${AEC_INCLUDE_DIR} )
diff --git a/cmake/FindMKL.cmake b/cmake/FindMKL.cmake
index 1123234..5941179 100644
--- a/cmake/FindMKL.cmake
+++ b/cmake/FindMKL.cmake
@@ -15,6 +15,7 @@
 #
 # The following paths will be searched with priority if set in CMake or env
 #
+#  MKLROOT           - root directory of the MKL installation
 #  MKL_PATH          - root directory of the MKL installation
 #  MKL_ROOT          - root directory of the MKL installation
 
@@ -34,9 +35,9 @@ else()
 
 endif()
 
-# Search with priority for MKL_ROOT and MKL_PATH if set in CMake or env
+# Search with priority for MKLROOT, MKL_PATH and MKL_ROOT if set in CMake or env
 find_path(MKL_INCLUDE_DIR mkl.h
-          PATHS ${MKL_PATH} ${MKL_ROOT} ENV MKL_PATH MKL_ROOT
+          PATHS ${MKLROOT} ${MKL_PATH} ${MKL_ROOT} ENV MKLROOT ENV MKL_PATH ENV MKL_ROOT
           PATH_SUFFIXES include NO_DEFAULT_PATH)
 find_path(MKL_INCLUDE_DIR mkl.h
           PATH_SUFFIXES include)
@@ -53,8 +54,6 @@ if( MKL_INCLUDE_DIR ) # use include dir to find libs
     set( __libsfx "" )
   endif()
 
-  message( STATUS "ICC_LIB_PATH ${ICC_LIB_PATH}" )
-
   find_library( MKL_LIB_INTEL         NAMES mkl_intel${__libsfx} PATHS ${MKL_LIB_PATH} )
   find_library( ${__mkl_lib_par}      NAMES ${__mkl_lib_name} PATHS ${MKL_LIB_PATH} )
   find_library( MKL_LIB_CORE          NAMES mkl_core PATHS ${MKL_LIB_PATH} )
diff --git a/cmake/FindOpenJPEG.cmake b/cmake/FindOpenJPEG.cmake
index 805f091..b54ecce 100644
--- a/cmake/FindOpenJPEG.cmake
+++ b/cmake/FindOpenJPEG.cmake
@@ -20,14 +20,20 @@ IF( NOT DEFINED OPENJPEG_PATH AND NOT "$ENV{OPENJPEG_PATH}" STREQUAL "" )
   SET( OPENJPEG_PATH "$ENV{OPENJPEG_PATH}" )
 ENDIF()
 
-# TODO: This only works for OpenJPEG v1.x.y and not for v2 which has a different API, library name etc
+# Note: OpenJPEG version 2.x.y onwards has a variable-name sub-dir in the include
+# e.g. include/openjpeg-2.0 or include/openjpeg-2.1
+# We only support version 2.1.x
+# Also the name of the library is different. In v1.x it was libopenjpeg and now it's libopenjp2
 if( DEFINED OPENJPEG_PATH )
-        find_path(OPENJPEG_INCLUDE_DIR openjpeg.h PATHS ${OPENJPEG_PATH}/include PATH_SUFFIXES openjpeg  NO_DEFAULT_PATH)
-        find_library(OPENJPEG_LIBRARY  openjpeg   PATHS ${OPENJPEG_PATH}/lib     PATH_SUFFIXES openjpeg  NO_DEFAULT_PATH)
+  find_path(OPENJPEG_INCLUDE_DIR openjpeg.h PATHS ${OPENJPEG_PATH}/include PATH_SUFFIXES openjpeg openjpeg-2.1 NO_DEFAULT_PATH)
+
+  find_library( OPENJPEG_LIBRARY NAMES openjpeg openjp2 PATHS ${OPENJPEG_PATH}/lib
+                PATH_SUFFIXES openjpeg  NO_DEFAULT_PATH )
 endif()
 
-find_path(OPENJPEG_INCLUDE_DIR  openjpeg.h PATH_SUFFIXES openjpeg )
-find_library( OPENJPEG_LIBRARY  openjpeg   PATH_SUFFIXES openjpeg )
+find_path(OPENJPEG_INCLUDE_DIR  openjpeg.h PATH_SUFFIXES openjpeg openjpeg-2.1)
+
+find_library( OPENJPEG_LIBRARY NAMES openjpeg openjp2 PATH_SUFFIXES openjpeg )
 
 set( OPENJPEG_LIBRARIES    ${OPENJPEG_LIBRARY} )
 set( OPENJPEG_INCLUDE_DIRS ${OPENJPEG_INCLUDE_DIR} )
diff --git a/cmake/VERSION.cmake b/cmake/VERSION.cmake
index ff7b93b..b4c65ee 100644
--- a/cmake/VERSION.cmake
+++ b/cmake/VERSION.cmake
@@ -1,7 +1,7 @@
 set( ECBUILD_MAJOR_VERSION "2" )
-set( ECBUILD_MINOR_VERSION "3" )
+set( ECBUILD_MINOR_VERSION "4" )
 set( ECBUILD_PATCH_VERSION "0" )
 
-set( ECBUILD_VERSION_STR  "2.3.0" )
+set( ECBUILD_VERSION_STR  "2.4.0" )
 
 set( ECBUILD_MACRO_VERSION "${ECBUILD_MAJOR_VERSION}.${ECBUILD_MINOR_VERSION}" )
diff --git a/cmake/compiler_flags/Cray_C.cmake b/cmake/compiler_flags/Cray_C.cmake
index 76779f9..f487cf4 100644
--- a/cmake/compiler_flags/Cray_C.cmake
+++ b/cmake/compiler_flags/Cray_C.cmake
@@ -6,9 +6,8 @@
 # granted to it by virtue of its status as an intergovernmental organisation
 # nor does it submit to any jurisdiction.
 
-set( CMAKE_C_FLAGS_ALL            "-hlist=amid"                                                                    CACHE STRING "Common flags for all build-types" FORCE )
-set( CMAKE_C_FLAGS_RELEASE        "${CMAKE_C_FLAGS_ALL} -O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG"                    CACHE STRING "Release C flags"                  FORCE )
-set( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_ALL} -O2 -hfp1 -Gfast -DNDEBUG"                                 CACHE STRING "Release-with-debug-info C flags"  FORCE )
-set( CMAKE_C_FLAGS_PRODUCTION     "${CMAKE_C_FLAGS_ALL} -O2 -hfp1 -G2"                                             CACHE STRING "Production C flags"               FORCE )
-set( CMAKE_C_FLAGS_BIT            "${CMAKE_C_FLAGS_ALL} -O2 -hfp1 -G2 -hflex_mp=conservative -hadd_paren -DNDEBUG" CACHE STRING "Bit-reproducible C flags"         FORCE )
-set( CMAKE_C_FLAGS_DEBUG          "${CMAKE_C_FLAGS_ALL} -O0 -G0"                                                   CACHE STRING "Debug Cflags"                     FORCE )
+set( CMAKE_C_FLAGS_RELEASE        "-O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG"        CACHE STRING "Release C flags"                  FORCE )
+set( CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -hfp1 -Gfast -DNDEBUG"                     CACHE STRING "Release-with-debug-info C flags"  FORCE )
+set( CMAKE_C_FLAGS_PRODUCTION     "-O2 -hfp1 -G2"                                 CACHE STRING "Production C flags"               FORCE )
+set( CMAKE_C_FLAGS_BIT            "-O2 -hfp1 -G2 -hflex_mp=conservative -DNDEBUG" CACHE STRING "Bit-reproducible C flags"         FORCE )
+set( CMAKE_C_FLAGS_DEBUG          "-O0 -G0"                                       CACHE STRING "Debug Cflags"                     FORCE )
diff --git a/cmake/compiler_flags/Cray_CXX.cmake b/cmake/compiler_flags/Cray_CXX.cmake
index d599bff..a2a6632 100644
--- a/cmake/compiler_flags/Cray_CXX.cmake
+++ b/cmake/compiler_flags/Cray_CXX.cmake
@@ -6,9 +6,8 @@
 # granted to it by virtue of its status as an intergovernmental organisation
 # nor does it submit to any jurisdiction.
 
-set( CMAKE_CXX_FLAGS_ALL            "-hlist=amid"                                                                      CACHE STRING "Common flags for all build-types"  FORCE )
-set( CMAKE_CXX_FLAGS_RELEASE        "${CMAKE_CXX_FLAGS_ALL} -O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG"                    CACHE STRING "Release C++ flags"                 FORCE )
-set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_ALL} -O2 -hfp1 -Gfast -DNDEBUG"                                 CACHE STRING "Release-with-debug-info C++ flags" FORCE )
-set( CMAKE_CXX_FLAGS_PRODUCTION     "${CMAKE_CXX_FLAGS_ALL} -O2 -hfp1 -G2"                                             CACHE STRING "Production C++ flags"              FORCE )
-set( CMAKE_CXX_FLAGS_BIT            "${CMAKE_CXX_FLAGS_ALL} -O2 -hfp1 -G2 -hflex_mp=conservative -hadd_paren -DNDEBUG" CACHE STRING "Bit-reproducible C++ flags"        FORCE )
-set( CMAKE_CXX_FLAGS_DEBUG          "${CMAKE_CXX_FLAGS_ALL} -O0 -G0"                                                   CACHE STRING "Debug CXX flags"                   FORCE )
+set( CMAKE_CXX_FLAGS_RELEASE        "-O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG"        CACHE STRING "Release C++ flags"                 FORCE )
+set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -hfp1 -Gfast -DNDEBUG"                     CACHE STRING "Release-with-debug-info C++ flags" FORCE )
+set( CMAKE_CXX_FLAGS_PRODUCTION     "-O2 -hfp1 -G2"                                 CACHE STRING "Production C++ flags"              FORCE )
+set( CMAKE_CXX_FLAGS_BIT            "-O2 -hfp1 -G2 -hflex_mp=conservative -DNDEBUG" CACHE STRING "Bit-reproducible C++ flags"        FORCE )
+set( CMAKE_CXX_FLAGS_DEBUG          "-O0 -G0"                                       CACHE STRING "Debug CXX flags"                   FORCE )
diff --git a/cmake/compiler_flags/Cray_Fortran.cmake b/cmake/compiler_flags/Cray_Fortran.cmake
index b2c23de..34b96e4 100644
--- a/cmake/compiler_flags/Cray_Fortran.cmake
+++ b/cmake/compiler_flags/Cray_Fortran.cmake
@@ -7,9 +7,9 @@
 # nor does it submit to any jurisdiction.
 
 # -emf activates .mods and uses lower case
-set( CMAKE_Fortran_FLAGS_ALL            "-emf"                                                                                 CACHE STRING "Common flags for all build-types"      FORCE )
-set( CMAKE_Fortran_FLAGS_RELEASE        "${CMAKE_Fortran_FLAGS_ALL} -O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG"                    CACHE STRING "Release Fortran flags"                 FORCE )
-set( CMAKE_Fortran_FLAGS_RELWITHDEBINFO "${CMAKE_Fortran_FLAGS_ALL} -O2 -hfp1 -Gfast -DNDEBUG"                                 CACHE STRING "Release-with-debug-info Fortran flags" FORCE )
-set( CMAKE_Fortran_FLAGS_PRODUCTION     "${CMAKE_Fortran_FLAGS_ALL} -O2 -hfp1 -G2"                                             CACHE STRING "Production Fortran flags"              FORCE )
-set( CMAKE_Fortran_FLAGS_BIT            "${CMAKE_Fortran_FLAGS_ALL} -O2 -hfp1 -G2 -hflex_mp=conservative -hadd_paren -DNDEBUG" CACHE STRING "Bit-reproducible Fortran flags"        FORCE )
-set( CMAKE_Fortran_FLAGS_DEBUG          "${CMAKE_Fortran_FLAGS_ALL} -O0 -G0"                                                   CACHE STRING "Debug Fortran flags"                   FORCE )
+# -rmoid produces a listing file
+set( CMAKE_Fortran_FLAGS_RELEASE        "-emf -rmoid -O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG"                    CACHE STRING "Release Fortran flags"                 FORCE )
+set( CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-emf -rmoid -O2 -hfp1 -Gfast -DNDEBUG"                                 CACHE STRING "Release-with-debug-info Fortran flags" FORCE )
+set( CMAKE_Fortran_FLAGS_PRODUCTION     "-emf -rmoid -O2 -hfp1 -G2"                                             CACHE STRING "Production Fortran flags"              FORCE )
+set( CMAKE_Fortran_FLAGS_BIT            "-emf -rmoid -O2 -hfp1 -G2 -hflex_mp=conservative -hadd_paren -DNDEBUG" CACHE STRING "Bit-reproducible Fortran flags"        FORCE )
+set( CMAKE_Fortran_FLAGS_DEBUG          "-emf -rmoid -O0 -G0"                                                   CACHE STRING "Debug Fortran flags"                   FORCE )
diff --git a/cmake/contrib/GreatCMakeCookOff/AddCPP11Flags.cmake b/cmake/contrib/GreatCMakeCookOff/AddCPP11Flags.cmake
index 2a11e04..ac7f456 100644
--- a/cmake/contrib/GreatCMakeCookOff/AddCPP11Flags.cmake
+++ b/cmake/contrib/GreatCMakeCookOff/AddCPP11Flags.cmake
@@ -29,6 +29,7 @@ endif(CMAKE_VERSION VERSION_LESS 2.8.9)
 
 check_cxx_compiler_flag(-std=c++11 has_std_cpp11)
 check_cxx_compiler_flag(-std=c++0x has_std_cpp0x)
+check_cxx_compiler_flag(-hstd=c++11 has_hstd_cpp11)
 if(MINGW) 
   check_cxx_compiler_flag(-std=gnu++11 has_std_gnupp11)
   check_cxx_compiler_flag(-std=gnu++0x has_std_gnupp0x)
@@ -37,10 +38,12 @@ if(has_std_gnupp11)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
 elseif(has_std_gnupp0x)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")
-elseif(has_std_cpp11) 
+elseif(has_std_cpp11)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
 elseif(has_std_cpp0x)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
+elseif(has_hstd_cpp11)
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -hstd=c++11")
 endif(has_std_gnupp11)
 
 if(MSVC) 
diff --git a/cmake/contrib/GreatCMakeCookOff/CheckCXX11Features.cmake b/cmake/contrib/GreatCMakeCookOff/CheckCXX11Features.cmake
index 71fa610..593b62f 100644
--- a/cmake/contrib/GreatCMakeCookOff/CheckCXX11Features.cmake
+++ b/cmake/contrib/GreatCMakeCookOff/CheckCXX11Features.cmake
@@ -1,14 +1,14 @@
 # Checks for C++11 features
-# 
+#
 # USAGE: There are two functions
 #
-# cxx11_find_all_features(OUTPUT_VARIABLE) 
+# cxx11_find_all_features(OUTPUT_VARIABLE)
 # This function returns a variable with all possible features.
 #
 # cxx11_feature_check([feature feature] [REQUIRED [feature feature]])
 # If no arguments are provided, then checks all available features
 # Features appeacing before REQUIRED are optional.
-# If arguments are provided and those features are available, sets 
+# If arguments are provided and those features are available, sets
 # the variable HAS_CXX11_FEATURENAME, where FEATURENAME is the input in capital letters.
 # Fails if required feature are not available
 #
@@ -17,65 +17,66 @@
 # Original script by Rolf Eike Beer
 # Modifications by Andreas Weis
 # Further Modifications by RSDT at UCL
+# Adapted to ecBuild by Florian Rathgeber <florian.rathgeber at ecmwf.int>
 
 set(CPP11_FEATURE_CHECK_DIR ${CMAKE_CURRENT_LIST_DIR}/cpp11 CACHE INTERNAL "c++11 file directory")
 
 MACRO(cxx11_check_single_feature FEATURE_NAME FEATURE_NUMBER RESULT_VAR)
-	IF (NOT DEFINED ${RESULT_VAR})
+  IF (NOT DEFINED ${RESULT_VAR})
     SET(_bindir "${CMAKE_BINARY_DIR}/cxx11_feature_tests/cxx11_${FEATURE_NAME}")
 
-		IF (${FEATURE_NUMBER})
+    IF (${FEATURE_NUMBER})
       SET(_SRCFILE_BASE ${CPP11_FEATURE_CHECK_DIR}/${FEATURE_NAME}-N${FEATURE_NUMBER})
-			SET(_LOG_NAME "\"${FEATURE_NAME}\" (N${FEATURE_NUMBER})")
-		ELSE (${FEATURE_NUMBER})
+      SET(_LOG_NAME "\"${FEATURE_NAME}\" (N${FEATURE_NUMBER})")
+    ELSE (${FEATURE_NUMBER})
       SET(_SRCFILE_BASE ${CPP11_FEATURE_CHECK_DIR}/${FEATURE_NAME})
-			SET(_LOG_NAME "\"${FEATURE_NAME}\"")
-		ENDIF (${FEATURE_NUMBER})
-		MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME}")
-
-		SET(_SRCFILE "${_SRCFILE_BASE}.cpp")
-		SET(_SRCFILE_FAIL "${_SRCFILE_BASE}_fail.cpp")
-		SET(_SRCFILE_FAIL_COMPILE "${_SRCFILE_BASE}_fail_compile.cpp")
-
-		IF (CROSS_COMPILING)
-			try_compile(${RESULT_VAR} "${_bindir}" "${_SRCFILE}")
-			IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
-				try_compile(${RESULT_VAR} "${_bindir}_fail" "${_SRCFILE_FAIL}")
-			ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
-		ELSE (CROSS_COMPILING)
-			try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
-					"${_bindir}" "${_SRCFILE}")
-			IF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
-				SET(${RESULT_VAR} TRUE)
-			ELSE (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
-				SET(${RESULT_VAR} FALSE)
-			ENDIF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
-			IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
-				try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
-						"${_bindir}_fail" "${_SRCFILE_FAIL}")
-				IF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
-					SET(${RESULT_VAR} TRUE)
-				ELSE (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
-					SET(${RESULT_VAR} FALSE)
-				ENDIF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
-			ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
-		ENDIF (CROSS_COMPILING)
-		IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
-			try_compile(_TMP_RESULT "${_bindir}_fail_compile" "${_SRCFILE_FAIL_COMPILE}")
-			IF (_TMP_RESULT)
-				SET(${RESULT_VAR} FALSE)
-			ELSE (_TMP_RESULT)
-				SET(${RESULT_VAR} TRUE)
-			ENDIF (_TMP_RESULT)
-		ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
-
-		IF (${RESULT_VAR})
-			MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME} -- works")
-		ELSE (${RESULT_VAR})
-			MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME} -- not supported")
-		ENDIF (${RESULT_VAR})
-		SET(${RESULT_VAR} ${${RESULT_VAR}} CACHE INTERNAL "C++11 support for ${_LOG_NAME}")
-	ENDIF (NOT DEFINED ${RESULT_VAR})
+      SET(_LOG_NAME "\"${FEATURE_NAME}\"")
+    ENDIF (${FEATURE_NUMBER})
+    ecbuild_info("Checking C++11 support for ${_LOG_NAME}")
+
+    SET(_SRCFILE "${_SRCFILE_BASE}.cpp")
+    SET(_SRCFILE_FAIL "${_SRCFILE_BASE}_fail.cpp")
+    SET(_SRCFILE_FAIL_COMPILE "${_SRCFILE_BASE}_fail_compile.cpp")
+
+    IF (CROSS_COMPILING)
+      try_compile(${RESULT_VAR} "${_bindir}" "${_SRCFILE}")
+      IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
+        try_compile(${RESULT_VAR} "${_bindir}_fail" "${_SRCFILE_FAIL}")
+      ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
+    ELSE (CROSS_COMPILING)
+      try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
+          "${_bindir}" "${_SRCFILE}")
+      IF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
+        SET(${RESULT_VAR} TRUE)
+      ELSE (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
+        SET(${RESULT_VAR} FALSE)
+      ENDIF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
+      IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
+        try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
+            "${_bindir}_fail" "${_SRCFILE_FAIL}")
+        IF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
+          SET(${RESULT_VAR} TRUE)
+        ELSE (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
+          SET(${RESULT_VAR} FALSE)
+        ENDIF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
+      ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
+    ENDIF (CROSS_COMPILING)
+    IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
+      try_compile(_TMP_RESULT "${_bindir}_fail_compile" "${_SRCFILE_FAIL_COMPILE}")
+      IF (_TMP_RESULT)
+        SET(${RESULT_VAR} FALSE)
+      ELSE (_TMP_RESULT)
+        SET(${RESULT_VAR} TRUE)
+      ENDIF (_TMP_RESULT)
+    ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
+
+    IF (${RESULT_VAR})
+      ecbuild_info("Checking C++11 support for ${_LOG_NAME} -- works")
+    ELSE (${RESULT_VAR})
+      ecbuild_info("Checking C++11 support for ${_LOG_NAME} -- not supported")
+    ENDIF (${RESULT_VAR})
+    SET(${RESULT_VAR} ${${RESULT_VAR}} CACHE INTERNAL "C++11 support for ${_LOG_NAME}")
+  ENDIF (NOT DEFINED ${RESULT_VAR})
 ENDMACRO(cxx11_check_single_feature)
 
 # Find list of all features
@@ -138,12 +139,12 @@ macro(_figure_out_cxx11_feature current_feature)
       list(REMOVE_ITEM ALL_FEATURE_FILES ${filename})
     endif()
   endforeach()
-  
+
   list(LENGTH ALL_FEATURE_FILES NFILES)
   if(NOT ${NFILES} EQUAL 1)
-    message(FATAL_ERROR "[c++11] Expected to find only one feature. Found ${NFILES} -- ${ALL_FEATURE_FILES}.")
+    ecbuild_critical("[c++11] Expected to find only one feature. Found ${NFILES} -- ${ALL_FEATURE_FILES}.")
   endif(NOT ${NFILES} EQUAL 1)
-  
+
   # Now we know which file corresponds to option.
   get_filename_component(basename ${ALL_FEATURE_FILES} NAME_WE)
   # If has feature number, extract it
@@ -165,18 +166,18 @@ function(cxx11_feature_check)
   # Parses input to this function.
   parse_input_features("${ALL_CPP11_FEATURES}" OPTIONALS REQUIRED ERRORS ${ARGN})
   if(NOT ${ERRORS} STREQUAL "")
-    message(STATUS "[c++11] The following features are unknown: ${ERRORS}.")
+    ecbuild_info("[c++11] The following features are unknown: ${ERRORS}.")
   endif()
 
   # MinGW has not implemented std::random_device fully yet. Unfortunately, this can only be detected
   # by running a program which tries to call std::random_device. However that generates an error that
-  # is *not* caught by CMake's try_run. 
+  # is *not* caught by CMake's try_run.
   if(MSYS)
     list(REMOVE_ITEM OPTIONALS "random_device")
     list(FIND REQUIRED "random_device" feature_was_found)
     if(NOT feature_was_found EQUAL "-1")
-      message(FATAL_ERROR "[c++1] MSYS does not implement Random devices fully.\n"
-                          "       It cannot be required on this system.")
+      ecbuild_critical("[c++1] MSYS does not implement Random devices fully.\n"
+                       "       It cannot be required on this system.")
     endif()
   endif()
 
@@ -190,7 +191,7 @@ function(cxx11_feature_check)
     _figure_out_cxx11_feature(${current_feature})
     set(VARNAME HAS_CXX11_${UPPER_OPTIONAL})
     if(NOT ${VARNAME})
-      message(FATAL_ERROR "[c++11] Required feature ${current_feature} is not available.")
+      ecbuild_critical("[c++11] Required feature ${current_feature} is not available.")
     endif(NOT ${VARNAME})
   endforeach(current_feature ${REQUIRED})
 
diff --git a/cmake/ecbuild-config-version.cmake b/cmake/ecbuild-config-version.cmake
index df21f03..cb62c4d 100644
--- a/cmake/ecbuild-config-version.cmake
+++ b/cmake/ecbuild-config-version.cmake
@@ -1,4 +1,4 @@
-set(PACKAGE_VERSION "2.3.0")
+set(PACKAGE_VERSION "2.4.0")
 
 # check whether the requested PACKAGE_FIND_VERSION is compatible
 
diff --git a/cmake/ecbuild-config.cmake b/cmake/ecbuild-config.cmake
index 6d89516..ebc0934 100644
--- a/cmake/ecbuild-config.cmake
+++ b/cmake/ecbuild-config.cmake
@@ -28,9 +28,9 @@ set( ECBUILD_TPL_INCLUDE_DIRS  "" )
 set( ECBUILD_TPL_DEFINITIONS   "" )
 set( ECBUILD_TPL_LIBRARIES     "" )
 
-set( ECBUILD_VERSION           "2.3.0" )
-set( ECBUILD_GIT_SHA1          "4074672828fc9d5422808e1abdadbae60bca8b15" )
-set( ECBUILD_GIT_SHA1_SHORT    "4074672" )
+set( ECBUILD_VERSION           "2.4.0" )
+set( ECBUILD_GIT_SHA1          "3f07644f712f9219706dbd63c87c6d017a99f8f0" )
+set( ECBUILD_GIT_SHA1_SHORT    "3f07644" )
 
 ### export include paths as absolute paths
 
diff --git a/cmake/ecbuild_add_executable.cmake b/cmake/ecbuild_add_executable.cmake
index 4572832..424059e 100644
--- a/cmake/ecbuild_add_executable.cmake
+++ b/cmake/ecbuild_add_executable.cmake
@@ -26,7 +26,7 @@
 #                           [ PERSISTENT <file1> [<file2> ...] ]
 #                           [ GENERATED <file1> [<file2> ...] ]
 #                           [ DEPENDS <target1> [<target2> ...] ]
-#                           [ CONDITION <condition1> [<condition2> ...] ]
+#                           [ CONDITION <condition> ]
 #                           [ NOINSTALL ]
 #                           [ VERSION <version> | AUTO_VERSION ]
 #                           [ CFLAGS <flag1> [<flag2> ...] ]
@@ -232,66 +232,10 @@ macro( ecbuild_add_executable )
     #   ecbuild_debug_var( ${_PAR_TARGET}_h_srcs )
     #   ecbuild_debug_var( ${_PAR_TARGET}_c_srcs )
     #   ecbuild_debug_var( ${_PAR_TARGET}_cxx_srcs )
-    #   ecbuild_debug_var( ${_PAR_TARGET}_f_srcs )
+    #   ecbuild_debug_var( ${_PAR_TARGET}_fortran_srcs )
 
-    # add local flags
-
-    if( ${_PAR_TARGET}_c_srcs )
-
-      if( ECBUILD_SOURCE_FLAGS )
-        ecbuild_source_flags( ${_PAR_TARGET}_C_SOURCE_FLAGS
-                              ${_PAR_TARGET}_c
-                              "${_PAR_CFLAGS}"
-                              "${${_PAR_TARGET}_c_srcs}" )
-
-        ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): setting source file C flags from ${${_PAR_TARGET}_C_SOURCE_FLAGS}")
-        include( ${${_PAR_TARGET}_C_SOURCE_FLAGS} )
-
-      elseif( DEFINED _PAR_CFLAGS )
-
-        ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): use C flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_c_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
-
-      endif()
-    endif()
-
-    if( ${_PAR_TARGET}_cxx_srcs )
-
-      if( ECBUILD_SOURCE_FLAGS )
-        ecbuild_source_flags( ${_PAR_TARGET}_CXX_SOURCE_FLAGS
-                              ${_PAR_TARGET}_cxx
-                              "${_PAR_CXXFLAGS}"
-                              "${${_PAR_TARGET}_cxx_srcs}" )
-
-        ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): setting source file CXX flags from ${${_PAR_TARGET}_CXX_SOURCE_FLAGS}")
-        include( ${${_PAR_TARGET}_CXX_SOURCE_FLAGS} )
-
-      elseif( DEFINED _PAR_CXXFLAGS )
-
-        ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): use C++ flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
-
-      endif()
-    endif()
-
-    if( ${_PAR_TARGET}_f_srcs )
-
-      if( ECBUILD_SOURCE_FLAGS )
-        ecbuild_source_flags( ${_PAR_TARGET}_Fortran_SOURCE_FLAGS
-                              ${_PAR_TARGET}_f
-                              "${_PAR_FFLAGS}"
-                              "${${_PAR_TARGET}_f_srcs}" )
-
-        ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): setting source file Fortran flags from ${${_PAR_TARGET}_Fortran_SOURCE_FLAGS}")
-        include( ${${_PAR_TARGET}_Fortran_SOURCE_FLAGS} )
-
-      elseif( DEFINED _PAR_FFLAGS )
-
-        ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): use Fortran flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_f_srcs}  PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
-
-      endif()
-    endif()
+    # Override compilation flags on a per source file basis
+    ecbuild_target_flags( ${_PAR_TARGET} "${_PAR_CFLAGS}" "${_PAR_CXXFLAGS}" "${_PAR_FFLAGS}" )
 
     # define VERSION if requested
     if( DEFINED _PAR_VERSION )
diff --git a/cmake/ecbuild_add_fortran_flags.cmake b/cmake/ecbuild_add_fortran_flags.cmake
index 17b9bf2..0d3b544 100644
--- a/cmake/ecbuild_add_fortran_flags.cmake
+++ b/cmake/ecbuild_add_fortran_flags.cmake
@@ -64,7 +64,14 @@ macro( ecbuild_add_fortran_flags m_fortran_flags )
 
       math( EXPR N_FortranFLAG '${N_FortranFLAG}+1' )
 
-      if( NOT ECBUILD_TRUST_FLAGS )
+      if( ECBUILD_TRUST_FLAGS )
+        set( _flag_ok 1 )
+      # Due to a bug in CMake < 3.0, check_fortran_compiler_flag ALWAYS fails with ifort
+      # see https://cmake.org/Bug/view.php?id=14507
+      elseif( CMAKE_MAJOR_VERSION LESS 3 AND CMAKE_Fortran_COMPILER_ID MATCHES "Intel" )
+        set( _flag_ok 1 )
+        ecbuild_warn( "Not testing Fortran flags due to a bug in CMake < 3.0 with ifort" )
+      else()
         if( DEFINED _PAR_NAME )
           check_fortran_compiler_flag( ${_flags} ${_PAR_NAME} )
           set( _flag_ok ${${_PAR_NAME}} )
@@ -72,8 +79,6 @@ macro( ecbuild_add_fortran_flags m_fortran_flags )
           check_fortran_compiler_flag( ${_flags} Fortran_FLAG_TEST_${N_FortranFLAG} )
           set( _flag_ok ${Fortran_FLAG_TEST_${N_FortranFLAG}} )
         endif()
-      else()
-        set( _flag_ok 1 )
       endif()
 
       if( _flag_ok )
diff --git a/cmake/ecbuild_add_library.cmake b/cmake/ecbuild_add_library.cmake
index 48602a4..2c59200 100644
--- a/cmake/ecbuild_add_library.cmake
+++ b/cmake/ecbuild_add_library.cmake
@@ -29,7 +29,7 @@
 #                        [ PERSISTENT <file1> [<file2> ...] ]
 #                        [ GENERATED <file1> [<file2> ...] ]
 #                        [ DEPENDS <target1> [<target2> ...] ]
-#                        [ CONDITION <condition1> [<condition2> ...] ]
+#                        [ CONDITION <condition> ]
 #                        [ NOINSTALL ]
 #                        [ HEADER_DESTINATION <path> ]
 #                        [ INSTALL_HEADERS LISTED|ALL ]
@@ -352,66 +352,10 @@ function( ecbuild_add_library_impl )
     #   ecbuild_debug_var( ${_PAR_TARGET}_h_srcs )
     #   ecbuild_debug_var( ${_PAR_TARGET}_c_srcs )
     #   ecbuild_debug_var( ${_PAR_TARGET}_cxx_srcs )
-    #   ecbuild_debug_var( ${_PAR_TARGET}_f_srcs )
+    #   ecbuild_debug_var( ${_PAR_TARGET}_fortran_srcs )
 
-    # add local flags
-
-    if( ${_PAR_TARGET}_c_srcs )
-
-      if( ECBUILD_SOURCE_FLAGS )
-        ecbuild_source_flags( ${_PAR_TARGET}_C_SOURCE_FLAGS
-                              ${_PAR_TARGET}_c
-                              "${_PAR_CFLAGS}"
-                              "${${_PAR_TARGET}_c_srcs}" )
-
-        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): setting source file C flags from ${${_PAR_TARGET}_C_SOURCE_FLAGS}")
-        include( ${${_PAR_TARGET}_C_SOURCE_FLAGS} )
-
-      elseif( DEFINED _PAR_CFLAGS )
-
-        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): use C flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_c_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
-
-      endif()
-    endif()
-
-    if( ${_PAR_TARGET}_cxx_srcs )
-
-      if( ECBUILD_SOURCE_FLAGS )
-        ecbuild_source_flags( ${_PAR_TARGET}_CXX_SOURCE_FLAGS
-                              ${_PAR_TARGET}_cxx
-                              "${_PAR_CXXFLAGS}"
-                              "${${_PAR_TARGET}_cxx_srcs}" )
-
-        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): setting source file CXX flags from ${${_PAR_TARGET}_CXX_SOURCE_FLAGS}")
-        include( ${${_PAR_TARGET}_CXX_SOURCE_FLAGS} )
-
-      elseif( DEFINED _PAR_CXXFLAGS )
-
-        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): use C++ flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
-
-      endif()
-    endif()
-
-    if( ${_PAR_TARGET}_f_srcs )
-
-      if( ECBUILD_SOURCE_FLAGS )
-        ecbuild_source_flags( ${_PAR_TARGET}_Fortran_SOURCE_FLAGS
-                              ${_PAR_TARGET}_f
-                              "${_PAR_FFLAGS}"
-                              "${${_PAR_TARGET}_f_srcs}" )
-
-        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): setting source file Fortran flags from ${${_PAR_TARGET}_Fortran_SOURCE_FLAGS}")
-        include( ${${_PAR_TARGET}_Fortran_SOURCE_FLAGS} )
-
-      elseif( DEFINED _PAR_FFLAGS )
-
-        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): use Fortran flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_f_srcs}  PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
-
-      endif()
-    endif()
+    # Override compilation flags on a per source file basis
+    ecbuild_target_flags( ${_PAR_TARGET} "${_PAR_CFLAGS}" "${_PAR_CXXFLAGS}" "${_PAR_FFLAGS}" )
 
     if( DEFINED _PAR_GENERATED )
       ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): mark as generated ${_PAR_GENERATED}")
diff --git a/cmake/ecbuild_add_option.cmake b/cmake/ecbuild_add_option.cmake
index 8261bd4..ed262d5 100644
--- a/cmake/ecbuild_add_option.cmake
+++ b/cmake/ecbuild_add_option.cmake
@@ -19,8 +19,8 @@
 #                       [ DESCRIPTION <description> ]
 #                       [ PURPOSE <purpose> ]
 #                       [ REQUIRED_PACKAGES <package1> [<package2> ...] ]
-#                       [ CONDITION <condition1> [<condition2> ...] ]
-#                       [ ADVANCED ] )
+#                       [ CONDITION <condition> ]
+#                       [ ADVANCED ] [ NO_TPL ] )
 #
 # Options
 # -------
@@ -66,6 +66,9 @@
 # ADVANCED : optional
 #   mark the feature as advanced
 #
+# NO_TPL : optional
+#   do not add any ``REQUIRED_PACKAGES`` to the list of third party libraries
+#
 # Usage
 # -----
 #
@@ -84,7 +87,7 @@
 
 macro( ecbuild_add_option )
 
-  set( options ADVANCED )
+  set( options ADVANCED NO_TPL )
   set( single_value_args FEATURE DEFAULT DESCRIPTION TYPE PURPOSE )
   set( multi_value_args  REQUIRED_PACKAGES CONDITION )
 
@@ -196,6 +199,7 @@ macro( ecbuild_add_option )
         string( TOUPPER ${pkgname} pkgUPPER )
         string( TOLOWER ${pkgname} pkgLOWER )
 
+        set( __help_msg "Provide ${pkgname} location with -D${pkgUPPER}_PATH=/..." )
         if( ${pkgname}_FOUND OR ${pkgUPPER}_FOUND OR ${pkgLOWER}_FOUND )
 
           ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): ${pkgname} has already been found")
@@ -205,7 +209,7 @@ macro( ecbuild_add_option )
 
           if( pkgproject )
 
-            ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for ecbuild project ${pkgname}")
+            ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for ecbuild project ${pkgname} - ecbuild_use_package( ${pkglist} )")
             ecbuild_use_package( ${pkglist} )
 
           else()
@@ -213,7 +217,7 @@ macro( ecbuild_add_option )
             if( pkgname STREQUAL "MPI" )
               set( _find_args ${pkglist} )
               list( REMOVE_ITEM _find_args "MPI" )
-              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for MPI")
+              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for MPI - ecbuild_find_mpi( ${_find_args} )")
               ecbuild_find_mpi( ${_find_args} )
             elseif( pkgname STREQUAL "OMP" )
               set( _find_args ${pkglist} )
@@ -221,20 +225,21 @@ macro( ecbuild_add_option )
               if( NOT ENABLE_${_p_FEATURE} )
                 list( APPEND _find_args STUBS )
               endif()
-              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for OpenMP")
+              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for OpenMP - ecbuild_find_omp( ${_find_args} )")
               ecbuild_find_omp( ${_find_args} )
             elseif( pkgname STREQUAL "Python" OR pkgname STREQUAL "PYTHON" )
               set( _find_args ${pkglist} )
               list( REMOVE_ITEM _find_args ${pkgname} )
-              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for Python")
+              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for Python - ecbuild_find_python( ${_find_args} )")
               ecbuild_find_python( ${_find_args} )
+              set( __help_msg "Specify the location of the Python interpreter with -DPYTHON_EXECUTABLE=/..." )
             elseif( pkgname STREQUAL "LEXYACC" )
               set( _find_args ${pkglist} )
               list( REMOVE_ITEM _find_args ${pkgname} )
-              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for lex-yacc")
+              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for lex-yacc - ecbuild_find_lexyacc( ${_find_args} )")
               ecbuild_find_lexyacc( ${_find_args} )
             else()
-              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for package ${pkgname}")
+              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for package ${pkgname} - find_package( ${pkglist} )")
               find_package( ${pkglist} )
             endif()
 
@@ -242,14 +247,6 @@ macro( ecbuild_add_option )
 
         endif()
 
-        # if found append to list of third-party libraries (to be forward to other packages )
-        if( ${pkgname}_FOUND OR ${pkgUPPER}_FOUND OR ${pkgLOWER}_FOUND )
-
-          list( APPEND ${PROJECT_NAME_CAPS}_TPLS ${pkgname} )
-          list( REMOVE_DUPLICATES ${PROJECT_NAME_CAPS}_TPLS )
-
-        endif()
-
         # ecbuild_debug_var( ${pkgname}_FOUND  )
         # ecbuild_debug_var( ${pkgLOWER}_FOUND )
         # ecbuild_debug_var( ${pkgUPPER}_FOUND )
@@ -258,8 +255,17 @@ macro( ecbuild_add_option )
 
         if( ${pkgname}_FOUND OR ${pkgUPPER}_FOUND OR ${pkgLOWER}_FOUND )
           ecbuild_info( "Found package ${pkgname} required for feature ${_p_FEATURE}" )
+
+          # append to list of third-party libraries (to be forward to other packages )
+          # unless the NO_TPL option was given
+          if( NOT _p_NO_TPL )
+            ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): appending ${pkgname} to ${PROJECT_NAME_CAPS}_TPLS")
+            list( APPEND ${PROJECT_NAME_CAPS}_TPLS ${pkgname} )
+            list( REMOVE_DUPLICATES ${PROJECT_NAME_CAPS}_TPLS )
+          endif()
+
         else()
-          ecbuild_info( "Could not find package ${pkgname} required for feature ${_p_FEATURE} -- Provide ${pkgname} location with -D${pkgUPPER}_PATH=/..." )
+          ecbuild_info( "Could NOT find package ${pkgname} required for feature ${_p_FEATURE} -- ${__help_msg}" )
           set( HAVE_${_p_FEATURE} 0 )
           list( APPEND _failed_to_find_packages ${pkgname} )
         endif()
@@ -279,15 +285,16 @@ macro( ecbuild_add_option )
     else() # if user provided input and we cannot satisfy FAIL otherwise WARN
 
       if( ${_p_FEATURE}_user_provided_input )
-        if( _${_p_FEATURE}_condition )
-          ecbuild_critical( "Feature ${_p_FEATURE} cannot be enabled -- following required packages weren't found: ${_failed_to_find_packages}" )
-        else()
+        if( NOT _${_p_FEATURE}_condition )
           string(REPLACE ";" " " _condition_msg "${_p_CONDITION}")
           ecbuild_critical( "Feature ${_p_FEATURE} cannot be enabled -- following condition was not met: ${_condition_msg}" )
+        else()
+          ecbuild_critical( "Feature ${_p_FEATURE} cannot be enabled -- following required packages weren't found: ${_failed_to_find_packages}" )
         endif()
       else()
-        if( _${_p_FEATURE}_condition )
-          ecbuild_info( "Feature ${_p_FEATURE} was not enabled (also not requested) -- following condition was not met: ${_p_CONDITION}" )
+        if( NOT _${_p_FEATURE}_condition )
+          string(REPLACE ";" " " _condition_msg "${_p_CONDITION}")
+          ecbuild_info( "Feature ${_p_FEATURE} was not enabled (also not requested) -- following condition was not met: ${_condition_msg}" )
         else()
           ecbuild_info( "Feature ${_p_FEATURE} was not enabled (also not requested) -- following required packages weren't found: ${_failed_to_find_packages}" )
         endif()
diff --git a/cmake/ecbuild_add_test.cmake b/cmake/ecbuild_add_test.cmake
index 2097683..c8c9864 100644
--- a/cmake/ecbuild_add_test.cmake
+++ b/cmake/ecbuild_add_test.cmake
@@ -33,7 +33,7 @@
 #                     [ GENERATED <file1> [<file2> ...] ]
 #                     [ DEPENDS <target1> [<target2> ...] ]
 #                     [ TEST_DEPENDS <target1> [<target2> ...] ]
-#                     [ CONDITION <condition1> [<condition2> ...] ]
+#                     [ CONDITION <condition> ]
 #                     [ ENVIRONMENT <variable1> [<variable2> ...] ]
 #                     [ WORKING_DIRECTORY <path> ]
 #                     [ CFLAGS <flag1> [<flag2> ...] ]
@@ -322,25 +322,14 @@ macro( ecbuild_add_test )
       # filter sources
       ecbuild_separate_sources( TARGET ${_PAR_TARGET} SOURCES ${_PAR_SOURCES} )
 
-      # add local flags
-      if( DEFINED _PAR_CFLAGS )
-        ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): use C flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_c_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
-      endif()
-      if( DEFINED _PAR_CXXFLAGS )
-        ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): use C++ flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
-      endif()
-      if( DEFINED _PAR_FFLAGS )
-        ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): use Fortran flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_f_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
-      endif()
+      # Override compilation flags on a per source file basis
+      ecbuild_target_flags( ${_PAR_TARGET} "${_PAR_CFLAGS}" "${_PAR_CXXFLAGS}" "${_PAR_FFLAGS}" )
+
       if( DEFINED _PAR_GENERATED )
         ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): mark as generated ${_PAR_GENERATED}")
         set_source_files_properties( ${_PAR_GENERATED} PROPERTIES GENERATED 1 )
       endif()
 
-
       # modify definitions to compilation ( -D... )
       get_property( _target_defs TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS )
 
@@ -405,7 +394,7 @@ macro( ecbuild_add_test )
 
     # Wrap with MPIEXEC
     if( _PAR_MPI )
-      
+
       set( MPIEXEC_TASKS ${MPIEXEC_NUMPROC_FLAG} ${_PAR_MPI} )
       if( DEFINED MPIEXEC_NUMTHREAD_FLAG )
         set( MPIEXEC_THREADS ${MPIEXEC_NUMTHREAD_FLAG} ${_PAR_OMP} )
diff --git a/cmake/ecbuild_bundle.cmake b/cmake/ecbuild_bundle.cmake
index 83b0bba..aee900c 100644
--- a/cmake/ecbuild_bundle.cmake
+++ b/cmake/ecbuild_bundle.cmake
@@ -20,7 +20,9 @@ include(ecbuild_git)
 # =========================
 #
 # Initialise the ecBuild environment for a bundle. *Must* be called *before*
-# any call to ecbuild_bundle.
+# any call to ``ecbuild_bundle``. ::
+#
+#   ecbuild_bundle_initialize()
 #
 ##############################################################################
 
@@ -159,7 +161,9 @@ endmacro()
 # =======================
 #
 # Finalise the ecBuild environment for a bundle. *Must* be called *after* the
-# last call to ecbuild_bundle.
+# last call to ``ecbuild_bundle``. ::
+#
+#   ecbuild_bundle_finalize()
 #
 ##############################################################################
 
diff --git a/cmake/ecbuild_check_cxx11.cmake b/cmake/ecbuild_check_cxx11.cmake
index 390462b..1639a6a 100644
--- a/cmake/ecbuild_check_cxx11.cmake
+++ b/cmake/ecbuild_check_cxx11.cmake
@@ -23,14 +23,19 @@
 # Options
 # -------
 #
-# FEATURES : optional, checks for all features if omitted
-#   list of features to check for
+# FEATURES : optional
+#   list of optional features to check for
 #
 # REQUIRED : optional
 #   list of required features to check for
 #
 # PRINT : optional
-#   print a summary of features check for, found and not found
+#   print a summary of features checked for, found and not found
+#
+# Note
+# ----
+#
+# If neither ``FEATURES`` nor ``REQUIRED`` are given, check for all features.
 #
 ##############################################################################
 
diff --git a/cmake/ecbuild_check_fortran.cmake b/cmake/ecbuild_check_fortran.cmake
new file mode 100644
index 0000000..5612134
--- /dev/null
+++ b/cmake/ecbuild_check_fortran.cmake
@@ -0,0 +1,126 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_check_fortran
+# =====================
+#
+# Check for Fortran features. ::
+#
+#   ecbuild_check_fortran( [ FEATURES <feature1> [ <feature2> ... ] ]
+#                          [ REQUIRED <feature1> [ <feature2> ... ] ]
+#                          [ PRINT ] )
+#
+# Options
+# -------
+#
+# FEATURES : optional
+#   list of optional features to check for
+#
+# REQUIRED : optional
+#   list of required features to check for, fails if not detected
+#
+# PRINT : optional
+#   print a summary of features checked for, found and not found
+#
+# Note
+# ----
+#
+# If neither ``FEATURES`` nor ``REQUIRED`` are given, check for all features.
+#
+##############################################################################
+
+function( ecbuild_check_fortran )
+
+  # parse parameters
+
+  set( options PRINT )
+  set( single_value_args )
+  set( multi_value_args   FEATURES REQUIRED )
+
+  cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+  if(_PAR_UNPARSED_ARGUMENTS)
+    ecbuild_critical("Unknown keywords given to ecbuild_check_fortran(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+  endif()
+
+  include( ${ECBUILD_MACROS_DIR}/fortran_features/CheckFortranFeatures.cmake )
+
+  fortran_find_all_features( ALL_FEATURES ) # list all available features to check
+
+  if( NOT _p_FEATURES AND NOT _p_REQUIRED ) # no input, then search for all features
+
+    fortran_feature_check()
+
+  else()
+
+    foreach( _f ${_p_FEATURES} )
+      fortran_feature_check( ${_f} )
+    endforeach()
+
+    foreach( _f ${_p_REQUIRED} )
+      fortran_feature_check( REQUIRED ${_f} )
+    endforeach()
+
+  endif()
+
+  if( _p_FEATURES OR _p_REQUIRED )
+    set( Fortran_CHECKED_FEATURES ${_p_FEATURES} ${_p_REQUIRED} )
+  else()
+    set( Fortran_CHECKED_FEATURES ${ALL_FEATURES} )
+  endif()
+
+  foreach( f ${Fortran_CHECKED_FEATURES} )
+    string( TOUPPER ${f} FEAT )
+    if( HAS_Fortran_${FEAT} )
+       list( APPEND Fortran_SUPPORTED_FEATURES ${f} )
+       set( EC_HAVE_Fortran_${FEAT} 1 PARENT_SCOPE )
+    else()
+       list( APPEND Fortran_NOT_SUPPORTED_FEATURES ${f} )
+       set( EC_HAVE_Fortran_${FEAT} 0 PARENT_SCOPE )
+    endif()
+  endforeach()
+
+  if( Fortran_CHECKED_FEATURES )
+    list( SORT Fortran_CHECKED_FEATURES )
+  endif()
+  if( Fortran_SUPPORTED_FEATURES )
+    list( SORT Fortran_SUPPORTED_FEATURES )
+  endif()
+  if( Fortran_NOT_SUPPORTED_FEATURES )
+    list( SORT Fortran_NOT_SUPPORTED_FEATURES )
+  endif()
+
+  set( Fortran_CHECKED_FEATURES       ${Fortran_CHECKED_FEATURES}       PARENT_SCOPE )
+  set( Fortran_SUPPORTED_FEATURES     ${Fortran_SUPPORTED_FEATURES}     PARENT_SCOPE )
+  set( Fortran_NOT_SUPPORTED_FEATURES ${Fortran_NOT_SUPPORTED_FEATURES} PARENT_SCOPE )
+
+  if( _p_PRINT )
+    if( Fortran_CHECKED_FEATURES )
+      join( Fortran_CHECKED_FEATURES " " Fortran_CHECKED_FEATURES_STR )
+      ecbuild_info( "Checked Fortran features: ${Fortran_CHECKED_FEATURES_STR}" )
+    else()
+      ecbuild_info( "Checked no Fortran features" )
+    endif()
+    if( Fortran_SUPPORTED_FEATURES )
+      join( Fortran_SUPPORTED_FEATURES " " Fortran_SUPPORTED_FEATURES_STR )
+      ecbuild_info( "Found Fortran features: ${Fortran_SUPPORTED_FEATURES_STR}" )
+    else()
+      ecbuild_info( "Found no Fortran features" )
+    endif()
+    if( Fortran_NOT_SUPPORTED_FEATURES )
+      join( Fortran_NOT_SUPPORTED_FEATURES " " Fortran_NOT_SUPPORTED_FEATURES_STR )
+      ecbuild_info( "Not found Fortran features: ${Fortran_NOT_SUPPORTED_FEATURES_STR}" )
+    else()
+      ecbuild_info( "Found all checked Fortran features" )
+    endif()
+  endif()
+
+endfunction( ecbuild_check_fortran )
diff --git a/cmake/ecbuild_check_fortran_source_return.cmake b/cmake/ecbuild_check_fortran_source_return.cmake
index 6b007df..175f4ef 100644
--- a/cmake/ecbuild_check_fortran_source_return.cmake
+++ b/cmake/ecbuild_check_fortran_source_return.cmake
@@ -52,7 +52,6 @@
 
 macro( ecbuild_check_fortran_source_return SOURCE )
 
-    ecbuild_warn( "This macro ecbuild_check_fortran_source has never been tested" )
     set( options )
     set( single_value_args VAR  OUTPUT )
     set( multi_value_args  INCLUDES LIBS DEFINITIONS )
@@ -93,15 +92,15 @@ macro( ecbuild_check_fortran_source_return SOURCE )
         if( __add_libs )
             set(CHECK_Fortran_SOURCE_COMPILES_ADD_INCLUDES "-DINCLUDE_DIRECTORIES:STRING=${__add_incs}")
         endif()
-    
+
         # write the source file
-    
-        file( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_${_PAR_VAR}.f" "${SOURCE}\n" )
+
+        file( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_${_PAR_VAR}.F90" "${SOURCE}\n" )
 
         ecbuild_debug( "Performing Test ${_PAR_VAR}" )
         try_run( ${_PAR_VAR}_EXITCODE ${_PAR_VAR}_COMPILED
           ${CMAKE_BINARY_DIR}
-          ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_${_PAR_VAR}.f
+          ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_${_PAR_VAR}.F90
           COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
           CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
           -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
@@ -142,9 +141,9 @@ macro( ecbuild_check_fortran_source_return SOURCE )
     
           ecbuild_debug("Performing Test ${_PAR_VAR} - Failed")
           file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log 
-            "Performing C SOURCE FILE Test ${_PAR_VAR} failed with the following compile output:\n"
+            "Performing Fortran SOURCE FILE Test ${_PAR_VAR} failed with the following compile output:\n"
             "${compile_OUTPUT}\n" 
-            "Performing C SOURCE FILE Run ${_PAR_VAR} failed with the following run output:\n"
+            "Performing Fortran SOURCE FILE Run ${_PAR_VAR} failed with the following run output:\n"
             "${run_OUTPUT}\n" 
             "Return value: ${${_PAR_VAR}_EXITCODE}\n"
             "Source file was:\n${SOURCE}\n")
diff --git a/cmake/ecbuild_check_functions.cmake b/cmake/ecbuild_check_functions.cmake
index 88526b5..73f5cb5 100644
--- a/cmake/ecbuild_check_functions.cmake
+++ b/cmake/ecbuild_check_functions.cmake
@@ -169,6 +169,15 @@ if( ENABLE_OS_FUNCTIONS_TEST )
 #    ecbuild_debug_var(EC_HAVE_PROCFS)
 #    ecbuild_debug_var(EC_HAVE_PROCFS_OUTPUT)
 
+    #### check support for DL library #############
+
+    ecbuild_cache_check_include_files( dlfcn.h  EC_HAVE_DLFCN_H )
+
+    cmake_push_check_state(RESET)
+    set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_DL_LIBS} )
+    ecbuild_cache_check_c_source_compiles( "#define _GNU_SOURCE\n#include <dlfcn.h>\nint main(){ void* addr; Dl_info info; dladdr(addr, &info); }\n" EC_HAVE_DLADDR )
+    cmake_pop_check_state()
+
 endif()
 
 
diff --git a/cmake/ecbuild_compiler_flags.cmake b/cmake/ecbuild_compiler_flags.cmake
index b97eb2c..0e3fe1e 100644
--- a/cmake/ecbuild_compiler_flags.cmake
+++ b/cmake/ecbuild_compiler_flags.cmake
@@ -12,7 +12,7 @@
 # ecbuild_compiler_flags
 # ======================
 #
-# Set default compiler flags for a given language. ::
+# Set compiler specific default compilation flags for a given language. ::
 #
 #   ecbuild_compiler_flags( <lang> )
 #
@@ -35,53 +35,171 @@
 
 macro( ecbuild_compiler_flags _lang )
 
+  # Set compiler and language specific default flags - OVERWRITES variables in CMake cache
   if( CMAKE_${_lang}_COMPILER_LOADED )
-
-    ecbuild_debug( "try include ${ECBUILD_MACROS_DIR}/compiler_flags/${CMAKE_${_lang}_COMPILER_ID}_${_lang}.cmake ")
-
+    ecbuild_debug( "ecbuild_compiler_flags(${_lang}): try include ${ECBUILD_MACROS_DIR}/compiler_flags/${CMAKE_${_lang}_COMPILER_ID}_${_lang}.cmake ")
     include( ${ECBUILD_MACROS_DIR}/compiler_flags/${CMAKE_${_lang}_COMPILER_ID}_${_lang}.cmake OPTIONAL )
-
-    ecbuild_debug_var( CMAKE_${_lang}_FLAGS )
-
-    foreach( _btype NONE DEBUG BIT PRODUCTION RELEASE RELWITHDEBINFO )
-      ecbuild_debug_var( CMAKE_${_lang}_FLAGS_${_btype} )
-    endforeach()
-
   endif()
 
+  # Apply user or toolchain specified compilation flag overrides (NOT written to cache)
+
   foreach( _btype NONE DEBUG BIT PRODUCTION RELEASE RELWITHDEBINFO )
     if( DEFINED ECBUILD_${_lang}_FLAGS_${_btype} )
+      ecbuild_debug( "ecbuild_compiler_flags(${_lang}): overriding CMAKE_${_lang}_FLAGS_${_btype} with ${ECBUILD_${_lang}_FLAGS_${_btype}}")
       set( CMAKE_${_lang}_FLAGS_${_btype} ${ECBUILD_${_lang}_FLAGS_${_btype}} )
     endif()
     mark_as_advanced( CMAKE_${_lang}_FLAGS_${_btype} )
   endforeach()
 
   if( DEFINED ECBUILD_${_lang}_FLAGS )
+    ecbuild_debug( "ecbuild_compiler_flags(${_lang}): overriding CMAKE_${_lang}_FLAGS with ${ECBUILD_${_lang}_FLAGS}")
     set( CMAKE_${_lang}_FLAGS "${ECBUILD_${_lang}_FLAGS}" )
   endif()
 
   mark_as_advanced( CMAKE_${_lang}_FLAGS )
 
   if( DEFINED ECBUILD_${_lang}_LINK_FLAGS )
+    ecbuild_debug( "ecbuild_compiler_flags(${_lang}): overriding CMAKE_${_lang}_LINK_FLAGS with ${ECBUILD_${_lang}_LINK_FLAGS}")
     set( CMAKE_${_lang}_LINK_FLAGS "${ECBUILD_${_lang}_LINK_FLAGS}" )
   endif()
 
   mark_as_advanced( CMAKE_${_lang}_LINK_FLAGS )
 
+  ecbuild_debug_var( CMAKE_${_lang}_FLAGS )
+  foreach( _btype NONE DEBUG BIT PRODUCTION RELEASE RELWITHDEBINFO )
+    ecbuild_debug_var( CMAKE_${_lang}_FLAGS_${_btype} )
+  endforeach()
+
 endmacro()
 
-#-----------------------------------------------------------------------------------------------------------------------
+##############################################################################
+#.rst:
+#
+# Using custom compilation flags
+# ==============================
+#
+# If compilation flags need to be controlled on a per source file basis,
+# ecBuild supports defining custom rules in a CMake or JSON file.
+#
+# When using this approach, *default compilation flags are NOT loaded*!
+#
+# Overriding compilation flags on a per source file basis using CMake rules
+# -------------------------------------------------------------------------
+#
+# Compiler flags can be overridden on a per source file basis by setting the
+# CMake variable ``ECBUILD_COMPILE_FLAGS`` to the *full path* of a CMake file
+# defining the override rules. If set, ``<PNAME>_ECBUILD_COMPILE_FLAGS``
+# takes precendence and ``ECBUILD_COMPILE_FLAGS`` is ignored, allowing for
+# rules that only apply to a subproject (e.g. in a bundle).
+#
+# Flags can be overridden in 3 different ways:
+#
+# 1.  By defining project specific flags for a language and (optionally)
+#     build type e.g. ::
+#
+#       set(<PNAME>_Fortran_FLAGS "...") # common flags for all build types
+#       set(<PNAME>_Fortran_FLAGS_DEBUG "...") # only for DEBUG build type
+#
+# 2.  By defining source file specific flags which are *combined* with the
+#     project and target specific flags ::
+#
+#       set_source_files_properties(<source>
+#         PROPERTIES COMPILE_FLAGS "..."  # common flags for all build types
+#                    COMPILE_FLAGS_DEBUG "...") # only for DEBUG build type
+#
+# 3.  By defining source file specific flags which *override* the project and
+#     target specific flags ::
+#
+#       set_source_files_properties(<source>
+#         PROPERTIES OVERRIDE_COMPILE_FLAGS "..."
+#                    OVERRIDE_COMPILE_FLAGS_DEBUG "...")
+#
+# See ``examples/override-compile-flags`` in the ecBuild source tree for a
+# complete example using this technique.
+#
+# Overriding compilation flags on a per source file basis using JSON rules
+# ------------------------------------------------------------------------
+#
+# Compiler flags can be overridden on a per source file basis by setting the
+# CMake variable ``ECBUILD_SOURCE_FLAGS`` to the *full path* of a JSON file
+# defining the override rules. If set, ``<PNAME>_ECBUILD_SOURCE_FLAGS``
+# takes precendence and ``ECBUILD_SOURCE_FLAGS`` is ignored, allowing for
+# rules that only apply to a subproject (e.g. in a bundle).
+#
+# The JSON file lists shell glob patterns and the rule to apply to each source
+# file matching the pattern, defined as an array ``[op, flag1, ...]``
+# containing an operator followed by one or more flags. Valid operators are:
+#
+# :+: Add the flags to the default compilation flags for matching files
+# :=: Set the flags for matching files, disregarding default compilation flags
+# :/: Remove the flags from the default compilation flags for matching files
+#
+# Rules can be nested to e.g. only apply to a subdirectory by setting the rule
+# to a dictionary, which will only apply to source files matching its pattern.
+#
+# An example JSON file demonstrating different rule types is given below: ::
+#
+#   {
+#     "*"       : [ "+", "-g0" ],
+#     "*.cxx"   : [ "+", "-cxx11" ],
+#     "*.f90"   : [ "+", "-pipe" ],
+#     "foo.c"   : [ "+", "-O0" ],
+#     "foo.cc"  : [ "+", "-O2", "-pipe" ],
+#     "bar/*": {
+#       "*.f90" : [ "=", "-O1" ]
+#     },
+#     "baz/*": {
+#       "*.f90" : [ "/", "-pipe" ],
+#       "*.f90" : [ "/", "-O2" ],
+#       "*.f90" : [ "+", "-O3" ]
+#     }
+#   }
+#
+# See ``examples/override-compile-flags`` in the ecBuild source tree for a
+# complete example using this technique.
+#
+##############################################################################
 
-### OVERRIDE Compiler FLAGS (we override because CMake forcely defines them) -- see ecbuild_compiler_flags() macro
+# Custom (project specific) compilation flags enabled?
+foreach( _flags COMPILE SOURCE )
+  if( ${PROJECT_NAME_CAPS}_ECBUILD_${_flags}_FLAGS )
+    if ( ECBUILD_${_flags}_FLAGS )
+      ecbuild_debug( "Override ECBUILD_${_flags}_FLAGS (${ECBUILD_${_flags}_FLAGS}) with ${PROJECT_NAME} specific flags (${${PROJECT_NAME_CAPS}_ECBUILD_${_flags}_FLAGS})" )
+    else()
+      ecbuild_debug( "Use ${PROJECT_NAME} specific ECBUILD_${_flags}_FLAGS (${${PROJECT_NAME_CAPS}_ECBUILD_${_flags}_FLAGS})" )
+    endif()
+    set( ECBUILD_${_flags}_FLAGS ${${PROJECT_NAME_CAPS}_ECBUILD_${_flags}_FLAGS} )
+  endif()
+  # Ensure ECBUILD_${_flags}_FLAGS is a valid file path
+  if( DEFINED ECBUILD_${_flags}_FLAGS AND NOT EXISTS ${ECBUILD_${_flags}_FLAGS} )
+    ecbuild_warn( "ECBUILD_${_flags}_FLAGS points to non-existent file ${ECBUILD_${_flags}_FLAGS} and will be ignored" )
+    unset( ECBUILD_${_flags}_FLAGS )
+    unset( ECBUILD_${_flags}_FLAGS CACHE )
+  endif()
+endforeach()
+if( ECBUILD_COMPILE_FLAGS )
+  include( "${ECBUILD_COMPILE_FLAGS}" )
+endif()
 
 foreach( _lang C CXX Fortran )
   if( CMAKE_${_lang}_COMPILER_LOADED )
-    ecbuild_compiler_flags( ${_lang} )
+
+    # Clear default compilation flags potentially inherited from parent scope
+    # when using custom compilation flags
+    if( ECBUILD_SOURCE_FLAGS OR ECBUILD_COMPILE_FLAGS )
+      set(CMAKE_${_lang}_FLAGS "")
+      foreach(_btype ALL RELEASE RELWITHDEBINFO PRODUCTION BIT DEBUG)
+        set(CMAKE_${_lang}_FLAGS_${_btype} "")
+      endforeach()
+    # Load default compilation flags only if custom compilation flags not enabled
+    else()
+      ecbuild_compiler_flags( ${_lang} )
+    endif()
+
   endif()
 endforeach()
 
-### OVERRIDE Linker FLAGS per object type (we override because CMake forcely defines them)
-
+# Apply user or toolchain specified linker flag overrides per object type (NOT written to cache)
 foreach( _btype NONE DEBUG BIT PRODUCTION RELEASE RELWITHDEBINFO )
 
   foreach( _obj EXE SHARED MODULE )
@@ -91,7 +209,3 @@ foreach( _btype NONE DEBUG BIT PRODUCTION RELEASE RELWITHDEBINFO )
   endforeach()
 
 endforeach()
-
-#-----------------------------------------------------------------------------------------------------------------------
-
-mark_as_advanced( CMAKE_C_FLAGS_BIT )
diff --git a/cmake/ecbuild_config.h.in b/cmake/ecbuild_config.h.in
index dd8e9cd..df9eb91 100644
--- a/cmake/ecbuild_config.h.in
+++ b/cmake/ecbuild_config.h.in
@@ -129,6 +129,12 @@
 #cmakedefine EC_ATTRIBUTE_CONSTRUCTOR_INITS_ARGV
 #cmakedefine EC_HAVE_PROCFS
 
+
+/* --- dl library support --- */
+
+#cmakedefine EC_HAVE_DLFCN_H
+#cmakedefine EC_HAVE_DLADDR
+
 /* --- c compiler support --- */
 
 #cmakedefine EC_HAVE_C_INLINE
diff --git a/cmake/ecbuild_declare_project.cmake b/cmake/ecbuild_declare_project.cmake
index 1c2e93b..c95e8e3 100644
--- a/cmake/ecbuild_declare_project.cmake
+++ b/cmake/ecbuild_declare_project.cmake
@@ -28,24 +28,27 @@
 # :<PNAME>_MINOR_VERSION:  minor version number
 # :<PNAME>_PATCH_VERSION:  patch version number
 # :INSTALL_BIN_DIR:        relative install directory for executables
-#                          (default: ``bin``)
 # :INSTALL_LIB_DIR:        relative install directory for libraries
-#                          (default: ``lib``)
 # :INSTALL_INCLUDE_DIR:    relative install directory for include files
-#                          (default: ``include``)
 # :INSTALL_DATA_DIR:       relative install directory for data
-#                          (default: ``share/<project_name>``)
 # :INSTALL_CMAKE_DIR:      relative install directory for CMake files
-#                          (default: ``share/<project_name>/cmake``)
+#
+# Customising install locations
+# -----------------------------
 #
 # The relative installation directories of components can be customised by
 # setting the following CMake variables on the command line or in cache:
 #
-# :<PNAME>_INSTALL_BIN_DIR:     directory for installing executables
-# :<PNAME>_INSTALL_LIB_DIR:     directory for installing libraries
-# :<PNAME>_INSTALL_INCLUDE_DIR: directory for installing include files
-# :<PNAME>_INSTALL_DATA_DIR:    directory for installing data
-# :<PNAME>_INSTALL_CMAKE_DIR:   directory for installing CMake files
+# :INSTALL_BIN_DIR:        directory for installing executables
+#                          (default: ``bin``)
+# :INSTALL_LIB_DIR:        directory for installing libraries
+#                          (default: ``lib``)
+# :INSTALL_INCLUDE_DIR:    directory for installing include files
+#                          (default: ``include``)
+# :INSTALL_DATA_DIR:       directory for installing data
+#                          (default: ``share/<project_name>``)
+# :INSTALL_CMAKE_DIR:      directory for installing CMake files
+#                          (default: ``share/<project_name>/cmake``)
 #
 # Using *relative* paths is recommended, which are interpreted relative to the
 # ``CMAKE_INSTALL_PREFIX``. Using absolute paths makes the build
@@ -109,11 +112,22 @@ macro( ecbuild_declare_project )
 
   # install dirs for this project
 
-  set( INSTALL_BIN_DIR bin )
-  set( INSTALL_LIB_DIR lib )
-  set( INSTALL_INCLUDE_DIR include )
-  set( INSTALL_DATA_DIR share/${PROJECT_NAME} )
-  set( INSTALL_CMAKE_DIR share/${PROJECT_NAME}/cmake )
+  # Use defaults unless values are already present in cache
+  if( NOT INSTALL_BIN_DIR )
+    set( INSTALL_BIN_DIR bin )
+  endif()
+  if( NOT INSTALL_LIB_DIR )
+    set( INSTALL_LIB_DIR lib )
+  endif()
+  if( NOT INSTALL_INCLUDE_DIR )
+    set( INSTALL_INCLUDE_DIR include )
+  endif()
+  if( NOT INSTALL_DATA_DIR )
+    set( INSTALL_DATA_DIR share/${PROJECT_NAME} )
+  endif()
+  if( NOT INSTALL_CMAKE_DIR )
+    set( INSTALL_CMAKE_DIR share/${PROJECT_NAME}/cmake )
+  endif()
 
   mark_as_advanced( INSTALL_BIN_DIR )
   mark_as_advanced( INSTALL_LIB_DIR )
@@ -121,10 +135,11 @@ macro( ecbuild_declare_project )
   mark_as_advanced( INSTALL_DATA_DIR )
   mark_as_advanced( INSTALL_CMAKE_DIR )
 
-  # overrides of install dirs
+  # overrides of install dirs (deprecated in ecBuild 2.4.0)
 
   foreach( p LIB BIN INCLUDE DATA CMAKE )
     if( ${PNAME}_INSTALL_${p}_DIR )
+      ecbuild_deprecate( "Use of ${PNAME}_INSTALL_${p}_DIR is deprecated and will be removed in a future release. Use INSTALL_${p}_DIR instead." )
       set( INSTALL_${p}_DIR ${${PNAME}_INSTALL_${p}_DIR} )
     endif()
   endforeach()
diff --git a/cmake/ecbuild_download_resource.cmake b/cmake/ecbuild_download_resource.cmake
index 3b2f90e..5d394f5 100644
--- a/cmake/ecbuild_download_resource.cmake
+++ b/cmake/ecbuild_download_resource.cmake
@@ -25,6 +25,7 @@ function( ecbuild_download_resource _p_OUT _p_URL )
   if( NOT EXISTS ${_p_OUT} )
 
     find_program( CURL_PROGRAM curl )
+    mark_as_advanced(CURL_PROGRAM)
     if( CURL_PROGRAM )
       execute_process( COMMAND ${CURL_PROGRAM} --silent --show-error --fail --output ${_p_OUT} ${_p_URL}
                        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} RESULT_VARIABLE CMD_RESULT )
diff --git a/cmake/ecbuild_find_python.cmake b/cmake/ecbuild_find_python.cmake
index 0273951..d3cf377 100644
--- a/cmake/ecbuild_find_python.cmake
+++ b/cmake/ecbuild_find_python.cmake
@@ -28,6 +28,10 @@
 # NO_LIBS : optional
 #   only search for the Python interpreter, not the libraries
 #
+# Unless ``NO_LIBS`` is set, the ``python-config`` utility, if found, is used
+# to determine the Python include directories, libraries and link line. Set the
+# CMake variable ``PYTHON_NO_CONFIG`` to use CMake's FindPythonLibs instead.
+#
 # Output variables
 # ----------------
 #
@@ -62,38 +66,34 @@ function( ecbuild_find_python )
     if(_p_UNPARSED_ARGUMENTS)
       ecbuild_critical("Unknown keywords given to ecbuild_find_python(): \"${_p_UNPARSED_ARGUMENTS}\"")
     endif()
+    if( _p_REQUIRED )
+      set( _p_REQUIRED REQUIRED )
+    else()
+      unset( _p_REQUIRED )
+    endif()
 
     # find python executable
 
-    find_package( PythonInterp )
-
-    if( NOT PYTHONINTERP_FOUND AND _p_REQUIRED )
-        ecbuild_error( "Failed to find any Python interpreter (REQUIRED)" )
+    # Search first without specifying the version, since doing so gives preference to the specified
+    # version even though a never version of the interpreter may be available
+    find_package( PythonInterp ${_p_REQUIRED} )
+
+    # If no suitable version was found, search again with the version specified
+    if( PYTHONINTERP_FOUND AND _p_VERSION )
+      if( _p_VERSION VERSION_GREATER "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.${PYTHON_VERSION_PATCH}" )
+        ecbuild_debug( "ecbuild_find_python: Found Python interpreter version ${PYTHON_VERSION_STRING} at ${PYTHON_EXECUTABLE}, however version ${_p_VERSION} is required. Searching again..." )
+        unset( PYTHONINTERP_FOUND )
+        unset( PYTHON_EXECUTABLE )
+        unset( PYTHON_EXECUTABLE CACHE )
+        unset( PYTHON_VERSION_MAJOR )
+        unset( PYTHON_VERSION_MINOR )
+        unset( PYTHON_VERSION_PATCH )
+        unset( PYTHON_VERSION_STRING )
+        find_package( PythonInterp "${_p_VERSION}" ${_p_REQUIRED} )
+      endif()
     endif()
 
-    # find python version
-    # execute_process( COMMAND ${PYTHON_EXECUTABLE} -V ERROR_VARIABLE _version  RESULT_VARIABLE _return ERROR_STRIP_TRAILING_WHITESPACE)
-    # if( NOT _return )
-    #    string(REGEX REPLACE ".*([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\1.\\2.\\3" PYTHON_VERSION ${_version} )
-    # endif()
-    # endif()
-
-    # ecbuild_debug( "Python version ${PYTHON_VERSION_STRING}" )
-    # ecbuild_debug_var(PYTHON_VERSION_MAJOR)
-    # ecbuild_debug_var(PYTHON_VERSION_MINOR)
-    # ecbuild_debug_var(PYTHON_VERSION_PATCH)
-
-    if( PYTHONINTERP_FOUND AND DEFINED _p_VERSION )
-        if( _p_VERSION VERSION_GREATER "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.${PYTHON_VERSION_PATCH}" )
-            set( PYTHONINTERP_FOUND 0 )
-            set( PYTHON_EXECUTABLE "PYTHON_EXECUTABLE-NOTFOUND" )
-            if( _p_REQUIRED )
-                ecbuild_critical( "Required python version at least ${_p_VERSION} but found only ${PYTHON_VERSION_STRING}" )
-            else()
-                ecbuild_warn( "Looking for python version at least ${_p_VERSION} but found only ${PYTHON_VERSION_STRING}\nMarking Python as NOTFOUND" )
-            endif()
-        endif()
-    endif()
+    set( __required_vars PYTHONINTERP_FOUND )
 
     if( PYTHONINTERP_FOUND )
         ecbuild_debug( "ecbuild_find_python: Found Python interpreter version ${PYTHON_VERSION_STRING} at ${PYTHON_EXECUTABLE}" )
@@ -104,15 +104,24 @@ function( ecbuild_find_python )
             execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())" OUTPUT_VARIABLE PYTHON_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE)
         endif()
         ecbuild_debug( "ecbuild_find_python: PYTHON_SITE_PACKAGES=${PYTHON_SITE_PACKAGES}" )
-
     endif()
+
     if( PYTHONINTERP_FOUND AND NOT _p_NO_LIBS )
+        list( APPEND __required_vars PYTHONLIBS_FOUND PYTHON_LIBS_WORKING )
+
         # find python config
 
         if( PYTHON_EXECUTABLE AND EXISTS ${PYTHON_EXECUTABLE}-config )
             set(PYTHON_CONFIG_EXECUTABLE ${PYTHON_EXECUTABLE}-config CACHE PATH "" FORCE)
         else()
-            find_program( PYTHON_CONFIG_EXECUTABLE NAMES python-config python-config${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} )
+            get_filename_component( __python_bin_dir ${PYTHON_EXECUTABLE} PATH )
+            find_program( PYTHON_CONFIG_EXECUTABLE
+                          NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH
+                          NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH
+                          HINTS ${__python_bin_dir}
+                          NAMES python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}-config
+                                python${PYTHON_VERSION_MAJOR}-config
+                                python-config )
         endif()
 
         ecbuild_debug_var( PYTHON_CONFIG_EXECUTABLE )
@@ -122,31 +131,58 @@ function( ecbuild_find_python )
         # The OpenBSD python packages have python-config's
         # that don't reliably report linking flags that will work.
 
-        if( PYTHON_CONFIG_EXECUTABLE AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" )
+        if( PYTHON_CONFIG_EXECUTABLE AND NOT ( PYTHON_NO_CONFIG OR ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" ) )
             ecbuild_debug( "ecbuild_find_python: Searching for Python include directories and libraries using ${PYTHON_CONFIG_EXECUTABLE}" )
 
-            execute_process(COMMAND "${PYTHON_CONFIG_EXECUTABLE}" --ldflags
-                            OUTPUT_VARIABLE PYTHON_LIBRARIES
-                            OUTPUT_STRIP_TRAILING_WHITESPACE
-                            ERROR_QUIET)
+            if( NOT PYTHON_LIBRARY )
+              execute_process(COMMAND "${PYTHON_CONFIG_EXECUTABLE}" --prefix
+                              OUTPUT_VARIABLE PYTHON_PREFIX
+                              OUTPUT_STRIP_TRAILING_WHITESPACE
+                              ERROR_QUIET)
+
+              execute_process(COMMAND "${PYTHON_CONFIG_EXECUTABLE}" --ldflags
+                              OUTPUT_VARIABLE PYTHON_LIBRARY
+                              OUTPUT_STRIP_TRAILING_WHITESPACE
+                              ERROR_QUIET)
+
+              # Prepend -L and and set the RPATH to the lib directory under the
+              # Python install prefix unless it is a standard system prefix path
+              if( PYTHON_LIBRARY AND PYTHON_PREFIX AND NOT CMAKE_SYSTEM_PREFIX_PATH MATCHES ${PYTHON_PREFIX} )
+                set( PYTHON_LIBRARY "-L${PYTHON_PREFIX}/lib -Wl,-rpath,${PYTHON_PREFIX}/lib ${PYTHON_LIBRARY}" )
+              endif()
+
+              set( PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_DIR}" CACHE PATH
+                   "Path to where Python.h is found" FORCE )
+            endif()
+
+            if(DEFINED PYTHON_INCLUDE_PATH AND NOT DEFINED PYTHON_INCLUDE_DIR)
+              set( PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_PATH}" CACHE PATH
+                   "Path to where Python.h is found" FORCE )
+            elseif( NOT PYTHON_INCLUDE_DIR )
+              execute_process(COMMAND "${PYTHON_CONFIG_EXECUTABLE}" --includes
+                              OUTPUT_VARIABLE PYTHON_INCLUDE_DIR
+                              OUTPUT_STRIP_TRAILING_WHITESPACE
+                              ERROR_QUIET)
 
-            execute_process(COMMAND "${PYTHON_CONFIG_EXECUTABLE}" --includes
-                            OUTPUT_VARIABLE PYTHON_INCLUDE_DIRS
-                            OUTPUT_STRIP_TRAILING_WHITESPACE
-                            ERROR_QUIET)
+              string(REGEX REPLACE "^[-I]" "" PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_DIR}")
+              string(REGEX REPLACE "[ ]-I" " " PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_DIR}")
 
-            string(REGEX REPLACE "^[-I]" "" PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIRS}")
-            string(REGEX REPLACE "[ ]-I" " " PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIRS}")
+              separate_arguments(PYTHON_INCLUDE_DIR)
+              set( PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_DIR}" CACHE PATH
+                   "Path to where Python.h is found" FORCE )
 
-            separate_arguments(PYTHON_INCLUDE_DIRS)
+            endif()
+
+            set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
+            set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
+
+            find_package_handle_standard_args( PythonLibs DEFAULT_MSG
+                                               PYTHON_INCLUDE_DIRS PYTHON_LIBRARIES )
 
         else() # revert to finding pythonlibs the standard way (cmake macro)
-            ecbuild_debug( "ecbuild_find_python: Searching for Python include directories and libraries using find_package(PythonLibs)" )
+            ecbuild_debug( "ecbuild_find_python: Searching for Python include directories and libraries using find_package( PythonLibs ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.${PYTHON_VERSION_PATCH} ${_p_REQUIRED} )" )
 
-            find_package(PythonLibs)
-            if( PYTHON_INCLUDE_PATH AND NOT PYTHON_INCLUDE_DIRS )
-              set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_PATH}")
-            endif()
+            find_package( PythonLibs "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.${PYTHON_VERSION_PATCH}" ${_p_REQUIRED} )
 
         endif()
 
@@ -159,25 +195,18 @@ function( ecbuild_find_python )
             try_compile( PYTHON_LIBS_WORKING ${CMAKE_CURRENT_BINARY_DIR}
                          ${__test_python}
                          CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${PYTHON_INCLUDE_DIRS}"
-                         LINK_LIBRARIES ${PYTHON_LIBRARIES} )
-
-            # set output variables
-
-            find_package_handle_standard_args( PythonLibs DEFAULT_MSG
-                                               PYTHON_INCLUDE_DIRS PYTHON_LIBRARIES PYTHON_LIBS_WORKING )
-            ecbuild_debug( "ecbuild_find_python: PYTHON_INCLUDE_DIRS=${PYTHON_INCLUDE_DIRS}" )
-            ecbuild_debug( "ecbuild_find_python: PYTHON_LIBRARIES=${PYTHON_LIBRARIES}" )
-
-        endif()
+                         LINK_LIBRARIES ${PYTHON_LIBRARIES}
+                         OUTPUT_VARIABLE __try_compile_output )
+            if( NOT PYTHON_LIBS_WORKING )
+              ecbuild_debug( "ecbuild_find_python: trying to link executable with Python libraries failed\n${__try_compile_output}" )
+            endif()
 
-        # Also set PYTHON_FOUND and Python_FOUND for compatibility with ecbuild_add_option
-        if( PYTHONLIBS_FOUND )
-          set( PYTHON_FOUND 1 )
-          set( Python_FOUND 1 )
         endif()
 
     endif()
 
+    find_package_handle_standard_args( Python DEFAULT_MSG ${__required_vars} )
+
     ecbuild_debug_var( PYTHONINTERP_FOUND )
     ecbuild_debug_var( PYTHON_FOUND )
     ecbuild_debug_var( PYTHON_EXECUTABLE )
diff --git a/cmake/ecbuild_generate_fortran_interfaces.cmake b/cmake/ecbuild_generate_fortran_interfaces.cmake
index d586248..93c7414 100644
--- a/cmake/ecbuild_generate_fortran_interfaces.cmake
+++ b/cmake/ecbuild_generate_fortran_interfaces.cmake
@@ -12,7 +12,7 @@
 # ecbuild_generate_fortran_interfaces
 # ===================================
 #
-# Generates interfaces form the Fortran source files. ::
+# Generates interfaces from the Fortran source files. ::
 #
 #   ecbuild_generate_fortran_interfaces()
 #
diff --git a/cmake/ecbuild_get_cxx11_flags.cmake b/cmake/ecbuild_get_cxx11_flags.cmake
index 47d0e1a..a97fe11 100644
--- a/cmake/ecbuild_get_cxx11_flags.cmake
+++ b/cmake/ecbuild_get_cxx11_flags.cmake
@@ -23,7 +23,7 @@ function( ecbuild_get_cxx11_flags CXX11_FLAGS )
 
   include(CheckCXXCompilerFlag)
 
-  # On older cmake versions + newer compilers, 
+  # On older cmake versions + newer compilers,
   # the given version of CheckCXXCompilerFlags does not quite work.
   if(CMAKE_VERSION VERSION_LESS 2.8.9)
     macro (CHECK_CXX_COMPILER_FLAG _FLAG _RESULT)
@@ -52,7 +52,8 @@ function( ecbuild_get_cxx11_flags CXX11_FLAGS )
 
   check_cxx_compiler_flag(-std=c++11 has_std_cpp11)
   check_cxx_compiler_flag(-std=c++0x has_std_cpp0x)
-  if(MINGW) 
+  check_cxx_compiler_flag(-hstd=c++11 has_hstd_cpp11)
+  if(MINGW)
     check_cxx_compiler_flag(-std=gnu++11 has_std_gnupp11)
     check_cxx_compiler_flag(-std=gnu++0x has_std_gnupp0x)
   endif(MINGW)
@@ -60,7 +61,9 @@ function( ecbuild_get_cxx11_flags CXX11_FLAGS )
     set(${CXX11_FLAGS} "-std=gnu++11" PARENT_SCOPE)
   elseif(has_std_gnupp0x)
     set(${CXX11_FLAGS} "-std=gnu++0x" PARENT_SCOPE)
-  elseif(has_std_cpp11) 
+  elseif(has_hstd_cpp11)
+    set(${CXX11_FLAGS} "-hstd=c++11" PARENT_SCOPE)
+  elseif(has_std_cpp11)
     set(${CXX11_FLAGS} "-std=c++11" PARENT_SCOPE)
   elseif(has_std_cpp0x)
     set(${CXX11_FLAGS} "-std=c++0x" PARENT_SCOPE)
diff --git a/cmake/ecbuild_get_test_data.cmake b/cmake/ecbuild_get_test_data.cmake
index c19a760..d908399 100644
--- a/cmake/ecbuild_get_test_data.cmake
+++ b/cmake/ecbuild_get_test_data.cmake
@@ -20,6 +20,7 @@ function( _download_test_data _p_NAME _p_DIRNAME )
   #endif()
 
   find_program( CURL_PROGRAM curl )
+  mark_as_advanced(CURL_PROGRAM)
 
   if( CURL_PROGRAM )
 
diff --git a/cmake/ecbuild_install_project.cmake b/cmake/ecbuild_install_project.cmake
index 2ba472e..5e26bea 100644
--- a/cmake/ecbuild_install_project.cmake
+++ b/cmake/ecbuild_install_project.cmake
@@ -233,6 +233,18 @@ macro( ecbuild_install_project )
         endif()
     endforeach()
 
+    # Deduplicate TPL includes, libs and definitions
+    # The same TPL may indirectly be pulled in multiple times!
+    if( ${PNAME}_TPL_INCLUDE_DIRS )
+      list( REMOVE_DUPLICATES ${PNAME}_TPL_INCLUDE_DIRS )
+    endif()
+    if( ${PNAME}_TPL_LIBRARIES )
+      list( REMOVE_DUPLICATES ${PNAME}_TPL_LIBRARIES )
+    endif()
+    if( ${PNAME}_TPL_DEFINITIONS )
+      list( REMOVE_DUPLICATES ${PNAME}_TPL_DEFINITIONS )
+    endif()
+
     # Generate the project .cmake config files
     # All variables here must be (sub)project specific in order to work within bundles
     if ( NOT ECBUILD_SKIP_${PNAME}_EXPORT )
@@ -278,8 +290,6 @@ macro( ecbuild_install_project )
            set( CONF_TPL_LIBRARIES ${${PNAME}_TPL_LIBRARIES} )
         endif()
 
-        # project-config.cmake @ build tree
-
         set( CONF_TPLS ${${PNAME}_TPLS} )
 
         set( CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}" "${PROJECT_BINARY_DIR}" )
@@ -288,18 +298,11 @@ macro( ecbuild_install_project )
         endif()
 
         set( CONF_TPL_INCLUDE_DIRS "" )
-        foreach( _tpl ${${PNAME}_TPLS} )
-            string( TOUPPER ${_tpl} TPL )
-            if( ${_tpl}_INCLUDE_DIRS )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIRS} )
-            elseif( ${_tpl}_INCLUDE_DIR )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIR} )
-            elseif( ${TPL}_INCLUDE_DIRS )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${TPL}_INCLUDE_DIRS} )
-            elseif( ${TPL}_INCLUDE_DIR )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${TPL}_INCLUDE_DIR} )
-            endif()
-        endforeach()
+        if( ${PNAME}_TPL_INCLUDE_DIRS )
+            set( CONF_TPL_INCLUDE_DIRS ${${PNAME}_TPL_INCLUDE_DIRS} )
+        endif()
+
+        # Generate <project>-import.cmake (if it exists)
 
         set( CONF_IMPORT_FILE "${LNAME}-import.cmake" )
 
@@ -323,11 +326,17 @@ macro( ecbuild_install_project )
           ecbuild_debug( "No ${CONF_IMPORT_FILE} found in ${PROJECT_SOURCE_DIR}" )
         endif()
 
+        # Generate <project>-config.cmake for use from the build tree
+
         set( _lname_config "${PROJECT_BINARY_DIR}/${LNAME}-config.cmake")
 
+        # Include directories (may) reference source and build tree and the
+        # config file is marked as coming from a build tree
         set( _is_build_dir_export ON )
         configure_file( "${_template_config}" "${_lname_config}" @ONLY )
 
+        # Generate <project>-config.cmake.tpls (if there are any TPLs)
+
         file( REMOVE ${_lname_config}.tpls.in )
 
         foreach( _tpl ${${PNAME}_TPLS} )
@@ -360,28 +369,13 @@ macro( ecbuild_install_project )
             install( FILES "${_lname_config}.tpls" DESTINATION "${INSTALL_CMAKE_DIR}" )
         endif()
 
-        # project-config.cmake @ install tree
+        # Generate <project>-config.cmake for use in the install tree
 
+        # Compute path to the include dir relative to the project's CMake dir
+        # where <project>-config.cmake is installed to
         file( RELATIVE_PATH REL_INCLUDE_DIR "${${PNAME}_FULL_INSTALL_CMAKE_DIR}" "${${PNAME}_FULL_INSTALL_INCLUDE_DIR}" )
         set( CONF_INCLUDE_DIRS "\${${PNAME}_CMAKE_DIR}/${REL_INCLUDE_DIR}" )
 
-        set( CONF_TPL_INCLUDE_DIRS "" )
-        foreach( _tpl ${${PNAME}_TPLS} )
-            string( TOUPPER ${_tpl} TPL )
-            if( ${TPL}_FULL_INSTALL_INCLUDE_DIR )
-                 list( APPEND CONF_TPL_INCLUDE_DIRS "\${${PNAME}_CMAKE_DIR}/${REL_INCLUDE_DIR}" )
-            endif()
-            if( ${_tpl}_INCLUDE_DIRS )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIRS} )
-            elseif( ${_tpl}_INCLUDE_DIR )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIR} )
-            elseif( ${TPL}_INCLUDE_DIRS )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${TPL}_INCLUDE_DIRS} )
-            elseif( ${TPL}_INCLUDE_DIR )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${TPL}_INCLUDE_DIR} )
-            endif()
-        endforeach()
-
         set( _is_build_dir_export OFF )
         configure_file( "${_template_config}" "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${LNAME}-config.cmake" @ONLY )
         install( FILES "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${LNAME}-config.cmake" DESTINATION "${INSTALL_CMAKE_DIR}" )
diff --git a/cmake/ecbuild_log.cmake b/cmake/ecbuild_log.cmake
index ec99495..f982d07 100644
--- a/cmake/ecbuild_log.cmake
+++ b/cmake/ecbuild_log.cmake
@@ -20,7 +20,9 @@
 # :ecbuild_warn:      logs a ``WARNING`` message if log level <= ``WARN``
 # :ecbuild_error:     logs a ``SEND_ERROR`` message if log level <= ``ERROR``
 # :ecbuild_critical:  logs a ``FATAL_ERROR`` message if log level <= ``CRITICAL``
-# :ecbuild_deprecate: logs a ``DEPRECATION`` message
+# :ecbuild_deprecate: logs a ``DEPRECATION`` message as a warning
+#                     enable CMAKE_ERROR_DEPRECATED to raise an error instead
+#                     disable CMAKE_WARN_DEPRECATED to hide deprecations
 #
 # Furthermore there are auxilliary functions for outputting CMake variables,
 # CMake lists and environment variables if the log level is ``DEBUG``:
@@ -50,10 +52,6 @@
 # ECBUILD_NO_COLOUR : bool
 #   if set, does not colour log output (by default log output is coloured)
 #
-# ECBUILD_NO_DEPRECATIONS : bool
-#   if set, does not output deprecation messages (only set this if you *really*
-#   know what you are doing!)
-#
 # Usage
 # -----
 #
@@ -113,6 +111,9 @@ endif()
 if( NOT DEFINED ECBUILD_LOG_FILE )
   set( ECBUILD_LOG_FILE ${CMAKE_BINARY_DIR}/ecbuild.log )
 endif()
+if( NOT DEFINED CMAKE_ERROR_DEPRECATED AND NOT DEFINED CMAKE_WARN_DEPRECATED )
+  set( CMAKE_WARN_DEPRECATED ON )
+endif()
 
 ##############################################################################
 
@@ -167,7 +168,15 @@ endfunction( ecbuild_error )
 function( ecbuild_deprecate )
   string(REPLACE ";" " " MSG ${ARGV})
   ecbuild_log(DEPRECATION "${MSG}")
-  if( NOT ECBUILD_NO_DEPRECATIONS )
+  # DEPRECATION message type was only introduced in CMake 3.0, provide
+  # consistent behaviour for CMake < 3.0
+  if( CMAKE_VERSION VERSION_LESS 3.0 )
+    if( CMAKE_ERROR_DEPRECATED )
+      message(FATAL_ERROR "${BoldRed}DEPRECATION - ${MSG}${ColourReset}")
+    elseif( CMAKE_WARN_DEPRECATED )
+      message(WARNING "${Yellow}DEPRECATION - ${MSG}${ColourReset}")
+    endif()
+  else()
     message(DEPRECATION "${BoldRed}${MSG}${ColourReset}")
   endif()
 endfunction( ecbuild_deprecate )
diff --git a/cmake/ecbuild_pkgconfig.cmake b/cmake/ecbuild_pkgconfig.cmake
index 6f62977..d839a86 100644
--- a/cmake/ecbuild_pkgconfig.cmake
+++ b/cmake/ecbuild_pkgconfig.cmake
@@ -275,7 +275,7 @@ endfunction(ecbuild_pkgconfig_include)
 # ---------------
 #
 # The following CMake variables are used as default values for some of the
-# options listed above, where ``PNAME`` is the project name in upper case: ::
+# options listed above, where ``PNAME`` is the project name in upper case:
 #
 # :<PNAME>_LIBRARIES:    list of libraries to export
 # :<PNAME>_DESCRIPTION:  package description
diff --git a/cmake/ecbuild_print_summary.cmake b/cmake/ecbuild_print_summary.cmake
index 4cf05cc..6fc70d0 100644
--- a/cmake/ecbuild_print_summary.cmake
+++ b/cmake/ecbuild_print_summary.cmake
@@ -59,6 +59,11 @@ macro( ecbuild_print_summary )
     ecbuild_info( "build type       : [${CMAKE_BUILD_TYPE}]" )
     ecbuild_info( "timestamp        : [${EC_BUILD_TIMESTAMP}]" )
     ecbuild_info( "install prefix   : [${CMAKE_INSTALL_PREFIX}]" )
+    ecbuild_info( "  bin dir        : [${${PNAME}_FULL_INSTALL_BIN_DIR}]" )
+    ecbuild_info( "  lib dir        : [${${PNAME}_FULL_INSTALL_LIB_DIR}]" )
+    ecbuild_info( "  include dir    : [${${PNAME}_FULL_INSTALL_INCLUDE_DIR}]" )
+    ecbuild_info( "  data dir       : [${${PNAME}_FULL_INSTALL_DATA_DIR}]" )
+    ecbuild_info( "  cmake dir      : [${${PNAME}_FULL_INSTALL_CMAKE_DIR}]" )
     if( EC_LINK_DIR )
       ecbuild_info( "links prefix     : [${EC_LINK_DIR}]" )
     endif()
@@ -66,7 +71,8 @@ macro( ecbuild_print_summary )
 
     foreach( lang ${langs} )
       ecbuild_info( "${lang} -- ${CMAKE_${lang}_COMPILER_ID} ${CMAKE_${lang}_COMPILER_VERSION}"  )
-      ecbuild_info( "    compiler   : ${CMAKE_${lang}_COMPILER} ${CMAKE_${lang}_FLAGS} ${CMAKE_${lang}_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}" )
+      ecbuild_info( "    compiler   : ${CMAKE_${lang}_COMPILER}" )
+      ecbuild_info( "    flags      : ${CMAKE_${lang}_FLAGS} ${CMAKE_${lang}_FLAGS_${CMAKE_BUILD_TYPE_CAPS}} ${${PNAME}_${lang}_FLAGS} ${${PNAME}_${lang}_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}" )
       ecbuild_info( "    link flags : ${CMAKE_${lang}_LINK_FLAGS}" )
     endforeach()
 
diff --git a/cmake/ecbuild_remove_fortran_flags.cmake b/cmake/ecbuild_remove_fortran_flags.cmake
index 74c8832..3a80316 100644
--- a/cmake/ecbuild_remove_fortran_flags.cmake
+++ b/cmake/ecbuild_remove_fortran_flags.cmake
@@ -10,9 +10,9 @@
 #.rst:
 #
 # ecbuild_remove_fortran_flags
-# =========================
+# ============================
 #
-# Remove Fortran compiler flags from CMAKE_Fortran_FLAGS. ::
+# Remove Fortran compiler flags from ``CMAKE_Fortran_FLAGS``. ::
 #
 #   ecbuild_remove_fortran_flags( <flag1> [ <flag2> ... ] [ BUILD <build> ] )
 #
@@ -58,4 +58,3 @@ macro( ecbuild_remove_fortran_flags m_flags )
   unset( _flags )
 
 endmacro()
-
diff --git a/cmake/ecbuild_separate_sources.cmake b/cmake/ecbuild_separate_sources.cmake
index b56db63..00722ae 100644
--- a/cmake/ecbuild_separate_sources.cmake
+++ b/cmake/ecbuild_separate_sources.cmake
@@ -32,10 +32,11 @@
 # If any file of the following group of extensions is present in the list of
 # sources, the corresponding CMake variable is set:
 #
-# :<target>_h_srcs:   list of sources with extension .h, .hxx, .hh, .hpp, .H
-# :<target>_c_srcs:   list of sources with extension .c
-# :<target>_cxx_srcs: list of sources with extension .cc, .cxx, .cpp, .C
-# :<target>_f_srcs:   list of sources with extension .f, .F, .for, f77, .f90, .f95
+# :<target>_h_srcs:       source files with extension .h, .hxx, .hh, .hpp, .H
+# :<target>_c_srcs:       source files with extension .c
+# :<target>_cxx_srcs:     source files with extension .cc, .cxx, .cpp, .C
+# :<target>_fortran_srcs: source files with extension .f, .F, .for, f77, .f90,
+#                                                     .f95, .F77, .F90, .F95
 #
 ##############################################################################
 
@@ -60,32 +61,33 @@ macro( ecbuild_separate_sources )
 	endif()
 
 	foreach( src ${_PAR_SOURCES} )
-		if(${src} MATCHES "(\\.h|\\.hxx|\\.hh|\\.hpp|\\.H)")
+		if(${src} MATCHES "(\\.h$|\\.hxx$|\\.hh$|\\.hpp$|\\.H$)")
 			list( APPEND ${_PAR_TARGET}_h_srcs ${src} )
 		endif()
 	endforeach()
 
 	foreach( src ${_PAR_SOURCES} )
-		if(${src} MATCHES "(\\.c)")
+		if(${src} MATCHES "(\\.c$)")
 			list( APPEND ${_PAR_TARGET}_c_srcs ${src} )
 		endif()
 	endforeach()
 
 	foreach( src ${_PAR_SOURCES} )
-		if(${src} MATCHES "(\\.cc|\\.cxx|\\.cpp|\\.C)")
+		if(${src} MATCHES "(\\.cc$|\\.cxx$|\\.cpp$|\\.C$)")
 			list( APPEND ${_PAR_TARGET}_cxx_srcs ${src} )
 		endif()
 	endforeach()
 
 	foreach( src ${_PAR_SOURCES} )
-		if(${src} MATCHES "(\\.f|\\.F|\\.for|\\.f77|\\.f90|\\.f95)")
-			list( APPEND ${_PAR_TARGET}_f_srcs ${src} )
+		if(${src} MATCHES "(\\.f$|\\.F$|\\.for$|\\.f77$|\\.f90$|\\.f95$|\\.f03$|\\.f08$|\\.F77$|\\.F90$|\\.F95$|\\.F03$|\\.F08$)")
+			list( APPEND ${_PAR_TARGET}_fortran_srcs ${src} )
 		endif()
 	endforeach()
+	set_source_files_properties( ${${_PAR_TARGET}_fortran_srcs} PROPERTIES LANGUAGE Fortran )
 
 #    ecbuild_debug_var( ${_PAR_TARGET}_h_srcs )
 #    ecbuild_debug_var( ${_PAR_TARGET}_c_srcs )
 #    ecbuild_debug_var( ${_PAR_TARGET}_cxx_srcs )
-#    ecbuild_debug_var( ${_PAR_TARGET}_f_srcs )
+#    ecbuild_debug_var( ${_PAR_TARGET}_fortran_srcs )
 
-endmacro( ecbuild_separate_sources  )
+endmacro( ecbuild_separate_sources )
diff --git a/cmake/ecbuild_source_flags.cmake b/cmake/ecbuild_source_flags.cmake
index 2414765..a281f1d 100644
--- a/cmake/ecbuild_source_flags.cmake
+++ b/cmake/ecbuild_source_flags.cmake
@@ -23,8 +23,12 @@ function( ecbuild_source_flags OUT TARGET DEFAULT_FLAGS SOURCES )
   endif()
   execute_process( COMMAND ${PYTHON_EXECUTABLE} ${__gen_source_flags}
                            ${ECBUILD_SOURCE_FLAGS} ${OUTFILE} "${DEFAULT_FLAGS}"
-                           ${SOURCES} "${__debug}" )
+                           ${SOURCES} "${__debug}"
+                   RESULT_VARIABLE __res )
 
+  if( __res GREATER 0 )
+    ecbuild_error( "ecbuild_source_flags: failed generating source flags for target ${TARGET} from ${ECBUILD_SOURCE_FLAGS}" )
+  endif()
   set( ${OUT} ${OUTFILE} PARENT_SCOPE )
 
 endfunction()
diff --git a/cmake/ecbuild_system.cmake b/cmake/ecbuild_system.cmake
index a4361f7..f02113e 100644
--- a/cmake/ecbuild_system.cmake
+++ b/cmake/ecbuild_system.cmake
@@ -187,6 +187,7 @@ if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
     include( ecbuild_add_cxx_flags )
     include( ecbuild_add_cxx11_flags )
     include( ecbuild_get_cxx11_flags )
+    include( ecbuild_check_fortran )
     include( ecbuild_add_fortran_flags )
     include( ecbuild_add_test )
     include( ecbuild_add_resources )
@@ -211,6 +212,7 @@ if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
     include( ecbuild_git )
     include( ecbuild_enable_fortran )
     include( ecbuild_source_flags )
+    include( ecbuild_target_flags )
     include( ecbuild_bundle )
     include( ecbuild_pkgconfig )
     include( ecbuild_cache )
diff --git a/cmake/ecbuild_target_flags.cmake b/cmake/ecbuild_target_flags.cmake
new file mode 100644
index 0000000..4c589af
--- /dev/null
+++ b/cmake/ecbuild_target_flags.cmake
@@ -0,0 +1,91 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_target_flags
+# ====================
+#
+# Override compiler flags for a given target. ::
+#
+#   ecbuild_target_flags( <target> <c_flags> <cxx_flags> <fortran_flags> )
+#
+# Required arguments:
+#
+# :target:        Target name
+# :c_flags:       Target specific C flags (can be empty)
+# :cxx_flags:     Target specific CXX flags (can be empty)
+# :fortran_flags: Target specific Fortran flags (can be empty)
+#
+# There are 3 cases, only the first applicable case takes effect:
+#
+# 1.  Use custom rules from user specified ``ECBUILD_COMPILE_FLAGS`` file and
+#     append target specific flags.
+#
+# 2.  Use JSON rules from user specified ``ECBUILD_SOURCE_FLAGS`` file and
+#     append target specific flags.
+#
+# 3.  Only the target specific flags are applied to all matching source files.
+#
+##############################################################################
+
+function( ecbuild_target_flags target c_flags cxx_flags fortran_flags )
+
+  get_property( languages GLOBAL PROPERTY ENABLED_LANGUAGES )
+
+  foreach( lang ${languages} )
+
+    string( TOLOWER ${lang} l )
+
+    if( ${target}_${l}_srcs )
+
+      # 1) Override compile flags from user specified CMake file
+      if( ECBUILD_COMPILE_FLAGS )
+
+        # Project specific flags for current language and optionally build type
+        set( pflags "${${PNAME}_${lang}_FLAGS} ${${PNAME}_${lang}_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}" )
+
+        foreach( src ${${target}_${l}_srcs} )
+          get_property( oflags SOURCE ${src} PROPERTY OVERRIDE_COMPILE_FLAGS )
+          get_property( oflags_btype SOURCE ${src} PROPERTY OVERRIDE_COMPILE_FLAGS_${CMAKE_BUILD_TYPE_CAPS} )
+          # Override compile flags for source file?
+          if( oflags OR oflags_btype )
+            set_source_files_properties( ${src} PROPERTIES COMPILE_FLAGS "${oflags} ${oflags_btype}" )
+            ecbuild_debug( "ecbuild_target_flags(${target}): overriding flags for ${src} with '${oflags} ${oflags_btype}'" )
+          # Otherwise append source file specific flags to project specific and target specific flags
+          else()
+            get_property( flags SOURCE ${src} PROPERTY COMPILE_FLAGS )
+            get_property( flags_btype SOURCE ${src} PROPERTY COMPILE_FLAGS_${CMAKE_BUILD_TYPE_CAPS} )
+            set_source_files_properties( ${src} PROPERTIES COMPILE_FLAGS "${pflags} ${${l}_flags} ${flags} ${flags_btype}" )
+            ecbuild_debug( "ecbuild_target_flags(${target}): setting flags for ${src} to '${pflags} ${${l}_flags} ${flags} ${flags_btype}'" )
+          endif()
+        endforeach()
+
+      # 2) Override compile flags from user specified JSON file
+      elseif( ECBUILD_SOURCE_FLAGS )
+        ecbuild_source_flags( ${target}_${lang}_SOURCE_FLAGS
+                              ${target}_${l}
+                              "${${l}_flags}"
+                              "${${target}_${l}_srcs}" )
+
+        ecbuild_debug("ecbuild_target_flags(${target}): setting source file ${lang} flags from ${${target}_${lang}_SOURCE_FLAGS}")
+        include( ${${target}_${lang}_SOURCE_FLAGS} )
+
+      # 3) Use target specific compile flags
+      elseif( ${l}_flags )
+
+        set_source_files_properties( ${${target}_${l}_srcs} PROPERTIES COMPILE_FLAGS "${${l}_flags}" )
+        ecbuild_debug("ecbuild_target_flags(${target}): setting flags for '${${target}_${l}_srcs}' to '${${l}_flags}'")
+
+      endif()
+    endif()
+
+  endforeach()
+
+endfunction()
diff --git a/cmake/ecbuild_use_package.cmake b/cmake/ecbuild_use_package.cmake
index 6bd2bed..c88bca8 100644
--- a/cmake/ecbuild_use_package.cmake
+++ b/cmake/ecbuild_use_package.cmake
@@ -177,6 +177,7 @@ macro( ecbuild_use_package )
       # add as a subproject
 
       set( ${pkgUPPER}_subproj_dir_ ${${pkgUPPER}_subproj_dir_} CACHE PATH "Path to ${_p_PROJECT} source directory" )
+      mark_as_advanced( ${pkgUPPER}_subproj_dir_ )
 
       set( ECBUILD_PROJECTS ${ECBUILD_PROJECTS} ${_p_PROJECT} CACHE INTERNAL "" )
 
diff --git a/cmake/fortran_features/CheckFortranFeatures.cmake b/cmake/fortran_features/CheckFortranFeatures.cmake
new file mode 100644
index 0000000..992964f
--- /dev/null
+++ b/cmake/fortran_features/CheckFortranFeatures.cmake
@@ -0,0 +1,167 @@
+###############################################################################
+# checks
+set(Fortran_FEATURE_CHECK_DIR ${CMAKE_CURRENT_LIST_DIR} CACHE INTERNAL "fortran file directory")
+
+MACRO(fortran_check_single_feature FEATURE_NAME FEATURE_NUMBER RESULT_VAR)
+  IF (NOT DEFINED ${RESULT_VAR})
+    SET(_bindir "${CMAKE_BINARY_DIR}/fortran_feature_tests/fortran_${FEATURE_NAME}")
+
+    IF (${FEATURE_NUMBER})
+      SET(_SRCFILE_BASE ${Fortran_FEATURE_CHECK_DIR}/${FEATURE_NAME}-N${FEATURE_NUMBER})
+      SET(_LOG_NAME "\"${FEATURE_NAME}\" (N${FEATURE_NUMBER})")
+    ELSE (${FEATURE_NUMBER})
+      SET(_SRCFILE_BASE ${Fortran_FEATURE_CHECK_DIR}/${FEATURE_NAME})
+      SET(_LOG_NAME "\"${FEATURE_NAME}\"")
+    ENDIF (${FEATURE_NUMBER})
+    ecbuild_info("Checking Fortran support for ${_LOG_NAME}")
+
+    SET(_SRCFILE "${_SRCFILE_BASE}.F90")
+    SET(_SRCFILE_FAIL "${_SRCFILE_BASE}_fail.F90")
+    SET(_SRCFILE_FAIL_COMPILE "${_SRCFILE_BASE}_fail_compile.F90")
+
+    IF (CROSS_COMPILING)
+      try_compile(${RESULT_VAR} "${_bindir}" "${_SRCFILE}")
+      IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
+        try_compile(${RESULT_VAR} "${_bindir}_fail" "${_SRCFILE_FAIL}")
+      ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
+    ELSE (CROSS_COMPILING)
+      try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
+          "${_bindir}" "${_SRCFILE}")
+      IF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
+        SET(${RESULT_VAR} TRUE)
+      ELSE (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
+        SET(${RESULT_VAR} FALSE)
+      ENDIF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
+      IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
+        try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
+            "${_bindir}_fail" "${_SRCFILE_FAIL}")
+        IF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
+          SET(${RESULT_VAR} TRUE)
+        ELSE (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
+          SET(${RESULT_VAR} FALSE)
+        ENDIF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
+      ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
+    ENDIF (CROSS_COMPILING)
+    IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
+      try_compile(_TMP_RESULT "${_bindir}_fail_compile" "${_SRCFILE_FAIL_COMPILE}")
+      IF (_TMP_RESULT)
+        SET(${RESULT_VAR} FALSE)
+      ELSE (_TMP_RESULT)
+        SET(${RESULT_VAR} TRUE)
+      ENDIF (_TMP_RESULT)
+    ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
+
+    IF (${RESULT_VAR})
+      ecbuild_info("Checking Fortran support for ${_LOG_NAME} -- works")
+    ELSE (${RESULT_VAR})
+      ecbuild_info("Checking Fortran support for ${_LOG_NAME} -- not supported")
+    ENDIF (${RESULT_VAR})
+    SET(${RESULT_VAR} ${${RESULT_VAR}} CACHE INTERNAL "Fortran support for ${_LOG_NAME}")
+  ENDIF (NOT DEFINED ${RESULT_VAR})
+ENDMACRO(fortran_check_single_feature)
+
+# Find list of all features
+function(fortran_find_all_features outvar)
+  FILE(GLOB ALL_Fortran_FEATURE_FILES "${Fortran_FEATURE_CHECK_DIR}/*.F90")
+  set(OUTPUT_VARIABLES)
+  foreach(filename ${ALL_Fortran_FEATURE_FILES})
+    get_filename_component(filename ${filename} NAME_WE)
+    string(REGEX REPLACE "_fail_compile" "" filename "${filename}")
+    string(REGEX REPLACE "_fail" "" filename "${filename}")
+    string(REGEX REPLACE "-N[0-9]*" "" filename "${filename}")
+    set(OUTPUT_VARIABLES ${OUTPUT_VARIABLES} ${filename})
+  endforeach()
+  list(REMOVE_DUPLICATES OUTPUT_VARIABLES)
+  set(${outvar} ${OUTPUT_VARIABLES} PARENT_SCOPE)
+endfunction()
+
+# Parses input and separates into arguments before REQUIRED and after REQUIRED.
+# Arguments before REQUIRED are OPTIONALS.
+# Arguments after REQUIRED are REQUIRED.
+# If no arguments, then sets output OPTIONALS to ALLFEATURES.
+function(parse_input_features ALLFEATURES OPTIONALS REQUIRED ERRORS)
+
+  if("${ARGN}" STREQUAL "")
+    set(${OPTIONALS} ${ALLFEATURES} PARENT_SCOPE)
+    set(${REQUIRED} "" PARENT_SCOPE)
+  else()
+    set(REQUIRED_FEATURES)
+    set(OPTIONAL_FEATURES)
+    set(UNKNOWN_FEATURES)
+    set(result_type OPTIONAL_FEATURES)
+    foreach(feature ${ARGN})
+      if(${feature} STREQUAL "REQUIRED")
+        set(result_type REQUIRED_FEATURES)
+      else()
+        list(FIND ALLFEATURES ${feature} feature_was_found)
+
+        if(feature_was_found EQUAL -1)
+          list(APPEND UNKNOWN_FEATURES ${feature})
+        else()
+          list(APPEND ${result_type} ${feature})
+        endif()
+
+      endif(${feature} STREQUAL "REQUIRED")
+    endforeach()
+
+    set(${OPTIONALS} ${OPTIONAL_FEATURES} PARENT_SCOPE)
+    set(${REQUIRED} ${REQUIRED_FEATURES} PARENT_SCOPE)
+    set(${ERRORS} ${UNKNOWN_FEATURES} PARENT_SCOPE)
+  endif("${ARGN}" STREQUAL "")
+endfunction(parse_input_features)
+
+# Figures out name and number of feature
+# then calls macro that does the work
+macro(_figure_out_fortran_feature current_feature)
+  # Find set of files that match current_feature, excepting _fail and _fail_compile.
+  file(GLOB ALL_FEATURE_FILES "${Fortran_FEATURE_CHECK_DIR}/${current_feature}*.F90")
+  foreach(filename ${ALL_FEATURE_FILES})
+    if(filename MATCHES "_fail")
+      list(REMOVE_ITEM ALL_FEATURE_FILES ${filename})
+    endif()
+  endforeach()
+
+  list(LENGTH ALL_FEATURE_FILES NFILES)
+  if(NOT ${NFILES} EQUAL 1)
+    ecbuild_critical("[Fortran] Expected to find only one feature. Found ${NFILES} -- ${ALL_FEATURE_FILES}.")
+  endif(NOT ${NFILES} EQUAL 1)
+
+  # Now we know which file corresponds to option.
+  get_filename_component(basename ${ALL_FEATURE_FILES} NAME_WE)
+  # If has feature number, extract it
+  set(number "")
+  if(basename MATCHES "-N[0-9]*$")
+    string(REGEX REPLACE "${current_feature}-N" "" number "${basename}")
+  endif()
+  # Then call macro
+  string(TOUPPER ${current_feature} UPPER_OPTIONAL)
+  set(VARNAME HAS_Fortran_${UPPER_OPTIONAL})
+  fortran_check_single_feature(${current_feature} "${number}" ${VARNAME})
+endmacro(_figure_out_fortran_feature)
+
+function(fortran_feature_check)
+
+  # find all features
+  fortran_find_all_features(ALL_Fortran_FEATURES)
+
+  # Parses input to this function.
+  parse_input_features("${ALL_Fortran_FEATURES}" OPTIONALS REQUIRED ERRORS ${ARGN})
+  if(NOT ${ERRORS} STREQUAL "")
+    ecbuild_info("[Fortran] The following features are unknown: ${ERRORS}.")
+  endif()
+
+  # Check optional features
+  foreach(current_feature ${OPTIONALS})
+    _figure_out_fortran_feature(${current_feature})
+  endforeach(current_feature ${ARGN})
+
+  # Check required features
+  foreach(current_feature ${REQUIRED})
+    _figure_out_fortran_feature(${current_feature})
+    set(VARNAME HAS_Fortran_${UPPER_OPTIONAL})
+    if(NOT ${VARNAME})
+      ecbuild_critical("[Fortran] Required feature ${current_feature} is not available.")
+    endif(NOT ${VARNAME})
+  endforeach(current_feature ${REQUIRED})
+
+endfunction(fortran_feature_check)
diff --git a/cmake/fortran_features/c_size_t.F90 b/cmake/fortran_features/c_size_t.F90
new file mode 100644
index 0000000..3c47136
--- /dev/null
+++ b/cmake/fortran_features/c_size_t.F90
@@ -0,0 +1,8 @@
+program test_c_sizeof
+use, intrinsic :: iso_c_binding, only : c_size_t, c_int, c_long
+
+write(0,*) "c_int    = ",c_int
+write(0,*) "c_long   = ",c_long
+write(0,*) "c_size_t = ",c_size_t
+
+end program
\ No newline at end of file
diff --git a/cmake/fortran_features/c_sizeof.F90 b/cmake/fortran_features/c_sizeof.F90
new file mode 100644
index 0000000..fc1be41
--- /dev/null
+++ b/cmake/fortran_features/c_sizeof.F90
@@ -0,0 +1,3 @@
+program test_c_sizeof
+use, intrinsic :: iso_c_binding, only : c_sizeof
+end program
\ No newline at end of file
diff --git a/cmake/fortran_features/derivedtype_interface.F90 b/cmake/fortran_features/derivedtype_interface.F90
new file mode 100644
index 0000000..d59a1c3
--- /dev/null
+++ b/cmake/fortran_features/derivedtype_interface.F90
@@ -0,0 +1,54 @@
+module constructor
+
+implicit none
+
+TYPE :: AnimalType
+  private
+  integer :: m_age
+contains
+  procedure :: age
+  procedure :: speak
+ENDTYPE
+
+! Declare constructor as interface with same name as type
+interface AnimalType
+  module procedure AnimalType__ctor
+end interface
+
+contains
+
+function AnimalType__ctor(age) result(self)
+  type(AnimalType) :: self
+  integer :: age
+  write(0,'(A)') "Constructor Animal"
+  self%m_age = age
+end function
+
+function age(self)
+  class(AnimalType), intent(inout) :: self
+  integer :: age
+  age = self%m_age
+end function
+
+subroutine speak(self)
+  class(AnimalType), intent(in) :: self
+  write(0,'(A)') "Animal::speak not overridden"
+end subroutine
+
+end module
+
+! ------------------------------------------------------------------------
+
+program test_constructor
+use constructor
+implicit none
+
+  type(AnimalType) :: animal
+
+  animal = AnimalType(8)
+
+  write(0,'(A,I0)') "age = ",animal%age()
+
+  call animal%speak()
+
+end program
diff --git a/cmake/fortran_features/derivedtype_io.F90 b/cmake/fortran_features/derivedtype_io.F90
new file mode 100644
index 0000000..47a98b0
--- /dev/null
+++ b/cmake/fortran_features/derivedtype_io.F90
@@ -0,0 +1,42 @@
+module write_module
+
+implicit none
+
+TYPE :: AnimalType
+  integer :: m_age
+  integer :: m_paws
+contains
+  procedure :: writetype
+  generic :: write(formatted) => writetype
+ENDTYPE
+
+contains
+
+subroutine writetype(animal, unit, iotype, v_list, iostat, iomsg)
+  ! Argument names here from the std, but you can name them differently.
+  class(AnimalType), intent(in) :: animal ! Object to write.
+  integer, intent(in) :: unit             ! Internal unit to write to.
+  character(*), intent(in) :: iotype      ! LISTDIRECTED or DTxxx
+  integer, intent(in) :: v_list(:)        ! parameters from fmt spec.
+  integer, intent(out) :: iostat          ! non zero on error, etc.
+  character(*), intent(inout) :: iomsg    ! define if iostat non zero.
+
+  write (unit, "(A)", IOSTAT=iostat, IOMSG=iomsg) &
+      "I am a dog"
+end subroutine writetype
+
+end module
+
+! ------------------------------------------------------------------------
+
+program test_write
+use write_module
+implicit none
+
+  type(AnimalType) :: animal
+
+  animal = AnimalType(8,4)
+
+  write(0,'(A,DT)') 'Custom writing: ',animal
+
+end program
diff --git a/cmake/fortran_features/finalization.F90 b/cmake/fortran_features/finalization.F90
new file mode 100644
index 0000000..5bacd5f
--- /dev/null
+++ b/cmake/fortran_features/finalization.F90
@@ -0,0 +1,141 @@
+module final_module
+
+implicit none
+
+integer :: final_counted = 0
+integer :: destroy_counted = 0
+
+TYPE :: AnimalType
+  character(len=20), private :: m_kind = "unidentified"
+  logical :: constructed = .false.
+contains
+  procedure :: speak
+  final :: AnimalType__dtor
+ENDTYPE
+
+interface AnimalType
+  module procedure AnimalType__ctor
+end interface
+
+interface assignment(=)
+  module procedure AnimalType__assignment
+end interface
+
+contains
+
+subroutine speak(self)
+  class(AnimalType), intent(in) :: self
+  write(0,'(2A)') "I am a ",self%m_kind
+end subroutine
+
+subroutine AnimalType__dtor(self)
+  type(AnimalType), intent(inout) :: self
+
+  write(0,'(2A)') "Final animal ",self%m_kind
+  final_counted = final_counted + 1
+
+  ! Destruction guard needed for portability
+  if( self%constructed ) then
+    write(0,'(2A)') "    Destroy animal ",self%m_kind
+    destroy_counted = destroy_counted + 1
+  endif
+end subroutine
+
+function AnimalType__ctor(animaltype_) result(self)
+  type(AnimalType) :: self
+  character(len=*) :: animaltype_
+  self%m_kind = animaltype_
+  write(0,'(3A,I0)') "Constructing animal ",self%m_kind, " -- address = ",loc(self)
+  self%constructed = .true.
+end function
+
+subroutine AnimalType__assignment(animal_out,animal_in)
+  type(AnimalType), intent(out) :: animal_out
+  class(AnimalType), intent(in) :: animal_in
+  write(0,'(3A,I0,A,I0)') '   Copying ',animal_in%m_kind, " -- from address ", loc(animal_in), " to address ", loc(animal_out)
+  animal_out%m_kind = animal_in%m_kind
+  animal_out%constructed = animal_in%constructed
+end subroutine
+
+end module
+
+! ------------------------------------------------------------------------
+
+subroutine scope_test
+use final_module
+implicit none
+
+  type(AnimalType) :: dog
+  type(AnimalType) :: cat
+
+  dog = AnimalType("dog")  ! Cray       : final called on temporary AnimalType("dog"); missing final call on dog before assignment
+                           ! Intel      : final called on dog before assignment; and on temporary AnimalType("dog")
+                           ! PGI 14.4   : final NOT called at all, possibly compiler bug
+                           ! GNU 4.9    : final called on dog before assignment; missing call on temporary AnimalType("dog")
+  call dog%speak()
+
+  ! final called on dog when out of scope
+end subroutine
+
+! -------------------------------------------------------
+
+subroutine assignment_test
+use final_module
+implicit none
+
+  type(AnimalType) :: dog
+  type(AnimalType) :: animal
+
+  dog = AnimalType("dog")    ! final called on dog before assignment
+  call dog%speak()
+  write(0,'(A)') "-- animal = dog"
+  animal = dog               ! final called on animal before assignment
+  call animal%speak()
+
+  ! final called on dog when out of scope
+  ! final called on animal when out of scope
+end subroutine
+
+! -------------------------------------------------------
+
+program test_final
+use final_module
+implicit none
+  logical :: test_failed = .false.
+
+  final_counted = 0
+  destroy_counted = 0
+
+  write(0,'(A)') " "
+  write(0,'(A)') ">>>>>> begin scope_test"
+  call scope_test
+  write(0,'(A)') "<<<<<< end scope_test"
+  write(0,'(A)') " "
+
+  write(0,'(A,I0)') "final_counted = ", final_counted
+  write(0,'(A,I0)') "destroy_counted = ", destroy_counted
+
+  if( destroy_counted < 1 ) then
+    test_failed = .true.
+    write(0,'(A)') "ASSERTION FAILED: destroy_counted < 1"
+  endif
+
+  final_counted = 0
+  destroy_counted = 0
+
+  write(0,'(A)') " "
+  write(0,'(A)') ">>>>>> begin assignment_test"
+  call assignment_test
+  write(0,'(A)') "<<<<<< end assignment_test"
+  write(0,'(A)') " "
+
+  write(0,'(A,I0)') "final_counted = ", final_counted
+  write(0,'(A,I0)') "destroy_counted = ", destroy_counted
+
+  if( destroy_counted < 2 ) then
+    test_failed = .true.
+    write(0,*) "ASSERTION FAILED: destroy_counted < 2"
+  endif
+  if( test_failed ) STOP 1
+
+end program
diff --git a/cmake/fortran_features/submodules.F90 b/cmake/fortran_features/submodules.F90
new file mode 100644
index 0000000..3a2261f
--- /dev/null
+++ b/cmake/fortran_features/submodules.F90
@@ -0,0 +1,35 @@
+module sb_module
+implicit none
+integer :: a = 1
+
+interface
+  module subroutine sb
+  end subroutine
+end interface
+
+contains
+end module sb_module
+
+! -------------------------------------------------------
+
+submodule (sb_module) sb_submod1
+implicit none
+integer :: b = 2
+
+contains
+
+module subroutine sb()
+  a = b
+end subroutine
+
+end submodule sb_submod1
+
+! -------------------------------------------------------
+
+program test_submodule
+use sb_module
+implicit none
+write(0,*) a
+call sb()
+write(0,*) a
+end program
\ No newline at end of file
diff --git a/config.status b/config.status
deleted file mode 100755
index 8b1406f..0000000
--- a/config.status
+++ /dev/null
@@ -1,2625 +0,0 @@
-#! /bin/sh
-# Generated by configure.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by eccodes $as_me  , which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-# Files that config.status was made for.
-config_files=" src/eccodes_version.h rpms/eccodes.pc rpms/eccodes.spec rpms/eccodes_f90.pc Makefile src/Makefile fortran/Makefile tools/Makefile data/Makefile definitions/Makefile samples/Makefile ifs_samples/grib1/Makefile ifs_samples/grib1_mlgrib2/Makefile ifs_samples/grib1_mlgrib2_ieee64/Makefile tests/Makefile examples/C/Makefile examples/F90/Makefile tigge/Makefile perl/GRIB-API/Makefile.PL perl/Makefile python/Makefile examples/python/Makefile"
-config_headers=" src/config.h"
-config_commands=" libtool depfiles"
-
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-      --config     print configuration, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE]
-                   instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to <Software.Support at ecmwf.int>."
-
-ac_cs_config="'--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'"
-ac_cs_version="\
-eccodes config.status
-configured by ./configure, generated by GNU Autoconf 2.69,
-  with options \"$ac_cs_config\"
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='/home/ma/masn/git/eccodes'
-srcdir='.'
-INSTALL='/usr/bin/install -c'
-MKDIR_P='/usr/bin/mkdir -p'
-AWK='gawk'
-test -n "$AWK" || AWK=awk
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=?*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  --*=)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    '') as_fn_error $? "missing file argument" ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h)
-    # Conflict between --help and --header
-    as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
-  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-if $ac_cs_recheck; then
-  set X /bin/sh './configure'  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran' $ac_configure_extra_args --no-create --no-recursion
-  shift
-  $as_echo "running CONFIG_SHELL=/bin/sh $*" >&6
-  CONFIG_SHELL='/bin/sh'
-  export CONFIG_SHELL
-  exec "$@"
-fi
-
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-#
-# INIT-COMMANDS
-#
-
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-macro_version='2.4.2'
-macro_revision='1.3337'
-enable_shared='no'
-enable_static='yes'
-pic_mode='default'
-enable_fast_install='needless'
-SHELL='/bin/sh'
-ECHO='printf %s\n'
-PATH_SEPARATOR=':'
-host_alias=''
-host='x86_64-suse-linux-gnu'
-host_os='linux-gnu'
-build_alias=''
-build='x86_64-suse-linux-gnu'
-build_os='linux-gnu'
-SED='/usr/bin/sed'
-Xsed='/usr/bin/sed -e 1s/^X//'
-GREP='/usr/bin/grep'
-EGREP='/usr/bin/grep -E'
-FGREP='/usr/bin/grep -F'
-LD='/usr/x86_64-suse-linux/bin/ld -m elf_x86_64'
-NM='/usr/bin/nm -B'
-LN_S='ln -s'
-max_cmd_len='1572864'
-ac_objext='o'
-exeext=''
-lt_unset='unset'
-lt_SP2NL='tr \040 \012'
-lt_NL2SP='tr \015\012 \040\040'
-lt_cv_to_host_file_cmd='func_convert_file_noop'
-lt_cv_to_tool_file_cmd='func_convert_file_noop'
-reload_flag=' -r'
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-OBJDUMP='objdump'
-deplibs_check_method='pass_all'
-file_magic_cmd='$MAGIC_CMD'
-file_magic_glob=''
-want_nocaseglob='no'
-DLLTOOL='false'
-sharedlib_from_linklib_cmd='printf %s\n'
-AR='ar'
-AR_FLAGS='cru'
-archiver_list_spec='@'
-STRIP='strip'
-RANLIB='ranlib'
-old_postinstall_cmds='chmod 644 $oldlib~$RANLIB $tool_oldlib'
-old_postuninstall_cmds=''
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $tool_oldlib'
-lock_old_archive_extraction='no'
-CC='gcc'
-CFLAGS='-g -O2'
-compiler='gfortran'
-GCC='yes'
-lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[	 ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[	 ][	 ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\'''
-lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\'''
-lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/  {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/  {"\2", (void *) \&\2},/p'\'''
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/  {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/  {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/  {"lib\2", (void *) \&\2},/p'\'''
-nm_file_list_spec='@'
-lt_sysroot=''
-objdir='.libs'
-MAGIC_CMD='file'
-lt_prog_compiler_no_builtin_flag=' -fno-builtin'
-lt_prog_compiler_pic=' -fPIC -DPIC'
-lt_prog_compiler_wl='-Wl,'
-lt_prog_compiler_static=''
-lt_cv_prog_compiler_c_o='yes'
-need_locks='no'
-MANIFEST_TOOL=':'
-DSYMUTIL=''
-NMEDIT=''
-LIPO=''
-OTOOL=''
-OTOOL64=''
-libext='a'
-shrext_cmds='.so'
-extract_expsyms_cmds=''
-archive_cmds_need_lc='yes'
-enable_shared_with_static_runtimes='no'
-export_dynamic_flag_spec='${wl}--export-dynamic'
-whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-compiler_needs_object='no'
-old_archive_from_new_cmds=''
-old_archive_from_expsyms_cmds=''
-archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-module_cmds=''
-module_expsym_cmds=''
-with_gnu_ld='yes'
-allow_undefined_flag=''
-no_undefined_flag=''
-hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-hardcode_libdir_separator=''
-hardcode_direct='no'
-hardcode_direct_absolute='no'
-hardcode_minus_L='no'
-hardcode_shlibpath_var='unsupported'
-hardcode_automatic='no'
-inherit_rpath='no'
-link_all_deplibs='unknown'
-always_export_symbols='no'
-export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-include_expsyms=''
-prelink_cmds=''
-postlink_cmds=''
-file_list_spec=''
-variables_saved_for_relink='PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH'
-need_lib_prefix='no'
-need_version='no'
-version_type='linux'
-runpath_var='LD_RUN_PATH'
-shlibpath_var='LD_LIBRARY_PATH'
-shlibpath_overrides_runpath='yes'
-libname_spec='lib$name'
-library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-soname_spec='${libname}${release}${shared_ext}$major'
-install_override_mode=''
-postinstall_cmds=''
-postuninstall_cmds=''
-finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-finish_eval=''
-hardcode_into_libs='yes'
-sys_lib_search_path_spec='/usr/lib64/gcc/x86_64-suse-linux/4.8 /usr/lib64 /lib64 /usr/x86_64-suse-linux/lib '
-sys_lib_dlsearch_path_spec='/lib /usr/lib /usr/local/lib64 /usr/local/lib /usr/lib64/apper /usr/lib64/graphviz /usr/lib64/graphviz/sharp /usr/lib64/graphviz/java /usr/lib64/graphviz/perl /usr/lib64/graphviz/php /usr/lib64/graphviz/ocaml /usr/lib64/graphviz/python /usr/lib64/graphviz/lua /usr/lib64/graphviz/tcl /usr/lib64/graphviz/guile /usr/lib64/graphviz/ruby /opt/kde3/lib64 /opt/kde3/lib /usr/lib64/mysql-workbench /usr/X11R6/lib64 /usr/X11R6/lib /usr/lib64/smokegen '
-hardcode_action='immediate'
-enable_dlopen='unknown'
-enable_dlopen_self='unknown'
-enable_dlopen_self_static='unknown'
-old_striplib='strip --strip-debug'
-striplib='strip --strip-unneeded'
-compiler_lib_search_dirs=''
-predep_objects=''
-postdep_objects=''
-predeps=''
-postdeps=''
-compiler_lib_search_path=''
-LD_F77='/usr/x86_64-suse-linux/bin/ld -m elf_x86_64'
-LD_FC='/usr/x86_64-suse-linux/bin/ld -m elf_x86_64'
-reload_flag_F77=' -r'
-reload_flag_FC=' -r'
-reload_cmds_F77='$LD$reload_flag -o $output$reload_objs'
-reload_cmds_FC='$LD$reload_flag -o $output$reload_objs'
-old_archive_cmds_F77='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $tool_oldlib'
-old_archive_cmds_FC='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $tool_oldlib'
-compiler_F77='gfortran'
-compiler_FC='gfortran'
-GCC_F77='yes'
-GCC_FC='yes'
-lt_prog_compiler_no_builtin_flag_F77=''
-lt_prog_compiler_no_builtin_flag_FC=''
-lt_prog_compiler_pic_F77=' -fPIC'
-lt_prog_compiler_pic_FC=' -fPIC'
-lt_prog_compiler_wl_F77='-Wl,'
-lt_prog_compiler_wl_FC='-Wl,'
-lt_prog_compiler_static_F77=''
-lt_prog_compiler_static_FC=''
-lt_cv_prog_compiler_c_o_F77='yes'
-lt_cv_prog_compiler_c_o_FC='yes'
-archive_cmds_need_lc_F77='no'
-archive_cmds_need_lc_FC='no'
-enable_shared_with_static_runtimes_F77='no'
-enable_shared_with_static_runtimes_FC='no'
-export_dynamic_flag_spec_F77='${wl}--export-dynamic'
-export_dynamic_flag_spec_FC='${wl}--export-dynamic'
-whole_archive_flag_spec_F77='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-whole_archive_flag_spec_FC='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-compiler_needs_object_F77='no'
-compiler_needs_object_FC='no'
-old_archive_from_new_cmds_F77=''
-old_archive_from_new_cmds_FC=''
-old_archive_from_expsyms_cmds_F77=''
-old_archive_from_expsyms_cmds_FC=''
-archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-archive_expsym_cmds_F77='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-module_cmds_F77=''
-module_cmds_FC=''
-module_expsym_cmds_F77=''
-module_expsym_cmds_FC=''
-with_gnu_ld_F77='yes'
-with_gnu_ld_FC='yes'
-allow_undefined_flag_F77=''
-allow_undefined_flag_FC=''
-no_undefined_flag_F77=''
-no_undefined_flag_FC=''
-hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-hardcode_libdir_separator_F77=''
-hardcode_libdir_separator_FC=''
-hardcode_direct_F77='no'
-hardcode_direct_FC='no'
-hardcode_direct_absolute_F77='no'
-hardcode_direct_absolute_FC='no'
-hardcode_minus_L_F77='no'
-hardcode_minus_L_FC='no'
-hardcode_shlibpath_var_F77='unsupported'
-hardcode_shlibpath_var_FC='unsupported'
-hardcode_automatic_F77='no'
-hardcode_automatic_FC='no'
-inherit_rpath_F77='no'
-inherit_rpath_FC='no'
-link_all_deplibs_F77='unknown'
-link_all_deplibs_FC='unknown'
-always_export_symbols_F77='no'
-always_export_symbols_FC='no'
-export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-exclude_expsyms_FC='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-include_expsyms_F77=''
-include_expsyms_FC=''
-prelink_cmds_F77=''
-prelink_cmds_FC=''
-postlink_cmds_F77=''
-postlink_cmds_FC=''
-file_list_spec_F77=''
-file_list_spec_FC=''
-hardcode_action_F77='immediate'
-hardcode_action_FC='immediate'
-compiler_lib_search_dirs_F77=''
-compiler_lib_search_dirs_FC=''
-predep_objects_F77=''
-predep_objects_FC=''
-postdep_objects_F77=''
-postdep_objects_FC=''
-predeps_F77=''
-predeps_FC=''
-postdeps_F77=''
-postdeps_FC=''
-compiler_lib_search_path_F77=''
-compiler_lib_search_path_FC=''
-
-LTCC='gcc'
-LTCFLAGS='-g -O2'
-compiler='gcc'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in SHELL ECHO PATH_SEPARATOR SED GREP EGREP FGREP LD NM LN_S lt_SP2NL lt_NL2SP reload_flag OBJDUMP deplibs_check_method file_magic_cmd file_magic_glob want_nocaseglob DLLTOOL sharedlib_from_linklib_cmd AR AR_FLAGS archiver_list_spec STRIP RANLIB CC CFLAGS compiler lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl lt_cv_sys_global_symbol_to_c_name_address lt_cv_sys_global_symbol_to_c_name_address_lib_prefix nm_file_list_spec lt_prog_compiler_no_builtin_flag lt_prog_com [...]
-    case `eval \\$ECHO \\""\\$$var"\\"` in
-    *[\\\`\"\$]*)
-      eval "lt_$var=\\\"\`\$ECHO \"\$$var\" | \$SED \"\$sed_quote_subst\"\`\\\""
-      ;;
-    *)
-      eval "lt_$var=\\\"\$$var\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in reload_cmds old_postinstall_cmds old_postuninstall_cmds old_archive_cmds extract_expsyms_cmds old_archive_from_new_cmds old_archive_from_expsyms_cmds archive_cmds archive_expsym_cmds module_cmds module_expsym_cmds export_symbols_cmds prelink_cmds postlink_cmds postinstall_cmds postuninstall_cmds finish_cmds sys_lib_search_path_spec sys_lib_dlsearch_path_spec reload_cmds_F77 reload_cmds_FC old_archive_cmds_F77 old_archive_cmds_FC old_archive_from_new_cmds_F77 old_archive_from_n [...]
-    case `eval \\$ECHO \\""\\$$var"\\"` in
-    *[\\\`\"\$]*)
-      eval "lt_$var=\\\"\`\$ECHO \"\$$var\" | \$SED -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-      ;;
-    *)
-      eval "lt_$var=\\\"\$$var\\\""
-      ;;
-    esac
-done
-
-ac_aux_dir='config'
-xsi_shell='yes'
-lt_shell_append='yes'
-
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-
-    PACKAGE='eccodes'
-    VERSION='0.16.0'
-    TIMESTAMP=''
-    RM='rm -f'
-    ofile='libtool'
-
-
-
-
-
-
-
-AMDEP_TRUE="" ac_aux_dir="config"
-
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
-    "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;;
-    "src/eccodes_version.h") CONFIG_FILES="$CONFIG_FILES src/eccodes_version.h" ;;
-    "rpms/eccodes.pc") CONFIG_FILES="$CONFIG_FILES rpms/eccodes.pc" ;;
-    "rpms/eccodes.spec") CONFIG_FILES="$CONFIG_FILES rpms/eccodes.spec" ;;
-    "rpms/eccodes_f90.pc") CONFIG_FILES="$CONFIG_FILES rpms/eccodes_f90.pc" ;;
-    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-    "fortran/Makefile") CONFIG_FILES="$CONFIG_FILES fortran/Makefile" ;;
-    "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
-    "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;;
-    "definitions/Makefile") CONFIG_FILES="$CONFIG_FILES definitions/Makefile" ;;
-    "samples/Makefile") CONFIG_FILES="$CONFIG_FILES samples/Makefile" ;;
-    "ifs_samples/grib1/Makefile") CONFIG_FILES="$CONFIG_FILES ifs_samples/grib1/Makefile" ;;
-    "ifs_samples/grib1_mlgrib2/Makefile") CONFIG_FILES="$CONFIG_FILES ifs_samples/grib1_mlgrib2/Makefile" ;;
-    "ifs_samples/grib1_mlgrib2_ieee64/Makefile") CONFIG_FILES="$CONFIG_FILES ifs_samples/grib1_mlgrib2_ieee64/Makefile" ;;
-    "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
-    "examples/C/Makefile") CONFIG_FILES="$CONFIG_FILES examples/C/Makefile" ;;
-    "examples/F90/Makefile") CONFIG_FILES="$CONFIG_FILES examples/F90/Makefile" ;;
-    "tigge/Makefile") CONFIG_FILES="$CONFIG_FILES tigge/Makefile" ;;
-    "perl/GRIB-API/Makefile.PL") CONFIG_FILES="$CONFIG_FILES perl/GRIB-API/Makefile.PL" ;;
-    "perl/Makefile") CONFIG_FILES="$CONFIG_FILES perl/Makefile" ;;
-    "python/Makefile") CONFIG_FILES="$CONFIG_FILES python/Makefile" ;;
-    "examples/python/Makefile") CONFIG_FILES="$CONFIG_FILES examples/python/Makefile" ;;
-
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp= ac_tmp=
-  trap 'exit_status=$?
-  : "${ac_tmp:=$tmp}"
-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-cat >>"$ac_tmp/subs1.awk" <<\_ACAWK &&
-S["am__EXEEXT_FALSE"]=""
-S["am__EXEEXT_TRUE"]="#"
-S["LTLIBOBJS"]=""
-S["LIBOBJS"]=""
-S["LINUX_DISTRIBUTION_VERSION"]=""
-S["LINUX_DISTRIBUTION_NAME"]="openSUSE 13.1 (x86_64)"
-S["WERROR"]=""
-S["WARN_PEDANTIC"]="-pedantic -Wall"
-S["RM"]="rm -f"
-S["CREATING_SHARED_LIBS_FALSE"]=""
-S["CREATING_SHARED_LIBS_TRUE"]="#"
-S["WITH_FORTRAN_FALSE"]="#"
-S["WITH_FORTRAN_TRUE"]=""
-S["WITH_PYTHON_FALSE"]="#"
-S["WITH_PYTHON_TRUE"]=""
-S["PYTHON_DATA_HANDLER"]="numpy"
-S["NUMPY_INCLUDE"]="/usr/local/apps/python/2.7.8-01/lib/python2.7/site-packages/numpy/core/include"
-S["PYTHON_CHECK"]="examples/python"
-S["PYTHON_CONFIG"]="/usr/local/apps/python/2.7.8-01/bin/python2.7-config"
-S["PYTHON_LIBS"]="-lpthread -ldl -lutil -lm -lpython2.7"
-S["PYTHON_CFLAGS"]="-I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7 -fno-strict-aliasing -O3 -fpic -DNDEBUG -g -"\
-"fwrapv -O3 -Wall -Wstrict-prototypes"
-S["PYTHON_LDFLAGS"]="-lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic"
-S["PYTHON_INCLUDES"]="-I/usr/local/apps/python/2.7.8-01/include/python2.7 -I/usr/local/apps/python/2.7.8-01/include/python2.7"
-S["pkgpyexecdir"]="${pyexecdir}/eccodes"
-S["pyexecdir"]="${exec_prefix}/lib/python2.7/site-packages"
-S["pkgpythondir"]="${pythondir}/eccodes"
-S["pythondir"]="${prefix}/lib/python2.7/site-packages"
-S["PYTHON_PLATFORM"]="linux2"
-S["PYTHON_EXEC_PREFIX"]="${exec_prefix}"
-S["PYTHON_PREFIX"]="${prefix}"
-S["PYTHON_VERSION"]="2.7"
-S["PYTHON"]="/usr/local/apps/python/2.7.8-01/bin/python"
-S["WITH_PERL_FALSE"]=""
-S["WITH_PERL_TRUE"]="#"
-S["GRIB_API_INC"]="/home/ma/masn/git/eccodes/src"
-S["GRIB_API_LIB"]="/home/ma/masn/git/eccodes/src/grib_api.a"
-S["PERL_MAKE_OPTIONS"]=""
-S["PERL"]=""
-S["PERL_INSTALL_OPTIONS"]="LIB=NONE/perl"
-S["LIB_PNG"]=""
-S["CCSDS_TEST"]=""
-S["AEC_DIR"]=""
-S["LIB_AEC"]=""
-S["JPEG_TEST"]="jpeg.sh"
-S["LIB_JASPER"]="-ljasper"
-S["LIB_OPENJPEG"]=""
-S["OPENJPEG_DIR"]="system"
-S["JASPER_DIR"]="system"
-S["NETCDF_LDFLAGS"]=""
-S["EMOS_LIB"]=""
-S["IFS_SAMPLES_DIR"]="${datarootdir}/eccodes/ifs_samples"
-S["F90_MODULE_FLAG"]="-I"
-S["F90_CHECK"]="examples/F90"
-S["FORTRAN_MOD"]="fortran"
-S["DEBUG_IN_MOD_FALSE"]="#"
-S["DEBUG_IN_MOD_TRUE"]=""
-S["ECCODES_DEFINITION_PATH"]="${datarootdir}/eccodes/definitions"
-S["ECCODES_SAMPLES_PATH"]="${datarootdir}/eccodes/samples"
-S["RPM_RELEASE"]="1"
-S["RPM_CONFIGURE_ARGS"]=" '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'"
-S["RPM_HOST_OS"]="linux-gnu"
-S["RPM_HOST_VENDOR"]="suse"
-S["RPM_HOST_CPU"]="x86_64"
-S["WITH_MARS_TESTS_FALSE"]=""
-S["WITH_MARS_TESTS_TRUE"]="#"
-S["GRIB_DEVEL"]="0"
-S["DEVEL_RULES"]="dummy.am"
-S["UPPER_CASE_MOD_FALSE"]=""
-S["UPPER_CASE_MOD_TRUE"]="#"
-S["ac_ct_FC"]=""
-S["FCFLAGS"]="-g -O2"
-S["FC"]="gfortran"
-S["ac_ct_F77"]=""
-S["FFLAGS"]="-g -O2"
-S["F77"]="gfortran"
-S["LEXLIB"]="-lfl"
-S["LEX_OUTPUT_ROOT"]="lex.yy"
-S["LEX"]="flex"
-S["YFLAGS"]=""
-S["YACC"]="bison -y"
-S["PERLDIR"]="perl"
-S["AM_BACKSLASH"]="\\"
-S["AM_DEFAULT_VERBOSITY"]="1"
-S["AM_DEFAULT_V"]="$(AM_DEFAULT_VERBOSITY)"
-S["AM_V"]="$(V)"
-S["am__fastdepCC_FALSE"]="#"
-S["am__fastdepCC_TRUE"]=""
-S["CCDEPMODE"]="depmode=gcc3"
-S["am__nodep"]="_no"
-S["AMDEPBACKSLASH"]="\\"
-S["AMDEP_FALSE"]="#"
-S["AMDEP_TRUE"]=""
-S["am__quote"]=""
-S["am__include"]="include"
-S["DEPDIR"]=".deps"
-S["am__untar"]="$${TAR-tar} xf -"
-S["am__tar"]="$${TAR-tar} chof - \"$$tardir\""
-S["AMTAR"]="$${TAR-tar}"
-S["am__leading_dot"]="."
-S["SET_MAKE"]=""
-S["mkdir_p"]="$(MKDIR_P)"
-S["MKDIR_P"]="/usr/bin/mkdir -p"
-S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s"
-S["install_sh"]="${SHELL} /home/ma/masn/git/eccodes/config/install-sh"
-S["MAKEINFO"]="${SHELL} /home/ma/masn/git/eccodes/config/missing makeinfo"
-S["AUTOHEADER"]="${SHELL} /home/ma/masn/git/eccodes/config/missing autoheader"
-S["AUTOMAKE"]="${SHELL} /home/ma/masn/git/eccodes/config/missing automake-1.13"
-S["AUTOCONF"]="${SHELL} /home/ma/masn/git/eccodes/config/missing autoconf"
-S["ACLOCAL"]="${SHELL} /home/ma/masn/git/eccodes/config/missing aclocal-1.13"
-S["VERSION"]="0.16.0"
-S["PACKAGE"]="eccodes"
-S["CYGPATH_W"]="echo"
-S["am__isrc"]=""
-S["INSTALL_DATA"]="${INSTALL} -m 644"
-S["INSTALL_SCRIPT"]="${INSTALL}"
-S["INSTALL_PROGRAM"]="${INSTALL}"
-S["ECCODES_AGE"]="0"
-S["ECCODES_REVISION"]="0"
-S["ECCODES_CURRENT"]="1"
-S["ECCODES_PATCH_VERSION"]="0"
-S["ECCODES_MINOR_VERSION"]="16"
-S["ECCODES_MAJOR_VERSION"]="0"
-S["ECCODES_VERSION_STR"]="0.16.0"
-S["ECCODES_MAIN_VERSION"]="0.16.0"
-S["LIBTOOL_DEPS"]="config/ltmain.sh"
-S["CPP"]="gcc -E"
-S["OTOOL64"]=""
-S["OTOOL"]=""
-S["LIPO"]=""
-S["NMEDIT"]=""
-S["DSYMUTIL"]=""
-S["MANIFEST_TOOL"]=":"
-S["AWK"]="gawk"
-S["RANLIB"]="ranlib"
-S["STRIP"]="strip"
-S["ac_ct_AR"]="ar"
-S["AR"]="ar"
-S["DLLTOOL"]="false"
-S["OBJDUMP"]="objdump"
-S["LN_S"]="ln -s"
-S["NM"]="/usr/bin/nm -B"
-S["ac_ct_DUMPBIN"]=""
-S["DUMPBIN"]=""
-S["LD"]="/usr/x86_64-suse-linux/bin/ld -m elf_x86_64"
-S["FGREP"]="/usr/bin/grep -F"
-S["EGREP"]="/usr/bin/grep -E"
-S["GREP"]="/usr/bin/grep"
-S["SED"]="/usr/bin/sed"
-S["OBJEXT"]="o"
-S["EXEEXT"]=""
-S["ac_ct_CC"]="gcc"
-S["CPPFLAGS"]=""
-S["LDFLAGS"]=""
-S["CFLAGS"]="-g -O2"
-S["CC"]="gcc"
-S["host_os"]="linux-gnu"
-S["host_vendor"]="suse"
-S["host_cpu"]="x86_64"
-S["host"]="x86_64-suse-linux-gnu"
-S["build_os"]="linux-gnu"
-S["build_vendor"]="suse"
-S["build_cpu"]="x86_64"
-S["build"]="x86_64-suse-linux-gnu"
-S["LIBTOOL"]="$(SHELL) $(top_builddir)/libtool"
-S["target_alias"]=""
-S["host_alias"]=""
-S["build_alias"]=""
-S["LIBS"]="-lm -ljasper "
-S["ECHO_T"]=""
-S["ECHO_N"]="-n"
-S["ECHO_C"]=""
-S["DEFS"]="-DHAVE_CONFIG_H"
-S["mandir"]="${datarootdir}/man"
-S["localedir"]="${datarootdir}/locale"
-S["libdir"]="${exec_prefix}/lib"
-S["psdir"]="${docdir}"
-S["pdfdir"]="${docdir}"
-S["dvidir"]="${docdir}"
-S["htmldir"]="${docdir}"
-S["infodir"]="${datarootdir}/info"
-S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}"
-S["oldincludedir"]="/usr/include"
-S["includedir"]="${prefix}/include"
-S["localstatedir"]="${prefix}/var"
-S["sharedstatedir"]="${prefix}/com"
-S["sysconfdir"]="${prefix}/etc"
-S["datadir"]="${datarootdir}"
-S["datarootdir"]="${prefix}/share"
-S["libexecdir"]="${exec_prefix}/libexec"
-S["sbindir"]="${exec_prefix}/sbin"
-S["bindir"]="${exec_prefix}/bin"
-S["program_transform_name"]="s,x,x,"
-S["prefix"]="/usr/local"
-S["exec_prefix"]="${prefix}"
-S["PACKAGE_URL"]=""
-S["PACKAGE_BUGREPORT"]="Software.Support at ecmwf.int"
-S["PACKAGE_STRING"]="eccodes  "
-S["PACKAGE_VERSION"]="0.16.0"
-S["PACKAGE_TARNAME"]="eccodes"
-S["PACKAGE_NAME"]="eccodes"
-S["PATH_SEPARATOR"]=":"
-S["SHELL"]="/bin/sh"
-_ACAWK
-cat >>"$ac_tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = ""
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-D["PACKAGE_NAME"]=" \"eccodes\""
-D["PACKAGE_TARNAME"]=" \"eccodes\""
-D["PACKAGE_VERSION"]=" \" \""
-D["PACKAGE_STRING"]=" \"eccodes  \""
-D["PACKAGE_BUGREPORT"]=" \"Software.Support at ecmwf.int\""
-D["PACKAGE_URL"]=" \"\""
-D["STDC_HEADERS"]=" 1"
-D["HAVE_SYS_TYPES_H"]=" 1"
-D["HAVE_SYS_STAT_H"]=" 1"
-D["HAVE_STDLIB_H"]=" 1"
-D["HAVE_STRING_H"]=" 1"
-D["HAVE_MEMORY_H"]=" 1"
-D["HAVE_STRINGS_H"]=" 1"
-D["HAVE_INTTYPES_H"]=" 1"
-D["HAVE_STDINT_H"]=" 1"
-D["HAVE_UNISTD_H"]=" 1"
-D["HAVE_DLFCN_H"]=" 1"
-D["LT_OBJDIR"]=" \".libs/\""
-D["ECCODES_MAIN_VERSION"]=" 0.16.0"
-D["ECCODES_MAJOR_VERSION"]=" 0"
-D["ECCODES_MINOR_VERSION"]=" 16"
-D["ECCODES_REVISION_VERSION"]=" 0"
-D["ECCODES_CURRENT"]=" 1"
-D["ECCODES_REVISION"]=" 0"
-D["ECCODES_AGE"]=" 0"
-D["YYTEXT_POINTER"]=" 1"
-D["GRIB_PTHREADS"]=" 0"
-D["GRIB_LINUX_PTHREADS"]=" 0"
-D["GRIB_IBMPOWER67_OPT"]=" 0"
-D["IEEE_BE"]=" 0"
-D["IEEE_LE"]=" 1"
-D["IS_BIG_ENDIAN"]=" 0"
-D["GRIB_INLINE"]=" inline"
-D["GRIB_MEM_ALIGN"]=" 0"
-D["POSIX_MEMALIGN"]=" 1"
-D["VECTOR"]=" 0"
-D["MANAGE_MEM"]=" 0"
-D["HAVE_FSEEKO"]=" 1"
-D["GRIB_TIMER"]=" 0"
-D["OMP_PACKING"]=" 0"
-D["HAVE_JPEG"]=" 1"
-D["HAVE_LIBJASPER"]=" 1"
-D["HAVE_LIBM"]=" 1"
-D["HAVE_DIRENT_H"]=" 1"
-D["STDC_HEADERS"]=" 1"
-D["HAVE_STDDEF_H"]=" 1"
-D["HAVE_STDLIB_H"]=" 1"
-D["HAVE_STRING_H"]=" 1"
-D["HAVE_SYS_PARAM_H"]=" 1"
-D["HAVE_SYS_TIME_H"]=" 1"
-D["HAVE_UNISTD_H"]=" 1"
-D["HAVE_MATH_H"]=" 1"
-D["HAVE_STDARG_H"]=" 1"
-D["HAVE_ASSERT_H"]=" 1"
-D["HAVE_CTYPE_H"]=" 1"
-D["HAVE_FCNTL_H"]=" 1"
-D["TIME_WITH_SYS_TIME"]=" 1"
-D["RETSIGTYPE"]=" void"
-D["HAVE_VPRINTF"]=" 1"
-D["HAVE_BZERO"]=" 1"
-D["HAVE_GETTIMEOFDAY"]=" 1"
-  for (key in D) D_is_set[key] = 1
-  FS = ""
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ {
-  line = $ 0
-  split(line, arg, " ")
-  if (arg[1] == "#") {
-    defundef = arg[2]
-    mac1 = arg[3]
-  } else {
-    defundef = substr(arg[1], 2)
-    mac1 = arg[2]
-  }
-  split(mac1, mac2, "(") #)
-  macro = mac2[1]
-  prefix = substr(line, 1, index(line, defundef) - 1)
-  if (D_is_set[macro]) {
-    # Preserve the white space surrounding the "#".
-    print prefix "define", macro P[macro] D[macro]
-    next
-  } else {
-    # Replace #undef with comments.  This is necessary, for example,
-    # in the case of _POSIX_SOURCE, which is predefined and required
-    # on some systems where configure will not decide to define it.
-    if (defundef == "undef") {
-      print "/*", prefix defundef, macro, "*/"
-      next
-    }
-  }
-}
-{ print }
-_ACAWK
-  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$ac_tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
-	 # because $ac_f cannot contain `:'.
-	 test -f "$ac_f" ||
-	   case $ac_f in
-	   [\\/$]*) false;;
-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-	   esac ||
-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-	`' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-  ac_MKDIR_P=$MKDIR_P
-  case $MKDIR_P in
-  [\\/$]* | ?:[\\/]* ) ;;
-  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
-  esac
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-  ac_datarootdir_hack='
-  s&@datadir@&${datarootdir}&g
-  s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g
-  s&@infodir@&${datarootdir}/info&g
-  s&@localedir@&${datarootdir}/locale&g
-  s&@mandir@&${datarootdir}/man&g
-  s&\${datarootdir}&${prefix}/share&g' ;;
-esac
-ac_sed_extra="/^[	 ]*VPATH[	 ]*=[	 ]*/{
-h
-s///
-s/^/:/
-s/[	 ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[	 ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[	 ]*$//
-}
-
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-s&@MKDIR_P@&$ac_MKDIR_P&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
-      "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&2;}
-
-  rm -f "$ac_tmp/stdin"
-  case $ac_file in
-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-  :H)
-  #
-  # CONFIG_HEADER
-  #
-  if test x"$ac_file" != x-; then
-    {
-      $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
-    } >"$ac_tmp/config.h" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      rm -f "$ac_file"
-      mv "$ac_tmp/config.h" "$ac_file" \
-	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    fi
-  else
-    $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error $? "could not create -" "$LINENO" 5
-  fi
-# Compute "$ac_file"'s index in $config_headers.
-_am_arg="$ac_file"
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
-$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$_am_arg" : 'X\(//\)[^/]' \| \
-	 X"$_am_arg" : 'X\(//\)$' \| \
-	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$_am_arg" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`/stamp-h$_am_stamp_count
- ;;
-
-  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "libtool":C)
-
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-
-# The names of the tagged configurations supported by this script.
-available_tags="F77 FC "
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# What type of objects to build.
-pic_mode=$pic_mode
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# An echo program that protects backslashes.
-ECHO=$lt_ECHO
-
-# The PATH separator for the build system.
-PATH_SEPARATOR=$lt_PATH_SEPARATOR
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# A sed program that does not truncate output.
-SED=$lt_SED
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="\$SED -e 1s/^X//"
-
-# A grep program that handles long lines.
-GREP=$lt_GREP
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# A literal string matcher.
-FGREP=$lt_FGREP
-
-# A BSD- or MS-compatible name lister.
-NM=$lt_NM
-
-# Whether we need soft or hard links.
-LN_S=$lt_LN_S
-
-# What is the maximum length of a command?
-max_cmd_len=$max_cmd_len
-
-# Object file suffix (normally "o").
-objext=$ac_objext
-
-# Executable file suffix (normally "").
-exeext=$exeext
-
-# whether the shell understands "unset".
-lt_unset=$lt_unset
-
-# turn spaces into newlines.
-SP2NL=$lt_lt_SP2NL
-
-# turn newlines into spaces.
-NL2SP=$lt_lt_NL2SP
-
-# convert \$build file names to \$host format.
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-
-# convert \$build files to toolchain format.
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-
-# An object symbol dumper.
-OBJDUMP=$lt_OBJDUMP
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method = "file_magic".
-file_magic_cmd=$lt_file_magic_cmd
-
-# How to find potential files when deplibs_check_method = "file_magic".
-file_magic_glob=$lt_file_magic_glob
-
-# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-want_nocaseglob=$lt_want_nocaseglob
-
-# DLL creation program.
-DLLTOOL=$lt_DLLTOOL
-
-# Command to associate shared and link libraries.
-sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-
-# The archiver.
-AR=$lt_AR
-
-# Flags to create an archive.
-AR_FLAGS=$lt_AR_FLAGS
-
-# How to feed a file listing to the archiver.
-archiver_list_spec=$lt_archiver_list_spec
-
-# A symbol stripping program.
-STRIP=$lt_STRIP
-
-# Commands used to install an old-style archive.
-RANLIB=$lt_RANLIB
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Whether to use a lock for old archive extraction.
-lock_old_archive_extraction=$lock_old_archive_extraction
-
-# A C compiler.
-LTCC=$lt_CC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_CFLAGS
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
-
-# Specify filename containing input files for \$NM.
-nm_file_list_spec=$lt_nm_file_list_spec
-
-# The root where to search for dependent libraries,and in which our libraries should be installed.
-lt_sysroot=$lt_sysroot
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=$MAGIC_CMD
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Manifest tool.
-MANIFEST_TOOL=$lt_MANIFEST_TOOL
-
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=$lt_DSYMUTIL
-
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=$lt_NMEDIT
-
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=$lt_LIPO
-
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=$lt_OTOOL
-
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=$lt_OTOOL64
-
-# Old archive suffix (normally "a").
-libext=$libext
-
-# Shared library suffix (normally ".so").
-shrext_cmds=$lt_shrext_cmds
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink=$lt_variables_saved_for_relink
-
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Library versioning type.
-version_type=$version_type
-
-# Shared library runtime path variable.
-runpath_var=$runpath_var
-
-# Shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Permission mode override for installation of shared libraries.
-install_override_mode=$lt_install_override_mode
-
-# Command to use after installation of a shared archive.
-postinstall_cmds=$lt_postinstall_cmds
-
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=$lt_finish_eval
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-
-# The linker used to build libraries.
-LD=$lt_LD
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds
-
-# A language specific compiler.
-CC=$lt_compiler
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds
-module_expsym_cmds=$lt_module_expsym_cmds
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects
-postdep_objects=$lt_postdep_objects
-predeps=$lt_predeps
-postdeps=$lt_postdeps
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path
-
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-  if test x"$xsi_shell" = xyes; then
-  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-func_dirname ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_basename ()$/,/^} # func_basename /c\
-func_basename ()\
-{\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-func_dirname_and_basename ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-func_stripname ()\
-{\
-\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-\    # positional parameters, so assign one to ordinary parameter first.\
-\    func_stripname_result=${3}\
-\    func_stripname_result=${func_stripname_result#"${1}"}\
-\    func_stripname_result=${func_stripname_result%"${2}"}\
-} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-func_split_long_opt ()\
-{\
-\    func_split_long_opt_name=${1%%=*}\
-\    func_split_long_opt_arg=${1#*=}\
-} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-func_split_short_opt ()\
-{\
-\    func_split_short_opt_arg=${1#??}\
-\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-func_lo2o ()\
-{\
-\    case ${1} in\
-\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-\      *)    func_lo2o_result=${1} ;;\
-\    esac\
-} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_xform ()$/,/^} # func_xform /c\
-func_xform ()\
-{\
-    func_xform_result=${1%.*}.lo\
-} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_arith ()$/,/^} # func_arith /c\
-func_arith ()\
-{\
-    func_arith_result=$(( $* ))\
-} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_len ()$/,/^} # func_len /c\
-func_len ()\
-{\
-    func_len_result=${#1}\
-} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-fi
-
-if test x"$lt_shell_append" = xyes; then
-  sed -e '/^func_append ()$/,/^} # func_append /c\
-func_append ()\
-{\
-    eval "${1}+=\\${2}"\
-} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-func_append_quoted ()\
-{\
-\    func_quote_for_eval "${2}"\
-\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  # Save a `func_append' function call where possible by direct use of '+='
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-else
-  # Save a `func_append' function call even when '+=' is not available
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-fi
-
-
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: F77
-
-# The linker used to build libraries.
-LD=$lt_LD_F77
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag_F77
-reload_cmds=$lt_reload_cmds_F77
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_F77
-
-# A language specific compiler.
-CC=$lt_compiler_F77
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_F77
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_F77
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_F77
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_F77
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_F77
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_F77
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_F77
-archive_expsym_cmds=$lt_archive_expsym_cmds_F77
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_F77
-module_expsym_cmds=$lt_module_expsym_cmds_F77
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_F77
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_F77
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_F77
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_F77
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute_F77
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_F77
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic_F77
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_F77
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_F77
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_F77
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_F77
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_F77
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_F77
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_F77
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds_F77
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_F77
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_F77
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects_F77
-postdep_objects=$lt_postdep_objects_F77
-predeps=$lt_predeps_F77
-postdeps=$lt_postdeps_F77
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_F77
-
-# ### END LIBTOOL TAG CONFIG: F77
-_LT_EOF
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: FC
-
-# The linker used to build libraries.
-LD=$lt_LD_FC
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag_FC
-reload_cmds=$lt_reload_cmds_FC
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_FC
-
-# A language specific compiler.
-CC=$lt_compiler_FC
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_FC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_FC
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_FC
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_FC
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_FC
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_FC
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_FC
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_FC
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_FC
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_FC
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_FC
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_FC
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_FC
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_FC
-archive_expsym_cmds=$lt_archive_expsym_cmds_FC
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_FC
-module_expsym_cmds=$lt_module_expsym_cmds_FC
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_FC
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_FC
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_FC
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_FC
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_FC
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_FC
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute_FC
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_FC
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_FC
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic_FC
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_FC
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_FC
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_FC
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_FC
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_FC
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_FC
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_FC
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds_FC
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_FC
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_FC
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_FC
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects_FC
-postdep_objects=$lt_postdep_objects_FC
-predeps=$lt_predeps_FC
-postdeps=$lt_postdeps_FC
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_FC
-
-# ### END LIBTOOL TAG CONFIG: FC
-_LT_EOF
-
- ;;
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Older Autoconf quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$mf" : 'X\(//\)[^/]' \| \
-	 X"$mf" : 'X\(//\)$' \| \
-	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$file" : 'X\(//\)[^/]' \| \
-	 X"$file" : 'X\(//\)$' \| \
-	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      as_dir=$dirpart/$fdir; as_fn_mkdir_p
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
- ;;
-
-  esac
-done # for ac_tag
-
-
-as_fn_exit 0
diff --git a/config/config.guess b/config/config.guess
deleted file mode 100755
index c6fad2f..0000000
--- a/config/config.guess
+++ /dev/null
@@ -1,1568 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
-
-timestamp='2013-06-10'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-#
-# Originally written by Per Bothner.
-#
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-#
-# Please send patches with a ChangeLog entry to config-patches at gnu.org.
-
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches at gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright 1992-2013 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-	for c in cc gcc c89 c99 ; do
-	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-	     CC_FOR_BUILD="$c"; break ;
-	  fi ;
-	done ;
-	if test x"$CC_FOR_BUILD" = x ; then
-	  CC_FOR_BUILD=no_compiler_found ;
-	fi
-	;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi at noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-	PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-case "${UNAME_SYSTEM}" in
-Linux|GNU|GNU/*)
-	# If the system lacks a compiler, then just pick glibc.
-	# We could probably try harder.
-	LIBC=gnu
-
-	eval $set_cc_for_build
-	cat <<-EOF > $dummy.c
-	#include <features.h>
-	#if defined(__UCLIBC__)
-	LIBC=uclibc
-	#elif defined(__dietlibc__)
-	LIBC=dietlibc
-	#else
-	LIBC=gnu
-	#endif
-	EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-	;;
-esac
-
-case "${UNAME_MACHINE}" in
-  i?86)
-     test -z "$VENDOR" && VENDOR=pc
-     ;;
-  *)
-     test -z "$VENDOR" && VENDOR=unknown
-     ;;
-esac
-test -f /etc/SuSE-release -o -f /.buildenv && VENDOR=suse
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-    *:NetBSD:*:*)
-	# NetBSD (nbsd) targets should (where applicable) match one or
-	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
-	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-	# switched to ELF, *-*-netbsd* would select the old
-	# object file format.  This provides both forward
-	# compatibility and a consistent mechanism for selecting the
-	# object file format.
-	#
-	# Note: NetBSD doesn't particularly care about the vendor
-	# portion of the name.  We always set it to "unknown".
-	sysctl="sysctl -n hw.machine_arch"
-	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-	case "${UNAME_MACHINE_ARCH}" in
-	    armeb) machine=armeb-unknown ;;
-	    arm*) machine=arm-unknown ;;
-	    sh3el) machine=shl-unknown ;;
-	    sh3eb) machine=sh-unknown ;;
-	    sh5el) machine=sh5le-unknown ;;
-	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-	esac
-	# The Operating System including object format, if it has switched
-	# to ELF recently, or will in the future.
-	case "${UNAME_MACHINE_ARCH}" in
-	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-		eval $set_cc_for_build
-		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-			| grep -q __ELF__
-		then
-		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-		    # Return netbsd for either.  FIX?
-		    os=netbsd
-		else
-		    os=netbsdelf
-		fi
-		;;
-	    *)
-		os=netbsd
-		;;
-	esac
-	# The OS release
-	# Debian GNU/NetBSD machines have a different userland, and
-	# thus, need a distinct triplet. However, they do not need
-	# kernel version information, so it can be replaced with a
-	# suitable tag, in the style of linux-gnu.
-	case "${UNAME_VERSION}" in
-	    Debian*)
-		release='-gnu'
-		;;
-	    *)
-		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-		;;
-	esac
-	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-	# contains redundant information, the shorter form:
-	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-	echo "${machine}-${os}${release}"
-	exit ;;
-    *:Bitrig:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-	echo ${UNAME_MACHINE_ARCH}-${VENDOR}-bitrig${UNAME_RELEASE}
-	exit ;;
-    *:OpenBSD:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-	echo ${UNAME_MACHINE_ARCH}-${VENDOR}-openbsd${UNAME_RELEASE}
-	exit ;;
-    *:ekkoBSD:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-ekkobsd${UNAME_RELEASE}
-	exit ;;
-    *:SolidBSD:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-solidbsd${UNAME_RELEASE}
-	exit ;;
-    macppc:MirBSD:*:*)
-	echo powerpc-${VENDOR}-mirbsd${UNAME_RELEASE}
-	exit ;;
-    *:MirBSD:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-mirbsd${UNAME_RELEASE}
-	exit ;;
-    alpha:OSF1:*:*)
-	case $UNAME_RELEASE in
-	*4.0)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-		;;
-	*5.*)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-		;;
-	esac
-	# According to Compaq, /usr/sbin/psrinfo has been available on
-	# OSF/1 and Tru64 systems produced since 1995.  I hope that
-	# covers most systems running today.  This code pipes the CPU
-	# types through head -n 1, so we only detect the type of CPU 0.
-	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-	case "$ALPHA_CPU_TYPE" in
-	    "EV4 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV4.5 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "LCA4 (21066/21068)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV5 (21164)")
-		UNAME_MACHINE="alphaev5" ;;
-	    "EV5.6 (21164A)")
-		UNAME_MACHINE="alphaev56" ;;
-	    "EV5.6 (21164PC)")
-		UNAME_MACHINE="alphapca56" ;;
-	    "EV5.7 (21164PC)")
-		UNAME_MACHINE="alphapca57" ;;
-	    "EV6 (21264)")
-		UNAME_MACHINE="alphaev6" ;;
-	    "EV6.7 (21264A)")
-		UNAME_MACHINE="alphaev67" ;;
-	    "EV6.8CB (21264C)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8AL (21264B)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8CX (21264D)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.9A (21264/EV69A)")
-		UNAME_MACHINE="alphaev69" ;;
-	    "EV7 (21364)")
-		UNAME_MACHINE="alphaev7" ;;
-	    "EV7.9 (21364A)")
-		UNAME_MACHINE="alphaev79" ;;
-	esac
-	# A Pn.n version is a patched version.
-	# A Vn.n version is a released version.
-	# A Tn.n version is a released field test version.
-	# A Xn.n version is an unreleased experimental baselevel.
-	# 1.2 uses "1.2" for uname -r.
-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-	exitcode=$?
-	trap '' 0
-	exit $exitcode ;;
-    Alpha\ *:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# Should we change UNAME_MACHINE based on the output of uname instead
-	# of the specific Alpha model?
-	echo alpha-pc-interix
-	exit ;;
-    21064:Windows_NT:50:3)
-	echo alpha-dec-winnt3.5
-	exit ;;
-    Amiga*:UNIX_System_V:4.0:*)
-	echo m68k-${VENDOR}-sysv4
-	exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-amigaos
-	exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-morphos
-	exit ;;
-    *:OS/390:*:*)
-	echo i370-ibm-openedition
-	exit ;;
-    *:z/VM:*:*)
-	echo s390-ibm-zvmoe
-	exit ;;
-    *:OS400:*:*)
-	echo powerpc-ibm-os400
-	exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-	echo arm-acorn-riscix${UNAME_RELEASE}
-	exit ;;
-    arm*:riscos:*:*|arm*:RISCOS:*:*)
-	echo arm-${VENDOR}-riscos
-	exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-	echo hppa1.1-hitachi-hiuxmpp
-	exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-	# akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-	if test "`(/bin/universe) 2>/dev/null`" = att ; then
-		echo pyramid-pyramid-sysv3
-	else
-		echo pyramid-pyramid-bsd
-	fi
-	exit ;;
-    NILE*:*:*:dcosx)
-	echo pyramid-pyramid-svr4
-	exit ;;
-    DRS?6000:unix:4.0:6*)
-	echo sparc-icl-nx6
-	exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-	case `/usr/bin/uname -p` in
-	    sparc) echo sparc-icl-nx7; exit ;;
-	esac ;;
-    s390x:SunOS:*:*)
-	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4H:SunOS:5.*:*)
-	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-	echo i386-pc-auroraux${UNAME_RELEASE}
-	exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-	eval $set_cc_for_build
-	SUN_ARCH="i386"
-	# If there is a compiler, see if it is configured for 64-bit objects.
-	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-	# This test works for both compilers.
-	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		grep IS_64BIT_ARCH >/dev/null
-	    then
-		SUN_ARCH="x86_64"
-	    fi
-	fi
-	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:6*:*)
-	# According to config.sub, this is the proper way to canonicalize
-	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-	# it's likely to be more like Solaris than SunOS4.
-	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:*:*)
-	case "`/usr/bin/arch -k`" in
-	    Series*|S4*)
-		UNAME_RELEASE=`uname -v`
-		;;
-	esac
-	# Japanese Language versions have a version number like `4.1.3-JL'.
-	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-	exit ;;
-    sun3*:SunOS:*:*)
-	echo m68k-sun-sunos${UNAME_RELEASE}
-	exit ;;
-    sun*:*:4.2BSD:*)
-	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-	case "`/bin/arch`" in
-	    sun3)
-		echo m68k-sun-sunos${UNAME_RELEASE}
-		;;
-	    sun4)
-		echo sparc-sun-sunos${UNAME_RELEASE}
-		;;
-	esac
-	exit ;;
-    aushp:SunOS:*:*)
-	echo sparc-auspex-sunos${UNAME_RELEASE}
-	exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-	echo m68k-milan-mint${UNAME_RELEASE}
-	exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-	echo m68k-hades-mint${UNAME_RELEASE}
-	exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-	echo m68k-${VENDOR}-mint${UNAME_RELEASE}
-	exit ;;
-    m68k:machten:*:*)
-	echo m68k-apple-machten${UNAME_RELEASE}
-	exit ;;
-    powerpc:machten:*:*)
-	echo powerpc-apple-machten${UNAME_RELEASE}
-	exit ;;
-    RISC*:Mach:*:*)
-	echo mips-dec-mach_bsd4.3
-	exit ;;
-    RISC*:ULTRIX:*:*)
-	echo mips-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    VAX*:ULTRIX*:*:*)
-	echo vax-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-	echo clipper-intergraph-clix${UNAME_RELEASE}
-	exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-	int main (int argc, char *argv[]) {
-#else
-	int main (argc, argv) int argc; char *argv[]; {
-#endif
-	#if defined (host_mips) && defined (MIPSEB)
-	#if defined (SYSTYPE_SYSV)
-	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_SVR4)
-	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
-	#endif
-	#endif
-	  exit (-1);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c &&
-	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-	  SYSTEM_NAME=`$dummy $dummyarg` &&
-	    { echo "$SYSTEM_NAME"; exit; }
-	echo mips-mips-riscos${UNAME_RELEASE}
-	exit ;;
-    Motorola:PowerMAX_OS:*:*)
-	echo powerpc-motorola-powermax
-	exit ;;
-    Motorola:*:4.3:PL8-*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-	echo powerpc-harris-powerunix
-	exit ;;
-    m88k:CX/UX:7*:*)
-	echo m88k-harris-cxux7
-	exit ;;
-    m88k:*:4*:R4*)
-	echo m88k-motorola-sysv4
-	exit ;;
-    m88k:*:3*:R3*)
-	echo m88k-motorola-sysv3
-	exit ;;
-    AViiON:dgux:*:*)
-	# DG/UX returns AViiON for all architectures
-	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-	then
-	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-	       [ ${TARGET_BINARY_INTERFACE}x = x ]
-	    then
-		echo m88k-dg-dgux${UNAME_RELEASE}
-	    else
-		echo m88k-dg-dguxbcs${UNAME_RELEASE}
-	    fi
-	else
-	    echo i586-dg-dgux${UNAME_RELEASE}
-	fi
-	exit ;;
-    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
-	echo m88k-dolphin-sysv3
-	exit ;;
-    M88*:*:R3*:*)
-	# Delta 88k system running SVR3
-	echo m88k-motorola-sysv3
-	exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-	echo m88k-tektronix-sysv3
-	exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-	echo m68k-tektronix-bsd
-	exit ;;
-    *:IRIX*:*:*)
-	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-	exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-	echo i386-ibm-aix
-	exit ;;
-    ia64:AIX:*:*)
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:2:3)
-	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-		eval $set_cc_for_build
-		sed 's/^		//' << EOF >$dummy.c
-		#include <sys/systemcfg.h>
-
-		main()
-			{
-			if (!__power_pc())
-				exit(1);
-			puts("powerpc-ibm-aix3.2.5");
-			exit(0);
-			}
-EOF
-		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
-		then
-			echo "$SYSTEM_NAME"
-		else
-			echo rs6000-ibm-aix3.2.5
-		fi
-	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-		echo rs6000-ibm-aix3.2.4
-	else
-		echo rs6000-ibm-aix3.2
-	fi
-	exit ;;
-    *:AIX:*:[4567])
-	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
-		IBM_ARCH=rs6000
-	else
-		IBM_ARCH=powerpc
-	fi
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:*:*)
-	echo rs6000-ibm-aix
-	exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
-	echo romp-ibm-bsd4.4
-	exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-	exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-	echo rs6000-bull-bosx
-	exit ;;
-    DPX/2?00:B.O.S.:*:*)
-	echo m68k-bull-sysv3
-	exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-	echo m68k-hp-bsd
-	exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-	echo m68k-hp-bsd4.4
-	exit ;;
-    9000/[34678]??:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	case "${UNAME_MACHINE}" in
-	    9000/31? )            HP_ARCH=m68000 ;;
-	    9000/[34]?? )         HP_ARCH=m68k ;;
-	    9000/[678][0-9][0-9])
-		if [ -x /usr/bin/getconf ]; then
-		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-		    case "${sc_cpu_version}" in
-		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-		      532)                      # CPU_PA_RISC2_0
-			case "${sc_kernel_bits}" in
-			  32) HP_ARCH="hppa2.0n" ;;
-			  64) HP_ARCH="hppa2.0w" ;;
-			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-			esac ;;
-		    esac
-		fi
-		if [ "${HP_ARCH}" = "" ]; then
-		    eval $set_cc_for_build
-		    sed 's/^		//' << EOF >$dummy.c
-
-		#define _HPUX_SOURCE
-		#include <stdlib.h>
-		#include <unistd.h>
-
-		int main ()
-		{
-		#if defined(_SC_KERNEL_BITS)
-		    long bits = sysconf(_SC_KERNEL_BITS);
-		#endif
-		    long cpu  = sysconf (_SC_CPU_VERSION);
-
-		    switch (cpu)
-			{
-			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-			case CPU_PA_RISC2_0:
-		#if defined(_SC_KERNEL_BITS)
-			    switch (bits)
-				{
-				case 64: puts ("hppa2.0w"); break;
-				case 32: puts ("hppa2.0n"); break;
-				default: puts ("hppa2.0"); break;
-				} break;
-		#else  /* !defined(_SC_KERNEL_BITS) */
-			    puts ("hppa2.0"); break;
-		#endif
-			default: puts ("hppa1.0"); break;
-			}
-		    exit (0);
-		}
-EOF
-		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-		    test -z "$HP_ARCH" && HP_ARCH=hppa
-		fi ;;
-	esac
-	if [ ${HP_ARCH} = "hppa2.0w" ]
-	then
-	    eval $set_cc_for_build
-
-	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-	    # generating 64-bit code.  GNU and HP use different nomenclature:
-	    #
-	    # $ CC_FOR_BUILD=cc ./config.guess
-	    # => hppa2.0w-hp-hpux11.23
-	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-	    # => hppa64-hp-hpux11.23
-
-	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-		grep -q __LP64__
-	    then
-		HP_ARCH="hppa2.0w"
-	    else
-		HP_ARCH="hppa64"
-	    fi
-	fi
-	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-	exit ;;
-    ia64:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	echo ia64-hp-hpux${HPUX_REV}
-	exit ;;
-    3050*:HI-UX:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <unistd.h>
-	int
-	main ()
-	{
-	  long cpu = sysconf (_SC_CPU_VERSION);
-	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-	     results, however.  */
-	  if (CPU_IS_PA_RISC (cpu))
-	    {
-	      switch (cpu)
-		{
-		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-		  default: puts ("hppa-hitachi-hiuxwe2"); break;
-		}
-	    }
-	  else if (CPU_IS_HP_MC68K (cpu))
-	    puts ("m68k-hitachi-hiuxwe2");
-	  else puts ("unknown-hitachi-hiuxwe2");
-	  exit (0);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
-		{ echo "$SYSTEM_NAME"; exit; }
-	echo unknown-hitachi-hiuxwe2
-	exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-	echo hppa1.1-hp-bsd
-	exit ;;
-    9000/8??:4.3bsd:*:*)
-	echo hppa1.0-hp-bsd
-	exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-	echo hppa1.0-hp-mpeix
-	exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-	echo hppa1.1-hp-osf
-	exit ;;
-    hp8??:OSF1:*:*)
-	echo hppa1.0-hp-osf
-	exit ;;
-    i*86:OSF1:*:*)
-	if [ -x /usr/sbin/sysversion ] ; then
-	    echo ${UNAME_MACHINE}-${VENDOR}-osf1mk
-	else
-	    echo ${UNAME_MACHINE}-${VENDOR}-osf1
-	fi
-	exit ;;
-    parisc*:Lites*:*:*)
-	echo hppa1.1-hp-lites
-	exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-	echo c1-convex-bsd
-	exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-	exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-	echo c34-convex-bsd
-	exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-	echo c38-convex-bsd
-	exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-	echo c4-convex-bsd
-	exit ;;
-    CRAY*Y-MP:*:*:*)
-	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*[A-Z]90:*:*:*)
-	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-	      -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*TS:*:*:*)
-	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*T3E:*:*:*)
-	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*SV1:*:*:*)
-	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    *:UNICOS/mp:*:*)
-	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
-    5000:UNIX_System_V:4.*:*)
-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-	exit ;;
-    sparc*:BSD/OS:*:*)
-	echo sparc-${VENDOR}-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:BSD/OS:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:FreeBSD:*:*)
-	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	case ${UNAME_PROCESSOR} in
-	    amd64)
-		echo x86_64-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    *)
-		echo ${UNAME_PROCESSOR}-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	esac
-	exit ;;
-    i*:CYGWIN*:*)
-	echo ${UNAME_MACHINE}-pc-cygwin
-	exit ;;
-    *:MINGW64*:*)
-	echo ${UNAME_MACHINE}-pc-mingw64
-	exit ;;
-    *:MINGW*:*)
-	echo ${UNAME_MACHINE}-pc-mingw32
-	exit ;;
-    i*:MSYS*:*)
-	echo ${UNAME_MACHINE}-pc-msys
-	exit ;;
-    i*:windows32*:*)
-	# uname -m includes "-pc" on this system.
-	echo ${UNAME_MACHINE}-mingw32
-	exit ;;
-    i*:PW*:*)
-	echo ${UNAME_MACHINE}-pc-pw32
-	exit ;;
-    *:Interix*:*)
-	case ${UNAME_MACHINE} in
-	    x86)
-		echo i586-pc-interix${UNAME_RELEASE}
-		exit ;;
-	    authenticamd | genuineintel | EM64T)
-		echo x86_64-${VENDOR}-interix${UNAME_RELEASE}
-		exit ;;
-	    IA64)
-		echo ia64-${VENDOR}-interix${UNAME_RELEASE}
-		exit ;;
-	esac ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-	echo i${UNAME_MACHINE}-pc-mks
-	exit ;;
-    8664:Windows_NT:*)
-	echo x86_64-pc-mks
-	exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-	# UNAME_MACHINE based on the output of uname instead of i386?
-	echo i586-pc-interix
-	exit ;;
-    i*:UWIN*:*)
-	echo ${UNAME_MACHINE}-pc-uwin
-	exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-	echo x86_64-${VENDOR}-cygwin
-	exit ;;
-    p*:CYGWIN*:*)
-	echo powerpcle-${VENDOR}-cygwin
-	exit ;;
-    prep*:SunOS:5.*:*)
-	echo powerpcle-${VENDOR}-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    *:GNU:*:*)
-	# the GNU system
-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-${VENDOR}-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-	exit ;;
-    *:GNU/*:*:*)
-	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-${VENDOR}-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
-	exit ;;
-    i*86:Minix:*:*)
-	echo ${UNAME_MACHINE}-pc-minix
-	exit ;;
-    aarch64:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    aarch64_be:Linux:*:*)
-	UNAME_MACHINE=aarch64_be
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-	  EV5)   UNAME_MACHINE=alphaev5 ;;
-	  EV56)  UNAME_MACHINE=alphaev56 ;;
-	  PCA56) UNAME_MACHINE=alphapca56 ;;
-	  PCA57) UNAME_MACHINE=alphapca56 ;;
-	  EV6)   UNAME_MACHINE=alphaev6 ;;
-	  EV67)  UNAME_MACHINE=alphaev67 ;;
-	  EV68*) UNAME_MACHINE=alphaev68 ;;
-	esac
-	objdump --private-headers /bin/sh | grep -q ld.so.1
-	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    arm*:Linux:*:*)
-	eval $set_cc_for_build
-	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-	    | grep -q __ARM_EABI__
-	then
-	    echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	else
-	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-		| grep -q __ARM_PCS_VFP
-	    then
-		echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}eabi
-	    else
-		echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}eabihf
-	    fi
-	fi
-	exit ;;
-    avr32*:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    cris:Linux:*:*)
-	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
-	exit ;;
-    crisv32:Linux:*:*)
-	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
-	exit ;;
-    frv:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    hexagon:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    i*86:Linux:*:*)
-	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
-	exit ;;
-    ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#undef CPU
-	#undef ${UNAME_MACHINE}
-	#undef ${UNAME_MACHINE}el
-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=${UNAME_MACHINE}el
-	#else
-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=${UNAME_MACHINE}
-	#else
-	CPU=
-	#endif
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-	test x"${CPU}" != x && { echo "${CPU}-${VENDOR}-linux-${LIBC}"; exit; }
-	;;
-    or1k:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    or32:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    padre:Linux:*:*)
-	echo sparc-${VENDOR}-linux-${LIBC}
-	exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-${VENDOR}-linux-${LIBC}
-	exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-	# Look for CPU level
-	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-${VENDOR}-linux-${LIBC} ;;
-	  PA8*) echo hppa2.0-${VENDOR}-linux-${LIBC} ;;
-	  *)    echo hppa-${VENDOR}-linux-${LIBC} ;;
-	esac
-	exit ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-${VENDOR}-linux-${LIBC}
-	exit ;;
-    ppc:Linux:*:*)
-	echo powerpc-${VENDOR}-linux-${LIBC}
-	exit ;;
-    ppc64le:Linux:*:*)
-	echo powerpc64le-${VENDOR}-linux-${LIBC}
-	exit ;;
-    ppcle:Linux:*:*)
-	echo powerpcle-${VENDOR}-linux-${LIBC}
-	exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
-	exit ;;
-    sh64*:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    tile*:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    vax:Linux:*:*)
-	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
-	exit ;;
-    x86_64:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    xtensa*:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}
-	exit ;;
-    i*86:DYNIX/ptx:4*:*)
-	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-	# earlier versions are messed up and put the nodename in both
-	# sysname and nodename.
-	echo i386-sequent-sysv4
-	exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-	# Unixware is an offshoot of SVR4, but it has its own version
-	# number series starting with 2...
-	# I am not positive that other SVR4 systems won't match this,
-	# I just have to hope.  -- rms.
-	# Use sysv4.2uw... so that sysv4* matches it.
-	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-	exit ;;
-    i*86:OS/2:*:*)
-	# If we were able to find `uname', then EMX Unix compatibility
-	# is probably installed.
-	echo ${UNAME_MACHINE}-pc-os2-emx
-	exit ;;
-    i*86:XTS-300:*:STOP)
-	echo ${UNAME_MACHINE}-${VENDOR}-stop
-	exit ;;
-    i*86:atheos:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-atheos
-	exit ;;
-    i*86:syllable:*:*)
-	echo ${UNAME_MACHINE}-pc-syllable
-	exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-	echo i386-${VENODR}-lynxos${UNAME_RELEASE}
-	exit ;;
-    i*86:*DOS:*:*)
-	echo ${UNAME_MACHINE}-pc-msdosdjgpp
-	exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
-	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-	else
-		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
-	fi
-	exit ;;
-    i*86:*:5:[678]*)
-	# UnixWare 7.x, OpenUNIX and OpenServer 6.
-	case `/bin/uname -X | grep "^Machine"` in
-	    *486*)	     UNAME_MACHINE=i486 ;;
-	    *Pentium)	     UNAME_MACHINE=i586 ;;
-	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-	esac
-	echo ${UNAME_MACHINE}-${VENDOR}-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-	exit ;;
-    i*86:*:3.2:*)
-	if test -f /usr/options/cb.name; then
-		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-	elif /bin/uname -X 2>/dev/null >/dev/null ; then
-		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-			&& UNAME_MACHINE=i586
-		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-	else
-		echo ${UNAME_MACHINE}-pc-sysv32
-	fi
-	exit ;;
-    pc:*:*:*)
-	# Left here for compatibility:
-	# uname -m prints for DJGPP always 'pc', but it prints nothing about
-	# the processor, so we play safe by assuming i586.
-	# Note: whatever this is, it MUST be the same as what config.sub
-	# prints for the "djgpp" host, or else GDB configury will decide that
-	# this is a cross-build.
-	echo i586-pc-msdosdjgpp
-	exit ;;
-    Intel:Mach:3*:*)
-	echo i386-pc-mach3
-	exit ;;
-    paragon:*:*:*)
-	echo i860-intel-osf1
-	exit ;;
-    i860:*:4.*:*) # i860-SVR4
-	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
-	else # Add other i860-SVR4 vendors below as they are discovered.
-	  echo i860-${VENODR}-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
-	fi
-	exit ;;
-    mini*:CTIX:SYS*5:*)
-	# "miniframe"
-	echo m68010-convergent-sysv
-	exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-	echo m68k-convergent-sysv
-	exit ;;
-    M680?0:D-NIX:5.3:*)
-	echo m68k-diab-dnix
-	exit ;;
-    M68*:*:R3V[5678]*:*)
-	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-	OS_REL=''
-	test -r /etc/.relid \
-	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-	OS_REL='.3'
-	test -r /etc/.relid \
-	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-	echo m68k-${VENDOR}-lynxos${UNAME_RELEASE}
-	exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-	echo m68k-atari-sysv4
-	exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-	echo sparc-${VENDOR}-lynxos${UNAME_RELEASE}
-	exit ;;
-    rs6000:LynxOS:2.*:*)
-	echo rs6000-${VENDOR}-lynxos${UNAME_RELEASE}
-	exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-	echo powerpc-${VENDOR}-lynxos${UNAME_RELEASE}
-	exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-	echo mips-dde-sysv${UNAME_RELEASE}
-	exit ;;
-    RM*:ReliantUNIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    RM*:SINIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    *:SINIX-*:*:*)
-	if uname -p 2>/dev/null >/dev/null ; then
-		UNAME_MACHINE=`(uname -p) 2>/dev/null`
-		echo ${UNAME_MACHINE}-sni-sysv4
-	else
-		echo ns32k-sni-sysv
-	fi
-	exit ;;
-    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-			# says <Richard.M.Bartel at ccMail.Census.GOV>
-	echo i586-unisys-sysv4
-	exit ;;
-    *:UNIX_System_V:4*:FTX*)
-	# From Gerald Hewes <hewes at openmarket.com>.
-	# How about differentiating between stratus architectures? -djm
-	echo hppa1.1-stratus-sysv4
-	exit ;;
-    *:*:*:FTX*)
-	# From seanf at swdc.stratus.com.
-	echo i860-stratus-sysv4
-	exit ;;
-    i*86:VOS:*:*)
-	# From Paul.Green at stratus.com.
-	echo ${UNAME_MACHINE}-stratus-vos
-	exit ;;
-    *:VOS:*:*)
-	# From Paul.Green at stratus.com.
-	echo hppa1.1-stratus-vos
-	exit ;;
-    mc68*:A/UX:*:*)
-	echo m68k-apple-aux${UNAME_RELEASE}
-	exit ;;
-    news*:NEWS-OS:6*:*)
-	echo mips-sony-newsos6
-	exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-	if [ -d /usr/nec ]; then
-		echo mips-nec-sysv${UNAME_RELEASE}
-	else
-		echo mips-${VENDOR}-sysv${UNAME_RELEASE}
-	fi
-	exit ;;
-    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
-	echo powerpc-be-beos
-	exit ;;
-    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
-	echo powerpc-apple-beos
-	exit ;;
-    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
-	echo i586-pc-beos
-	exit ;;
-    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
-	echo i586-pc-haiku
-	exit ;;
-    x86_64:Haiku:*:*)
-	echo x86_64-${VENDOR}-haiku
-	exit ;;
-    SX-4:SUPER-UX:*:*)
-	echo sx4-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-5:SUPER-UX:*:*)
-	echo sx5-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-6:SUPER-UX:*:*)
-	echo sx6-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-7:SUPER-UX:*:*)
-	echo sx7-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8:SUPER-UX:*:*)
-	echo sx8-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8R:SUPER-UX:*:*)
-	echo sx8r-nec-superux${UNAME_RELEASE}
-	exit ;;
-    Power*:Rhapsody:*:*)
-	echo powerpc-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Rhapsody:*:*)
-	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Darwin:*:*)
-	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-	eval $set_cc_for_build
-	if test "$UNAME_PROCESSOR" = unknown ; then
-	    UNAME_PROCESSOR=powerpc
-	fi
-	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-	    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		grep IS_64BIT_ARCH >/dev/null
-	    then
-		case $UNAME_PROCESSOR in
-		    i386) UNAME_PROCESSOR=x86_64 ;;
-		    powerpc) UNAME_PROCESSOR=powerpc64 ;;
-		esac
-	    fi
-	fi
-	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-	exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-	UNAME_PROCESSOR=`uname -p`
-	if test "$UNAME_PROCESSOR" = "x86"; then
-		UNAME_PROCESSOR=i386
-		UNAME_MACHINE=pc
-	fi
-	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-	exit ;;
-    *:QNX:*:4*)
-	echo i386-pc-qnx
-	exit ;;
-    NEO-?:NONSTOP_KERNEL:*:*)
-	echo neo-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    NSE-*:NONSTOP_KERNEL:*:*)
-	echo nse-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
-	echo nsr-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    *:NonStop-UX:*:*)
-	echo mips-compaq-nonstopux
-	exit ;;
-    BS2000:POSIX*:*:*)
-	echo bs2000-siemens-sysv
-	exit ;;
-    DS/*:UNIX_System_V:*:*)
-	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-	exit ;;
-    *:Plan9:*:*)
-	# "uname -m" is not consistent, so use $cputype instead. 386
-	# is converted to i386 for consistency with other x86
-	# operating systems.
-	if test "$cputype" = "386"; then
-	    UNAME_MACHINE=i386
-	else
-	    UNAME_MACHINE="$cputype"
-	fi
-	echo ${UNAME_MACHINE}-${VENDOR}-plan9
-	exit ;;
-    *:TOPS-10:*:*)
-	echo pdp10-${VENDOR}-tops10
-	exit ;;
-    *:TENEX:*:*)
-	echo pdp10-${VENDOR}-tenex
-	exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-	echo pdp10-dec-tops20
-	exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-	echo pdp10-xkl-tops20
-	exit ;;
-    *:TOPS-20:*:*)
-	echo pdp10-${VENDOR}-tops20
-	exit ;;
-    *:ITS:*:*)
-	echo pdp10-${VENDOR}-its
-	exit ;;
-    SEI:*:*:SEIUX)
-	echo mips-sei-seiux${UNAME_RELEASE}
-	exit ;;
-    *:DragonFly:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-	exit ;;
-    *:*VMS:*:*)
-	UNAME_MACHINE=`(uname -p) 2>/dev/null`
-	case "${UNAME_MACHINE}" in
-	    A*) echo alpha-dec-vms ; exit ;;
-	    I*) echo ia64-dec-vms ; exit ;;
-	    V*) echo vax-dec-vms ; exit ;;
-	esac ;;
-    *:XENIX:*:SysV)
-	echo i386-pc-xenix
-	exit ;;
-    i*86:skyos:*:*)
-	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
-	exit ;;
-    i*86:rdos:*:*)
-	echo ${UNAME_MACHINE}-pc-rdos
-	exit ;;
-    i*86:AROS:*:*)
-	echo ${UNAME_MACHINE}-pc-aros
-	exit ;;
-    x86_64:VMkernel:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-esx
-	exit ;;
-esac
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-	"4"
-#else
-	""
-#endif
-	); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-	printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-	printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-	{ echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-	echo c1-convex-bsd
-	exit ;;
-    c2*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-	exit ;;
-    c34*)
-	echo c34-convex-bsd
-	exit ;;
-    c38*)
-	echo c38-convex-bsd
-	exit ;;
-    c4*)
-	echo c4-convex-bsd
-	exit ;;
-    esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches at gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/config/config.sub b/config/config.sub
deleted file mode 100755
index 8b612ab..0000000
--- a/config/config.sub
+++ /dev/null
@@ -1,1788 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
-
-timestamp='2013-04-24'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches with a ChangeLog entry to config-patches at gnu.org.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches at gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2013 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo $1
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | \
-  kopensolaris*-gnu* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  android-linux)
-    os=-linux-android
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-	-sun*os*)
-		# Prevent following clause from handling this invalid input.
-		;;
-	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray | -microblaze*)
-		os=
-		basic_machine=$1
-		;;
-	-bluegene*)
-		os=-cnk
-		;;
-	-sim | -cisco | -oki | -wec | -winbond)
-		os=
-		basic_machine=$1
-		;;
-	-scout)
-		;;
-	-wrs)
-		os=-vxworks
-		basic_machine=$1
-		;;
-	-chorusos*)
-		os=-chorusos
-		basic_machine=$1
-		;;
-	-chorusrdb)
-		os=-chorusrdb
-		basic_machine=$1
-		;;
-	-hiux*)
-		os=-hiuxwe2
-		;;
-	-sco6)
-		os=-sco5v6
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5)
-		os=-sco3.2v5
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco4)
-		os=-sco3.2v4
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2.[4-9]*)
-		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2v[4-9]*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5v6*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco*)
-		os=-sco3.2v2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-udk*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-isc)
-		os=-isc2.2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-clix*)
-		basic_machine=clipper-intergraph
-		;;
-	-isc*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-lynx*178)
-		os=-lynxos178
-		;;
-	-lynx*5)
-		os=-lynxos5
-		;;
-	-lynx*)
-		os=-lynxos
-		;;
-	-ptx*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-		;;
-	-windowsnt*)
-		os=`echo $os | sed -e 's/windowsnt/winnt/'`
-		;;
-	-psos*)
-		os=-psos
-		;;
-	-mint | -mint[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-	# Recognize the basic CPU types without company name.
-	# Some are omitted here because they have special meanings below.
-	1750a | 580 \
-	| a29k \
-	| aarch64 | aarch64_be \
-	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-	| am33_2.0 \
-	| arc | arceb \
-	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
-	| avr | avr32 \
-	| be32 | be64 \
-	| bfin \
-	| c4x | clipper \
-	| d10v | d30v | dlx | dsp16xx \
-	| epiphany \
-	| fido | fr30 | frv \
-	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-	| hexagon \
-	| i370 | i860 | i960 | ia64 \
-	| ip2k | iq2000 \
-	| le32 | le64 \
-	| lm32 \
-	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
-	| mips | mipsbe | mipseb | mipsel | mipsle \
-	| mips16 \
-	| mips64 | mips64el \
-	| mips64octeon | mips64octeonel \
-	| mips64orion | mips64orionel \
-	| mips64r5900 | mips64r5900el \
-	| mips64vr | mips64vrel \
-	| mips64vr4100 | mips64vr4100el \
-	| mips64vr4300 | mips64vr4300el \
-	| mips64vr5000 | mips64vr5000el \
-	| mips64vr5900 | mips64vr5900el \
-	| mipsisa32 | mipsisa32el \
-	| mipsisa32r2 | mipsisa32r2el \
-	| mipsisa64 | mipsisa64el \
-	| mipsisa64r2 | mipsisa64r2el \
-	| mipsisa64sb1 | mipsisa64sb1el \
-	| mipsisa64sr71k | mipsisa64sr71kel \
-	| mipsr5900 | mipsr5900el \
-	| mipstx39 | mipstx39el \
-	| mn10200 | mn10300 \
-	| moxie \
-	| mt \
-	| msp430 \
-	| nds32 | nds32le | nds32be \
-	| nios | nios2 | nios2eb | nios2el \
-	| ns16k | ns32k \
-	| open8 \
-	| or1k | or32 \
-	| pdp10 | pdp11 | pj | pjl \
-	| powerpc | powerpc64 | powerpc64le | powerpcle \
-	| pyramid \
-	| rl78 | rx \
-	| score \
-	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-	| sh64 | sh64le \
-	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-	| spu \
-	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-	| ubicom32 \
-	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
-	| we32k \
-	| x86 | xc16x | xstormy16 | xtensa \
-	| z8k | z80)
-		basic_machine=$basic_machine-unknown
-		;;
-	c54x)
-		basic_machine=tic54x-unknown
-		;;
-	c55x)
-		basic_machine=tic55x-unknown
-		;;
-	c6x)
-		basic_machine=tic6x-unknown
-		;;
-	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-		;;
-	ms1)
-		basic_machine=mt-unknown
-		;;
-
-	strongarm | thumb | xscale)
-		basic_machine=arm-unknown
-		;;
-	xgate)
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	xscaleeb)
-		basic_machine=armeb-unknown
-		;;
-
-	xscaleel)
-		basic_machine=armel-unknown
-		;;
-
-	# We use `pc' rather than `unknown'
-	# because (1) that's what they normally are, and
-	# (2) the word "unknown" tends to confuse beginning users.
-	i*86 | x86_64)
-	  basic_machine=$basic_machine-pc
-	  ;;
-	# Object if more than one company name word.
-	*-*-*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-	# Recognize the basic CPU types with company name.
-	580-* \
-	| a29k-* \
-	| aarch64-* | aarch64_be-* \
-	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
-	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-	| avr-* | avr32-* \
-	| be32-* | be64-* \
-	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* \
-	| clipper-* | craynv-* | cydra-* \
-	| d10v-* | d30v-* | dlx-* \
-	| elxsi-* \
-	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-	| h8300-* | h8500-* \
-	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-	| hexagon-* \
-	| i*86-* | i860-* | i960-* | ia64-* \
-	| ip2k-* | iq2000-* \
-	| le32-* | le64-* \
-	| lm32-* \
-	| m32c-* | m32r-* | m32rle-* \
-	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-	| microblaze-* | microblazeel-* \
-	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-	| mips16-* \
-	| mips64-* | mips64el-* \
-	| mips64octeon-* | mips64octeonel-* \
-	| mips64orion-* | mips64orionel-* \
-	| mips64r5900-* | mips64r5900el-* \
-	| mips64vr-* | mips64vrel-* \
-	| mips64vr4100-* | mips64vr4100el-* \
-	| mips64vr4300-* | mips64vr4300el-* \
-	| mips64vr5000-* | mips64vr5000el-* \
-	| mips64vr5900-* | mips64vr5900el-* \
-	| mipsisa32-* | mipsisa32el-* \
-	| mipsisa32r2-* | mipsisa32r2el-* \
-	| mipsisa64-* | mipsisa64el-* \
-	| mipsisa64r2-* | mipsisa64r2el-* \
-	| mipsisa64sb1-* | mipsisa64sb1el-* \
-	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
-	| mipsr5900-* | mipsr5900el-* \
-	| mipstx39-* | mipstx39el-* \
-	| mmix-* \
-	| mt-* \
-	| msp430-* \
-	| nds32-* | nds32le-* | nds32be-* \
-	| nios-* | nios2-* | nios2eb-* | nios2el-* \
-	| none-* | np1-* | ns16k-* | ns32k-* \
-	| open8-* \
-	| orion-* \
-	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
-	| pyramid-* \
-	| rl78-* | romp-* | rs6000-* | rx-* \
-	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
-	| tahoe-* \
-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-	| tile*-* \
-	| tron-* \
-	| ubicom32-* \
-	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-	| vax-* \
-	| we32k-* \
-	| x86-* | x86_64-* | xc16x-* | xps100-* \
-	| xstormy16-* | xtensa*-* \
-	| ymp-* \
-	| z8k-* | z80-*)
-		;;
-	# Recognize the basic CPU types without company name, with glob match.
-	xtensa*)
-		basic_machine=$basic_machine-unknown
-		;;
-	# Recognize the various machine names and aliases which stand
-	# for a CPU type and a company and sometimes even an OS.
-	386bsd)
-		basic_machine=i386-unknown
-		os=-bsd
-		;;
-	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-		basic_machine=m68000-att
-		;;
-	3b*)
-		basic_machine=we32k-att
-		;;
-	a29khif)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	abacus)
-		basic_machine=abacus-unknown
-		;;
-	adobe68k)
-		basic_machine=m68010-adobe
-		os=-scout
-		;;
-	alliant | fx80)
-		basic_machine=fx80-alliant
-		;;
-	altos | altos3068)
-		basic_machine=m68k-altos
-		;;
-	am29k)
-		basic_machine=a29k-none
-		os=-bsd
-		;;
-	amd64)
-		basic_machine=x86_64-pc
-		;;
-	amd64-*)
-		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	amdahl)
-		basic_machine=580-amdahl
-		os=-sysv
-		;;
-	amiga | amiga-*)
-		basic_machine=m68k-unknown
-		;;
-	amigaos | amigados)
-		basic_machine=m68k-unknown
-		os=-amigaos
-		;;
-	amigaunix | amix)
-		basic_machine=m68k-unknown
-		os=-sysv4
-		;;
-	apollo68)
-		basic_machine=m68k-apollo
-		os=-sysv
-		;;
-	apollo68bsd)
-		basic_machine=m68k-apollo
-		os=-bsd
-		;;
-	aros)
-		basic_machine=i386-pc
-		os=-aros
-		;;
-	aux)
-		basic_machine=m68k-apple
-		os=-aux
-		;;
-	balance)
-		basic_machine=ns32k-sequent
-		os=-dynix
-		;;
-	blackfin)
-		basic_machine=bfin-unknown
-		os=-linux
-		;;
-	blackfin-*)
-		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	bluegene*)
-		basic_machine=powerpc-ibm
-		os=-cnk
-		;;
-	c54x-*)
-		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c55x-*)
-		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c6x-*)
-		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c90)
-		basic_machine=c90-cray
-		os=-unicos
-		;;
-	cegcc)
-		basic_machine=arm-unknown
-		os=-cegcc
-		;;
-	convex-c1)
-		basic_machine=c1-convex
-		os=-bsd
-		;;
-	convex-c2)
-		basic_machine=c2-convex
-		os=-bsd
-		;;
-	convex-c32)
-		basic_machine=c32-convex
-		os=-bsd
-		;;
-	convex-c34)
-		basic_machine=c34-convex
-		os=-bsd
-		;;
-	convex-c38)
-		basic_machine=c38-convex
-		os=-bsd
-		;;
-	cray | j90)
-		basic_machine=j90-cray
-		os=-unicos
-		;;
-	craynv)
-		basic_machine=craynv-cray
-		os=-unicosmp
-		;;
-	cr16 | cr16-*)
-		basic_machine=cr16-unknown
-		os=-elf
-		;;
-	crds | unos)
-		basic_machine=m68k-crds
-		;;
-	crisv32 | crisv32-* | etraxfs*)
-		basic_machine=crisv32-axis
-		;;
-	cris | cris-* | etrax*)
-		basic_machine=cris-axis
-		;;
-	crx)
-		basic_machine=crx-unknown
-		os=-elf
-		;;
-	da30 | da30-*)
-		basic_machine=m68k-da30
-		;;
-	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-		basic_machine=mips-dec
-		;;
-	decsystem10* | dec10*)
-		basic_machine=pdp10-dec
-		os=-tops10
-		;;
-	decsystem20* | dec20*)
-		basic_machine=pdp10-dec
-		os=-tops20
-		;;
-	delta | 3300 | motorola-3300 | motorola-delta \
-	      | 3300-motorola | delta-motorola)
-		basic_machine=m68k-motorola
-		;;
-	delta88)
-		basic_machine=m88k-motorola
-		os=-sysv3
-		;;
-	dicos)
-		basic_machine=i686-pc
-		os=-dicos
-		;;
-	djgpp)
-		basic_machine=i586-pc
-		os=-msdosdjgpp
-		;;
-	dpx20 | dpx20-*)
-		basic_machine=rs6000-bull
-		os=-bosx
-		;;
-	dpx2* | dpx2*-bull)
-		basic_machine=m68k-bull
-		os=-sysv3
-		;;
-	ebmon29k)
-		basic_machine=a29k-amd
-		os=-ebmon
-		;;
-	elxsi)
-		basic_machine=elxsi-elxsi
-		os=-bsd
-		;;
-	encore | umax | mmax)
-		basic_machine=ns32k-encore
-		;;
-	es1800 | OSE68k | ose68k | ose | OSE)
-		basic_machine=m68k-ericsson
-		os=-ose
-		;;
-	fx2800)
-		basic_machine=i860-alliant
-		;;
-	genix)
-		basic_machine=ns32k-ns
-		;;
-	gmicro)
-		basic_machine=tron-gmicro
-		os=-sysv
-		;;
-	go32)
-		basic_machine=i386-pc
-		os=-go32
-		;;
-	h3050r* | hiux*)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	h8300hms)
-		basic_machine=h8300-hitachi
-		os=-hms
-		;;
-	h8300xray)
-		basic_machine=h8300-hitachi
-		os=-xray
-		;;
-	h8500hms)
-		basic_machine=h8500-hitachi
-		os=-hms
-		;;
-	harris)
-		basic_machine=m88k-harris
-		os=-sysv3
-		;;
-	hp300-*)
-		basic_machine=m68k-hp
-		;;
-	hp300bsd)
-		basic_machine=m68k-hp
-		os=-bsd
-		;;
-	hp300hpux)
-		basic_machine=m68k-hp
-		os=-hpux
-		;;
-	hp3k9[0-9][0-9] | hp9[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k2[0-9][0-9] | hp9k31[0-9])
-		basic_machine=m68000-hp
-		;;
-	hp9k3[2-9][0-9])
-		basic_machine=m68k-hp
-		;;
-	hp9k6[0-9][0-9] | hp6[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k7[0-79][0-9] | hp7[0-79][0-9])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k78[0-9] | hp78[0-9])
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][13679] | hp8[0-9][13679])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][0-9] | hp8[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hppa-next)
-		os=-nextstep3
-		;;
-	hppaosf)
-		basic_machine=hppa1.1-hp
-		os=-osf
-		;;
-	hppro)
-		basic_machine=hppa1.1-hp
-		os=-proelf
-		;;
-	i370-ibm* | ibm*)
-		basic_machine=i370-ibm
-		;;
-	i*86v32)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv32
-		;;
-	i*86v4*)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv4
-		;;
-	i*86v)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv
-		;;
-	i*86sol2)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-solaris2
-		;;
-	i386mach)
-		basic_machine=i386-mach
-		os=-mach
-		;;
-	i386-vsta | vsta)
-		basic_machine=i386-unknown
-		os=-vsta
-		;;
-	iris | iris4d)
-		basic_machine=mips-sgi
-		case $os in
-		    -irix*)
-			;;
-		    *)
-			os=-irix4
-			;;
-		esac
-		;;
-	isi68 | isi)
-		basic_machine=m68k-isi
-		os=-sysv
-		;;
-	m68knommu)
-		basic_machine=m68k-unknown
-		os=-linux
-		;;
-	m68knommu-*)
-		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	m88k-omron*)
-		basic_machine=m88k-omron
-		;;
-	magnum | m3230)
-		basic_machine=mips-mips
-		os=-sysv
-		;;
-	merlin)
-		basic_machine=ns32k-utek
-		os=-sysv
-		;;
-	microblaze*)
-		basic_machine=microblaze-xilinx
-		;;
-	mingw64)
-		basic_machine=x86_64-pc
-		os=-mingw64
-		;;
-	mingw32)
-		basic_machine=i386-pc
-		os=-mingw32
-		;;
-	mingw32ce)
-		basic_machine=arm-unknown
-		os=-mingw32ce
-		;;
-	miniframe)
-		basic_machine=m68000-convergent
-		;;
-	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-	mips3*-*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-		;;
-	mips3*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-		;;
-	monitor)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	morphos)
-		basic_machine=powerpc-unknown
-		os=-morphos
-		;;
-	msdos)
-		basic_machine=i386-pc
-		os=-msdos
-		;;
-	ms1-*)
-		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-		;;
-	msys)
-		basic_machine=i386-pc
-		os=-msys
-		;;
-	mvs)
-		basic_machine=i370-ibm
-		os=-mvs
-		;;
-	nacl)
-		basic_machine=le32-unknown
-		os=-nacl
-		;;
-	ncr3000)
-		basic_machine=i486-ncr
-		os=-sysv4
-		;;
-	netbsd386)
-		basic_machine=i386-unknown
-		os=-netbsd
-		;;
-	netwinder)
-		basic_machine=armv4l-rebel
-		os=-linux
-		;;
-	news | news700 | news800 | news900)
-		basic_machine=m68k-sony
-		os=-newsos
-		;;
-	news1000)
-		basic_machine=m68030-sony
-		os=-newsos
-		;;
-	news-3600 | risc-news)
-		basic_machine=mips-sony
-		os=-newsos
-		;;
-	necv70)
-		basic_machine=v70-nec
-		os=-sysv
-		;;
-	next | m*-next )
-		basic_machine=m68k-next
-		case $os in
-		    -nextstep* )
-			;;
-		    -ns2*)
-		      os=-nextstep2
-			;;
-		    *)
-		      os=-nextstep3
-			;;
-		esac
-		;;
-	nh3000)
-		basic_machine=m68k-harris
-		os=-cxux
-		;;
-	nh[45]000)
-		basic_machine=m88k-harris
-		os=-cxux
-		;;
-	nindy960)
-		basic_machine=i960-intel
-		os=-nindy
-		;;
-	mon960)
-		basic_machine=i960-intel
-		os=-mon960
-		;;
-	nonstopux)
-		basic_machine=mips-compaq
-		os=-nonstopux
-		;;
-	np1)
-		basic_machine=np1-gould
-		;;
-	neo-tandem)
-		basic_machine=neo-tandem
-		;;
-	nse-tandem)
-		basic_machine=nse-tandem
-		;;
-	nsr-tandem)
-		basic_machine=nsr-tandem
-		;;
-	op50n-* | op60c-*)
-		basic_machine=hppa1.1-oki
-		os=-proelf
-		;;
-	openrisc | openrisc-*)
-		basic_machine=or32-unknown
-		;;
-	os400)
-		basic_machine=powerpc-ibm
-		os=-os400
-		;;
-	OSE68000 | ose68000)
-		basic_machine=m68000-ericsson
-		os=-ose
-		;;
-	os68k)
-		basic_machine=m68k-none
-		os=-os68k
-		;;
-	pa-hitachi)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	paragon)
-		basic_machine=i860-intel
-		os=-osf
-		;;
-	parisc)
-		basic_machine=hppa-unknown
-		os=-linux
-		;;
-	parisc-*)
-		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	pbd)
-		basic_machine=sparc-tti
-		;;
-	pbb)
-		basic_machine=m68k-tti
-		;;
-	pc532 | pc532-*)
-		basic_machine=ns32k-pc532
-		;;
-	pc98)
-		basic_machine=i386-pc
-		;;
-	pc98-*)
-		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium | p5 | k5 | k6 | nexgen | viac3)
-		basic_machine=i586-pc
-		;;
-	pentiumpro | p6 | 6x86 | athlon | athlon_*)
-		basic_machine=i686-pc
-		;;
-	pentiumii | pentium2 | pentiumiii | pentium3)
-		basic_machine=i686-pc
-		;;
-	pentium4)
-		basic_machine=i786-pc
-		;;
-	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumpro-* | p6-* | 6x86-* | athlon-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium4-*)
-		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pn)
-		basic_machine=pn-gould
-		;;
-	power)	basic_machine=power-ibm
-		;;
-	ppc | ppcbe)	basic_machine=powerpc-unknown
-		;;
-	ppc-* | ppcbe-*)
-		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppcle | powerpclittle | ppc-le | powerpc-little)
-		basic_machine=powerpcle-unknown
-		;;
-	ppcle-* | powerpclittle-*)
-		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64)	basic_machine=powerpc64-unknown
-		;;
-	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-		basic_machine=powerpc64le-unknown
-		;;
-	ppc64le-* | powerpc64little-*)
-		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ps2)
-		basic_machine=i386-ibm
-		;;
-	pw32)
-		basic_machine=i586-unknown
-		os=-pw32
-		;;
-	rdos | rdos64)
-		basic_machine=x86_64-pc
-		os=-rdos
-		;;
-	rdos32)
-		basic_machine=i386-pc
-		os=-rdos
-		;;
-	rom68k)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	rm[46]00)
-		basic_machine=mips-siemens
-		;;
-	rtpc | rtpc-*)
-		basic_machine=romp-ibm
-		;;
-	s390 | s390-*)
-		basic_machine=s390-ibm
-		;;
-	s390x | s390x-*)
-		basic_machine=s390x-ibm
-		;;
-	sa29200)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	sb1)
-		basic_machine=mipsisa64sb1-unknown
-		;;
-	sb1el)
-		basic_machine=mipsisa64sb1el-unknown
-		;;
-	sde)
-		basic_machine=mipsisa32-sde
-		os=-elf
-		;;
-	sei)
-		basic_machine=mips-sei
-		os=-seiux
-		;;
-	sequent)
-		basic_machine=i386-sequent
-		;;
-	sh)
-		basic_machine=sh-hitachi
-		os=-hms
-		;;
-	sh5el)
-		basic_machine=sh5le-unknown
-		;;
-	sh64)
-		basic_machine=sh64-unknown
-		;;
-	sparclite-wrs | simso-wrs)
-		basic_machine=sparclite-wrs
-		os=-vxworks
-		;;
-	sps7)
-		basic_machine=m68k-bull
-		os=-sysv2
-		;;
-	spur)
-		basic_machine=spur-unknown
-		;;
-	st2000)
-		basic_machine=m68k-tandem
-		;;
-	stratus)
-		basic_machine=i860-stratus
-		os=-sysv4
-		;;
-	strongarm-* | thumb-*)
-		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	sun2)
-		basic_machine=m68000-sun
-		;;
-	sun2os3)
-		basic_machine=m68000-sun
-		os=-sunos3
-		;;
-	sun2os4)
-		basic_machine=m68000-sun
-		os=-sunos4
-		;;
-	sun3os3)
-		basic_machine=m68k-sun
-		os=-sunos3
-		;;
-	sun3os4)
-		basic_machine=m68k-sun
-		os=-sunos4
-		;;
-	sun4os3)
-		basic_machine=sparc-sun
-		os=-sunos3
-		;;
-	sun4os4)
-		basic_machine=sparc-sun
-		os=-sunos4
-		;;
-	sun4sol2)
-		basic_machine=sparc-sun
-		os=-solaris2
-		;;
-	sun3 | sun3-*)
-		basic_machine=m68k-sun
-		;;
-	sun4)
-		basic_machine=sparc-sun
-		;;
-	sun386 | sun386i | roadrunner)
-		basic_machine=i386-sun
-		;;
-	sv1)
-		basic_machine=sv1-cray
-		os=-unicos
-		;;
-	symmetry)
-		basic_machine=i386-sequent
-		os=-dynix
-		;;
-	t3e)
-		basic_machine=alphaev5-cray
-		os=-unicos
-		;;
-	t90)
-		basic_machine=t90-cray
-		os=-unicos
-		;;
-	tile*)
-		basic_machine=$basic_machine-unknown
-		os=-linux-gnu
-		;;
-	tx39)
-		basic_machine=mipstx39-unknown
-		;;
-	tx39el)
-		basic_machine=mipstx39el-unknown
-		;;
-	toad1)
-		basic_machine=pdp10-xkl
-		os=-tops20
-		;;
-	tower | tower-32)
-		basic_machine=m68k-ncr
-		;;
-	tpf)
-		basic_machine=s390x-ibm
-		os=-tpf
-		;;
-	udi29k)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	ultra3)
-		basic_machine=a29k-nyu
-		os=-sym1
-		;;
-	v810 | necv810)
-		basic_machine=v810-nec
-		os=-none
-		;;
-	vaxv)
-		basic_machine=vax-dec
-		os=-sysv
-		;;
-	vms)
-		basic_machine=vax-dec
-		os=-vms
-		;;
-	vpp*|vx|vx-*)
-		basic_machine=f301-fujitsu
-		;;
-	vxworks960)
-		basic_machine=i960-wrs
-		os=-vxworks
-		;;
-	vxworks68)
-		basic_machine=m68k-wrs
-		os=-vxworks
-		;;
-	vxworks29k)
-		basic_machine=a29k-wrs
-		os=-vxworks
-		;;
-	w65*)
-		basic_machine=w65-wdc
-		os=-none
-		;;
-	w89k-*)
-		basic_machine=hppa1.1-winbond
-		os=-proelf
-		;;
-	xbox)
-		basic_machine=i686-pc
-		os=-mingw32
-		;;
-	xps | xps100)
-		basic_machine=xps100-honeywell
-		;;
-	xscale-* | xscalee[bl]-*)
-		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
-		;;
-	ymp)
-		basic_machine=ymp-cray
-		os=-unicos
-		;;
-	z8k-*-coff)
-		basic_machine=z8k-unknown
-		os=-sim
-		;;
-	z80-*-coff)
-		basic_machine=z80-unknown
-		os=-sim
-		;;
-	none)
-		basic_machine=none-none
-		os=-none
-		;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-	w89k)
-		basic_machine=hppa1.1-winbond
-		;;
-	op50n)
-		basic_machine=hppa1.1-oki
-		;;
-	op60c)
-		basic_machine=hppa1.1-oki
-		;;
-	romp)
-		basic_machine=romp-ibm
-		;;
-	mmix)
-		basic_machine=mmix-knuth
-		;;
-	rs6000)
-		basic_machine=rs6000-ibm
-		;;
-	vax)
-		basic_machine=vax-dec
-		;;
-	pdp10)
-		# there are many clones, so DEC is not a safe bet
-		basic_machine=pdp10-unknown
-		;;
-	pdp11)
-		basic_machine=pdp11-dec
-		;;
-	we32k)
-		basic_machine=we32k-att
-		;;
-	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-		basic_machine=sh-unknown
-		;;
-	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
-		basic_machine=sparc-sun
-		;;
-	cydra)
-		basic_machine=cydra-cydrome
-		;;
-	orion)
-		basic_machine=orion-highlevel
-		;;
-	orion105)
-		basic_machine=clipper-highlevel
-		;;
-	mac | mpw | mac-mpw)
-		basic_machine=m68k-apple
-		;;
-	pmac | pmac-mpw)
-		basic_machine=powerpc-apple
-		;;
-	*-unknown)
-		# Make sure to match an already-canonicalized machine name.
-		;;
-	*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-	*-digital*)
-		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-		;;
-	*-commodore*)
-		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-		;;
-	*)
-		;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-	# First match some system type aliases
-	# that might get confused with valid system types.
-	# -solaris* is a basic system type, with this one exception.
-	-auroraux)
-		os=-auroraux
-		;;
-	-solaris1 | -solaris1.*)
-		os=`echo $os | sed -e 's|solaris1|sunos4|'`
-		;;
-	-solaris)
-		os=-solaris2
-		;;
-	-svr4*)
-		os=-sysv4
-		;;
-	-unixware*)
-		os=-sysv4.2uw
-		;;
-	-gnu/linux*)
-		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-		;;
-	# First accept the basic system types.
-	# The portable systems comes first.
-	# Each alternative MUST END IN A *, to match a version number.
-	# -sysv* is not here because it comes later, after sysvr4.
-	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-	      | -sym* | -kopensolaris* | -plan9* \
-	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* | -aros* \
-	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-	      | -bitrig* | -openbsd* | -solidbsd* \
-	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* | -cegcc* \
-	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-	      | -uxpv* | -beos* | -mpeix* | -udk* \
-	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
-	# Remember, each alternative MUST END IN *, to match a version number.
-		;;
-	-qnx*)
-		case $basic_machine in
-		    x86-* | i*86-*)
-			;;
-		    *)
-			os=-nto$os
-			;;
-		esac
-		;;
-	-nto-qnx*)
-		;;
-	-nto*)
-		os=`echo $os | sed -e 's|nto|nto-qnx|'`
-		;;
-	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-		;;
-	-mac*)
-		os=`echo $os | sed -e 's|mac|macos|'`
-		;;
-	-linux-dietlibc)
-		os=-linux-dietlibc
-		;;
-	-linux*)
-		os=`echo $os | sed -e 's|linux|linux-gnu|'`
-		;;
-	-sunos5*)
-		os=`echo $os | sed -e 's|sunos5|solaris2|'`
-		;;
-	-sunos6*)
-		os=`echo $os | sed -e 's|sunos6|solaris3|'`
-		;;
-	-opened*)
-		os=-openedition
-		;;
-	-os400*)
-		os=-os400
-		;;
-	-wince*)
-		os=-wince
-		;;
-	-osfrose*)
-		os=-osfrose
-		;;
-	-osf*)
-		os=-osf
-		;;
-	-utek*)
-		os=-bsd
-		;;
-	-dynix*)
-		os=-bsd
-		;;
-	-acis*)
-		os=-aos
-		;;
-	-atheos*)
-		os=-atheos
-		;;
-	-syllable*)
-		os=-syllable
-		;;
-	-386bsd)
-		os=-bsd
-		;;
-	-ctix* | -uts*)
-		os=-sysv
-		;;
-	-nova*)
-		os=-rtmk-nova
-		;;
-	-ns2 )
-		os=-nextstep2
-		;;
-	-nsk*)
-		os=-nsk
-		;;
-	# Preserve the version number of sinix5.
-	-sinix5.*)
-		os=`echo $os | sed -e 's|sinix|sysv|'`
-		;;
-	-sinix*)
-		os=-sysv4
-		;;
-	-tpf*)
-		os=-tpf
-		;;
-	-triton*)
-		os=-sysv3
-		;;
-	-oss*)
-		os=-sysv3
-		;;
-	-svr4)
-		os=-sysv4
-		;;
-	-svr3)
-		os=-sysv3
-		;;
-	-sysvr4)
-		os=-sysv4
-		;;
-	# This must come after -sysvr4.
-	-sysv*)
-		;;
-	-ose*)
-		os=-ose
-		;;
-	-es1800*)
-		os=-ose
-		;;
-	-xenix)
-		os=-xenix
-		;;
-	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-		os=-mint
-		;;
-	-aros*)
-		os=-aros
-		;;
-	-zvmoe)
-		os=-zvmoe
-		;;
-	-dicos*)
-		os=-dicos
-		;;
-	-nacl*)
-		;;
-	-none)
-		;;
-	*)
-		# Get rid of the `-' at the beginning of $os.
-		os=`echo $os | sed 's/[^-]*-//'`
-		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-		exit 1
-		;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-	score-*)
-		os=-elf
-		;;
-	spu-*)
-		os=-elf
-		;;
-	*-acorn)
-		os=-riscix1.2
-		;;
-	arm*-rebel)
-		os=-linux
-		;;
-	arm*-semi)
-		os=-aout
-		;;
-	c4x-* | tic4x-*)
-		os=-coff
-		;;
-	hexagon-*)
-		os=-elf
-		;;
-	tic54x-*)
-		os=-coff
-		;;
-	tic55x-*)
-		os=-coff
-		;;
-	tic6x-*)
-		os=-coff
-		;;
-	# This must come before the *-dec entry.
-	pdp10-*)
-		os=-tops20
-		;;
-	pdp11-*)
-		os=-none
-		;;
-	*-dec | vax-*)
-		os=-ultrix4.2
-		;;
-	m68*-apollo)
-		os=-domain
-		;;
-	i386-sun)
-		os=-sunos4.0.2
-		;;
-	m68000-sun)
-		os=-sunos3
-		;;
-	m68*-cisco)
-		os=-aout
-		;;
-	mep-*)
-		os=-elf
-		;;
-	mips*-cisco)
-		os=-elf
-		;;
-	mips*-*)
-		os=-elf
-		;;
-	or1k-*)
-		os=-elf
-		;;
-	or32-*)
-		os=-coff
-		;;
-	*-tti)	# must be before sparc entry or we get the wrong os.
-		os=-sysv3
-		;;
-	sparc-* | *-sun)
-		os=-sunos4.1.1
-		;;
-	*-be)
-		os=-beos
-		;;
-	*-haiku)
-		os=-haiku
-		;;
-	*-ibm)
-		os=-aix
-		;;
-	*-knuth)
-		os=-mmixware
-		;;
-	*-wec)
-		os=-proelf
-		;;
-	*-winbond)
-		os=-proelf
-		;;
-	*-oki)
-		os=-proelf
-		;;
-	*-hp)
-		os=-hpux
-		;;
-	*-hitachi)
-		os=-hiux
-		;;
-	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-		os=-sysv
-		;;
-	*-cbm)
-		os=-amigaos
-		;;
-	*-dg)
-		os=-dgux
-		;;
-	*-dolphin)
-		os=-sysv3
-		;;
-	m68k-ccur)
-		os=-rtu
-		;;
-	m88k-omron*)
-		os=-luna
-		;;
-	*-next )
-		os=-nextstep
-		;;
-	*-sequent)
-		os=-ptx
-		;;
-	*-crds)
-		os=-unos
-		;;
-	*-ns)
-		os=-genix
-		;;
-	i370-*)
-		os=-mvs
-		;;
-	*-next)
-		os=-nextstep3
-		;;
-	*-gould)
-		os=-sysv
-		;;
-	*-highlevel)
-		os=-bsd
-		;;
-	*-encore)
-		os=-bsd
-		;;
-	*-sgi)
-		os=-irix
-		;;
-	*-siemens)
-		os=-sysv4
-		;;
-	*-masscomp)
-		os=-rtu
-		;;
-	f30[01]-fujitsu | f700-fujitsu)
-		os=-uxpv
-		;;
-	*-rom68k)
-		os=-coff
-		;;
-	*-*bug)
-		os=-coff
-		;;
-	*-apple)
-		os=-macos
-		;;
-	*-atari*)
-		os=-mint
-		;;
-	*)
-		os=-none
-		;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-	*-unknown)
-		case $os in
-			-riscix*)
-				vendor=acorn
-				;;
-			-sunos*)
-				vendor=sun
-				;;
-			-cnk*|-aix*)
-				vendor=ibm
-				;;
-			-beos*)
-				vendor=be
-				;;
-			-hpux*)
-				vendor=hp
-				;;
-			-mpeix*)
-				vendor=hp
-				;;
-			-hiux*)
-				vendor=hitachi
-				;;
-			-unos*)
-				vendor=crds
-				;;
-			-dgux*)
-				vendor=dg
-				;;
-			-luna*)
-				vendor=omron
-				;;
-			-genix*)
-				vendor=ns
-				;;
-			-mvs* | -opened*)
-				vendor=ibm
-				;;
-			-os400*)
-				vendor=ibm
-				;;
-			-ptx*)
-				vendor=sequent
-				;;
-			-tpf*)
-				vendor=ibm
-				;;
-			-vxsim* | -vxworks* | -windiss*)
-				vendor=wrs
-				;;
-			-aux*)
-				vendor=apple
-				;;
-			-hms*)
-				vendor=hitachi
-				;;
-			-mpw* | -macos*)
-				vendor=apple
-				;;
-			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-				vendor=atari
-				;;
-			-vos*)
-				vendor=stratus
-				;;
-		esac
-		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-		;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/config/depcomp b/config/depcomp
deleted file mode 100755
index 4ebd5b3..0000000
--- a/config/depcomp
+++ /dev/null
@@ -1,791 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2013-05-30.07; # UTC
-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
-
-case $1 in
-  '')
-    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
-    exit 1;
-    ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
-  depmode     Dependency tracking mode.
-  source      Source file read by 'PROGRAMS ARGS'.
-  object      Object file output by 'PROGRAMS ARGS'.
-  DEPDIR      directory where to store dependencies.
-  depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputting dependencies.
-  libtool     Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake at gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "depcomp $scriptversion"
-    exit $?
-    ;;
-esac
-
-# Get the directory component of the given path, and save it in the
-# global variables '$dir'.  Note that this directory component will
-# be either empty or ending with a '/' character.  This is deliberate.
-set_dir_from ()
-{
-  case $1 in
-    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
-      *) dir=;;
-  esac
-}
-
-# Get the suffix-stripped basename of the given path, and save it the
-# global variable '$base'.
-set_base_from ()
-{
-  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
-}
-
-# If no dependency file was actually created by the compiler invocation,
-# we still have to create a dummy depfile, to avoid errors with the
-# Makefile "include basename.Plo" scheme.
-make_dummy_depfile ()
-{
-  echo "#dummy" > "$depfile"
-}
-
-# Factor out some common post-processing of the generated depfile.
-# Requires the auxiliary global variable '$tmpdepfile' to be set.
-aix_post_process_depfile ()
-{
-  # If the compiler actually managed to produce a dependency file,
-  # post-process it.
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form 'foo.o: dependency.h'.
-    # Do two passes, one to just change these to
-    #   $object: dependency.h
-    # and one to simply output
-    #   dependency.h:
-    # which is needed to avoid the deleted-header problem.
-    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
-      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
-    } > "$depfile"
-    rm -f "$tmpdepfile"
-  else
-    make_dummy_depfile
-  fi
-}
-
-# A tabulation character.
-tab='	'
-# A newline character.
-nl='
-'
-# Character ranges might be problematic outside the C locale.
-# These definitions help.
-upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
-lower=abcdefghijklmnopqrstuvwxyz
-digits=0123456789
-alpha=${upper}${lower}
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
-  echo "depcomp: Variables source, object and depmode must be set" 1>&2
-  exit 1
-fi
-
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
-  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Avoid interferences from the environment.
-gccflag= dashmflag=
-
-# Some modes work just like other modes, but use different flags.  We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write.  Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
-  # HP compiler uses -M and no extra arg.
-  gccflag=-M
-  depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
-  # This is just like dashmstdout with a different argument.
-  dashmflag=-xM
-  depmode=dashmstdout
-fi
-
-cygpath_u="cygpath -u -f -"
-if test "$depmode" = msvcmsys; then
-  # This is just like msvisualcpp but w/o cygpath translation.
-  # Just convert the backslash-escaped backslashes to single forward
-  # slashes to satisfy depend.m4
-  cygpath_u='sed s,\\\\,/,g'
-  depmode=msvisualcpp
-fi
-
-if test "$depmode" = msvc7msys; then
-  # This is just like msvc7 but w/o cygpath translation.
-  # Just convert the backslash-escaped backslashes to single forward
-  # slashes to satisfy depend.m4
-  cygpath_u='sed s,\\\\,/,g'
-  depmode=msvc7
-fi
-
-if test "$depmode" = xlc; then
-  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
-  gccflag=-qmakedep=gcc,-MF
-  depmode=gcc
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff.  Hmm.
-## Unfortunately, FreeBSD c89 acceptance of flags depends upon
-## the command line argument order; so add the flags where they
-## appear in depend2.am.  Note that the slowdown incurred here
-## affects only configure: in makefiles, %FASTDEP% shortcuts this.
-  for arg
-  do
-    case $arg in
-    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
-    *)  set fnord "$@" "$arg" ;;
-    esac
-    shift # fnord
-    shift # $arg
-  done
-  "$@"
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  mv "$tmpdepfile" "$depfile"
-  ;;
-
-gcc)
-## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
-## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
-## (see the conditional assignment to $gccflag above).
-## There are various ways to get dependency output from gcc.  Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-##   up in a subdir.  Having to rename by hand is ugly.
-##   (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).  Also, it might not be
-##   supported by the other compilers which use the 'gcc' depmode.
-## - Using -M directly means running the compiler twice (even worse
-##   than renaming).
-  if test -z "$gccflag"; then
-    gccflag=-MD,
-  fi
-  "$@" -Wp,"$gccflag$tmpdepfile"
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  # The second -e expression handles DOS-style file names with drive
-  # letters.
-  sed -e 's/^[^:]*: / /' \
-      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the "deleted header file" problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header).  We avoid this by adding
-## dummy dependencies for each header file.  Too bad gcc doesn't do
-## this for us directly.
-## Some versions of gcc put a space before the ':'.  On the theory
-## that the space means something, we add a space to the output as
-## well.  hp depmode also adds that space, but also prefixes the VPATH
-## to the object.  Take care to not repeat it in the output.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-  tr ' ' "$nl" < "$tmpdepfile" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-sgi)
-  if test "$libtool" = yes; then
-    "$@" "-Wp,-MDupdate,$tmpdepfile"
-  else
-    "$@" -MDupdate "$tmpdepfile"
-  fi
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-
-  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
-    echo "$object : \\" > "$depfile"
-    # Clip off the initial element (the dependent).  Don't try to be
-    # clever and replace this with sed code, as IRIX sed won't handle
-    # lines with more than a fixed number of characters (4096 in
-    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like '#:fec' to the end of the
-    # dependency line.
-    tr ' ' "$nl" < "$tmpdepfile" \
-      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
-      | tr "$nl" ' ' >> "$depfile"
-    echo >> "$depfile"
-    # The second pass generates a dummy entry for each header file.
-    tr ' ' "$nl" < "$tmpdepfile" \
-      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-      >> "$depfile"
-  else
-    make_dummy_depfile
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-xlc)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-aix)
-  # The C for AIX Compiler uses -M and outputs the dependencies
-  # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts '$object:' at the
-  # start of each line; $object doesn't have directory information.
-  # Version 6 uses the directory in both cases.
-  set_dir_from "$object"
-  set_base_from "$object"
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$base.u
-    tmpdepfile3=$dir.libs/$base.u
-    "$@" -Wc,-M
-  else
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$dir$base.u
-    tmpdepfile3=$dir$base.u
-    "$@" -M
-  fi
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-    exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  aix_post_process_depfile
-  ;;
-
-tcc)
-  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
-  # FIXME: That version still under development at the moment of writing.
-  #        Make that this statement remains true also for stable, released
-  #        versions.
-  # It will wrap lines (doesn't matter whether long or short) with a
-  # trailing '\', as in:
-  #
-  #   foo.o : \
-  #    foo.c \
-  #    foo.h \
-  #
-  # It will put a trailing '\' even on the last line, and will use leading
-  # spaces rather than leading tabs (at least since its commit 0394caf7
-  # "Emit spaces for -MD").
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
-  # We have to change lines of the first kind to '$object: \'.
-  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
-  # And for each line of the second kind, we have to emit a 'dep.h:'
-  # dummy dependency, to avoid the deleted-header problem.
-  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-## The order of this option in the case statement is important, since the
-## shell code in configure will try each of these formats in the order
-## listed in this file.  A plain '-MD' option would be understood by many
-## compilers, so we must ensure this comes after the gcc and icc options.
-pgcc)
-  # Portland's C compiler understands '-MD'.
-  # Will always output deps to 'file.d' where file is the root name of the
-  # source file under compilation, even if file resides in a subdirectory.
-  # The object file name does not affect the name of the '.d' file.
-  # pgcc 10.2 will output
-  #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using '\' :
-  #    foo.o: sub/foo.c ... \
-  #     sub/foo.h ... \
-  #     ...
-  set_dir_from "$object"
-  # Use the source, not the object, to determine the base name, since
-  # that's sadly what pgcc will do too.
-  set_base_from "$source"
-  tmpdepfile=$base.d
-
-  # For projects that build the same source file twice into different object
-  # files, the pgcc approach of using the *source* file root name can cause
-  # problems in parallel builds.  Use a locking strategy to avoid stomping on
-  # the same $tmpdepfile.
-  lockdir=$base.d-lock
-  trap "
-    echo '$0: caught signal, cleaning up...' >&2
-    rmdir '$lockdir'
-    exit 1
-  " 1 2 13 15
-  numtries=100
-  i=$numtries
-  while test $i -gt 0; do
-    # mkdir is a portable test-and-set.
-    if mkdir "$lockdir" 2>/dev/null; then
-      # This process acquired the lock.
-      "$@" -MD
-      stat=$?
-      # Release the lock.
-      rmdir "$lockdir"
-      break
-    else
-      # If the lock is being held by a different process, wait
-      # until the winning process is done or we timeout.
-      while test -d "$lockdir" && test $i -gt 0; do
-        sleep 1
-        i=`expr $i - 1`
-      done
-    fi
-    i=`expr $i - 1`
-  done
-  trap - 1 2 13 15
-  if test $i -le 0; then
-    echo "$0: failed to acquire lock after $numtries attempts" >&2
-    echo "$0: check lockdir '$lockdir'" >&2
-    exit 1
-  fi
-
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  # Each line is of the form `foo.o: dependent.h',
-  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
-  # Do two passes, one to just change these to
-  # `$object: dependent.h' and one to simply `dependent.h:'.
-  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
-    | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp2)
-  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
-  # compilers, which have integrated preprocessors.  The correct option
-  # to use with these is +Maked; it writes dependencies to a file named
-  # 'foo.d', which lands next to the object file, wherever that
-  # happens to be.
-  # Much of this is similar to the tru64 case; see comments there.
-  set_dir_from  "$object"
-  set_base_from "$object"
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir.libs/$base.d
-    "$@" -Wc,+Maked
-  else
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir$base.d
-    "$@" +Maked
-  fi
-  stat=$?
-  if test $stat -ne 0; then
-     rm -f "$tmpdepfile1" "$tmpdepfile2"
-     exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  if test -f "$tmpdepfile"; then
-    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add 'dependent.h:' lines.
-    sed -ne '2,${
-               s/^ *//
-               s/ \\*$//
-               s/$/:/
-               p
-             }' "$tmpdepfile" >> "$depfile"
-  else
-    make_dummy_depfile
-  fi
-  rm -f "$tmpdepfile" "$tmpdepfile2"
-  ;;
-
-tru64)
-  # The Tru64 compiler uses -MD to generate dependencies as a side
-  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
-  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-  # dependencies in 'foo.d' instead, so we check for that too.
-  # Subdirectories are respected.
-  set_dir_from  "$object"
-  set_base_from "$object"
-
-  if test "$libtool" = yes; then
-    # Libtool generates 2 separate objects for the 2 libraries.  These
-    # two compilations output dependencies in $dir.libs/$base.o.d and
-    # in $dir$base.o.d.  We have to check for both files, because
-    # one of the two compilations can be disabled.  We should prefer
-    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-    # automatically cleaned when .libs/ is deleted, while ignoring
-    # the former would cause a distcleancheck panic.
-    tmpdepfile1=$dir$base.o.d          # libtool 1.5
-    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
-    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
-    "$@" -Wc,-MD
-  else
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir$base.d
-    tmpdepfile3=$dir$base.d
-    "$@" -MD
-  fi
-
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-    exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  # Same post-processing that is required for AIX mode.
-  aix_post_process_depfile
-  ;;
-
-msvc7)
-  if test "$libtool" = yes; then
-    showIncludes=-Wc,-showIncludes
-  else
-    showIncludes=-showIncludes
-  fi
-  "$@" $showIncludes > "$tmpdepfile"
-  stat=$?
-  grep -v '^Note: including file: ' "$tmpdepfile"
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  # The first sed program below extracts the file names and escapes
-  # backslashes for cygpath.  The second sed program outputs the file
-  # name when reading, but also accumulates all include files in the
-  # hold buffer in order to output them again at the end.  This only
-  # works with sed implementations that can handle large buffers.
-  sed < "$tmpdepfile" -n '
-/^Note: including file:  *\(.*\)/ {
-  s//\1/
-  s/\\/\\\\/g
-  p
-}' | $cygpath_u | sort -u | sed -n '
-s/ /\\ /g
-s/\(.*\)/'"$tab"'\1 \\/p
-s/.\(.*\) \\/\1:/
-H
-$ {
-  s/.*/'"$tab"'/
-  G
-  p
-}' >> "$depfile"
-  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
-  rm -f "$tmpdepfile"
-  ;;
-
-msvc7msys)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-#nosideeffect)
-  # This comment above is used by automake to tell side-effect
-  # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout, regardless of -o.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove '-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for ':'
-  # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
-  "$@" $dashmflag |
-    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this sed invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  tr ' ' "$nl" < "$tmpdepfile" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-dashXmstdout)
-  # This case only exists to satisfy depend.m4.  It is never actually
-  # run, as this mode is specially recognized in the preamble.
-  exit 1
-  ;;
-
-makedepend)
-  "$@" || exit $?
-  # Remove any Libtool call
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-  # X makedepend
-  shift
-  cleared=no eat=no
-  for arg
-  do
-    case $cleared in
-    no)
-      set ""; shift
-      cleared=yes ;;
-    esac
-    if test $eat = yes; then
-      eat=no
-      continue
-    fi
-    case "$arg" in
-    -D*|-I*)
-      set fnord "$@" "$arg"; shift ;;
-    # Strip any option that makedepend may not understand.  Remove
-    # the object too, otherwise makedepend will parse it as a source file.
-    -arch)
-      eat=yes ;;
-    -*|$object)
-      ;;
-    *)
-      set fnord "$@" "$arg"; shift ;;
-    esac
-  done
-  obj_suffix=`echo "$object" | sed 's/^.*\././'`
-  touch "$tmpdepfile"
-  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
-  rm -f "$depfile"
-  # makedepend may prepend the VPATH from the source file name to the object.
-  # No need to regex-escape $object, excess matching of '.' is harmless.
-  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process the last invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed '1,2d' "$tmpdepfile" \
-    | tr ' ' "$nl" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile" "$tmpdepfile".bak
-  ;;
-
-cpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove '-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  "$@" -E \
-    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-    | sed '$ s: \\$::' > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  cat < "$tmpdepfile" >> "$depfile"
-  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvisualcpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  IFS=" "
-  for arg
-  do
-    case "$arg" in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-        set fnord "$@"
-        shift
-        shift
-        ;;
-    *)
-        set fnord "$@" "$arg"
-        shift
-        shift
-        ;;
-    esac
-  done
-  "$@" -E 2>/dev/null |
-  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
-  echo "$tab" >> "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvcmsys)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-none)
-  exec "$@"
-  ;;
-
-*)
-  echo "Unknown depmode $depmode" 1>&2
-  exit 1
-  ;;
-esac
-
-exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/config/install-sh b/config/install-sh
deleted file mode 100755
index 377bb86..0000000
--- a/config/install-sh
+++ /dev/null
@@ -1,527 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2011-11-20.07; # UTC
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# 'make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-
-nl='
-'
-IFS=" ""	$nl"
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit=${DOITPROG-}
-if test -z "$doit"; then
-  doit_exec=exec
-else
-  doit_exec=$doit
-fi
-
-# Put in absolute file names if you don't have them in your path;
-# or use environment vars.
-
-chgrpprog=${CHGRPPROG-chgrp}
-chmodprog=${CHMODPROG-chmod}
-chownprog=${CHOWNPROG-chown}
-cmpprog=${CMPPROG-cmp}
-cpprog=${CPPROG-cp}
-mkdirprog=${MKDIRPROG-mkdir}
-mvprog=${MVPROG-mv}
-rmprog=${RMPROG-rm}
-stripprog=${STRIPPROG-strip}
-
-posix_glob='?'
-initialize_posix_glob='
-  test "$posix_glob" != "?" || {
-    if (set -f) 2>/dev/null; then
-      posix_glob=
-    else
-      posix_glob=:
-    fi
-  }
-'
-
-posix_mkdir=
-
-# Desired mode of installed file.
-mode=0755
-
-chgrpcmd=
-chmodcmd=$chmodprog
-chowncmd=
-mvcmd=$mvprog
-rmcmd="$rmprog -f"
-stripcmd=
-
-src=
-dst=
-dir_arg=
-dst_arg=
-
-copy_on_change=false
-no_target_directory=
-
-usage="\
-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-   or: $0 [OPTION]... SRCFILES... DIRECTORY
-   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
-   or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
-     --help     display this help and exit.
-     --version  display version info and exit.
-
-  -c            (ignored)
-  -C            install only if different (preserve the last data modification time)
-  -d            create directories instead of installing files.
-  -g GROUP      $chgrpprog installed files to GROUP.
-  -m MODE       $chmodprog installed files to MODE.
-  -o USER       $chownprog installed files to USER.
-  -s            $stripprog installed files.
-  -t DIRECTORY  install into DIRECTORY.
-  -T            report an error if DSTFILE is a directory.
-
-Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
-  RMPROG STRIPPROG
-"
-
-while test $# -ne 0; do
-  case $1 in
-    -c) ;;
-
-    -C) copy_on_change=true;;
-
-    -d) dir_arg=true;;
-
-    -g) chgrpcmd="$chgrpprog $2"
-	shift;;
-
-    --help) echo "$usage"; exit $?;;
-
-    -m) mode=$2
-	case $mode in
-	  *' '* | *'	'* | *'
-'*	  | *'*'* | *'?'* | *'['*)
-	    echo "$0: invalid mode: $mode" >&2
-	    exit 1;;
-	esac
-	shift;;
-
-    -o) chowncmd="$chownprog $2"
-	shift;;
-
-    -s) stripcmd=$stripprog;;
-
-    -t) dst_arg=$2
-	# Protect names problematic for 'test' and other utilities.
-	case $dst_arg in
-	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
-	esac
-	shift;;
-
-    -T) no_target_directory=true;;
-
-    --version) echo "$0 $scriptversion"; exit $?;;
-
-    --)	shift
-	break;;
-
-    -*)	echo "$0: invalid option: $1" >&2
-	exit 1;;
-
-    *)  break;;
-  esac
-  shift
-done
-
-if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
-  # When -d is used, all remaining arguments are directories to create.
-  # When -t is used, the destination is already specified.
-  # Otherwise, the last argument is the destination.  Remove it from $@.
-  for arg
-  do
-    if test -n "$dst_arg"; then
-      # $@ is not empty: it contains at least $arg.
-      set fnord "$@" "$dst_arg"
-      shift # fnord
-    fi
-    shift # arg
-    dst_arg=$arg
-    # Protect names problematic for 'test' and other utilities.
-    case $dst_arg in
-      -* | [=\(\)!]) dst_arg=./$dst_arg;;
-    esac
-  done
-fi
-
-if test $# -eq 0; then
-  if test -z "$dir_arg"; then
-    echo "$0: no input file specified." >&2
-    exit 1
-  fi
-  # It's OK to call 'install-sh -d' without argument.
-  # This can happen when creating conditional directories.
-  exit 0
-fi
-
-if test -z "$dir_arg"; then
-  do_exit='(exit $ret); exit $ret'
-  trap "ret=129; $do_exit" 1
-  trap "ret=130; $do_exit" 2
-  trap "ret=141; $do_exit" 13
-  trap "ret=143; $do_exit" 15
-
-  # Set umask so as not to create temps with too-generous modes.
-  # However, 'strip' requires both read and write access to temps.
-  case $mode in
-    # Optimize common cases.
-    *644) cp_umask=133;;
-    *755) cp_umask=22;;
-
-    *[0-7])
-      if test -z "$stripcmd"; then
-	u_plus_rw=
-      else
-	u_plus_rw='% 200'
-      fi
-      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
-    *)
-      if test -z "$stripcmd"; then
-	u_plus_rw=
-      else
-	u_plus_rw=,u+rw
-      fi
-      cp_umask=$mode$u_plus_rw;;
-  esac
-fi
-
-for src
-do
-  # Protect names problematic for 'test' and other utilities.
-  case $src in
-    -* | [=\(\)!]) src=./$src;;
-  esac
-
-  if test -n "$dir_arg"; then
-    dst=$src
-    dstdir=$dst
-    test -d "$dstdir"
-    dstdir_status=$?
-  else
-
-    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
-    # might cause directories to be created, which would be especially bad
-    # if $src (and thus $dsttmp) contains '*'.
-    if test ! -f "$src" && test ! -d "$src"; then
-      echo "$0: $src does not exist." >&2
-      exit 1
-    fi
-
-    if test -z "$dst_arg"; then
-      echo "$0: no destination specified." >&2
-      exit 1
-    fi
-    dst=$dst_arg
-
-    # If destination is a directory, append the input filename; won't work
-    # if double slashes aren't ignored.
-    if test -d "$dst"; then
-      if test -n "$no_target_directory"; then
-	echo "$0: $dst_arg: Is a directory" >&2
-	exit 1
-      fi
-      dstdir=$dst
-      dst=$dstdir/`basename "$src"`
-      dstdir_status=0
-    else
-      # Prefer dirname, but fall back on a substitute if dirname fails.
-      dstdir=`
-	(dirname "$dst") 2>/dev/null ||
-	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	     X"$dst" : 'X\(//\)[^/]' \| \
-	     X"$dst" : 'X\(//\)$' \| \
-	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
-	echo X"$dst" |
-	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)[^/].*/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\/\)$/{
-		   s//\1/
-		   q
-		 }
-		 /^X\(\/\).*/{
-		   s//\1/
-		   q
-		 }
-		 s/.*/./; q'
-      `
-
-      test -d "$dstdir"
-      dstdir_status=$?
-    fi
-  fi
-
-  obsolete_mkdir_used=false
-
-  if test $dstdir_status != 0; then
-    case $posix_mkdir in
-      '')
-	# Create intermediate dirs using mode 755 as modified by the umask.
-	# This is like FreeBSD 'install' as of 1997-10-28.
-	umask=`umask`
-	case $stripcmd.$umask in
-	  # Optimize common cases.
-	  *[2367][2367]) mkdir_umask=$umask;;
-	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
-	  *[0-7])
-	    mkdir_umask=`expr $umask + 22 \
-	      - $umask % 100 % 40 + $umask % 20 \
-	      - $umask % 10 % 4 + $umask % 2
-	    `;;
-	  *) mkdir_umask=$umask,go-w;;
-	esac
-
-	# With -d, create the new directory with the user-specified mode.
-	# Otherwise, rely on $mkdir_umask.
-	if test -n "$dir_arg"; then
-	  mkdir_mode=-m$mode
-	else
-	  mkdir_mode=
-	fi
-
-	posix_mkdir=false
-	case $umask in
-	  *[123567][0-7][0-7])
-	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
-	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-	    ;;
-	  *)
-	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
-	    if (umask $mkdir_umask &&
-		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
-	    then
-	      if test -z "$dir_arg" || {
-		   # Check for POSIX incompatibilities with -m.
-		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-		   # other-writable bit of parent directory when it shouldn't.
-		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
-		   case $ls_ld_tmpdir in
-		     d????-?r-*) different_mode=700;;
-		     d????-?--*) different_mode=755;;
-		     *) false;;
-		   esac &&
-		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
-		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
-		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-		   }
-		 }
-	      then posix_mkdir=:
-	      fi
-	      rmdir "$tmpdir/d" "$tmpdir"
-	    else
-	      # Remove any dirs left behind by ancient mkdir implementations.
-	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
-	    fi
-	    trap '' 0;;
-	esac;;
-    esac
-
-    if
-      $posix_mkdir && (
-	umask $mkdir_umask &&
-	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
-      )
-    then :
-    else
-
-      # The umask is ridiculous, or mkdir does not conform to POSIX,
-      # or it failed possibly due to a race condition.  Create the
-      # directory the slow way, step by step, checking for races as we go.
-
-      case $dstdir in
-	/*) prefix='/';;
-	[-=\(\)!]*) prefix='./';;
-	*)  prefix='';;
-      esac
-
-      eval "$initialize_posix_glob"
-
-      oIFS=$IFS
-      IFS=/
-      $posix_glob set -f
-      set fnord $dstdir
-      shift
-      $posix_glob set +f
-      IFS=$oIFS
-
-      prefixes=
-
-      for d
-      do
-	test X"$d" = X && continue
-
-	prefix=$prefix$d
-	if test -d "$prefix"; then
-	  prefixes=
-	else
-	  if $posix_mkdir; then
-	    (umask=$mkdir_umask &&
-	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-	    # Don't fail if two instances are running concurrently.
-	    test -d "$prefix" || exit 1
-	  else
-	    case $prefix in
-	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-	      *) qprefix=$prefix;;
-	    esac
-	    prefixes="$prefixes '$qprefix'"
-	  fi
-	fi
-	prefix=$prefix/
-      done
-
-      if test -n "$prefixes"; then
-	# Don't fail if two instances are running concurrently.
-	(umask $mkdir_umask &&
-	 eval "\$doit_exec \$mkdirprog $prefixes") ||
-	  test -d "$dstdir" || exit 1
-	obsolete_mkdir_used=true
-      fi
-    fi
-  fi
-
-  if test -n "$dir_arg"; then
-    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
-    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
-      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
-  else
-
-    # Make a couple of temp file names in the proper directory.
-    dsttmp=$dstdir/_inst.$$_
-    rmtmp=$dstdir/_rm.$$_
-
-    # Trap to clean up those temp files at exit.
-    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
-    # Copy the file name to the temp name.
-    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
-
-    # and set any options; do chmod last to preserve setuid bits.
-    #
-    # If any of these fail, we abort the whole thing.  If we want to
-    # ignore errors from any of these, just make sure not to ignore
-    # errors from the above "$doit $cpprog $src $dsttmp" command.
-    #
-    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
-    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
-    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
-    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
-
-    # If -C, don't bother to copy if it wouldn't change the file.
-    if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
-
-       eval "$initialize_posix_glob" &&
-       $posix_glob set -f &&
-       set X $old && old=:$2:$4:$5:$6 &&
-       set X $new && new=:$2:$4:$5:$6 &&
-       $posix_glob set +f &&
-
-       test "$old" = "$new" &&
-       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
-    then
-      rm -f "$dsttmp"
-    else
-      # Rename the file to the real destination.
-      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-
-      # The rename failed, perhaps because mv can't rename something else
-      # to itself, or perhaps because mv is so ancient that it does not
-      # support -f.
-      {
-	# Now remove or move aside any old file at destination location.
-	# We try this two ways since rm can't unlink itself on some
-	# systems and the destination file might be busy for other
-	# reasons.  In this case, the final cleanup might fail but the new
-	# file should still install successfully.
-	{
-	  test ! -f "$dst" ||
-	  $doit $rmcmd -f "$dst" 2>/dev/null ||
-	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
-	  } ||
-	  { echo "$0: cannot unlink or rename $dst" >&2
-	    (exit 1); exit 1
-	  }
-	} &&
-
-	# Now rename the file to the real destination.
-	$doit $mvcmd "$dsttmp" "$dst"
-      }
-    fi || exit 1
-
-    trap '' 0
-  fi
-done
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/config/ltmain.sh b/config/ltmain.sh
deleted file mode 100644
index 63ae69d..0000000
--- a/config/ltmain.sh
+++ /dev/null
@@ -1,9655 +0,0 @@
-
-# libtool (GNU libtool) 2.4.2
-# Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# GNU Libtool is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html,
-# or obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-# Usage: $progname [OPTION]... [MODE-ARG]...
-#
-# Provide generalized library-building support services.
-#
-#       --config             show all configuration variables
-#       --debug              enable verbose shell tracing
-#   -n, --dry-run            display commands without modifying any files
-#       --features           display basic configuration information and exit
-#       --mode=MODE          use operation mode MODE
-#       --preserve-dup-deps  don't remove duplicate dependency libraries
-#       --quiet, --silent    don't print informational messages
-#       --no-quiet, --no-silent
-#                            print informational messages (default)
-#       --no-warn            don't display warning messages
-#       --tag=TAG            use configuration variables from tag TAG
-#   -v, --verbose            print more informational messages than default
-#       --no-verbose         don't print the extra informational messages
-#       --version            print version information
-#   -h, --help, --help-all   print short, long, or detailed help message
-#
-# MODE must be one of the following:
-#
-#         clean              remove files from the build directory
-#         compile            compile a source file into a libtool object
-#         execute            automatically set library path, then run a program
-#         finish             complete the installation of libtool libraries
-#         install            install libraries or executables
-#         link               create a library or an executable
-#         uninstall          remove libraries from an installed directory
-#
-# MODE-ARGS vary depending on the MODE.  When passed as first option,
-# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
-# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
-#
-# When reporting a bug, please describe a test case to reproduce it and
-# include the following information:
-#
-#         host-triplet:	$host
-#         shell:		$SHELL
-#         compiler:		$LTCC
-#         compiler flags:		$LTCFLAGS
-#         linker:		$LD (gnu? $with_gnu_ld)
-#         $progname:	(GNU libtool) 2.4.2
-#         automake:	$automake_version
-#         autoconf:	$autoconf_version
-#
-# Report bugs to <bug-libtool at gnu.org>.
-# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
-# General help using GNU software: <http://www.gnu.org/gethelp/>.
-
-PROGRAM=libtool
-PACKAGE=libtool
-VERSION=2.4.2
-TIMESTAMP=""
-package_revision=1.3337
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-}
-
-# NLS nuisances: We save the old values to restore during execute mode.
-lt_user_locale=
-lt_safe_locale=
-for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-do
-  eval "if test \"\${$lt_var+set}\" = set; then
-          save_$lt_var=\$$lt_var
-          $lt_var=C
-	  export $lt_var
-	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
-	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
-	fi"
-done
-LC_ALL=C
-LANGUAGE=C
-export LANGUAGE LC_ALL
-
-$lt_unset CDPATH
-
-
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath="$0"
-
-
-
-: ${CP="cp -f"}
-test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
-: ${MAKE="make"}
-: ${MKDIR="mkdir"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
-: ${Xsed="$SED -e 1s/^X//"}
-
-# Global variables:
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
-EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
-
-exit_status=$EXIT_SUCCESS
-
-# Make sure IFS has a sensible default
-lt_nl='
-'
-IFS=" 	$lt_nl"
-
-dirname="s,/[^/]*$,,"
-basename="s,^.*/,,"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
-    if test "X$func_dirname_result" = "X${1}"; then
-      func_dirname_result="${3}"
-    else
-      func_dirname_result="$func_dirname_result${2}"
-    fi
-} # func_dirname may be replaced by extended shell implementation
-
-
-# func_basename file
-func_basename ()
-{
-    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
-} # func_basename may be replaced by extended shell implementation
-
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
-    # Extract subdirectory from the argument.
-    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
-    if test "X$func_dirname_result" = "X${1}"; then
-      func_dirname_result="${3}"
-    else
-      func_dirname_result="$func_dirname_result${2}"
-    fi
-    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
-} # func_dirname_and_basename may be replaced by extended shell implementation
-
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
-    case ${2} in
-      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-    esac
-} # func_stripname may be replaced by extended shell implementation
-
-
-# These SED scripts presuppose an absolute path with a trailing slash.
-pathcar='s,^/\([^/]*\).*$,\1,'
-pathcdr='s,^/[^/]*,,'
-removedotparts=':dotsl
-		s@/\./@/@g
-		t dotsl
-		s,/\.$,/,'
-collapseslashes='s@/\{1,\}@/@g'
-finalslash='s,/*$,/,'
-
-# func_normal_abspath PATH
-# Remove doubled-up and trailing slashes, "." path components,
-# and cancel out any ".." path components in PATH after making
-# it an absolute path.
-#             value returned in "$func_normal_abspath_result"
-func_normal_abspath ()
-{
-  # Start from root dir and reassemble the path.
-  func_normal_abspath_result=
-  func_normal_abspath_tpath=$1
-  func_normal_abspath_altnamespace=
-  case $func_normal_abspath_tpath in
-    "")
-      # Empty path, that just means $cwd.
-      func_stripname '' '/' "`pwd`"
-      func_normal_abspath_result=$func_stripname_result
-      return
-    ;;
-    # The next three entries are used to spot a run of precisely
-    # two leading slashes without using negated character classes;
-    # we take advantage of case's first-match behaviour.
-    ///*)
-      # Unusual form of absolute path, do nothing.
-    ;;
-    //*)
-      # Not necessarily an ordinary path; POSIX reserves leading '//'
-      # and for example Cygwin uses it to access remote file shares
-      # over CIFS/SMB, so we conserve a leading double slash if found.
-      func_normal_abspath_altnamespace=/
-    ;;
-    /*)
-      # Absolute path, do nothing.
-    ;;
-    *)
-      # Relative path, prepend $cwd.
-      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
-    ;;
-  esac
-  # Cancel out all the simple stuff to save iterations.  We also want
-  # the path to end with a slash for ease of parsing, so make sure
-  # there is one (and only one) here.
-  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
-  while :; do
-    # Processed it all yet?
-    if test "$func_normal_abspath_tpath" = / ; then
-      # If we ascended to the root using ".." the result may be empty now.
-      if test -z "$func_normal_abspath_result" ; then
-        func_normal_abspath_result=/
-      fi
-      break
-    fi
-    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$pathcar"`
-    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$pathcdr"`
-    # Figure out what to do with it
-    case $func_normal_abspath_tcomponent in
-      "")
-        # Trailing empty path component, ignore it.
-      ;;
-      ..)
-        # Parent dir; strip last assembled component from result.
-        func_dirname "$func_normal_abspath_result"
-        func_normal_abspath_result=$func_dirname_result
-      ;;
-      *)
-        # Actual path component, append it.
-        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
-      ;;
-    esac
-  done
-  # Restore leading double-slash if one was found on entry.
-  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
-}
-
-# func_relative_path SRCDIR DSTDIR
-# generates a relative path from SRCDIR to DSTDIR, with a trailing
-# slash if non-empty, suitable for immediately appending a filename
-# without needing to append a separator.
-#             value returned in "$func_relative_path_result"
-func_relative_path ()
-{
-  func_relative_path_result=
-  func_normal_abspath "$1"
-  func_relative_path_tlibdir=$func_normal_abspath_result
-  func_normal_abspath "$2"
-  func_relative_path_tbindir=$func_normal_abspath_result
-
-  # Ascend the tree starting from libdir
-  while :; do
-    # check if we have found a prefix of bindir
-    case $func_relative_path_tbindir in
-      $func_relative_path_tlibdir)
-        # found an exact match
-        func_relative_path_tcancelled=
-        break
-        ;;
-      $func_relative_path_tlibdir*)
-        # found a matching prefix
-        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
-        func_relative_path_tcancelled=$func_stripname_result
-        if test -z "$func_relative_path_result"; then
-          func_relative_path_result=.
-        fi
-        break
-        ;;
-      *)
-        func_dirname $func_relative_path_tlibdir
-        func_relative_path_tlibdir=${func_dirname_result}
-        if test "x$func_relative_path_tlibdir" = x ; then
-          # Have to descend all the way to the root!
-          func_relative_path_result=../$func_relative_path_result
-          func_relative_path_tcancelled=$func_relative_path_tbindir
-          break
-        fi
-        func_relative_path_result=../$func_relative_path_result
-        ;;
-    esac
-  done
-
-  # Now calculate path; take care to avoid doubling-up slashes.
-  func_stripname '' '/' "$func_relative_path_result"
-  func_relative_path_result=$func_stripname_result
-  func_stripname '/' '/' "$func_relative_path_tcancelled"
-  if test "x$func_stripname_result" != x ; then
-    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
-  fi
-
-  # Normalisation. If bindir is libdir, return empty string,
-  # else relative path ending with a slash; either way, target
-  # file name can be directly appended.
-  if test ! -z "$func_relative_path_result"; then
-    func_stripname './' '' "$func_relative_path_result/"
-    func_relative_path_result=$func_stripname_result
-  fi
-}
-
-# The name of this program:
-func_dirname_and_basename "$progpath"
-progname=$func_basename_result
-
-# Make sure we have an absolute path for reexecution:
-case $progpath in
-  [\\/]*|[A-Za-z]:\\*) ;;
-  *[\\/]*)
-     progdir=$func_dirname_result
-     progdir=`cd "$progdir" && pwd`
-     progpath="$progdir/$progname"
-     ;;
-  *)
-     save_IFS="$IFS"
-     IFS=${PATH_SEPARATOR-:}
-     for progdir in $PATH; do
-       IFS="$save_IFS"
-       test -x "$progdir/$progname" && break
-     done
-     IFS="$save_IFS"
-     test -n "$progdir" || progdir=`pwd`
-     progpath="$progdir/$progname"
-     ;;
-esac
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed="${SED}"' -e 1s/^X//'
-sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution that turns a string into a regex matching for the
-# string literally.
-sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
-
-# Sed substitution that converts a w32 file name or path
-# which contains forward slashes, into one that contains
-# (escaped) backslashes.  A very naive implementation.
-lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-
-# Re-`\' parameter expansions in output of double_quote_subst that were
-# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
-# in input to double_quote_subst, that '$' was protected from expansion.
-# Since each input `\' is now two `\'s, look for any number of runs of
-# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
-bs='\\'
-bs2='\\\\'
-bs4='\\\\\\\\'
-dollar='\$'
-sed_double_backslash="\
-  s/$bs4/&\\
-/g
-  s/^$bs2$dollar/$bs&/
-  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
-  s/\n//g"
-
-# Standard options:
-opt_dry_run=false
-opt_help=false
-opt_quiet=false
-opt_verbose=false
-opt_warning=:
-
-# func_echo arg...
-# Echo program name prefixed message, along with the current mode
-# name if it has been set yet.
-func_echo ()
-{
-    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
-}
-
-# func_verbose arg...
-# Echo program name prefixed message in verbose mode only.
-func_verbose ()
-{
-    $opt_verbose && func_echo ${1+"$@"}
-
-    # A bug in bash halts the script if the last line of a function
-    # fails when set -e is in force, so we need another command to
-    # work around that:
-    :
-}
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "$*"
-}
-
-# func_error arg...
-# Echo program name prefixed message to standard error.
-func_error ()
-{
-    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
-}
-
-# func_warning arg...
-# Echo program name prefixed warning message to standard error.
-func_warning ()
-{
-    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
-
-    # bash bug again:
-    :
-}
-
-# func_fatal_error arg...
-# Echo program name prefixed message to standard error, and exit.
-func_fatal_error ()
-{
-    func_error ${1+"$@"}
-    exit $EXIT_FAILURE
-}
-
-# func_fatal_help arg...
-# Echo program name prefixed message to standard error, followed by
-# a help hint, and exit.
-func_fatal_help ()
-{
-    func_error ${1+"$@"}
-    func_fatal_error "$help"
-}
-help="Try \`$progname --help' for more information."  ## default
-
-
-# func_grep expression filename
-# Check whether EXPRESSION matches any line of FILENAME, without output.
-func_grep ()
-{
-    $GREP "$1" "$2" >/dev/null 2>&1
-}
-
-
-# func_mkdir_p directory-path
-# Make sure the entire path to DIRECTORY-PATH is available.
-func_mkdir_p ()
-{
-    my_directory_path="$1"
-    my_dir_list=
-
-    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
-
-      # Protect directory names starting with `-'
-      case $my_directory_path in
-        -*) my_directory_path="./$my_directory_path" ;;
-      esac
-
-      # While some portion of DIR does not yet exist...
-      while test ! -d "$my_directory_path"; do
-        # ...make a list in topmost first order.  Use a colon delimited
-	# list incase some portion of path contains whitespace.
-        my_dir_list="$my_directory_path:$my_dir_list"
-
-        # If the last portion added has no slash in it, the list is done
-        case $my_directory_path in */*) ;; *) break ;; esac
-
-        # ...otherwise throw away the child directory and loop
-        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
-      done
-      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
-
-      save_mkdir_p_IFS="$IFS"; IFS=':'
-      for my_dir in $my_dir_list; do
-	IFS="$save_mkdir_p_IFS"
-        # mkdir can fail with a `File exist' error if two processes
-        # try to create one of the directories concurrently.  Don't
-        # stop in that case!
-        $MKDIR "$my_dir" 2>/dev/null || :
-      done
-      IFS="$save_mkdir_p_IFS"
-
-      # Bail out if we (or some other process) failed to create a directory.
-      test -d "$my_directory_path" || \
-        func_fatal_error "Failed to create \`$1'"
-    fi
-}
-
-
-# func_mktempdir [string]
-# Make a temporary directory that won't clash with other running
-# libtool processes, and avoids race conditions if possible.  If
-# given, STRING is the basename for that directory.
-func_mktempdir ()
-{
-    my_template="${TMPDIR-/tmp}/${1-$progname}"
-
-    if test "$opt_dry_run" = ":"; then
-      # Return a directory name, but don't create it in dry-run mode
-      my_tmpdir="${my_template}-$$"
-    else
-
-      # If mktemp works, use that first and foremost
-      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
-
-      if test ! -d "$my_tmpdir"; then
-        # Failing that, at least try and use $RANDOM to avoid a race
-        my_tmpdir="${my_template}-${RANDOM-0}$$"
-
-        save_mktempdir_umask=`umask`
-        umask 0077
-        $MKDIR "$my_tmpdir"
-        umask $save_mktempdir_umask
-      fi
-
-      # If we're not in dry-run mode, bomb out on failure
-      test -d "$my_tmpdir" || \
-        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
-    fi
-
-    $ECHO "$my_tmpdir"
-}
-
-
-# func_quote_for_eval arg
-# Aesthetically quote ARG to be evaled later.
-# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
-# is double-quoted, suitable for a subsequent eval, whereas
-# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
-# which are still active within double quotes backslashified.
-func_quote_for_eval ()
-{
-    case $1 in
-      *[\\\`\"\$]*)
-	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
-      *)
-        func_quote_for_eval_unquoted_result="$1" ;;
-    esac
-
-    case $func_quote_for_eval_unquoted_result in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting, command substitution and and variable
-      # expansion for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
-        ;;
-      *)
-        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
-    esac
-}
-
-
-# func_quote_for_expand arg
-# Aesthetically quote ARG to be evaled later; same as above,
-# but do not quote variable references.
-func_quote_for_expand ()
-{
-    case $1 in
-      *[\\\`\"]*)
-	my_arg=`$ECHO "$1" | $SED \
-	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
-      *)
-        my_arg="$1" ;;
-    esac
-
-    case $my_arg in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting and command substitution for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        my_arg="\"$my_arg\""
-        ;;
-    esac
-
-    func_quote_for_expand_result="$my_arg"
-}
-
-
-# func_show_eval cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.
-func_show_eval ()
-{
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
-
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
-
-    if ${opt_dry_run-false}; then :; else
-      eval "$my_cmd"
-      my_status=$?
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
-      fi
-    fi
-}
-
-
-# func_show_eval_locale cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.  Use the saved locale for evaluation.
-func_show_eval_locale ()
-{
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
-
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
-
-    if ${opt_dry_run-false}; then :; else
-      eval "$lt_user_locale
-	    $my_cmd"
-      my_status=$?
-      eval "$lt_safe_locale"
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
-      fi
-    fi
-}
-
-# func_tr_sh
-# Turn $1 into a string suitable for a shell variable name.
-# Result is stored in $func_tr_sh_result.  All characters
-# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
-# if $1 begins with a digit, a '_' is prepended as well.
-func_tr_sh ()
-{
-  case $1 in
-  [0-9]* | *[!a-zA-Z0-9_]*)
-    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
-    ;;
-  * )
-    func_tr_sh_result=$1
-    ;;
-  esac
-}
-
-
-# func_version
-# Echo version message to standard output and exit.
-func_version ()
-{
-    $opt_debug
-
-    $SED -n '/(C)/!b go
-	:more
-	/\./!{
-	  N
-	  s/\n# / /
-	  b more
-	}
-	:go
-	/^# '$PROGRAM' (GNU /,/# warranty; / {
-        s/^# //
-	s/^# *$//
-        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
-        p
-     }' < "$progpath"
-     exit $?
-}
-
-# func_usage
-# Echo short help message to standard output and exit.
-func_usage ()
-{
-    $opt_debug
-
-    $SED -n '/^# Usage:/,/^#  *.*--help/ {
-        s/^# //
-	s/^# *$//
-	s/\$progname/'$progname'/
-	p
-    }' < "$progpath"
-    echo
-    $ECHO "run \`$progname --help | more' for full usage"
-    exit $?
-}
-
-# func_help [NOEXIT]
-# Echo long help message to standard output and exit,
-# unless 'noexit' is passed as argument.
-func_help ()
-{
-    $opt_debug
-
-    $SED -n '/^# Usage:/,/# Report bugs to/ {
-	:print
-        s/^# //
-	s/^# *$//
-	s*\$progname*'$progname'*
-	s*\$host*'"$host"'*
-	s*\$SHELL*'"$SHELL"'*
-	s*\$LTCC*'"$LTCC"'*
-	s*\$LTCFLAGS*'"$LTCFLAGS"'*
-	s*\$LD*'"$LD"'*
-	s/\$with_gnu_ld/'"$with_gnu_ld"'/
-	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
-	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
-	p
-	d
-     }
-     /^# .* home page:/b print
-     /^# General help using/b print
-     ' < "$progpath"
-    ret=$?
-    if test -z "$1"; then
-      exit $ret
-    fi
-}
-
-# func_missing_arg argname
-# Echo program name prefixed message to standard error and set global
-# exit_cmd.
-func_missing_arg ()
-{
-    $opt_debug
-
-    func_error "missing argument for $1."
-    exit_cmd=exit
-}
-
-
-# func_split_short_opt shortopt
-# Set func_split_short_opt_name and func_split_short_opt_arg shell
-# variables after splitting SHORTOPT after the 2nd character.
-func_split_short_opt ()
-{
-    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
-    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
-
-    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
-    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
-} # func_split_short_opt may be replaced by extended shell implementation
-
-
-# func_split_long_opt longopt
-# Set func_split_long_opt_name and func_split_long_opt_arg shell
-# variables after splitting LONGOPT at the `=' sign.
-func_split_long_opt ()
-{
-    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
-    my_sed_long_arg='1s/^--[^=]*=//'
-
-    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
-    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
-} # func_split_long_opt may be replaced by extended shell implementation
-
-exit_cmd=:
-
-
-
-
-
-magic="%%%MAGIC variable%%%"
-magic_exe="%%%MAGIC EXE variable%%%"
-
-# Global variables.
-nonopt=
-preserve_args=
-lo2o="s/\\.lo\$/.${objext}/"
-o2lo="s/\\.${objext}\$/.lo/"
-extracted_archives=
-extracted_serial=0
-
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end.  This prevents here-documents from being
-# left over by shells.
-exec_cmd=
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-    eval "${1}=\$${1}\${2}"
-} # func_append may be replaced by extended shell implementation
-
-# func_append_quoted var value
-# Quote VALUE and append to the end of shell variable VAR, separated
-# by a space.
-func_append_quoted ()
-{
-    func_quote_for_eval "${2}"
-    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
-} # func_append_quoted may be replaced by extended shell implementation
-
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-    func_arith_result=`expr "${@}"`
-} # func_arith may be replaced by extended shell implementation
-
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
-} # func_len may be replaced by extended shell implementation
-
-
-# func_lo2o object
-func_lo2o ()
-{
-    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
-} # func_lo2o may be replaced by extended shell implementation
-
-
-# func_xform libobj-or-source
-func_xform ()
-{
-    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
-} # func_xform may be replaced by extended shell implementation
-
-
-# func_fatal_configuration arg...
-# Echo program name prefixed message to standard error, followed by
-# a configuration failure hint, and exit.
-func_fatal_configuration ()
-{
-    func_error ${1+"$@"}
-    func_error "See the $PACKAGE documentation for more information."
-    func_fatal_error "Fatal configuration error."
-}
-
-
-# func_config
-# Display the configuration for all the tags in this script.
-func_config ()
-{
-    re_begincf='^# ### BEGIN LIBTOOL'
-    re_endcf='^# ### END LIBTOOL'
-
-    # Default configuration.
-    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
-
-    # Now print the configurations for the tags.
-    for tagname in $taglist; do
-      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
-    done
-
-    exit $?
-}
-
-# func_features
-# Display the features supported by this script.
-func_features ()
-{
-    echo "host: $host"
-    if test "$build_libtool_libs" = yes; then
-      echo "enable shared libraries"
-    else
-      echo "disable shared libraries"
-    fi
-    if test "$build_old_libs" = yes; then
-      echo "enable static libraries"
-    else
-      echo "disable static libraries"
-    fi
-
-    exit $?
-}
-
-# func_enable_tag tagname
-# Verify that TAGNAME is valid, and either flag an error and exit, or
-# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
-# variable here.
-func_enable_tag ()
-{
-  # Global variable:
-  tagname="$1"
-
-  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
-  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
-  sed_extractcf="/$re_begincf/,/$re_endcf/p"
-
-  # Validate tagname.
-  case $tagname in
-    *[!-_A-Za-z0-9,/]*)
-      func_fatal_error "invalid tag name: $tagname"
-      ;;
-  esac
-
-  # Don't test for the "default" C tag, as we know it's
-  # there but not specially marked.
-  case $tagname in
-    CC) ;;
-    *)
-      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
-	taglist="$taglist $tagname"
-
-	# Evaluate the configuration.  Be careful to quote the path
-	# and the sed script, to avoid splitting on whitespace, but
-	# also don't use non-portable quotes within backquotes within
-	# quotes we have to do it in 2 steps:
-	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
-	eval "$extractedcf"
-      else
-	func_error "ignoring unknown tag $tagname"
-      fi
-      ;;
-  esac
-}
-
-# func_check_version_match
-# Ensure that we are using m4 macros, and libtool script from the same
-# release of libtool.
-func_check_version_match ()
-{
-  if test "$package_revision" != "$macro_revision"; then
-    if test "$VERSION" != "$macro_version"; then
-      if test -z "$macro_version"; then
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from an older release.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-      else
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-      fi
-    else
-      cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
-$progname: but the definition of this LT_INIT comes from revision $macro_revision.
-$progname: You should recreate aclocal.m4 with macros from revision $package_revision
-$progname: of $PACKAGE $VERSION and run autoconf again.
-_LT_EOF
-    fi
-
-    exit $EXIT_MISMATCH
-  fi
-}
-
-
-# Shorthand for --mode=foo, only valid as the first argument
-case $1 in
-clean|clea|cle|cl)
-  shift; set dummy --mode clean ${1+"$@"}; shift
-  ;;
-compile|compil|compi|comp|com|co|c)
-  shift; set dummy --mode compile ${1+"$@"}; shift
-  ;;
-execute|execut|execu|exec|exe|ex|e)
-  shift; set dummy --mode execute ${1+"$@"}; shift
-  ;;
-finish|finis|fini|fin|fi|f)
-  shift; set dummy --mode finish ${1+"$@"}; shift
-  ;;
-install|instal|insta|inst|ins|in|i)
-  shift; set dummy --mode install ${1+"$@"}; shift
-  ;;
-link|lin|li|l)
-  shift; set dummy --mode link ${1+"$@"}; shift
-  ;;
-uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-  shift; set dummy --mode uninstall ${1+"$@"}; shift
-  ;;
-esac
-
-
-
-# Option defaults:
-opt_debug=:
-opt_dry_run=false
-opt_config=false
-opt_preserve_dup_deps=false
-opt_features=false
-opt_finish=false
-opt_help=false
-opt_help_all=false
-opt_silent=:
-opt_warning=:
-opt_verbose=:
-opt_silent=false
-opt_verbose=false
-
-
-# Parse options once, thoroughly.  This comes as soon as possible in the
-# script to make things like `--version' happen as quickly as we can.
-{
-  # this just eases exit handling
-  while test $# -gt 0; do
-    opt="$1"
-    shift
-    case $opt in
-      --debug|-x)	opt_debug='set -x'
-			func_echo "enabling shell trace mode"
-			$opt_debug
-			;;
-      --dry-run|--dryrun|-n)
-			opt_dry_run=:
-			;;
-      --config)
-			opt_config=:
-func_config
-			;;
-      --dlopen|-dlopen)
-			optarg="$1"
-			opt_dlopen="${opt_dlopen+$opt_dlopen
-}$optarg"
-			shift
-			;;
-      --preserve-dup-deps)
-			opt_preserve_dup_deps=:
-			;;
-      --features)
-			opt_features=:
-func_features
-			;;
-      --finish)
-			opt_finish=:
-set dummy --mode finish ${1+"$@"}; shift
-			;;
-      --help)
-			opt_help=:
-			;;
-      --help-all)
-			opt_help_all=:
-opt_help=': help-all'
-			;;
-      --mode)
-			test $# = 0 && func_missing_arg $opt && break
-			optarg="$1"
-			opt_mode="$optarg"
-case $optarg in
-  # Valid mode arguments:
-  clean|compile|execute|finish|install|link|relink|uninstall) ;;
-
-  # Catch anything else as an error
-  *) func_error "invalid argument for $opt"
-     exit_cmd=exit
-     break
-     ;;
-esac
-			shift
-			;;
-      --no-silent|--no-quiet)
-			opt_silent=false
-func_append preserve_args " $opt"
-			;;
-      --no-warning|--no-warn)
-			opt_warning=false
-func_append preserve_args " $opt"
-			;;
-      --no-verbose)
-			opt_verbose=false
-func_append preserve_args " $opt"
-			;;
-      --silent|--quiet)
-			opt_silent=:
-func_append preserve_args " $opt"
-        opt_verbose=false
-			;;
-      --verbose|-v)
-			opt_verbose=:
-func_append preserve_args " $opt"
-opt_silent=false
-			;;
-      --tag)
-			test $# = 0 && func_missing_arg $opt && break
-			optarg="$1"
-			opt_tag="$optarg"
-func_append preserve_args " $opt $optarg"
-func_enable_tag "$optarg"
-			shift
-			;;
-
-      -\?|-h)		func_usage				;;
-      --help)		func_help				;;
-      --version)	func_version				;;
-
-      # Separate optargs to long options:
-      --*=*)
-			func_split_long_opt "$opt"
-			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
-			shift
-			;;
-
-      # Separate non-argument short options:
-      -\?*|-h*|-n*|-v*)
-			func_split_short_opt "$opt"
-			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
-			shift
-			;;
-
-      --)		break					;;
-      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
-      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
-    esac
-  done
-
-  # Validate options:
-
-  # save first non-option argument
-  if test "$#" -gt 0; then
-    nonopt="$opt"
-    shift
-  fi
-
-  # preserve --debug
-  test "$opt_debug" = : || func_append preserve_args " --debug"
-
-  case $host in
-    *cygwin* | *mingw* | *pw32* | *cegcc*)
-      # don't eliminate duplications in $postdeps and $predeps
-      opt_duplicate_compiler_generated_deps=:
-      ;;
-    *)
-      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
-      ;;
-  esac
-
-  $opt_help || {
-    # Sanity checks first:
-    func_check_version_match
-
-    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-      func_fatal_configuration "not configured to build any kind of library"
-    fi
-
-    # Darwin sucks
-    eval std_shrext=\"$shrext_cmds\"
-
-    # Only execute mode is allowed to have -dlopen flags.
-    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
-      func_error "unrecognized option \`-dlopen'"
-      $ECHO "$help" 1>&2
-      exit $EXIT_FAILURE
-    fi
-
-    # Change the help message to a mode-specific one.
-    generic_help="$help"
-    help="Try \`$progname --help --mode=$opt_mode' for more information."
-  }
-
-
-  # Bail if the options were screwed
-  $exit_cmd $EXIT_FAILURE
-}
-
-
-
-
-## ----------- ##
-##    Main.    ##
-## ----------- ##
-
-# func_lalib_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_lalib_p ()
-{
-    test -f "$1" &&
-      $SED -e 4q "$1" 2>/dev/null \
-        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
-}
-
-# func_lalib_unsafe_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function implements the same check as func_lalib_p without
-# resorting to external programs.  To this end, it redirects stdin and
-# closes it afterwards, without saving the original file descriptor.
-# As a safety measure, use it only where a negative result would be
-# fatal anyway.  Works if `file' does not exist.
-func_lalib_unsafe_p ()
-{
-    lalib_p=no
-    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
-	for lalib_p_l in 1 2 3 4
-	do
-	    read lalib_p_line
-	    case "$lalib_p_line" in
-		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
-	    esac
-	done
-	exec 0<&5 5<&-
-    fi
-    test "$lalib_p" = yes
-}
-
-# func_ltwrapper_script_p file
-# True iff FILE is a libtool wrapper script
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_script_p ()
-{
-    func_lalib_p "$1"
-}
-
-# func_ltwrapper_executable_p file
-# True iff FILE is a libtool wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_executable_p ()
-{
-    func_ltwrapper_exec_suffix=
-    case $1 in
-    *.exe) ;;
-    *) func_ltwrapper_exec_suffix=.exe ;;
-    esac
-    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
-}
-
-# func_ltwrapper_scriptname file
-# Assumes file is an ltwrapper_executable
-# uses $file to determine the appropriate filename for a
-# temporary ltwrapper_script.
-func_ltwrapper_scriptname ()
-{
-    func_dirname_and_basename "$1" "" "."
-    func_stripname '' '.exe' "$func_basename_result"
-    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
-}
-
-# func_ltwrapper_p file
-# True iff FILE is a libtool wrapper script or wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_p ()
-{
-    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
-}
-
-
-# func_execute_cmds commands fail_cmd
-# Execute tilde-delimited COMMANDS.
-# If FAIL_CMD is given, eval that upon failure.
-# FAIL_CMD may read-access the current command in variable CMD!
-func_execute_cmds ()
-{
-    $opt_debug
-    save_ifs=$IFS; IFS='~'
-    for cmd in $1; do
-      IFS=$save_ifs
-      eval cmd=\"$cmd\"
-      func_show_eval "$cmd" "${2-:}"
-    done
-    IFS=$save_ifs
-}
-
-
-# func_source file
-# Source FILE, adding directory component if necessary.
-# Note that it is not necessary on cygwin/mingw to append a dot to
-# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
-# behavior happens only for exec(3), not for open(2)!  Also, sourcing
-# `FILE.' does not work on cygwin managed mounts.
-func_source ()
-{
-    $opt_debug
-    case $1 in
-    */* | *\\*)	. "$1" ;;
-    *)		. "./$1" ;;
-    esac
-}
-
-
-# func_resolve_sysroot PATH
-# Replace a leading = in PATH with a sysroot.  Store the result into
-# func_resolve_sysroot_result
-func_resolve_sysroot ()
-{
-  func_resolve_sysroot_result=$1
-  case $func_resolve_sysroot_result in
-  =*)
-    func_stripname '=' '' "$func_resolve_sysroot_result"
-    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
-    ;;
-  esac
-}
-
-# func_replace_sysroot PATH
-# If PATH begins with the sysroot, replace it with = and
-# store the result into func_replace_sysroot_result.
-func_replace_sysroot ()
-{
-  case "$lt_sysroot:$1" in
-  ?*:"$lt_sysroot"*)
-    func_stripname "$lt_sysroot" '' "$1"
-    func_replace_sysroot_result="=$func_stripname_result"
-    ;;
-  *)
-    # Including no sysroot.
-    func_replace_sysroot_result=$1
-    ;;
-  esac
-}
-
-# func_infer_tag arg
-# Infer tagged configuration to use if any are available and
-# if one wasn't chosen via the "--tag" command line option.
-# Only attempt this if the compiler in the base compile
-# command doesn't match the default compiler.
-# arg is usually of the form 'gcc ...'
-func_infer_tag ()
-{
-    $opt_debug
-    if test -n "$available_tags" && test -z "$tagname"; then
-      CC_quoted=
-      for arg in $CC; do
-	func_append_quoted CC_quoted "$arg"
-      done
-      CC_expanded=`func_echo_all $CC`
-      CC_quoted_expanded=`func_echo_all $CC_quoted`
-      case $@ in
-      # Blanks in the command may have been stripped by the calling shell,
-      # but not from the CC environment variable when configure was run.
-      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
-      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
-      # Blanks at the start of $base_compile will cause this to fail
-      # if we don't check for them as well.
-      *)
-	for z in $available_tags; do
-	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
-	    # Evaluate the configuration.
-	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
-	    CC_quoted=
-	    for arg in $CC; do
-	      # Double-quote args containing other shell metacharacters.
-	      func_append_quoted CC_quoted "$arg"
-	    done
-	    CC_expanded=`func_echo_all $CC`
-	    CC_quoted_expanded=`func_echo_all $CC_quoted`
-	    case "$@ " in
-	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
-	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
-	      # The compiler in the base compile command matches
-	      # the one in the tagged configuration.
-	      # Assume this is the tagged configuration we want.
-	      tagname=$z
-	      break
-	      ;;
-	    esac
-	  fi
-	done
-	# If $tagname still isn't set, then no tagged configuration
-	# was found and let the user know that the "--tag" command
-	# line option must be used.
-	if test -z "$tagname"; then
-	  func_echo "unable to infer tagged configuration"
-	  func_fatal_error "specify a tag with \`--tag'"
-#	else
-#	  func_verbose "using $tagname tagged configuration"
-	fi
-	;;
-      esac
-    fi
-}
-
-
-
-# func_write_libtool_object output_name pic_name nonpic_name
-# Create a libtool object file (analogous to a ".la" file),
-# but don't create it if we're doing a dry run.
-func_write_libtool_object ()
-{
-    write_libobj=${1}
-    if test "$build_libtool_libs" = yes; then
-      write_lobj=\'${2}\'
-    else
-      write_lobj=none
-    fi
-
-    if test "$build_old_libs" = yes; then
-      write_oldobj=\'${3}\'
-    else
-      write_oldobj=none
-    fi
-
-    $opt_dry_run || {
-      cat >${write_libobj}T <<EOF
-# $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object=$write_lobj
-
-# Name of the non-PIC object
-non_pic_object=$write_oldobj
-
-EOF
-      $MV "${write_libobj}T" "${write_libobj}"
-    }
-}
-
-
-##################################################
-# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
-##################################################
-
-# func_convert_core_file_wine_to_w32 ARG
-# Helper function used by file name conversion functions when $build is *nix,
-# and $host is mingw, cygwin, or some other w32 environment. Relies on a
-# correctly configured wine environment available, with the winepath program
-# in $build's $PATH.
-#
-# ARG is the $build file name to be converted to w32 format.
-# Result is available in $func_convert_core_file_wine_to_w32_result, and will
-# be empty on error (or when ARG is empty)
-func_convert_core_file_wine_to_w32 ()
-{
-  $opt_debug
-  func_convert_core_file_wine_to_w32_result="$1"
-  if test -n "$1"; then
-    # Unfortunately, winepath does not exit with a non-zero error code, so we
-    # are forced to check the contents of stdout. On the other hand, if the
-    # command is not found, the shell will set an exit code of 127 and print
-    # *an error message* to stdout. So we must check for both error code of
-    # zero AND non-empty stdout, which explains the odd construction:
-    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
-    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
-      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
-        $SED -e "$lt_sed_naive_backslashify"`
-    else
-      func_convert_core_file_wine_to_w32_result=
-    fi
-  fi
-}
-# end: func_convert_core_file_wine_to_w32
-
-
-# func_convert_core_path_wine_to_w32 ARG
-# Helper function used by path conversion functions when $build is *nix, and
-# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
-# configured wine environment available, with the winepath program in $build's
-# $PATH. Assumes ARG has no leading or trailing path separator characters.
-#
-# ARG is path to be converted from $build format to win32.
-# Result is available in $func_convert_core_path_wine_to_w32_result.
-# Unconvertible file (directory) names in ARG are skipped; if no directory names
-# are convertible, then the result may be empty.
-func_convert_core_path_wine_to_w32 ()
-{
-  $opt_debug
-  # unfortunately, winepath doesn't convert paths, only file names
-  func_convert_core_path_wine_to_w32_result=""
-  if test -n "$1"; then
-    oldIFS=$IFS
-    IFS=:
-    for func_convert_core_path_wine_to_w32_f in $1; do
-      IFS=$oldIFS
-      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
-      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
-        if test -z "$func_convert_core_path_wine_to_w32_result"; then
-          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
-        else
-          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
-        fi
-      fi
-    done
-    IFS=$oldIFS
-  fi
-}
-# end: func_convert_core_path_wine_to_w32
-
-
-# func_cygpath ARGS...
-# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
-# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
-# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
-# (2), returns the Cygwin file name or path in func_cygpath_result (input
-# file name or path is assumed to be in w32 format, as previously converted
-# from $build's *nix or MSYS format). In case (3), returns the w32 file name
-# or path in func_cygpath_result (input file name or path is assumed to be in
-# Cygwin format). Returns an empty string on error.
-#
-# ARGS are passed to cygpath, with the last one being the file name or path to
-# be converted.
-#
-# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
-# environment variable; do not put it in $PATH.
-func_cygpath ()
-{
-  $opt_debug
-  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
-    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
-    if test "$?" -ne 0; then
-      # on failure, ensure result is empty
-      func_cygpath_result=
-    fi
-  else
-    func_cygpath_result=
-    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
-  fi
-}
-#end: func_cygpath
-
-
-# func_convert_core_msys_to_w32 ARG
-# Convert file name or path ARG from MSYS format to w32 format.  Return
-# result in func_convert_core_msys_to_w32_result.
-func_convert_core_msys_to_w32 ()
-{
-  $opt_debug
-  # awkward: cmd appends spaces to result
-  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
-    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
-}
-#end: func_convert_core_msys_to_w32
-
-
-# func_convert_file_check ARG1 ARG2
-# Verify that ARG1 (a file name in $build format) was converted to $host
-# format in ARG2. Otherwise, emit an error message, but continue (resetting
-# func_to_host_file_result to ARG1).
-func_convert_file_check ()
-{
-  $opt_debug
-  if test -z "$2" && test -n "$1" ; then
-    func_error "Could not determine host file name corresponding to"
-    func_error "  \`$1'"
-    func_error "Continuing, but uninstalled executables may not work."
-    # Fallback:
-    func_to_host_file_result="$1"
-  fi
-}
-# end func_convert_file_check
-
-
-# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
-# Verify that FROM_PATH (a path in $build format) was converted to $host
-# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
-# func_to_host_file_result to a simplistic fallback value (see below).
-func_convert_path_check ()
-{
-  $opt_debug
-  if test -z "$4" && test -n "$3"; then
-    func_error "Could not determine the host path corresponding to"
-    func_error "  \`$3'"
-    func_error "Continuing, but uninstalled executables may not work."
-    # Fallback.  This is a deliberately simplistic "conversion" and
-    # should not be "improved".  See libtool.info.
-    if test "x$1" != "x$2"; then
-      lt_replace_pathsep_chars="s|$1|$2|g"
-      func_to_host_path_result=`echo "$3" |
-        $SED -e "$lt_replace_pathsep_chars"`
-    else
-      func_to_host_path_result="$3"
-    fi
-  fi
-}
-# end func_convert_path_check
-
-
-# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
-# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
-# and appending REPL if ORIG matches BACKPAT.
-func_convert_path_front_back_pathsep ()
-{
-  $opt_debug
-  case $4 in
-  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
-    ;;
-  esac
-  case $4 in
-  $2 ) func_append func_to_host_path_result "$3"
-    ;;
-  esac
-}
-# end func_convert_path_front_back_pathsep
-
-
-##################################################
-# $build to $host FILE NAME CONVERSION FUNCTIONS #
-##################################################
-# invoked via `$to_host_file_cmd ARG'
-#
-# In each case, ARG is the path to be converted from $build to $host format.
-# Result will be available in $func_to_host_file_result.
-
-
-# func_to_host_file ARG
-# Converts the file name ARG from $build format to $host format. Return result
-# in func_to_host_file_result.
-func_to_host_file ()
-{
-  $opt_debug
-  $to_host_file_cmd "$1"
-}
-# end func_to_host_file
-
-
-# func_to_tool_file ARG LAZY
-# converts the file name ARG from $build format to toolchain format. Return
-# result in func_to_tool_file_result.  If the conversion in use is listed
-# in (the comma separated) LAZY, no conversion takes place.
-func_to_tool_file ()
-{
-  $opt_debug
-  case ,$2, in
-    *,"$to_tool_file_cmd",*)
-      func_to_tool_file_result=$1
-      ;;
-    *)
-      $to_tool_file_cmd "$1"
-      func_to_tool_file_result=$func_to_host_file_result
-      ;;
-  esac
-}
-# end func_to_tool_file
-
-
-# func_convert_file_noop ARG
-# Copy ARG to func_to_host_file_result.
-func_convert_file_noop ()
-{
-  func_to_host_file_result="$1"
-}
-# end func_convert_file_noop
-
-
-# func_convert_file_msys_to_w32 ARG
-# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
-# conversion to w32 is not available inside the cwrapper.  Returns result in
-# func_to_host_file_result.
-func_convert_file_msys_to_w32 ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    func_convert_core_msys_to_w32 "$1"
-    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_msys_to_w32
-
-
-# func_convert_file_cygwin_to_w32 ARG
-# Convert file name ARG from Cygwin to w32 format.  Returns result in
-# func_to_host_file_result.
-func_convert_file_cygwin_to_w32 ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
-    # LT_CYGPATH in this case.
-    func_to_host_file_result=`cygpath -m "$1"`
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_cygwin_to_w32
-
-
-# func_convert_file_nix_to_w32 ARG
-# Convert file name ARG from *nix to w32 format.  Requires a wine environment
-# and a working winepath. Returns result in func_to_host_file_result.
-func_convert_file_nix_to_w32 ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    func_convert_core_file_wine_to_w32 "$1"
-    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_nix_to_w32
-
-
-# func_convert_file_msys_to_cygwin ARG
-# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
-# Returns result in func_to_host_file_result.
-func_convert_file_msys_to_cygwin ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    func_convert_core_msys_to_w32 "$1"
-    func_cygpath -u "$func_convert_core_msys_to_w32_result"
-    func_to_host_file_result="$func_cygpath_result"
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_msys_to_cygwin
-
-
-# func_convert_file_nix_to_cygwin ARG
-# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
-# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
-# in func_to_host_file_result.
-func_convert_file_nix_to_cygwin ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
-    func_convert_core_file_wine_to_w32 "$1"
-    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
-    func_to_host_file_result="$func_cygpath_result"
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_nix_to_cygwin
-
-
-#############################################
-# $build to $host PATH CONVERSION FUNCTIONS #
-#############################################
-# invoked via `$to_host_path_cmd ARG'
-#
-# In each case, ARG is the path to be converted from $build to $host format.
-# The result will be available in $func_to_host_path_result.
-#
-# Path separators are also converted from $build format to $host format.  If
-# ARG begins or ends with a path separator character, it is preserved (but
-# converted to $host format) on output.
-#
-# All path conversion functions are named using the following convention:
-#   file name conversion function    : func_convert_file_X_to_Y ()
-#   path conversion function         : func_convert_path_X_to_Y ()
-# where, for any given $build/$host combination the 'X_to_Y' value is the
-# same.  If conversion functions are added for new $build/$host combinations,
-# the two new functions must follow this pattern, or func_init_to_host_path_cmd
-# will break.
-
-
-# func_init_to_host_path_cmd
-# Ensures that function "pointer" variable $to_host_path_cmd is set to the
-# appropriate value, based on the value of $to_host_file_cmd.
-to_host_path_cmd=
-func_init_to_host_path_cmd ()
-{
-  $opt_debug
-  if test -z "$to_host_path_cmd"; then
-    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
-    to_host_path_cmd="func_convert_path_${func_stripname_result}"
-  fi
-}
-
-
-# func_to_host_path ARG
-# Converts the path ARG from $build format to $host format. Return result
-# in func_to_host_path_result.
-func_to_host_path ()
-{
-  $opt_debug
-  func_init_to_host_path_cmd
-  $to_host_path_cmd "$1"
-}
-# end func_to_host_path
-
-
-# func_convert_path_noop ARG
-# Copy ARG to func_to_host_path_result.
-func_convert_path_noop ()
-{
-  func_to_host_path_result="$1"
-}
-# end func_convert_path_noop
-
-
-# func_convert_path_msys_to_w32 ARG
-# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
-# conversion to w32 is not available inside the cwrapper.  Returns result in
-# func_to_host_path_result.
-func_convert_path_msys_to_w32 ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # Remove leading and trailing path separator characters from ARG.  MSYS
-    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
-    # and winepath ignores them completely.
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_msys_to_w32
-
-
-# func_convert_path_cygwin_to_w32 ARG
-# Convert path ARG from Cygwin to w32 format.  Returns result in
-# func_to_host_file_result.
-func_convert_path_cygwin_to_w32 ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_cygwin_to_w32
-
-
-# func_convert_path_nix_to_w32 ARG
-# Convert path ARG from *nix to w32 format.  Requires a wine environment and
-# a working winepath.  Returns result in func_to_host_file_result.
-func_convert_path_nix_to_w32 ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_nix_to_w32
-
-
-# func_convert_path_msys_to_cygwin ARG
-# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
-# Returns result in func_to_host_file_result.
-func_convert_path_msys_to_cygwin ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
-    func_to_host_path_result="$func_cygpath_result"
-    func_convert_path_check : : \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
-  fi
-}
-# end func_convert_path_msys_to_cygwin
-
-
-# func_convert_path_nix_to_cygwin ARG
-# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
-# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
-# func_to_host_file_result.
-func_convert_path_nix_to_cygwin ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # Remove leading and trailing path separator characters from
-    # ARG. msys behavior is inconsistent here, cygpath turns them
-    # into '.;' and ';.', and winepath ignores them completely.
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
-    func_to_host_path_result="$func_cygpath_result"
-    func_convert_path_check : : \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
-  fi
-}
-# end func_convert_path_nix_to_cygwin
-
-
-# func_mode_compile arg...
-func_mode_compile ()
-{
-    $opt_debug
-    # Get the compilation command and the source file.
-    base_compile=
-    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
-    suppress_opt=yes
-    suppress_output=
-    arg_mode=normal
-    libobj=
-    later=
-    pie_flag=
-
-    for arg
-    do
-      case $arg_mode in
-      arg  )
-	# do not "continue".  Instead, add this to base_compile
-	lastarg="$arg"
-	arg_mode=normal
-	;;
-
-      target )
-	libobj="$arg"
-	arg_mode=normal
-	continue
-	;;
-
-      normal )
-	# Accept any command-line options.
-	case $arg in
-	-o)
-	  test -n "$libobj" && \
-	    func_fatal_error "you cannot specify \`-o' more than once"
-	  arg_mode=target
-	  continue
-	  ;;
-
-	-pie | -fpie | -fPIE)
-          func_append pie_flag " $arg"
-	  continue
-	  ;;
-
-	-shared | -static | -prefer-pic | -prefer-non-pic)
-	  func_append later " $arg"
-	  continue
-	  ;;
-
-	-no-suppress)
-	  suppress_opt=no
-	  continue
-	  ;;
-
-	-Xcompiler)
-	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
-	  continue      #  The current "srcfile" will either be retained or
-	  ;;            #  replaced later.  I would guess that would be a bug.
-
-	-Wc,*)
-	  func_stripname '-Wc,' '' "$arg"
-	  args=$func_stripname_result
-	  lastarg=
-	  save_ifs="$IFS"; IFS=','
-	  for arg in $args; do
-	    IFS="$save_ifs"
-	    func_append_quoted lastarg "$arg"
-	  done
-	  IFS="$save_ifs"
-	  func_stripname ' ' '' "$lastarg"
-	  lastarg=$func_stripname_result
-
-	  # Add the arguments to base_compile.
-	  func_append base_compile " $lastarg"
-	  continue
-	  ;;
-
-	*)
-	  # Accept the current argument as the source file.
-	  # The previous "srcfile" becomes the current argument.
-	  #
-	  lastarg="$srcfile"
-	  srcfile="$arg"
-	  ;;
-	esac  #  case $arg
-	;;
-      esac    #  case $arg_mode
-
-      # Aesthetically quote the previous argument.
-      func_append_quoted base_compile "$lastarg"
-    done # for arg
-
-    case $arg_mode in
-    arg)
-      func_fatal_error "you must specify an argument for -Xcompile"
-      ;;
-    target)
-      func_fatal_error "you must specify a target with \`-o'"
-      ;;
-    *)
-      # Get the name of the library object.
-      test -z "$libobj" && {
-	func_basename "$srcfile"
-	libobj="$func_basename_result"
-      }
-      ;;
-    esac
-
-    # Recognize several different file suffixes.
-    # If the user specifies -o file.o, it is replaced with file.lo
-    case $libobj in
-    *.[cCFSifmso] | \
-    *.ada | *.adb | *.ads | *.asm | \
-    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
-      func_xform "$libobj"
-      libobj=$func_xform_result
-      ;;
-    esac
-
-    case $libobj in
-    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
-    *)
-      func_fatal_error "cannot determine name of library object from \`$libobj'"
-      ;;
-    esac
-
-    func_infer_tag $base_compile
-
-    for arg in $later; do
-      case $arg in
-      -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
-	build_old_libs=no
-	continue
-	;;
-
-      -static)
-	build_libtool_libs=no
-	build_old_libs=yes
-	continue
-	;;
-
-      -prefer-pic)
-	pic_mode=yes
-	continue
-	;;
-
-      -prefer-non-pic)
-	pic_mode=no
-	continue
-	;;
-      esac
-    done
-
-    func_quote_for_eval "$libobj"
-    test "X$libobj" != "X$func_quote_for_eval_result" \
-      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
-      && func_warning "libobj name \`$libobj' may not contain shell special characters."
-    func_dirname_and_basename "$obj" "/" ""
-    objname="$func_basename_result"
-    xdir="$func_dirname_result"
-    lobj=${xdir}$objdir/$objname
-
-    test -z "$base_compile" && \
-      func_fatal_help "you must specify a compilation command"
-
-    # Delete any leftover library objects.
-    if test "$build_old_libs" = yes; then
-      removelist="$obj $lobj $libobj ${libobj}T"
-    else
-      removelist="$lobj $libobj ${libobj}T"
-    fi
-
-    # On Cygwin there's no "real" PIC flag so we must build both object types
-    case $host_os in
-    cygwin* | mingw* | pw32* | os2* | cegcc*)
-      pic_mode=default
-      ;;
-    esac
-    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
-      # non-PIC code in shared libraries is not supported
-      pic_mode=default
-    fi
-
-    # Calculate the filename of the output object if compiler does
-    # not support -o with -c
-    if test "$compiler_c_o" = no; then
-      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
-      lockfile="$output_obj.lock"
-    else
-      output_obj=
-      need_locks=no
-      lockfile=
-    fi
-
-    # Lock this critical section if it is needed
-    # We use this script file to make the link, it avoids creating a new file
-    if test "$need_locks" = yes; then
-      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
-	func_echo "Waiting for $lockfile to be removed"
-	sleep 2
-      done
-    elif test "$need_locks" = warn; then
-      if test -f "$lockfile"; then
-	$ECHO "\
-*** ERROR, $lockfile exists and contains:
-`cat $lockfile 2>/dev/null`
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-      func_append removelist " $output_obj"
-      $ECHO "$srcfile" > "$lockfile"
-    fi
-
-    $opt_dry_run || $RM $removelist
-    func_append removelist " $lockfile"
-    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
-
-    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
-    srcfile=$func_to_tool_file_result
-    func_quote_for_eval "$srcfile"
-    qsrcfile=$func_quote_for_eval_result
-
-    # Only build a PIC object if we are building libtool libraries.
-    if test "$build_libtool_libs" = yes; then
-      # Without this assignment, base_compile gets emptied.
-      fbsd_hideous_sh_bug=$base_compile
-
-      if test "$pic_mode" != no; then
-	command="$base_compile $qsrcfile $pic_flag"
-      else
-	# Don't build PIC code
-	command="$base_compile $qsrcfile"
-      fi
-
-      func_mkdir_p "$xdir$objdir"
-
-      if test -z "$output_obj"; then
-	# Place PIC objects in $objdir
-	func_append command " -o $lobj"
-      fi
-
-      func_show_eval_locale "$command"	\
-          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
-
-      if test "$need_locks" = warn &&
-	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-	$ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed, then go on to compile the next one
-      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
-	func_show_eval '$MV "$output_obj" "$lobj"' \
-	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-
-      # Allow error messages only from the first compilation.
-      if test "$suppress_opt" = yes; then
-	suppress_output=' >/dev/null 2>&1'
-      fi
-    fi
-
-    # Only build a position-dependent object if we build old libraries.
-    if test "$build_old_libs" = yes; then
-      if test "$pic_mode" != yes; then
-	# Don't build PIC code
-	command="$base_compile $qsrcfile$pie_flag"
-      else
-	command="$base_compile $qsrcfile $pic_flag"
-      fi
-      if test "$compiler_c_o" = yes; then
-	func_append command " -o $obj"
-      fi
-
-      # Suppress compiler output if we already did a PIC compilation.
-      func_append command "$suppress_output"
-      func_show_eval_locale "$command" \
-        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
-
-      if test "$need_locks" = warn &&
-	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-	$ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed
-      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
-	func_show_eval '$MV "$output_obj" "$obj"' \
-	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-    fi
-
-    $opt_dry_run || {
-      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
-
-      # Unlock the critical section if it was locked
-      if test "$need_locks" != no; then
-	removelist=$lockfile
-        $RM "$lockfile"
-      fi
-    }
-
-    exit $EXIT_SUCCESS
-}
-
-$opt_help || {
-  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
-}
-
-func_mode_help ()
-{
-    # We need to display help for each of the modes.
-    case $opt_mode in
-      "")
-        # Generic help is extracted from the usage comments
-        # at the start of this file.
-        func_help
-        ;;
-
-      clean)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
-
-Remove files from the build directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, object or program, all the files associated
-with it are deleted. Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      compile)
-      $ECHO \
-"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
-
-Compile a source file into a libtool library object.
-
-This mode accepts the following additional options:
-
-  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
-  -no-suppress      do not suppress compiler output for multiple passes
-  -prefer-pic       try to build PIC objects only
-  -prefer-non-pic   try to build non-PIC objects only
-  -shared           do not build a \`.o' file suitable for static linking
-  -static           only build a \`.o' file suitable for static linking
-  -Wc,FLAG          pass FLAG directly to the compiler
-
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
-from the given SOURCEFILE.
-
-The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
-        ;;
-
-      execute)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
-
-Automatically set library path, then run a program.
-
-This mode accepts the following additional options:
-
-  -dlopen FILE      add the directory containing FILE to the library path
-
-This mode sets the library path environment variable according to \`-dlopen'
-flags.
-
-If any of the ARGS are libtool executable wrappers, then they are translated
-into their corresponding uninstalled binary, and any of their required library
-directories are added to the library path.
-
-Then, COMMAND is executed, with ARGS as arguments."
-        ;;
-
-      finish)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
-
-Complete the installation of libtool libraries.
-
-Each LIBDIR is a directory that contains libtool libraries.
-
-The commands that this mode executes may require superuser privileges.  Use
-the \`--dry-run' option if you just want to see what would be executed."
-        ;;
-
-      install)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
-
-Install executables or libraries.
-
-INSTALL-COMMAND is the installation command.  The first component should be
-either the \`install' or \`cp' program.
-
-The following components of INSTALL-COMMAND are treated specially:
-
-  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
-
-The rest of the components are interpreted as arguments to that command (only
-BSD-compatible install options are recognized)."
-        ;;
-
-      link)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
-
-Link object files or libraries together to form another library, or to
-create an executable program.
-
-LINK-COMMAND is a command using the C compiler that you would use to create
-a program from several object files.
-
-The following components of LINK-COMMAND are treated specially:
-
-  -all-static       do not do any dynamic linking at all
-  -avoid-version    do not add a version suffix if possible
-  -bindir BINDIR    specify path to binaries directory (for systems where
-                    libraries must be found in the PATH setting at runtime)
-  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
-  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
-  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-  -export-symbols SYMFILE
-                    try to export only the symbols listed in SYMFILE
-  -export-symbols-regex REGEX
-                    try to export only the symbols matching REGEX
-  -LLIBDIR          search LIBDIR for required installed libraries
-  -lNAME            OUTPUT-FILE requires the installed library libNAME
-  -module           build a library that can dlopened
-  -no-fast-install  disable the fast-install mode
-  -no-install       link a not-installable executable
-  -no-undefined     declare that a library does not refer to external symbols
-  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
-  -objectlist FILE  Use a list of object files found in FILE to specify objects
-  -precious-files-regex REGEX
-                    don't remove output files matching REGEX
-  -release RELEASE  specify package release information
-  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
-  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
-  -shared           only do dynamic linking of libtool libraries
-  -shrext SUFFIX    override the standard shared library file extension
-  -static           do not do any dynamic linking of uninstalled libtool libraries
-  -static-libtool-libs
-                    do not do any dynamic linking of libtool libraries
-  -version-info CURRENT[:REVISION[:AGE]]
-                    specify library version info [each variable defaults to 0]
-  -weak LIBNAME     declare that the target provides the LIBNAME interface
-  -Wc,FLAG
-  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
-  -Wl,FLAG
-  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
-  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
-
-All other options (arguments beginning with \`-') are ignored.
-
-Every other argument is treated as a filename.  Files ending in \`.la' are
-treated as uninstalled libtool libraries, other files are standard or library
-object files.
-
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
-required, except when creating a convenience library.
-
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
-
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
-is created, otherwise an executable program is created."
-        ;;
-
-      uninstall)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
-
-Remove libraries from an installation directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, all the files associated with it are deleted.
-Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      *)
-        func_fatal_help "invalid operation mode \`$opt_mode'"
-        ;;
-    esac
-
-    echo
-    $ECHO "Try \`$progname --help' for more information about other modes."
-}
-
-# Now that we've collected a possible --mode arg, show help if necessary
-if $opt_help; then
-  if test "$opt_help" = :; then
-    func_mode_help
-  else
-    {
-      func_help noexit
-      for opt_mode in compile link execute install finish uninstall clean; do
-	func_mode_help
-      done
-    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
-    {
-      func_help noexit
-      for opt_mode in compile link execute install finish uninstall clean; do
-	echo
-	func_mode_help
-      done
-    } |
-    sed '1d
-      /^When reporting/,/^Report/{
-	H
-	d
-      }
-      $x
-      /information about other modes/d
-      /more detailed .*MODE/d
-      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
-  fi
-  exit $?
-fi
-
-
-# func_mode_execute arg...
-func_mode_execute ()
-{
-    $opt_debug
-    # The first argument is the command name.
-    cmd="$nonopt"
-    test -z "$cmd" && \
-      func_fatal_help "you must specify a COMMAND"
-
-    # Handle -dlopen flags immediately.
-    for file in $opt_dlopen; do
-      test -f "$file" \
-	|| func_fatal_help "\`$file' is not a file"
-
-      dir=
-      case $file in
-      *.la)
-	func_resolve_sysroot "$file"
-	file=$func_resolve_sysroot_result
-
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$lib' is not a valid libtool archive"
-
-	# Read the libtool library.
-	dlname=
-	library_names=
-	func_source "$file"
-
-	# Skip this library if it cannot be dlopened.
-	if test -z "$dlname"; then
-	  # Warn if it was a shared library.
-	  test -n "$library_names" && \
-	    func_warning "\`$file' was not linked with \`-export-dynamic'"
-	  continue
-	fi
-
-	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
-
-	if test -f "$dir/$objdir/$dlname"; then
-	  func_append dir "/$objdir"
-	else
-	  if test ! -f "$dir/$dlname"; then
-	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
-	  fi
-	fi
-	;;
-
-      *.lo)
-	# Just add the directory containing the .lo file.
-	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
-	;;
-
-      *)
-	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
-	continue
-	;;
-      esac
-
-      # Get the absolute pathname.
-      absdir=`cd "$dir" && pwd`
-      test -n "$absdir" && dir="$absdir"
-
-      # Now add the directory to shlibpath_var.
-      if eval "test -z \"\$$shlibpath_var\""; then
-	eval "$shlibpath_var=\"\$dir\""
-      else
-	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
-      fi
-    done
-
-    # This variable tells wrapper scripts just to set shlibpath_var
-    # rather than running their programs.
-    libtool_execute_magic="$magic"
-
-    # Check if any of the arguments is a wrapper script.
-    args=
-    for file
-    do
-      case $file in
-      -* | *.la | *.lo ) ;;
-      *)
-	# Do a test to see if this is really a libtool program.
-	if func_ltwrapper_script_p "$file"; then
-	  func_source "$file"
-	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
-	elif func_ltwrapper_executable_p "$file"; then
-	  func_ltwrapper_scriptname "$file"
-	  func_source "$func_ltwrapper_scriptname_result"
-	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
-	fi
-	;;
-      esac
-      # Quote arguments (to preserve shell metacharacters).
-      func_append_quoted args "$file"
-    done
-
-    if test "X$opt_dry_run" = Xfalse; then
-      if test -n "$shlibpath_var"; then
-	# Export the shlibpath_var.
-	eval "export $shlibpath_var"
-      fi
-
-      # Restore saved environment variables
-      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-      do
-	eval "if test \"\${save_$lt_var+set}\" = set; then
-                $lt_var=\$save_$lt_var; export $lt_var
-	      else
-		$lt_unset $lt_var
-	      fi"
-      done
-
-      # Now prepare to actually exec the command.
-      exec_cmd="\$cmd$args"
-    else
-      # Display what would be done.
-      if test -n "$shlibpath_var"; then
-	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
-	echo "export $shlibpath_var"
-      fi
-      $ECHO "$cmd$args"
-      exit $EXIT_SUCCESS
-    fi
-}
-
-test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
-
-
-# func_mode_finish arg...
-func_mode_finish ()
-{
-    $opt_debug
-    libs=
-    libdirs=
-    admincmds=
-
-    for opt in "$nonopt" ${1+"$@"}
-    do
-      if test -d "$opt"; then
-	func_append libdirs " $opt"
-
-      elif test -f "$opt"; then
-	if func_lalib_unsafe_p "$opt"; then
-	  func_append libs " $opt"
-	else
-	  func_warning "\`$opt' is not a valid libtool archive"
-	fi
-
-      else
-	func_fatal_error "invalid argument \`$opt'"
-      fi
-    done
-
-    if test -n "$libs"; then
-      if test -n "$lt_sysroot"; then
-        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
-        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
-      else
-        sysroot_cmd=
-      fi
-
-      # Remove sysroot references
-      if $opt_dry_run; then
-        for lib in $libs; do
-          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
-        done
-      else
-        tmpdir=`func_mktempdir`
-        for lib in $libs; do
-	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
-	    > $tmpdir/tmp-la
-	  mv -f $tmpdir/tmp-la $lib
-	done
-        ${RM}r "$tmpdir"
-      fi
-    fi
-
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      for libdir in $libdirs; do
-	if test -n "$finish_cmds"; then
-	  # Do each command in the finish commands.
-	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
-'"$cmd"'"'
-	fi
-	if test -n "$finish_eval"; then
-	  # Do the single finish_eval.
-	  eval cmds=\"$finish_eval\"
-	  $opt_dry_run || eval "$cmds" || func_append admincmds "
-       $cmds"
-	fi
-      done
-    fi
-
-    # Exit here if they wanted silent mode.
-    $opt_silent && exit $EXIT_SUCCESS
-
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      echo "----------------------------------------------------------------------"
-      echo "Libraries have been installed in:"
-      for libdir in $libdirs; do
-	$ECHO "   $libdir"
-      done
-      echo
-      echo "If you ever happen to want to link against installed libraries"
-      echo "in a given directory, LIBDIR, you must either use libtool, and"
-      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
-      echo "flag during linking and do at least one of the following:"
-      if test -n "$shlibpath_var"; then
-	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
-	echo "     during execution"
-      fi
-      if test -n "$runpath_var"; then
-	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
-	echo "     during linking"
-      fi
-      if test -n "$hardcode_libdir_flag_spec"; then
-	libdir=LIBDIR
-	eval flag=\"$hardcode_libdir_flag_spec\"
-
-	$ECHO "   - use the \`$flag' linker flag"
-      fi
-      if test -n "$admincmds"; then
-	$ECHO "   - have your system administrator run these commands:$admincmds"
-      fi
-      if test -f /etc/ld.so.conf; then
-	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
-      fi
-      echo
-
-      echo "See any operating system documentation about shared libraries for"
-      case $host in
-	solaris2.[6789]|solaris2.1[0-9])
-	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
-	  echo "pages."
-	  ;;
-	*)
-	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
-	  ;;
-      esac
-      echo "----------------------------------------------------------------------"
-    fi
-    exit $EXIT_SUCCESS
-}
-
-test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
-
-
-# func_mode_install arg...
-func_mode_install ()
-{
-    $opt_debug
-    # There may be an optional sh(1) argument at the beginning of
-    # install_prog (especially on Windows NT).
-    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
-       # Allow the use of GNU shtool's install command.
-       case $nonopt in *shtool*) :;; *) false;; esac; then
-      # Aesthetically quote it.
-      func_quote_for_eval "$nonopt"
-      install_prog="$func_quote_for_eval_result "
-      arg=$1
-      shift
-    else
-      install_prog=
-      arg=$nonopt
-    fi
-
-    # The real first argument should be the name of the installation program.
-    # Aesthetically quote it.
-    func_quote_for_eval "$arg"
-    func_append install_prog "$func_quote_for_eval_result"
-    install_shared_prog=$install_prog
-    case " $install_prog " in
-      *[\\\ /]cp\ *) install_cp=: ;;
-      *) install_cp=false ;;
-    esac
-
-    # We need to accept at least all the BSD install flags.
-    dest=
-    files=
-    opts=
-    prev=
-    install_type=
-    isdir=no
-    stripme=
-    no_mode=:
-    for arg
-    do
-      arg2=
-      if test -n "$dest"; then
-	func_append files " $dest"
-	dest=$arg
-	continue
-      fi
-
-      case $arg in
-      -d) isdir=yes ;;
-      -f)
-	if $install_cp; then :; else
-	  prev=$arg
-	fi
-	;;
-      -g | -m | -o)
-	prev=$arg
-	;;
-      -s)
-	stripme=" -s"
-	continue
-	;;
-      -*)
-	;;
-      *)
-	# If the previous option needed an argument, then skip it.
-	if test -n "$prev"; then
-	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
-	    arg2=$install_override_mode
-	    no_mode=false
-	  fi
-	  prev=
-	else
-	  dest=$arg
-	  continue
-	fi
-	;;
-      esac
-
-      # Aesthetically quote the argument.
-      func_quote_for_eval "$arg"
-      func_append install_prog " $func_quote_for_eval_result"
-      if test -n "$arg2"; then
-	func_quote_for_eval "$arg2"
-      fi
-      func_append install_shared_prog " $func_quote_for_eval_result"
-    done
-
-    test -z "$install_prog" && \
-      func_fatal_help "you must specify an install program"
-
-    test -n "$prev" && \
-      func_fatal_help "the \`$prev' option requires an argument"
-
-    if test -n "$install_override_mode" && $no_mode; then
-      if $install_cp; then :; else
-	func_quote_for_eval "$install_override_mode"
-	func_append install_shared_prog " -m $func_quote_for_eval_result"
-      fi
-    fi
-
-    if test -z "$files"; then
-      if test -z "$dest"; then
-	func_fatal_help "no file or destination specified"
-      else
-	func_fatal_help "you must specify a destination"
-      fi
-    fi
-
-    # Strip any trailing slash from the destination.
-    func_stripname '' '/' "$dest"
-    dest=$func_stripname_result
-
-    # Check to see that the destination is a directory.
-    test -d "$dest" && isdir=yes
-    if test "$isdir" = yes; then
-      destdir="$dest"
-      destname=
-    else
-      func_dirname_and_basename "$dest" "" "."
-      destdir="$func_dirname_result"
-      destname="$func_basename_result"
-
-      # Not a directory, so check to see that there is only one file specified.
-      set dummy $files; shift
-      test "$#" -gt 1 && \
-	func_fatal_help "\`$dest' is not a directory"
-    fi
-    case $destdir in
-    [\\/]* | [A-Za-z]:[\\/]*) ;;
-    *)
-      for file in $files; do
-	case $file in
-	*.lo) ;;
-	*)
-	  func_fatal_help "\`$destdir' must be an absolute directory name"
-	  ;;
-	esac
-      done
-      ;;
-    esac
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic="$magic"
-
-    staticlibs=
-    future_libdirs=
-    current_libdirs=
-    for file in $files; do
-
-      # Do each installation.
-      case $file in
-      *.$libext)
-	# Do the static libraries later.
-	func_append staticlibs " $file"
-	;;
-
-      *.la)
-	func_resolve_sysroot "$file"
-	file=$func_resolve_sysroot_result
-
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$file' is not a valid libtool archive"
-
-	library_names=
-	old_library=
-	relink_command=
-	func_source "$file"
-
-	# Add the libdir to current_libdirs if it is the destination.
-	if test "X$destdir" = "X$libdir"; then
-	  case "$current_libdirs " in
-	  *" $libdir "*) ;;
-	  *) func_append current_libdirs " $libdir" ;;
-	  esac
-	else
-	  # Note the libdir as a future libdir.
-	  case "$future_libdirs " in
-	  *" $libdir "*) ;;
-	  *) func_append future_libdirs " $libdir" ;;
-	  esac
-	fi
-
-	func_dirname "$file" "/" ""
-	dir="$func_dirname_result"
-	func_append dir "$objdir"
-
-	if test -n "$relink_command"; then
-	  # Determine the prefix the user has applied to our future dir.
-	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
-
-	  # Don't allow the user to place us outside of our expected
-	  # location b/c this prevents finding dependent libraries that
-	  # are installed to the same prefix.
-	  # At present, this check doesn't affect windows .dll's that
-	  # are installed into $libdir/../bin (currently, that works fine)
-	  # but it's something to keep an eye on.
-	  test "$inst_prefix_dir" = "$destdir" && \
-	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
-
-	  if test -n "$inst_prefix_dir"; then
-	    # Stick the inst_prefix_dir data into the link command.
-	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
-	  else
-	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
-	  fi
-
-	  func_warning "relinking \`$file'"
-	  func_show_eval "$relink_command" \
-	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
-	fi
-
-	# See the names of the shared library.
-	set dummy $library_names; shift
-	if test -n "$1"; then
-	  realname="$1"
-	  shift
-
-	  srcname="$realname"
-	  test -n "$relink_command" && srcname="$realname"T
-
-	  # Install the shared library and build the symlinks.
-	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
-	      'exit $?'
-	  tstripme="$stripme"
-	  case $host_os in
-	  cygwin* | mingw* | pw32* | cegcc*)
-	    case $realname in
-	    *.dll.a)
-	      tstripme=""
-	      ;;
-	    esac
-	    ;;
-	  esac
-	  if test -n "$tstripme" && test -n "$striplib"; then
-	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
-	  fi
-
-	  if test "$#" -gt 0; then
-	    # Delete the old symlinks, and create new ones.
-	    # Try `ln -sf' first, because the `ln' binary might depend on
-	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
-	    # so we also need to try rm && ln -s.
-	    for linkname
-	    do
-	      test "$linkname" != "$realname" \
-		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
-	    done
-	  fi
-
-	  # Do each command in the postinstall commands.
-	  lib="$destdir/$realname"
-	  func_execute_cmds "$postinstall_cmds" 'exit $?'
-	fi
-
-	# Install the pseudo-library for information purposes.
-	func_basename "$file"
-	name="$func_basename_result"
-	instname="$dir/$name"i
-	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
-
-	# Maybe install the static library, too.
-	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
-	;;
-
-      *.lo)
-	# Install (i.e. copy) a libtool object.
-
-	# Figure out destination file name, if it wasn't already specified.
-	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
-	else
-	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
-	fi
-
-	# Deduce the name of the destination old-style object file.
-	case $destfile in
-	*.lo)
-	  func_lo2o "$destfile"
-	  staticdest=$func_lo2o_result
-	  ;;
-	*.$objext)
-	  staticdest="$destfile"
-	  destfile=
-	  ;;
-	*)
-	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
-	  ;;
-	esac
-
-	# Install the libtool object if requested.
-	test -n "$destfile" && \
-	  func_show_eval "$install_prog $file $destfile" 'exit $?'
-
-	# Install the old object if enabled.
-	if test "$build_old_libs" = yes; then
-	  # Deduce the name of the old-style object file.
-	  func_lo2o "$file"
-	  staticobj=$func_lo2o_result
-	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
-	fi
-	exit $EXIT_SUCCESS
-	;;
-
-      *)
-	# Figure out destination file name, if it wasn't already specified.
-	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
-	else
-	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
-	fi
-
-	# If the file is missing, and there is a .exe on the end, strip it
-	# because it is most likely a libtool script we actually want to
-	# install
-	stripped_ext=""
-	case $file in
-	  *.exe)
-	    if test ! -f "$file"; then
-	      func_stripname '' '.exe' "$file"
-	      file=$func_stripname_result
-	      stripped_ext=".exe"
-	    fi
-	    ;;
-	esac
-
-	# Do a test to see if this is really a libtool program.
-	case $host in
-	*cygwin* | *mingw*)
-	    if func_ltwrapper_executable_p "$file"; then
-	      func_ltwrapper_scriptname "$file"
-	      wrapper=$func_ltwrapper_scriptname_result
-	    else
-	      func_stripname '' '.exe' "$file"
-	      wrapper=$func_stripname_result
-	    fi
-	    ;;
-	*)
-	    wrapper=$file
-	    ;;
-	esac
-	if func_ltwrapper_script_p "$wrapper"; then
-	  notinst_deplibs=
-	  relink_command=
-
-	  func_source "$wrapper"
-
-	  # Check the variables that should have been set.
-	  test -z "$generated_by_libtool_version" && \
-	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
-
-	  finalize=yes
-	  for lib in $notinst_deplibs; do
-	    # Check to see that each library is installed.
-	    libdir=
-	    if test -f "$lib"; then
-	      func_source "$lib"
-	    fi
-	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
-	    if test -n "$libdir" && test ! -f "$libfile"; then
-	      func_warning "\`$lib' has not been installed in \`$libdir'"
-	      finalize=no
-	    fi
-	  done
-
-	  relink_command=
-	  func_source "$wrapper"
-
-	  outputname=
-	  if test "$fast_install" = no && test -n "$relink_command"; then
-	    $opt_dry_run || {
-	      if test "$finalize" = yes; then
-	        tmpdir=`func_mktempdir`
-		func_basename "$file$stripped_ext"
-		file="$func_basename_result"
-	        outputname="$tmpdir/$file"
-	        # Replace the output file specification.
-	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
-
-	        $opt_silent || {
-	          func_quote_for_expand "$relink_command"
-		  eval "func_echo $func_quote_for_expand_result"
-	        }
-	        if eval "$relink_command"; then :
-	          else
-		  func_error "error: relink \`$file' with the above command before installing it"
-		  $opt_dry_run || ${RM}r "$tmpdir"
-		  continue
-	        fi
-	        file="$outputname"
-	      else
-	        func_warning "cannot relink \`$file'"
-	      fi
-	    }
-	  else
-	    # Install the binary that we compiled earlier.
-	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
-	  fi
-	fi
-
-	# remove .exe since cygwin /usr/bin/install will append another
-	# one anyway
-	case $install_prog,$host in
-	*/usr/bin/install*,*cygwin*)
-	  case $file:$destfile in
-	  *.exe:*.exe)
-	    # this is ok
-	    ;;
-	  *.exe:*)
-	    destfile=$destfile.exe
-	    ;;
-	  *:*.exe)
-	    func_stripname '' '.exe' "$destfile"
-	    destfile=$func_stripname_result
-	    ;;
-	  esac
-	  ;;
-	esac
-	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
-	$opt_dry_run || if test -n "$outputname"; then
-	  ${RM}r "$tmpdir"
-	fi
-	;;
-      esac
-    done
-
-    for file in $staticlibs; do
-      func_basename "$file"
-      name="$func_basename_result"
-
-      # Set up the ranlib parameters.
-      oldlib="$destdir/$name"
-      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
-      tool_oldlib=$func_to_tool_file_result
-
-      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
-
-      if test -n "$stripme" && test -n "$old_striplib"; then
-	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
-      fi
-
-      # Do each command in the postinstall commands.
-      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
-    done
-
-    test -n "$future_libdirs" && \
-      func_warning "remember to run \`$progname --finish$future_libdirs'"
-
-    if test -n "$current_libdirs"; then
-      # Maybe just do a dry run.
-      $opt_dry_run && current_libdirs=" -n$current_libdirs"
-      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
-    else
-      exit $EXIT_SUCCESS
-    fi
-}
-
-test "$opt_mode" = install && func_mode_install ${1+"$@"}
-
-
-# func_generate_dlsyms outputname originator pic_p
-# Extract symbols from dlprefiles and create ${outputname}S.o with
-# a dlpreopen symbol table.
-func_generate_dlsyms ()
-{
-    $opt_debug
-    my_outputname="$1"
-    my_originator="$2"
-    my_pic_p="${3-no}"
-    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
-    my_dlsyms=
-
-    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-      if test -n "$NM" && test -n "$global_symbol_pipe"; then
-	my_dlsyms="${my_outputname}S.c"
-      else
-	func_error "not configured to extract global symbols from dlpreopened files"
-      fi
-    fi
-
-    if test -n "$my_dlsyms"; then
-      case $my_dlsyms in
-      "") ;;
-      *.c)
-	# Discover the nlist of each of the dlfiles.
-	nlist="$output_objdir/${my_outputname}.nm"
-
-	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
-
-	# Parse the name list into a source file.
-	func_verbose "creating $output_objdir/$my_dlsyms"
-
-	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
-
-#ifdef __cplusplus
-extern \"C\" {
-#endif
-
-#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
-#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
-#endif
-
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
-#else
-# define LT_DLSYM_CONST const
-#endif
-
-/* External symbol declarations for the compiler. */\
-"
-
-	if test "$dlself" = yes; then
-	  func_verbose "generating symbol list for \`$output'"
-
-	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
-
-	  # Add our own program objects to the symbol list.
-	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
-	  for progfile in $progfiles; do
-	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
-	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
-	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
-	  done
-
-	  if test -n "$exclude_expsyms"; then
-	    $opt_dry_run || {
-	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	    }
-	  fi
-
-	  if test -n "$export_symbols_regex"; then
-	    $opt_dry_run || {
-	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	    }
-	  fi
-
-	  # Prepare the list of exported symbols
-	  if test -z "$export_symbols"; then
-	    export_symbols="$output_objdir/$outputname.exp"
-	    $opt_dry_run || {
-	      $RM $export_symbols
-	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
-	      case $host in
-	      *cygwin* | *mingw* | *cegcc* )
-                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
-	        ;;
-	      esac
-	    }
-	  else
-	    $opt_dry_run || {
-	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
-	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	      case $host in
-	        *cygwin* | *mingw* | *cegcc* )
-	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
-	          ;;
-	      esac
-	    }
-	  fi
-	fi
-
-	for dlprefile in $dlprefiles; do
-	  func_verbose "extracting global C symbols from \`$dlprefile'"
-	  func_basename "$dlprefile"
-	  name="$func_basename_result"
-          case $host in
-	    *cygwin* | *mingw* | *cegcc* )
-	      # if an import library, we need to obtain dlname
-	      if func_win32_import_lib_p "$dlprefile"; then
-	        func_tr_sh "$dlprefile"
-	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
-	        dlprefile_dlbasename=""
-	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
-	          # Use subshell, to avoid clobbering current variable values
-	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
-	          if test -n "$dlprefile_dlname" ; then
-	            func_basename "$dlprefile_dlname"
-	            dlprefile_dlbasename="$func_basename_result"
-	          else
-	            # no lafile. user explicitly requested -dlpreopen <import library>.
-	            $sharedlib_from_linklib_cmd "$dlprefile"
-	            dlprefile_dlbasename=$sharedlib_from_linklib_result
-	          fi
-	        fi
-	        $opt_dry_run || {
-	          if test -n "$dlprefile_dlbasename" ; then
-	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
-	          else
-	            func_warning "Could not compute DLL name from $name"
-	            eval '$ECHO ": $name " >> "$nlist"'
-	          fi
-	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
-	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
-	        }
-	      else # not an import lib
-	        $opt_dry_run || {
-	          eval '$ECHO ": $name " >> "$nlist"'
-	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-	        }
-	      fi
-	    ;;
-	    *)
-	      $opt_dry_run || {
-	        eval '$ECHO ": $name " >> "$nlist"'
-	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-	      }
-	    ;;
-          esac
-	done
-
-	$opt_dry_run || {
-	  # Make sure we have at least an empty file.
-	  test -f "$nlist" || : > "$nlist"
-
-	  if test -n "$exclude_expsyms"; then
-	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
-	    $MV "$nlist"T "$nlist"
-	  fi
-
-	  # Try sorting and uniquifying the output.
-	  if $GREP -v "^: " < "$nlist" |
-	      if sort -k 3 </dev/null >/dev/null 2>&1; then
-		sort -k 3
-	      else
-		sort +2
-	      fi |
-	      uniq > "$nlist"S; then
-	    :
-	  else
-	    $GREP -v "^: " < "$nlist" > "$nlist"S
-	  fi
-
-	  if test -f "$nlist"S; then
-	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
-	  else
-	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
-	  fi
-
-	  echo >> "$output_objdir/$my_dlsyms" "\
-
-/* The mapping between symbol names and symbols.  */
-typedef struct {
-  const char *name;
-  void *address;
-} lt_dlsymlist;
-extern LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[];
-LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[] =
-{\
-  { \"$my_originator\", (void *) 0 },"
-
-	  case $need_lib_prefix in
-	  no)
-	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
-	    ;;
-	  *)
-	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
-	    ;;
-	  esac
-	  echo >> "$output_objdir/$my_dlsyms" "\
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt_${my_prefix}_LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif\
-"
-	} # !$opt_dry_run
-
-	pic_flag_for_symtable=
-	case "$compile_command " in
-	*" -static "*) ;;
-	*)
-	  case $host in
-	  # compiling the symbol table file with pic_flag works around
-	  # a FreeBSD bug that causes programs to crash when -lm is
-	  # linked before any other PIC object.  But we must not use
-	  # pic_flag when linking with -static.  The problem exists in
-	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
-	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
-	  *-*-hpux*)
-	    pic_flag_for_symtable=" $pic_flag"  ;;
-	  *)
-	    if test "X$my_pic_p" != Xno; then
-	      pic_flag_for_symtable=" $pic_flag"
-	    fi
-	    ;;
-	  esac
-	  ;;
-	esac
-	symtab_cflags=
-	for arg in $LTCFLAGS; do
-	  case $arg in
-	  -pie | -fpie | -fPIE) ;;
-	  *) func_append symtab_cflags " $arg" ;;
-	  esac
-	done
-
-	# Now compile the dynamic symbol file.
-	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
-
-	# Clean up the generated files.
-	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
-
-	# Transform the symbol file into the correct name.
-	symfileobj="$output_objdir/${my_outputname}S.$objext"
-	case $host in
-	*cygwin* | *mingw* | *cegcc* )
-	  if test -f "$output_objdir/$my_outputname.def"; then
-	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-	  else
-	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-	  fi
-	  ;;
-	*)
-	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-	  ;;
-	esac
-	;;
-      *)
-	func_fatal_error "unknown suffix for \`$my_dlsyms'"
-	;;
-      esac
-    else
-      # We keep going just in case the user didn't refer to
-      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
-      # really was required.
-
-      # Nullify the symbol file.
-      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
-      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
-    fi
-}
-
-# func_win32_libid arg
-# return the library type of file 'arg'
-#
-# Need a lot of goo to handle *both* DLLs and import libs
-# Has to be a shell function in order to 'eat' the argument
-# that is supplied when $file_magic_command is called.
-# Despite the name, also deal with 64 bit binaries.
-func_win32_libid ()
-{
-  $opt_debug
-  win32_libid_type="unknown"
-  win32_fileres=`file -L $1 2>/dev/null`
-  case $win32_fileres in
-  *ar\ archive\ import\ library*) # definitely import
-    win32_libid_type="x86 archive import"
-    ;;
-  *ar\ archive*) # could be an import, or static
-    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
-    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
-       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
-      func_to_tool_file "$1" func_convert_file_msys_to_w32
-      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
-	$SED -n -e '
-	    1,100{
-		/ I /{
-		    s,.*,import,
-		    p
-		    q
-		}
-	    }'`
-      case $win32_nmres in
-      import*)  win32_libid_type="x86 archive import";;
-      *)        win32_libid_type="x86 archive static";;
-      esac
-    fi
-    ;;
-  *DLL*)
-    win32_libid_type="x86 DLL"
-    ;;
-  *executable*) # but shell scripts are "executable" too...
-    case $win32_fileres in
-    *MS\ Windows\ PE\ Intel*)
-      win32_libid_type="x86 DLL"
-      ;;
-    esac
-    ;;
-  esac
-  $ECHO "$win32_libid_type"
-}
-
-# func_cygming_dll_for_implib ARG
-#
-# Platform-specific function to extract the
-# name of the DLL associated with the specified
-# import library ARG.
-# Invoked by eval'ing the libtool variable
-#    $sharedlib_from_linklib_cmd
-# Result is available in the variable
-#    $sharedlib_from_linklib_result
-func_cygming_dll_for_implib ()
-{
-  $opt_debug
-  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
-}
-
-# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
-#
-# The is the core of a fallback implementation of a
-# platform-specific function to extract the name of the
-# DLL associated with the specified import library LIBNAME.
-#
-# SECTION_NAME is either .idata$6 or .idata$7, depending
-# on the platform and compiler that created the implib.
-#
-# Echos the name of the DLL associated with the
-# specified import library.
-func_cygming_dll_for_implib_fallback_core ()
-{
-  $opt_debug
-  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
-  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
-    $SED '/^Contents of section '"$match_literal"':/{
-      # Place marker at beginning of archive member dllname section
-      s/.*/====MARK====/
-      p
-      d
-    }
-    # These lines can sometimes be longer than 43 characters, but
-    # are always uninteresting
-    /:[	 ]*file format pe[i]\{,1\}-/d
-    /^In archive [^:]*:/d
-    # Ensure marker is printed
-    /^====MARK====/p
-    # Remove all lines with less than 43 characters
-    /^.\{43\}/!d
-    # From remaining lines, remove first 43 characters
-    s/^.\{43\}//' |
-    $SED -n '
-      # Join marker and all lines until next marker into a single line
-      /^====MARK====/ b para
-      H
-      $ b para
-      b
-      :para
-      x
-      s/\n//g
-      # Remove the marker
-      s/^====MARK====//
-      # Remove trailing dots and whitespace
-      s/[\. \t]*$//
-      # Print
-      /./p' |
-    # we now have a list, one entry per line, of the stringified
-    # contents of the appropriate section of all members of the
-    # archive which possess that section. Heuristic: eliminate
-    # all those which have a first or second character that is
-    # a '.' (that is, objdump's representation of an unprintable
-    # character.) This should work for all archives with less than
-    # 0x302f exports -- but will fail for DLLs whose name actually
-    # begins with a literal '.' or a single character followed by
-    # a '.'.
-    #
-    # Of those that remain, print the first one.
-    $SED -e '/^\./d;/^.\./d;q'
-}
-
-# func_cygming_gnu_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is a GNU/binutils-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_gnu_implib_p ()
-{
-  $opt_debug
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
-  test -n "$func_cygming_gnu_implib_tmp"
-}
-
-# func_cygming_ms_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is an MS-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_ms_implib_p ()
-{
-  $opt_debug
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
-  test -n "$func_cygming_ms_implib_tmp"
-}
-
-# func_cygming_dll_for_implib_fallback ARG
-# Platform-specific function to extract the
-# name of the DLL associated with the specified
-# import library ARG.
-#
-# This fallback implementation is for use when $DLLTOOL
-# does not support the --identify-strict option.
-# Invoked by eval'ing the libtool variable
-#    $sharedlib_from_linklib_cmd
-# Result is available in the variable
-#    $sharedlib_from_linklib_result
-func_cygming_dll_for_implib_fallback ()
-{
-  $opt_debug
-  if func_cygming_gnu_implib_p "$1" ; then
-    # binutils import library
-    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
-  elif func_cygming_ms_implib_p "$1" ; then
-    # ms-generated import library
-    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
-  else
-    # unknown
-    sharedlib_from_linklib_result=""
-  fi
-}
-
-
-# func_extract_an_archive dir oldlib
-func_extract_an_archive ()
-{
-    $opt_debug
-    f_ex_an_ar_dir="$1"; shift
-    f_ex_an_ar_oldlib="$1"
-    if test "$lock_old_archive_extraction" = yes; then
-      lockfile=$f_ex_an_ar_oldlib.lock
-      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
-	func_echo "Waiting for $lockfile to be removed"
-	sleep 2
-      done
-    fi
-    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
-		   'stat=$?; rm -f "$lockfile"; exit $stat'
-    if test "$lock_old_archive_extraction" = yes; then
-      $opt_dry_run || rm -f "$lockfile"
-    fi
-    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
-     :
-    else
-      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
-    fi
-}
-
-
-# func_extract_archives gentop oldlib ...
-func_extract_archives ()
-{
-    $opt_debug
-    my_gentop="$1"; shift
-    my_oldlibs=${1+"$@"}
-    my_oldobjs=""
-    my_xlib=""
-    my_xabs=""
-    my_xdir=""
-
-    for my_xlib in $my_oldlibs; do
-      # Extract the objects.
-      case $my_xlib in
-	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
-	*) my_xabs=`pwd`"/$my_xlib" ;;
-      esac
-      func_basename "$my_xlib"
-      my_xlib="$func_basename_result"
-      my_xlib_u=$my_xlib
-      while :; do
-        case " $extracted_archives " in
-	*" $my_xlib_u "*)
-	  func_arith $extracted_serial + 1
-	  extracted_serial=$func_arith_result
-	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
-	*) break ;;
-	esac
-      done
-      extracted_archives="$extracted_archives $my_xlib_u"
-      my_xdir="$my_gentop/$my_xlib_u"
-
-      func_mkdir_p "$my_xdir"
-
-      case $host in
-      *-darwin*)
-	func_verbose "Extracting $my_xabs"
-	# Do not bother doing anything if just a dry run
-	$opt_dry_run || {
-	  darwin_orig_dir=`pwd`
-	  cd $my_xdir || exit $?
-	  darwin_archive=$my_xabs
-	  darwin_curdir=`pwd`
-	  darwin_base_archive=`basename "$darwin_archive"`
-	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
-	  if test -n "$darwin_arches"; then
-	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
-	    darwin_arch=
-	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
-	    for darwin_arch in  $darwin_arches ; do
-	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
-	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
-	      cd "$darwin_curdir"
-	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
-	    done # $darwin_arches
-            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
-	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
-	    darwin_file=
-	    darwin_files=
-	    for darwin_file in $darwin_filelist; do
-	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
-	      $LIPO -create -output "$darwin_file" $darwin_files
-	    done # $darwin_filelist
-	    $RM -rf unfat-$$
-	    cd "$darwin_orig_dir"
-	  else
-	    cd $darwin_orig_dir
-	    func_extract_an_archive "$my_xdir" "$my_xabs"
-	  fi # $darwin_arches
-	} # !$opt_dry_run
-	;;
-      *)
-        func_extract_an_archive "$my_xdir" "$my_xabs"
-	;;
-      esac
-      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
-    done
-
-    func_extract_archives_result="$my_oldobjs"
-}
-
-
-# func_emit_wrapper [arg=no]
-#
-# Emit a libtool wrapper script on stdout.
-# Don't directly open a file because we may want to
-# incorporate the script contents within a cygwin/mingw
-# wrapper executable.  Must ONLY be called from within
-# func_mode_link because it depends on a number of variables
-# set therein.
-#
-# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
-# variable will take.  If 'yes', then the emitted script
-# will assume that the directory in which it is stored is
-# the $objdir directory.  This is a cygwin/mingw-specific
-# behavior.
-func_emit_wrapper ()
-{
-	func_emit_wrapper_arg1=${1-no}
-
-	$ECHO "\
-#! $SHELL
-
-# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# The $output program cannot be directly executed until all the libtool
-# libraries that it depends on are installed.
-#
-# This wrapper script should never be moved out of the build directory.
-# If it is, it will not operate correctly.
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='$sed_quote_subst'
-
-# Be Bourne compatible
-if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-relink_command=\"$relink_command\"
-
-# This environment variable determines our operation mode.
-if test \"\$libtool_install_magic\" = \"$magic\"; then
-  # install mode needs the following variables:
-  generated_by_libtool_version='$macro_version'
-  notinst_deplibs='$notinst_deplibs'
-else
-  # When we are sourced in execute mode, \$file and \$ECHO are already set.
-  if test \"\$libtool_execute_magic\" != \"$magic\"; then
-    file=\"\$0\""
-
-    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
-    $ECHO "\
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-    ECHO=\"$qECHO\"
-  fi
-
-# Very basic option parsing. These options are (a) specific to
-# the libtool wrapper, (b) are identical between the wrapper
-# /script/ and the wrapper /executable/ which is used only on
-# windows platforms, and (c) all begin with the string "--lt-"
-# (application programs are unlikely to have options which match
-# this pattern).
-#
-# There are only two supported options: --lt-debug and
-# --lt-dump-script. There is, deliberately, no --lt-help.
-#
-# The first argument to this parsing function should be the
-# script's $0 value, followed by "$@".
-lt_option_debug=
-func_parse_lt_options ()
-{
-  lt_script_arg0=\$0
-  shift
-  for lt_opt
-  do
-    case \"\$lt_opt\" in
-    --lt-debug) lt_option_debug=1 ;;
-    --lt-dump-script)
-        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
-        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
-        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
-        cat \"\$lt_dump_D/\$lt_dump_F\"
-        exit 0
-      ;;
-    --lt-*)
-        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
-        exit 1
-      ;;
-    esac
-  done
-
-  # Print the debug banner immediately:
-  if test -n \"\$lt_option_debug\"; then
-    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
-  fi
-}
-
-# Used when --lt-debug. Prints its arguments to stdout
-# (redirection is the responsibility of the caller)
-func_lt_dump_args ()
-{
-  lt_dump_args_N=1;
-  for lt_arg
-  do
-    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
-    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
-  done
-}
-
-# Core function for launching the target application
-func_exec_program_core ()
-{
-"
-  case $host in
-  # Backslashes separate directories on plain windows
-  *-*-mingw | *-*-os2* | *-cegcc*)
-    $ECHO "\
-      if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
-        func_lt_dump_args \${1+\"\$@\"} 1>&2
-      fi
-      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-"
-    ;;
-
-  *)
-    $ECHO "\
-      if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
-        func_lt_dump_args \${1+\"\$@\"} 1>&2
-      fi
-      exec \"\$progdir/\$program\" \${1+\"\$@\"}
-"
-    ;;
-  esac
-  $ECHO "\
-      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
-      exit 1
-}
-
-# A function to encapsulate launching the target application
-# Strips options in the --lt-* namespace from \$@ and
-# launches target application with the remaining arguments.
-func_exec_program ()
-{
-  case \" \$* \" in
-  *\\ --lt-*)
-    for lt_wr_arg
-    do
-      case \$lt_wr_arg in
-      --lt-*) ;;
-      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
-      esac
-      shift
-    done ;;
-  esac
-  func_exec_program_core \${1+\"\$@\"}
-}
-
-  # Parse options
-  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
-
-  # Find the directory that this script lives in.
-  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
-  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
-
-  # Follow symbolic links until we get to the real thisdir.
-  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
-  while test -n \"\$file\"; do
-    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
-
-    # If there was a directory component, then change thisdir.
-    if test \"x\$destdir\" != \"x\$file\"; then
-      case \"\$destdir\" in
-      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
-      *) thisdir=\"\$thisdir/\$destdir\" ;;
-      esac
-    fi
-
-    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
-    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
-  done
-
-  # Usually 'no', except on cygwin/mingw when embedded into
-  # the cwrapper.
-  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
-  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
-    # special case for '.'
-    if test \"\$thisdir\" = \".\"; then
-      thisdir=\`pwd\`
-    fi
-    # remove .libs from thisdir
-    case \"\$thisdir\" in
-    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
-    $objdir )   thisdir=. ;;
-    esac
-  fi
-
-  # Try to get the absolute directory name.
-  absdir=\`cd \"\$thisdir\" && pwd\`
-  test -n \"\$absdir\" && thisdir=\"\$absdir\"
-"
-
-	if test "$fast_install" = yes; then
-	  $ECHO "\
-  program=lt-'$outputname'$exeext
-  progdir=\"\$thisdir/$objdir\"
-
-  if test ! -f \"\$progdir/\$program\" ||
-     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
-       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
-
-    file=\"\$\$-\$program\"
-
-    if test ! -d \"\$progdir\"; then
-      $MKDIR \"\$progdir\"
-    else
-      $RM \"\$progdir/\$file\"
-    fi"
-
-	  $ECHO "\
-
-    # relink executable if necessary
-    if test -n \"\$relink_command\"; then
-      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
-      else
-	$ECHO \"\$relink_command_output\" >&2
-	$RM \"\$progdir/\$file\"
-	exit 1
-      fi
-    fi
-
-    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
-    { $RM \"\$progdir/\$program\";
-      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
-    $RM \"\$progdir/\$file\"
-  fi"
-	else
-	  $ECHO "\
-  program='$outputname'
-  progdir=\"\$thisdir/$objdir\"
-"
-	fi
-
-	$ECHO "\
-
-  if test -f \"\$progdir/\$program\"; then"
-
-	# fixup the dll searchpath if we need to.
-	#
-	# Fix the DLL searchpath if we need to.  Do this before prepending
-	# to shlibpath, because on Windows, both are PATH and uninstalled
-	# libraries must come first.
-	if test -n "$dllsearchpath"; then
-	  $ECHO "\
-    # Add the dll search path components to the executable PATH
-    PATH=$dllsearchpath:\$PATH
-"
-	fi
-
-	# Export our shlibpath_var if we have one.
-	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-	  $ECHO "\
-    # Add our own library path to $shlibpath_var
-    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
-
-    # Some systems cannot cope with colon-terminated $shlibpath_var
-    # The second colon is a workaround for a bug in BeOS R4 sed
-    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
-
-    export $shlibpath_var
-"
-	fi
-
-	$ECHO "\
-    if test \"\$libtool_execute_magic\" != \"$magic\"; then
-      # Run the actual program with our arguments.
-      func_exec_program \${1+\"\$@\"}
-    fi
-  else
-    # The program doesn't exist.
-    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
-    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
-    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
-    exit 1
-  fi
-fi\
-"
-}
-
-
-# func_emit_cwrapperexe_src
-# emit the source code for a wrapper executable on stdout
-# Must ONLY be called from within func_mode_link because
-# it depends on a number of variable set therein.
-func_emit_cwrapperexe_src ()
-{
-	cat <<EOF
-
-/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
-   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-
-   The $output program cannot be directly executed until all the libtool
-   libraries that it depends on are installed.
-
-   This wrapper executable should never be moved out of the build directory.
-   If it is, it will not operate correctly.
-*/
-EOF
-	    cat <<"EOF"
-#ifdef _MSC_VER
-# define _CRT_SECURE_NO_DEPRECATE 1
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef _MSC_VER
-# include <direct.h>
-# include <process.h>
-# include <io.h>
-#else
-# include <unistd.h>
-# include <stdint.h>
-# ifdef __CYGWIN__
-#  include <io.h>
-# endif
-#endif
-#include <malloc.h>
-#include <stdarg.h>
-#include <assert.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-/* declarations of non-ANSI functions */
-#if defined(__MINGW32__)
-# ifdef __STRICT_ANSI__
-int _putenv (const char *);
-# endif
-#elif defined(__CYGWIN__)
-# ifdef __STRICT_ANSI__
-char *realpath (const char *, char *);
-int putenv (char *);
-int setenv (const char *, const char *, int);
-# endif
-/* #elif defined (other platforms) ... */
-#endif
-
-/* portability defines, excluding path handling macros */
-#if defined(_MSC_VER)
-# define setmode _setmode
-# define stat    _stat
-# define chmod   _chmod
-# define getcwd  _getcwd
-# define putenv  _putenv
-# define S_IXUSR _S_IEXEC
-# ifndef _INTPTR_T_DEFINED
-#  define _INTPTR_T_DEFINED
-#  define intptr_t int
-# endif
-#elif defined(__MINGW32__)
-# define setmode _setmode
-# define stat    _stat
-# define chmod   _chmod
-# define getcwd  _getcwd
-# define putenv  _putenv
-#elif defined(__CYGWIN__)
-# define HAVE_SETENV
-# define FOPEN_WB "wb"
-/* #elif defined (other platforms) ... */
-#endif
-
-#if defined(PATH_MAX)
-# define LT_PATHMAX PATH_MAX
-#elif defined(MAXPATHLEN)
-# define LT_PATHMAX MAXPATHLEN
-#else
-# define LT_PATHMAX 1024
-#endif
-
-#ifndef S_IXOTH
-# define S_IXOTH 0
-#endif
-#ifndef S_IXGRP
-# define S_IXGRP 0
-#endif
-
-/* path handling portability macros */
-#ifndef DIR_SEPARATOR
-# define DIR_SEPARATOR '/'
-# define PATH_SEPARATOR ':'
-#endif
-
-#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
-  defined (__OS2__)
-# define HAVE_DOS_BASED_FILE_SYSTEM
-# define FOPEN_WB "wb"
-# ifndef DIR_SEPARATOR_2
-#  define DIR_SEPARATOR_2 '\\'
-# endif
-# ifndef PATH_SEPARATOR_2
-#  define PATH_SEPARATOR_2 ';'
-# endif
-#endif
-
-#ifndef DIR_SEPARATOR_2
-# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
-#else /* DIR_SEPARATOR_2 */
-# define IS_DIR_SEPARATOR(ch) \
-	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
-#endif /* DIR_SEPARATOR_2 */
-
-#ifndef PATH_SEPARATOR_2
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
-#else /* PATH_SEPARATOR_2 */
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
-#endif /* PATH_SEPARATOR_2 */
-
-#ifndef FOPEN_WB
-# define FOPEN_WB "w"
-#endif
-#ifndef _O_BINARY
-# define _O_BINARY 0
-#endif
-
-#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
-#define XFREE(stale) do { \
-  if (stale) { free ((void *) stale); stale = 0; } \
-} while (0)
-
-#if defined(LT_DEBUGWRAPPER)
-static int lt_debug = 1;
-#else
-static int lt_debug = 0;
-#endif
-
-const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
-
-void *xmalloc (size_t num);
-char *xstrdup (const char *string);
-const char *base_name (const char *name);
-char *find_executable (const char *wrapper);
-char *chase_symlinks (const char *pathspec);
-int make_executable (const char *path);
-int check_executable (const char *path);
-char *strendzap (char *str, const char *pat);
-void lt_debugprintf (const char *file, int line, const char *fmt, ...);
-void lt_fatal (const char *file, int line, const char *message, ...);
-static const char *nonnull (const char *s);
-static const char *nonempty (const char *s);
-void lt_setenv (const char *name, const char *value);
-char *lt_extend_str (const char *orig_value, const char *add, int to_end);
-void lt_update_exe_path (const char *name, const char *value);
-void lt_update_lib_path (const char *name, const char *value);
-char **prepare_spawn (char **argv);
-void lt_dump_script (FILE *f);
-EOF
-
-	    cat <<EOF
-volatile const char * MAGIC_EXE = "$magic_exe";
-const char * LIB_PATH_VARNAME = "$shlibpath_var";
-EOF
-
-	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-              func_to_host_path "$temp_rpath"
-	      cat <<EOF
-const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
-EOF
-	    else
-	      cat <<"EOF"
-const char * LIB_PATH_VALUE   = "";
-EOF
-	    fi
-
-	    if test -n "$dllsearchpath"; then
-              func_to_host_path "$dllsearchpath:"
-	      cat <<EOF
-const char * EXE_PATH_VARNAME = "PATH";
-const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
-EOF
-	    else
-	      cat <<"EOF"
-const char * EXE_PATH_VARNAME = "";
-const char * EXE_PATH_VALUE   = "";
-EOF
-	    fi
-
-	    if test "$fast_install" = yes; then
-	      cat <<EOF
-const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
-EOF
-	    else
-	      cat <<EOF
-const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
-EOF
-	    fi
-
-
-	    cat <<"EOF"
-
-#define LTWRAPPER_OPTION_PREFIX         "--lt-"
-
-static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
-static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
-static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
-
-int
-main (int argc, char *argv[])
-{
-  char **newargz;
-  int  newargc;
-  char *tmp_pathspec;
-  char *actual_cwrapper_path;
-  char *actual_cwrapper_name;
-  char *target_name;
-  char *lt_argv_zero;
-  intptr_t rval = 127;
-
-  int i;
-
-  program_name = (char *) xstrdup (base_name (argv[0]));
-  newargz = XMALLOC (char *, argc + 1);
-
-  /* very simple arg parsing; don't want to rely on getopt
-   * also, copy all non cwrapper options to newargz, except
-   * argz[0], which is handled differently
-   */
-  newargc=0;
-  for (i = 1; i < argc; i++)
-    {
-      if (strcmp (argv[i], dumpscript_opt) == 0)
-	{
-EOF
-	    case "$host" in
-	      *mingw* | *cygwin* )
-		# make stdout use "unix" line endings
-		echo "          setmode(1,_O_BINARY);"
-		;;
-	      esac
-
-	    cat <<"EOF"
-	  lt_dump_script (stdout);
-	  return 0;
-	}
-      if (strcmp (argv[i], debug_opt) == 0)
-	{
-          lt_debug = 1;
-          continue;
-	}
-      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
-        {
-          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
-             namespace, but it is not one of the ones we know about and
-             have already dealt with, above (inluding dump-script), then
-             report an error. Otherwise, targets might begin to believe
-             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
-             namespace. The first time any user complains about this, we'll
-             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
-             or a configure.ac-settable value.
-           */
-          lt_fatal (__FILE__, __LINE__,
-		    "unrecognized %s option: '%s'",
-                    ltwrapper_option_prefix, argv[i]);
-        }
-      /* otherwise ... */
-      newargz[++newargc] = xstrdup (argv[i]);
-    }
-  newargz[++newargc] = NULL;
-
-EOF
-	    cat <<EOF
-  /* The GNU banner must be the first non-error debug message */
-  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
-EOF
-	    cat <<"EOF"
-  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
-  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
-
-  tmp_pathspec = find_executable (argv[0]);
-  if (tmp_pathspec == NULL)
-    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
-  lt_debugprintf (__FILE__, __LINE__,
-                  "(main) found exe (before symlink chase) at: %s\n",
-		  tmp_pathspec);
-
-  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
-  lt_debugprintf (__FILE__, __LINE__,
-                  "(main) found exe (after symlink chase) at: %s\n",
-		  actual_cwrapper_path);
-  XFREE (tmp_pathspec);
-
-  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
-  strendzap (actual_cwrapper_path, actual_cwrapper_name);
-
-  /* wrapper name transforms */
-  strendzap (actual_cwrapper_name, ".exe");
-  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
-  XFREE (actual_cwrapper_name);
-  actual_cwrapper_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  /* target_name transforms -- use actual target program name; might have lt- prefix */
-  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
-  strendzap (target_name, ".exe");
-  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
-  XFREE (target_name);
-  target_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  lt_debugprintf (__FILE__, __LINE__,
-		  "(main) libtool target name: %s\n",
-		  target_name);
-EOF
-
-	    cat <<EOF
-  newargz[0] =
-    XMALLOC (char, (strlen (actual_cwrapper_path) +
-		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
-  strcpy (newargz[0], actual_cwrapper_path);
-  strcat (newargz[0], "$objdir");
-  strcat (newargz[0], "/");
-EOF
-
-	    cat <<"EOF"
-  /* stop here, and copy so we don't have to do this twice */
-  tmp_pathspec = xstrdup (newargz[0]);
-
-  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
-  strcat (newargz[0], actual_cwrapper_name);
-
-  /* DO want the lt- prefix here if it exists, so use target_name */
-  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
-  XFREE (tmp_pathspec);
-  tmp_pathspec = NULL;
-EOF
-
-	    case $host_os in
-	      mingw*)
-	    cat <<"EOF"
-  {
-    char* p;
-    while ((p = strchr (newargz[0], '\\')) != NULL)
-      {
-	*p = '/';
-      }
-    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
-      {
-	*p = '/';
-      }
-  }
-EOF
-	    ;;
-	    esac
-
-	    cat <<"EOF"
-  XFREE (target_name);
-  XFREE (actual_cwrapper_path);
-  XFREE (actual_cwrapper_name);
-
-  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
-  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
-  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
-     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
-     because on Windows, both *_VARNAMEs are PATH but uninstalled
-     libraries must come first. */
-  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
-  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
-
-  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
-		  nonnull (lt_argv_zero));
-  for (i = 0; i < newargc; i++)
-    {
-      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
-		      i, nonnull (newargz[i]));
-    }
-
-EOF
-
-	    case $host_os in
-	      mingw*)
-		cat <<"EOF"
-  /* execv doesn't actually work on mingw as expected on unix */
-  newargz = prepare_spawn (newargz);
-  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
-  if (rval == -1)
-    {
-      /* failed to start process */
-      lt_debugprintf (__FILE__, __LINE__,
-		      "(main) failed to launch target \"%s\": %s\n",
-		      lt_argv_zero, nonnull (strerror (errno)));
-      return 127;
-    }
-  return rval;
-EOF
-		;;
-	      *)
-		cat <<"EOF"
-  execv (lt_argv_zero, newargz);
-  return rval; /* =127, but avoids unused variable warning */
-EOF
-		;;
-	    esac
-
-	    cat <<"EOF"
-}
-
-void *
-xmalloc (size_t num)
-{
-  void *p = (void *) malloc (num);
-  if (!p)
-    lt_fatal (__FILE__, __LINE__, "memory exhausted");
-
-  return p;
-}
-
-char *
-xstrdup (const char *string)
-{
-  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
-			  string) : NULL;
-}
-
-const char *
-base_name (const char *name)
-{
-  const char *base;
-
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  /* Skip over the disk name in MSDOS pathnames. */
-  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
-    name += 2;
-#endif
-
-  for (base = name; *name; name++)
-    if (IS_DIR_SEPARATOR (*name))
-      base = name + 1;
-  return base;
-}
-
-int
-check_executable (const char *path)
-{
-  struct stat st;
-
-  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
-                  nonempty (path));
-  if ((!path) || (!*path))
-    return 0;
-
-  if ((stat (path, &st) >= 0)
-      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
-    return 1;
-  else
-    return 0;
-}
-
-int
-make_executable (const char *path)
-{
-  int rval = 0;
-  struct stat st;
-
-  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
-                  nonempty (path));
-  if ((!path) || (!*path))
-    return 0;
-
-  if (stat (path, &st) >= 0)
-    {
-      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
-    }
-  return rval;
-}
-
-/* Searches for the full path of the wrapper.  Returns
-   newly allocated full path name if found, NULL otherwise
-   Does not chase symlinks, even on platforms that support them.
-*/
-char *
-find_executable (const char *wrapper)
-{
-  int has_slash = 0;
-  const char *p;
-  const char *p_next;
-  /* static buffer for getcwd */
-  char tmp[LT_PATHMAX + 1];
-  int tmp_len;
-  char *concat_name;
-
-  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
-                  nonempty (wrapper));
-
-  if ((wrapper == NULL) || (*wrapper == '\0'))
-    return NULL;
-
-  /* Absolute path? */
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
-    {
-      concat_name = xstrdup (wrapper);
-      if (check_executable (concat_name))
-	return concat_name;
-      XFREE (concat_name);
-    }
-  else
-    {
-#endif
-      if (IS_DIR_SEPARATOR (wrapper[0]))
-	{
-	  concat_name = xstrdup (wrapper);
-	  if (check_executable (concat_name))
-	    return concat_name;
-	  XFREE (concat_name);
-	}
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-    }
-#endif
-
-  for (p = wrapper; *p; p++)
-    if (*p == '/')
-      {
-	has_slash = 1;
-	break;
-      }
-  if (!has_slash)
-    {
-      /* no slashes; search PATH */
-      const char *path = getenv ("PATH");
-      if (path != NULL)
-	{
-	  for (p = path; *p; p = p_next)
-	    {
-	      const char *q;
-	      size_t p_len;
-	      for (q = p; *q; q++)
-		if (IS_PATH_SEPARATOR (*q))
-		  break;
-	      p_len = q - p;
-	      p_next = (*q == '\0' ? q : q + 1);
-	      if (p_len == 0)
-		{
-		  /* empty path: current directory */
-		  if (getcwd (tmp, LT_PATHMAX) == NULL)
-		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
-                              nonnull (strerror (errno)));
-		  tmp_len = strlen (tmp);
-		  concat_name =
-		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-		  memcpy (concat_name, tmp, tmp_len);
-		  concat_name[tmp_len] = '/';
-		  strcpy (concat_name + tmp_len + 1, wrapper);
-		}
-	      else
-		{
-		  concat_name =
-		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
-		  memcpy (concat_name, p, p_len);
-		  concat_name[p_len] = '/';
-		  strcpy (concat_name + p_len + 1, wrapper);
-		}
-	      if (check_executable (concat_name))
-		return concat_name;
-	      XFREE (concat_name);
-	    }
-	}
-      /* not found in PATH; assume curdir */
-    }
-  /* Relative path | not found in path: prepend cwd */
-  if (getcwd (tmp, LT_PATHMAX) == NULL)
-    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
-              nonnull (strerror (errno)));
-  tmp_len = strlen (tmp);
-  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-  memcpy (concat_name, tmp, tmp_len);
-  concat_name[tmp_len] = '/';
-  strcpy (concat_name + tmp_len + 1, wrapper);
-
-  if (check_executable (concat_name))
-    return concat_name;
-  XFREE (concat_name);
-  return NULL;
-}
-
-char *
-chase_symlinks (const char *pathspec)
-{
-#ifndef S_ISLNK
-  return xstrdup (pathspec);
-#else
-  char buf[LT_PATHMAX];
-  struct stat s;
-  char *tmp_pathspec = xstrdup (pathspec);
-  char *p;
-  int has_symlinks = 0;
-  while (strlen (tmp_pathspec) && !has_symlinks)
-    {
-      lt_debugprintf (__FILE__, __LINE__,
-		      "checking path component for symlinks: %s\n",
-		      tmp_pathspec);
-      if (lstat (tmp_pathspec, &s) == 0)
-	{
-	  if (S_ISLNK (s.st_mode) != 0)
-	    {
-	      has_symlinks = 1;
-	      break;
-	    }
-
-	  /* search backwards for last DIR_SEPARATOR */
-	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
-	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-	    p--;
-	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-	    {
-	      /* no more DIR_SEPARATORS left */
-	      break;
-	    }
-	  *p = '\0';
-	}
-      else
-	{
-	  lt_fatal (__FILE__, __LINE__,
-		    "error accessing file \"%s\": %s",
-		    tmp_pathspec, nonnull (strerror (errno)));
-	}
-    }
-  XFREE (tmp_pathspec);
-
-  if (!has_symlinks)
-    {
-      return xstrdup (pathspec);
-    }
-
-  tmp_pathspec = realpath (pathspec, buf);
-  if (tmp_pathspec == 0)
-    {
-      lt_fatal (__FILE__, __LINE__,
-		"could not follow symlinks for %s", pathspec);
-    }
-  return xstrdup (tmp_pathspec);
-#endif
-}
-
-char *
-strendzap (char *str, const char *pat)
-{
-  size_t len, patlen;
-
-  assert (str != NULL);
-  assert (pat != NULL);
-
-  len = strlen (str);
-  patlen = strlen (pat);
-
-  if (patlen <= len)
-    {
-      str += len - patlen;
-      if (strcmp (str, pat) == 0)
-	*str = '\0';
-    }
-  return str;
-}
-
-void
-lt_debugprintf (const char *file, int line, const char *fmt, ...)
-{
-  va_list args;
-  if (lt_debug)
-    {
-      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
-      va_start (args, fmt);
-      (void) vfprintf (stderr, fmt, args);
-      va_end (args);
-    }
-}
-
-static void
-lt_error_core (int exit_status, const char *file,
-	       int line, const char *mode,
-	       const char *message, va_list ap)
-{
-  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
-  vfprintf (stderr, message, ap);
-  fprintf (stderr, ".\n");
-
-  if (exit_status >= 0)
-    exit (exit_status);
-}
-
-void
-lt_fatal (const char *file, int line, const char *message, ...)
-{
-  va_list ap;
-  va_start (ap, message);
-  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
-  va_end (ap);
-}
-
-static const char *
-nonnull (const char *s)
-{
-  return s ? s : "(null)";
-}
-
-static const char *
-nonempty (const char *s)
-{
-  return (s && !*s) ? "(empty)" : nonnull (s);
-}
-
-void
-lt_setenv (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-		  "(lt_setenv) setting '%s' to '%s'\n",
-                  nonnull (name), nonnull (value));
-  {
-#ifdef HAVE_SETENV
-    /* always make a copy, for consistency with !HAVE_SETENV */
-    char *str = xstrdup (value);
-    setenv (name, str, 1);
-#else
-    int len = strlen (name) + 1 + strlen (value) + 1;
-    char *str = XMALLOC (char, len);
-    sprintf (str, "%s=%s", name, value);
-    if (putenv (str) != EXIT_SUCCESS)
-      {
-        XFREE (str);
-      }
-#endif
-  }
-}
-
-char *
-lt_extend_str (const char *orig_value, const char *add, int to_end)
-{
-  char *new_value;
-  if (orig_value && *orig_value)
-    {
-      int orig_value_len = strlen (orig_value);
-      int add_len = strlen (add);
-      new_value = XMALLOC (char, add_len + orig_value_len + 1);
-      if (to_end)
-        {
-          strcpy (new_value, orig_value);
-          strcpy (new_value + orig_value_len, add);
-        }
-      else
-        {
-          strcpy (new_value, add);
-          strcpy (new_value + add_len, orig_value);
-        }
-    }
-  else
-    {
-      new_value = xstrdup (add);
-    }
-  return new_value;
-}
-
-void
-lt_update_exe_path (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
-                  nonnull (name), nonnull (value));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      /* some systems can't cope with a ':'-terminated path #' */
-      int len = strlen (new_value);
-      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
-        {
-          new_value[len-1] = '\0';
-        }
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-void
-lt_update_lib_path (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
-                  nonnull (name), nonnull (value));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-EOF
-	    case $host_os in
-	      mingw*)
-		cat <<"EOF"
-
-/* Prepares an argument vector before calling spawn().
-   Note that spawn() does not by itself call the command interpreter
-     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
-      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
-         GetVersionEx(&v);
-         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
-      }) ? "cmd.exe" : "command.com").
-   Instead it simply concatenates the arguments, separated by ' ', and calls
-   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
-   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
-   special way:
-   - Space and tab are interpreted as delimiters. They are not treated as
-     delimiters if they are surrounded by double quotes: "...".
-   - Unescaped double quotes are removed from the input. Their only effect is
-     that within double quotes, space and tab are treated like normal
-     characters.
-   - Backslashes not followed by double quotes are not special.
-   - But 2*n+1 backslashes followed by a double quote become
-     n backslashes followed by a double quote (n >= 0):
-       \" -> "
-       \\\" -> \"
-       \\\\\" -> \\"
- */
-#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
-#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
-char **
-prepare_spawn (char **argv)
-{
-  size_t argc;
-  char **new_argv;
-  size_t i;
-
-  /* Count number of arguments.  */
-  for (argc = 0; argv[argc] != NULL; argc++)
-    ;
-
-  /* Allocate new argument vector.  */
-  new_argv = XMALLOC (char *, argc + 1);
-
-  /* Put quoted arguments into the new argument vector.  */
-  for (i = 0; i < argc; i++)
-    {
-      const char *string = argv[i];
-
-      if (string[0] == '\0')
-	new_argv[i] = xstrdup ("\"\"");
-      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
-	{
-	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
-	  size_t length;
-	  unsigned int backslashes;
-	  const char *s;
-	  char *quoted_string;
-	  char *p;
-
-	  length = 0;
-	  backslashes = 0;
-	  if (quote_around)
-	    length++;
-	  for (s = string; *s != '\0'; s++)
-	    {
-	      char c = *s;
-	      if (c == '"')
-		length += backslashes + 1;
-	      length++;
-	      if (c == '\\')
-		backslashes++;
-	      else
-		backslashes = 0;
-	    }
-	  if (quote_around)
-	    length += backslashes + 1;
-
-	  quoted_string = XMALLOC (char, length + 1);
-
-	  p = quoted_string;
-	  backslashes = 0;
-	  if (quote_around)
-	    *p++ = '"';
-	  for (s = string; *s != '\0'; s++)
-	    {
-	      char c = *s;
-	      if (c == '"')
-		{
-		  unsigned int j;
-		  for (j = backslashes + 1; j > 0; j--)
-		    *p++ = '\\';
-		}
-	      *p++ = c;
-	      if (c == '\\')
-		backslashes++;
-	      else
-		backslashes = 0;
-	    }
-	  if (quote_around)
-	    {
-	      unsigned int j;
-	      for (j = backslashes; j > 0; j--)
-		*p++ = '\\';
-	      *p++ = '"';
-	    }
-	  *p = '\0';
-
-	  new_argv[i] = quoted_string;
-	}
-      else
-	new_argv[i] = (char *) string;
-    }
-  new_argv[argc] = NULL;
-
-  return new_argv;
-}
-EOF
-		;;
-	    esac
-
-            cat <<"EOF"
-void lt_dump_script (FILE* f)
-{
-EOF
-	    func_emit_wrapper yes |
-	      $SED -n -e '
-s/^\(.\{79\}\)\(..*\)/\1\
-\2/
-h
-s/\([\\"]\)/\\\1/g
-s/$/\\n/
-s/\([^\n]*\).*/  fputs ("\1", f);/p
-g
-D'
-            cat <<"EOF"
-}
-EOF
-}
-# end: func_emit_cwrapperexe_src
-
-# func_win32_import_lib_p ARG
-# True if ARG is an import lib, as indicated by $file_magic_cmd
-func_win32_import_lib_p ()
-{
-    $opt_debug
-    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
-    *import*) : ;;
-    *) false ;;
-    esac
-}
-
-# func_mode_link arg...
-func_mode_link ()
-{
-    $opt_debug
-    case $host in
-    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-      # It is impossible to link a dll without this setting, and
-      # we shouldn't force the makefile maintainer to figure out
-      # which system we are compiling for in order to pass an extra
-      # flag for every libtool invocation.
-      # allow_undefined=no
-
-      # FIXME: Unfortunately, there are problems with the above when trying
-      # to make a dll which has undefined symbols, in which case not
-      # even a static library is built.  For now, we need to specify
-      # -no-undefined on the libtool link line when we can be certain
-      # that all symbols are satisfied, otherwise we get a static library.
-      allow_undefined=yes
-      ;;
-    *)
-      allow_undefined=yes
-      ;;
-    esac
-    libtool_args=$nonopt
-    base_compile="$nonopt $@"
-    compile_command=$nonopt
-    finalize_command=$nonopt
-
-    compile_rpath=
-    finalize_rpath=
-    compile_shlibpath=
-    finalize_shlibpath=
-    convenience=
-    old_convenience=
-    deplibs=
-    old_deplibs=
-    compiler_flags=
-    linker_flags=
-    dllsearchpath=
-    lib_search_path=`pwd`
-    inst_prefix_dir=
-    new_inherited_linker_flags=
-
-    avoid_version=no
-    bindir=
-    dlfiles=
-    dlprefiles=
-    dlself=no
-    export_dynamic=no
-    export_symbols=
-    export_symbols_regex=
-    generated=
-    libobjs=
-    ltlibs=
-    module=no
-    no_install=no
-    objs=
-    non_pic_objects=
-    precious_files_regex=
-    prefer_static_libs=no
-    preload=no
-    prev=
-    prevarg=
-    release=
-    rpath=
-    xrpath=
-    perm_rpath=
-    temp_rpath=
-    thread_safe=no
-    vinfo=
-    vinfo_number=no
-    weak_libs=
-    single_module="${wl}-single_module"
-    func_infer_tag $base_compile
-
-    # We need to know -static, to get the right output filenames.
-    for arg
-    do
-      case $arg in
-      -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
-	build_old_libs=no
-	break
-	;;
-      -all-static | -static | -static-libtool-libs)
-	case $arg in
-	-all-static)
-	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
-	    func_warning "complete static linking is impossible in this configuration"
-	  fi
-	  if test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=yes
-	  ;;
-	-static)
-	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=built
-	  ;;
-	-static-libtool-libs)
-	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=yes
-	  ;;
-	esac
-	build_libtool_libs=no
-	build_old_libs=yes
-	break
-	;;
-      esac
-    done
-
-    # See if our shared archives depend on static archives.
-    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
-
-    # Go through the arguments, transforming them on the way.
-    while test "$#" -gt 0; do
-      arg="$1"
-      shift
-      func_quote_for_eval "$arg"
-      qarg=$func_quote_for_eval_unquoted_result
-      func_append libtool_args " $func_quote_for_eval_result"
-
-      # If the previous option needs an argument, assign it.
-      if test -n "$prev"; then
-	case $prev in
-	output)
-	  func_append compile_command " @OUTPUT@"
-	  func_append finalize_command " @OUTPUT@"
-	  ;;
-	esac
-
-	case $prev in
-	bindir)
-	  bindir="$arg"
-	  prev=
-	  continue
-	  ;;
-	dlfiles|dlprefiles)
-	  if test "$preload" = no; then
-	    # Add the symbol object into the linking commands.
-	    func_append compile_command " @SYMFILE@"
-	    func_append finalize_command " @SYMFILE@"
-	    preload=yes
-	  fi
-	  case $arg in
-	  *.la | *.lo) ;;  # We handle these cases below.
-	  force)
-	    if test "$dlself" = no; then
-	      dlself=needless
-	      export_dynamic=yes
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  self)
-	    if test "$prev" = dlprefiles; then
-	      dlself=yes
-	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
-	      dlself=yes
-	    else
-	      dlself=needless
-	      export_dynamic=yes
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  *)
-	    if test "$prev" = dlfiles; then
-	      func_append dlfiles " $arg"
-	    else
-	      func_append dlprefiles " $arg"
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  esac
-	  ;;
-	expsyms)
-	  export_symbols="$arg"
-	  test -f "$arg" \
-	    || func_fatal_error "symbol file \`$arg' does not exist"
-	  prev=
-	  continue
-	  ;;
-	expsyms_regex)
-	  export_symbols_regex="$arg"
-	  prev=
-	  continue
-	  ;;
-	framework)
-	  case $host in
-	    *-*-darwin*)
-	      case "$deplibs " in
-		*" $qarg.ltframework "*) ;;
-		*) func_append deplibs " $qarg.ltframework" # this is fixed later
-		   ;;
-	      esac
-	      ;;
-	  esac
-	  prev=
-	  continue
-	  ;;
-	inst_prefix)
-	  inst_prefix_dir="$arg"
-	  prev=
-	  continue
-	  ;;
-	objectlist)
-	  if test -f "$arg"; then
-	    save_arg=$arg
-	    moreargs=
-	    for fil in `cat "$save_arg"`
-	    do
-#	      func_append moreargs " $fil"
-	      arg=$fil
-	      # A libtool-controlled object.
-
-	      # Check to see that this really is a libtool object.
-	      if func_lalib_unsafe_p "$arg"; then
-		pic_object=
-		non_pic_object=
-
-		# Read the .lo file
-		func_source "$arg"
-
-		if test -z "$pic_object" ||
-		   test -z "$non_pic_object" ||
-		   test "$pic_object" = none &&
-		   test "$non_pic_object" = none; then
-		  func_fatal_error "cannot find name of object for \`$arg'"
-		fi
-
-		# Extract subdirectory from the argument.
-		func_dirname "$arg" "/" ""
-		xdir="$func_dirname_result"
-
-		if test "$pic_object" != none; then
-		  # Prepend the subdirectory the object is found in.
-		  pic_object="$xdir$pic_object"
-
-		  if test "$prev" = dlfiles; then
-		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		      func_append dlfiles " $pic_object"
-		      prev=
-		      continue
-		    else
-		      # If libtool objects are unsupported, then we need to preload.
-		      prev=dlprefiles
-		    fi
-		  fi
-
-		  # CHECK ME:  I think I busted this.  -Ossama
-		  if test "$prev" = dlprefiles; then
-		    # Preload the old-style object.
-		    func_append dlprefiles " $pic_object"
-		    prev=
-		  fi
-
-		  # A PIC object.
-		  func_append libobjs " $pic_object"
-		  arg="$pic_object"
-		fi
-
-		# Non-PIC object.
-		if test "$non_pic_object" != none; then
-		  # Prepend the subdirectory the object is found in.
-		  non_pic_object="$xdir$non_pic_object"
-
-		  # A standard non-PIC object
-		  func_append non_pic_objects " $non_pic_object"
-		  if test -z "$pic_object" || test "$pic_object" = none ; then
-		    arg="$non_pic_object"
-		  fi
-		else
-		  # If the PIC object exists, use it instead.
-		  # $xdir was prepended to $pic_object above.
-		  non_pic_object="$pic_object"
-		  func_append non_pic_objects " $non_pic_object"
-		fi
-	      else
-		# Only an error if not doing a dry-run.
-		if $opt_dry_run; then
-		  # Extract subdirectory from the argument.
-		  func_dirname "$arg" "/" ""
-		  xdir="$func_dirname_result"
-
-		  func_lo2o "$arg"
-		  pic_object=$xdir$objdir/$func_lo2o_result
-		  non_pic_object=$xdir$func_lo2o_result
-		  func_append libobjs " $pic_object"
-		  func_append non_pic_objects " $non_pic_object"
-	        else
-		  func_fatal_error "\`$arg' is not a valid libtool object"
-		fi
-	      fi
-	    done
-	  else
-	    func_fatal_error "link input file \`$arg' does not exist"
-	  fi
-	  arg=$save_arg
-	  prev=
-	  continue
-	  ;;
-	precious_regex)
-	  precious_files_regex="$arg"
-	  prev=
-	  continue
-	  ;;
-	release)
-	  release="-$arg"
-	  prev=
-	  continue
-	  ;;
-	rpath | xrpath)
-	  # We need an absolute path.
-	  case $arg in
-	  [\\/]* | [A-Za-z]:[\\/]*) ;;
-	  *)
-	    func_fatal_error "only absolute run-paths are allowed"
-	    ;;
-	  esac
-	  if test "$prev" = rpath; then
-	    case "$rpath " in
-	    *" $arg "*) ;;
-	    *) func_append rpath " $arg" ;;
-	    esac
-	  else
-	    case "$xrpath " in
-	    *" $arg "*) ;;
-	    *) func_append xrpath " $arg" ;;
-	    esac
-	  fi
-	  prev=
-	  continue
-	  ;;
-	shrext)
-	  shrext_cmds="$arg"
-	  prev=
-	  continue
-	  ;;
-	weak)
-	  func_append weak_libs " $arg"
-	  prev=
-	  continue
-	  ;;
-	xcclinker)
-	  func_append linker_flags " $qarg"
-	  func_append compiler_flags " $qarg"
-	  prev=
-	  func_append compile_command " $qarg"
-	  func_append finalize_command " $qarg"
-	  continue
-	  ;;
-	xcompiler)
-	  func_append compiler_flags " $qarg"
-	  prev=
-	  func_append compile_command " $qarg"
-	  func_append finalize_command " $qarg"
-	  continue
-	  ;;
-	xlinker)
-	  func_append linker_flags " $qarg"
-	  func_append compiler_flags " $wl$qarg"
-	  prev=
-	  func_append compile_command " $wl$qarg"
-	  func_append finalize_command " $wl$qarg"
-	  continue
-	  ;;
-	*)
-	  eval "$prev=\"\$arg\""
-	  prev=
-	  continue
-	  ;;
-	esac
-      fi # test -n "$prev"
-
-      prevarg="$arg"
-
-      case $arg in
-      -all-static)
-	if test -n "$link_static_flag"; then
-	  # See comment for -static flag below, for more details.
-	  func_append compile_command " $link_static_flag"
-	  func_append finalize_command " $link_static_flag"
-	fi
-	continue
-	;;
-
-      -allow-undefined)
-	# FIXME: remove this flag sometime in the future.
-	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
-	;;
-
-      -avoid-version)
-	avoid_version=yes
-	continue
-	;;
-
-      -bindir)
-	prev=bindir
-	continue
-	;;
-
-      -dlopen)
-	prev=dlfiles
-	continue
-	;;
-
-      -dlpreopen)
-	prev=dlprefiles
-	continue
-	;;
-
-      -export-dynamic)
-	export_dynamic=yes
-	continue
-	;;
-
-      -export-symbols | -export-symbols-regex)
-	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
-	  func_fatal_error "more than one -exported-symbols argument is not allowed"
-	fi
-	if test "X$arg" = "X-export-symbols"; then
-	  prev=expsyms
-	else
-	  prev=expsyms_regex
-	fi
-	continue
-	;;
-
-      -framework)
-	prev=framework
-	continue
-	;;
-
-      -inst-prefix-dir)
-	prev=inst_prefix
-	continue
-	;;
-
-      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
-      # so, if we see these flags be careful not to treat them like -L
-      -L[A-Z][A-Z]*:*)
-	case $with_gcc/$host in
-	no/*-*-irix* | /*-*-irix*)
-	  func_append compile_command " $arg"
-	  func_append finalize_command " $arg"
-	  ;;
-	esac
-	continue
-	;;
-
-      -L*)
-	func_stripname "-L" '' "$arg"
-	if test -z "$func_stripname_result"; then
-	  if test "$#" -gt 0; then
-	    func_fatal_error "require no space between \`-L' and \`$1'"
-	  else
-	    func_fatal_error "need path for \`-L' option"
-	  fi
-	fi
-	func_resolve_sysroot "$func_stripname_result"
-	dir=$func_resolve_sysroot_result
-	# We need an absolute path.
-	case $dir in
-	[\\/]* | [A-Za-z]:[\\/]*) ;;
-	*)
-	  absdir=`cd "$dir" && pwd`
-	  test -z "$absdir" && \
-	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
-	  dir="$absdir"
-	  ;;
-	esac
-	case "$deplibs " in
-	*" -L$dir "* | *" $arg "*)
-	  # Will only happen for absolute or sysroot arguments
-	  ;;
-	*)
-	  # Preserve sysroot, but never include relative directories
-	  case $dir in
-	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
-	    *) func_append deplibs " -L$dir" ;;
-	  esac
-	  func_append lib_search_path " $dir"
-	  ;;
-	esac
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
-	  case :$dllsearchpath: in
-	  *":$dir:"*) ;;
-	  ::) dllsearchpath=$dir;;
-	  *) func_append dllsearchpath ":$dir";;
-	  esac
-	  case :$dllsearchpath: in
-	  *":$testbindir:"*) ;;
-	  ::) dllsearchpath=$testbindir;;
-	  *) func_append dllsearchpath ":$testbindir";;
-	  esac
-	  ;;
-	esac
-	continue
-	;;
-
-      -l*)
-	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
-	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
-	    # These systems don't actually have a C or math library (as such)
-	    continue
-	    ;;
-	  *-*-os2*)
-	    # These systems don't actually have a C library (as such)
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	    # Do not include libc due to us having libc/libc_r.
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-rhapsody* | *-*-darwin1.[012])
-	    # Rhapsody C and math libraries are in the System framework
-	    func_append deplibs " System.ltframework"
-	    continue
-	    ;;
-	  *-*-sco3.2v5* | *-*-sco5v6*)
-	    # Causes problems with __ctype
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-	    # Compiler inserts libc in the correct place for threads to work
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  esac
-	elif test "X$arg" = "X-lc_r"; then
-	 case $host in
-	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	   # Do not include libc_r directly, use -pthread flag.
-	   continue
-	   ;;
-	 esac
-	fi
-	func_append deplibs " $arg"
-	continue
-	;;
-
-      -module)
-	module=yes
-	continue
-	;;
-
-      # Tru64 UNIX uses -model [arg] to determine the layout of C++
-      # classes, name mangling, and exception handling.
-      # Darwin uses the -arch flag to determine output architecture.
-      -model|-arch|-isysroot|--sysroot)
-	func_append compiler_flags " $arg"
-	func_append compile_command " $arg"
-	func_append finalize_command " $arg"
-	prev=xcompiler
-	continue
-	;;
-
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
-      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-	func_append compiler_flags " $arg"
-	func_append compile_command " $arg"
-	func_append finalize_command " $arg"
-	case "$new_inherited_linker_flags " in
-	    *" $arg "*) ;;
-	    * ) func_append new_inherited_linker_flags " $arg" ;;
-	esac
-	continue
-	;;
-
-      -multi_module)
-	single_module="${wl}-multi_module"
-	continue
-	;;
-
-      -no-fast-install)
-	fast_install=no
-	continue
-	;;
-
-      -no-install)
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
-	  # The PATH hackery in wrapper scripts is required on Windows
-	  # and Darwin in order for the loader to find any dlls it needs.
-	  func_warning "\`-no-install' is ignored for $host"
-	  func_warning "assuming \`-no-fast-install' instead"
-	  fast_install=no
-	  ;;
-	*) no_install=yes ;;
-	esac
-	continue
-	;;
-
-      -no-undefined)
-	allow_undefined=no
-	continue
-	;;
-
-      -objectlist)
-	prev=objectlist
-	continue
-	;;
-
-      -o) prev=output ;;
-
-      -precious-files-regex)
-	prev=precious_regex
-	continue
-	;;
-
-      -release)
-	prev=release
-	continue
-	;;
-
-      -rpath)
-	prev=rpath
-	continue
-	;;
-
-      -R)
-	prev=xrpath
-	continue
-	;;
-
-      -R*)
-	func_stripname '-R' '' "$arg"
-	dir=$func_stripname_result
-	# We need an absolute path.
-	case $dir in
-	[\\/]* | [A-Za-z]:[\\/]*) ;;
-	=*)
-	  func_stripname '=' '' "$dir"
-	  dir=$lt_sysroot$func_stripname_result
-	  ;;
-	*)
-	  func_fatal_error "only absolute run-paths are allowed"
-	  ;;
-	esac
-	case "$xrpath " in
-	*" $dir "*) ;;
-	*) func_append xrpath " $dir" ;;
-	esac
-	continue
-	;;
-
-      -shared)
-	# The effects of -shared are defined in a previous loop.
-	continue
-	;;
-
-      -shrext)
-	prev=shrext
-	continue
-	;;
-
-      -static | -static-libtool-libs)
-	# The effects of -static are defined in a previous loop.
-	# We used to do the same as -all-static on platforms that
-	# didn't have a PIC flag, but the assumption that the effects
-	# would be equivalent was wrong.  It would break on at least
-	# Digital Unix and AIX.
-	continue
-	;;
-
-      -thread-safe)
-	thread_safe=yes
-	continue
-	;;
-
-      -version-info)
-	prev=vinfo
-	continue
-	;;
-
-      -version-number)
-	prev=vinfo
-	vinfo_number=yes
-	continue
-	;;
-
-      -weak)
-        prev=weak
-	continue
-	;;
-
-      -Wc,*)
-	func_stripname '-Wc,' '' "$arg"
-	args=$func_stripname_result
-	arg=
-	save_ifs="$IFS"; IFS=','
-	for flag in $args; do
-	  IFS="$save_ifs"
-          func_quote_for_eval "$flag"
-	  func_append arg " $func_quote_for_eval_result"
-	  func_append compiler_flags " $func_quote_for_eval_result"
-	done
-	IFS="$save_ifs"
-	func_stripname ' ' '' "$arg"
-	arg=$func_stripname_result
-	;;
-
-      -Wl,*)
-	func_stripname '-Wl,' '' "$arg"
-	args=$func_stripname_result
-	arg=
-	save_ifs="$IFS"; IFS=','
-	for flag in $args; do
-	  IFS="$save_ifs"
-          func_quote_for_eval "$flag"
-	  func_append arg " $wl$func_quote_for_eval_result"
-	  func_append compiler_flags " $wl$func_quote_for_eval_result"
-	  func_append linker_flags " $func_quote_for_eval_result"
-	done
-	IFS="$save_ifs"
-	func_stripname ' ' '' "$arg"
-	arg=$func_stripname_result
-	;;
-
-      -Xcompiler)
-	prev=xcompiler
-	continue
-	;;
-
-      -Xlinker)
-	prev=xlinker
-	continue
-	;;
-
-      -XCClinker)
-	prev=xcclinker
-	continue
-	;;
-
-      # -msg_* for osf cc
-      -msg_*)
-	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-
-      # Flags to be passed through unchanged, with rationale:
-      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
-      # -r[0-9][0-9]*        specify processor for the SGI compiler
-      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
-      # +DA*, +DD*           enable 64-bit mode for the HP compiler
-      # -q*                  compiler args for the IBM compiler
-      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
-      # -F/path              path to uninstalled frameworks, gcc on darwin
-      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
-      # @file                GCC response files
-      # -tp=*                Portland pgcc target processor selection
-      # --sysroot=*          for sysroot support
-      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
-      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
-        func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-        func_append compile_command " $arg"
-        func_append finalize_command " $arg"
-        func_append compiler_flags " $arg"
-        continue
-        ;;
-
-      # Some other compiler flag.
-      -* | +*)
-        func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-
-      *.$objext)
-	# A standard object.
-	func_append objs " $arg"
-	;;
-
-      *.lo)
-	# A libtool-controlled object.
-
-	# Check to see that this really is a libtool object.
-	if func_lalib_unsafe_p "$arg"; then
-	  pic_object=
-	  non_pic_object=
-
-	  # Read the .lo file
-	  func_source "$arg"
-
-	  if test -z "$pic_object" ||
-	     test -z "$non_pic_object" ||
-	     test "$pic_object" = none &&
-	     test "$non_pic_object" = none; then
-	    func_fatal_error "cannot find name of object for \`$arg'"
-	  fi
-
-	  # Extract subdirectory from the argument.
-	  func_dirname "$arg" "/" ""
-	  xdir="$func_dirname_result"
-
-	  if test "$pic_object" != none; then
-	    # Prepend the subdirectory the object is found in.
-	    pic_object="$xdir$pic_object"
-
-	    if test "$prev" = dlfiles; then
-	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		func_append dlfiles " $pic_object"
-		prev=
-		continue
-	      else
-		# If libtool objects are unsupported, then we need to preload.
-		prev=dlprefiles
-	      fi
-	    fi
-
-	    # CHECK ME:  I think I busted this.  -Ossama
-	    if test "$prev" = dlprefiles; then
-	      # Preload the old-style object.
-	      func_append dlprefiles " $pic_object"
-	      prev=
-	    fi
-
-	    # A PIC object.
-	    func_append libobjs " $pic_object"
-	    arg="$pic_object"
-	  fi
-
-	  # Non-PIC object.
-	  if test "$non_pic_object" != none; then
-	    # Prepend the subdirectory the object is found in.
-	    non_pic_object="$xdir$non_pic_object"
-
-	    # A standard non-PIC object
-	    func_append non_pic_objects " $non_pic_object"
-	    if test -z "$pic_object" || test "$pic_object" = none ; then
-	      arg="$non_pic_object"
-	    fi
-	  else
-	    # If the PIC object exists, use it instead.
-	    # $xdir was prepended to $pic_object above.
-	    non_pic_object="$pic_object"
-	    func_append non_pic_objects " $non_pic_object"
-	  fi
-	else
-	  # Only an error if not doing a dry-run.
-	  if $opt_dry_run; then
-	    # Extract subdirectory from the argument.
-	    func_dirname "$arg" "/" ""
-	    xdir="$func_dirname_result"
-
-	    func_lo2o "$arg"
-	    pic_object=$xdir$objdir/$func_lo2o_result
-	    non_pic_object=$xdir$func_lo2o_result
-	    func_append libobjs " $pic_object"
-	    func_append non_pic_objects " $non_pic_object"
-	  else
-	    func_fatal_error "\`$arg' is not a valid libtool object"
-	  fi
-	fi
-	;;
-
-      *.$libext)
-	# An archive.
-	func_append deplibs " $arg"
-	func_append old_deplibs " $arg"
-	continue
-	;;
-
-      *.la)
-	# A libtool-controlled library.
-
-	func_resolve_sysroot "$arg"
-	if test "$prev" = dlfiles; then
-	  # This library was specified with -dlopen.
-	  func_append dlfiles " $func_resolve_sysroot_result"
-	  prev=
-	elif test "$prev" = dlprefiles; then
-	  # The library was specified with -dlpreopen.
-	  func_append dlprefiles " $func_resolve_sysroot_result"
-	  prev=
-	else
-	  func_append deplibs " $func_resolve_sysroot_result"
-	fi
-	continue
-	;;
-
-      # Some other compiler argument.
-      *)
-	# Unknown arguments in both finalize_command and compile_command need
-	# to be aesthetically quoted because they are evaled later.
-	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-      esac # arg
-
-      # Now actually substitute the argument into the commands.
-      if test -n "$arg"; then
-	func_append compile_command " $arg"
-	func_append finalize_command " $arg"
-      fi
-    done # argument parsing loop
-
-    test -n "$prev" && \
-      func_fatal_help "the \`$prevarg' option requires an argument"
-
-    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
-      eval arg=\"$export_dynamic_flag_spec\"
-      func_append compile_command " $arg"
-      func_append finalize_command " $arg"
-    fi
-
-    oldlibs=
-    # calculate the name of the file, without its directory
-    func_basename "$output"
-    outputname="$func_basename_result"
-    libobjs_save="$libobjs"
-
-    if test -n "$shlibpath_var"; then
-      # get the directories listed in $shlibpath_var
-      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
-    else
-      shlib_search_path=
-    fi
-    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
-    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-
-    func_dirname "$output" "/" ""
-    output_objdir="$func_dirname_result$objdir"
-    func_to_tool_file "$output_objdir/"
-    tool_output_objdir=$func_to_tool_file_result
-    # Create the object directory.
-    func_mkdir_p "$output_objdir"
-
-    # Determine the type of output
-    case $output in
-    "")
-      func_fatal_help "you must specify an output file"
-      ;;
-    *.$libext) linkmode=oldlib ;;
-    *.lo | *.$objext) linkmode=obj ;;
-    *.la) linkmode=lib ;;
-    *) linkmode=prog ;; # Anything else should be a program.
-    esac
-
-    specialdeplibs=
-
-    libs=
-    # Find all interdependent deplibs by searching for libraries
-    # that are linked more than once (e.g. -la -lb -la)
-    for deplib in $deplibs; do
-      if $opt_preserve_dup_deps ; then
-	case "$libs " in
-	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
-	esac
-      fi
-      func_append libs " $deplib"
-    done
-
-    if test "$linkmode" = lib; then
-      libs="$predeps $libs $compiler_lib_search_path $postdeps"
-
-      # Compute libraries that are listed more than once in $predeps
-      # $postdeps and mark them as special (i.e., whose duplicates are
-      # not to be eliminated).
-      pre_post_deps=
-      if $opt_duplicate_compiler_generated_deps; then
-	for pre_post_dep in $predeps $postdeps; do
-	  case "$pre_post_deps " in
-	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
-	  esac
-	  func_append pre_post_deps " $pre_post_dep"
-	done
-      fi
-      pre_post_deps=
-    fi
-
-    deplibs=
-    newdependency_libs=
-    newlib_search_path=
-    need_relink=no # whether we're linking any uninstalled libtool libraries
-    notinst_deplibs= # not-installed libtool libraries
-    notinst_path= # paths that contain not-installed libtool libraries
-
-    case $linkmode in
-    lib)
-	passes="conv dlpreopen link"
-	for file in $dlfiles $dlprefiles; do
-	  case $file in
-	  *.la) ;;
-	  *)
-	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
-	    ;;
-	  esac
-	done
-	;;
-    prog)
-	compile_deplibs=
-	finalize_deplibs=
-	alldeplibs=no
-	newdlfiles=
-	newdlprefiles=
-	passes="conv scan dlopen dlpreopen link"
-	;;
-    *)  passes="conv"
-	;;
-    esac
-
-    for pass in $passes; do
-      # The preopen pass in lib mode reverses $deplibs; put it back here
-      # so that -L comes before libs that need it for instance...
-      if test "$linkmode,$pass" = "lib,link"; then
-	## FIXME: Find the place where the list is rebuilt in the wrong
-	##        order, and fix it there properly
-        tmp_deplibs=
-	for deplib in $deplibs; do
-	  tmp_deplibs="$deplib $tmp_deplibs"
-	done
-	deplibs="$tmp_deplibs"
-      fi
-
-      if test "$linkmode,$pass" = "lib,link" ||
-	 test "$linkmode,$pass" = "prog,scan"; then
-	libs="$deplibs"
-	deplibs=
-      fi
-      if test "$linkmode" = prog; then
-	case $pass in
-	dlopen) libs="$dlfiles" ;;
-	dlpreopen) libs="$dlprefiles" ;;
-	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
-	esac
-      fi
-      if test "$linkmode,$pass" = "lib,dlpreopen"; then
-	# Collect and forward deplibs of preopened libtool libs
-	for lib in $dlprefiles; do
-	  # Ignore non-libtool-libs
-	  dependency_libs=
-	  func_resolve_sysroot "$lib"
-	  case $lib in
-	  *.la)	func_source "$func_resolve_sysroot_result" ;;
-	  esac
-
-	  # Collect preopened libtool deplibs, except any this library
-	  # has declared as weak libs
-	  for deplib in $dependency_libs; do
-	    func_basename "$deplib"
-            deplib_base=$func_basename_result
-	    case " $weak_libs " in
-	    *" $deplib_base "*) ;;
-	    *) func_append deplibs " $deplib" ;;
-	    esac
-	  done
-	done
-	libs="$dlprefiles"
-      fi
-      if test "$pass" = dlopen; then
-	# Collect dlpreopened libraries
-	save_deplibs="$deplibs"
-	deplibs=
-      fi
-
-      for deplib in $libs; do
-	lib=
-	found=no
-	case $deplib in
-	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
-        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-	  if test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$deplib $compile_deplibs"
-	    finalize_deplibs="$deplib $finalize_deplibs"
-	  else
-	    func_append compiler_flags " $deplib"
-	    if test "$linkmode" = lib ; then
-		case "$new_inherited_linker_flags " in
-		    *" $deplib "*) ;;
-		    * ) func_append new_inherited_linker_flags " $deplib" ;;
-		esac
-	    fi
-	  fi
-	  continue
-	  ;;
-	-l*)
-	  if test "$linkmode" != lib && test "$linkmode" != prog; then
-	    func_warning "\`-l' is ignored for archives/objects"
-	    continue
-	  fi
-	  func_stripname '-l' '' "$deplib"
-	  name=$func_stripname_result
-	  if test "$linkmode" = lib; then
-	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
-	  else
-	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
-	  fi
-	  for searchdir in $searchdirs; do
-	    for search_ext in .la $std_shrext .so .a; do
-	      # Search the libtool library
-	      lib="$searchdir/lib${name}${search_ext}"
-	      if test -f "$lib"; then
-		if test "$search_ext" = ".la"; then
-		  found=yes
-		else
-		  found=no
-		fi
-		break 2
-	      fi
-	    done
-	  done
-	  if test "$found" != yes; then
-	    # deplib doesn't seem to be a libtool library
-	    if test "$linkmode,$pass" = "prog,link"; then
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    else
-	      deplibs="$deplib $deplibs"
-	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-	    fi
-	    continue
-	  else # deplib is a libtool library
-	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
-	    # We need to do some special things here, and not later.
-	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-	      case " $predeps $postdeps " in
-	      *" $deplib "*)
-		if func_lalib_p "$lib"; then
-		  library_names=
-		  old_library=
-		  func_source "$lib"
-		  for l in $old_library $library_names; do
-		    ll="$l"
-		  done
-		  if test "X$ll" = "X$old_library" ; then # only static version available
-		    found=no
-		    func_dirname "$lib" "" "."
-		    ladir="$func_dirname_result"
-		    lib=$ladir/$old_library
-		    if test "$linkmode,$pass" = "prog,link"; then
-		      compile_deplibs="$deplib $compile_deplibs"
-		      finalize_deplibs="$deplib $finalize_deplibs"
-		    else
-		      deplibs="$deplib $deplibs"
-		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-		    fi
-		    continue
-		  fi
-		fi
-		;;
-	      *) ;;
-	      esac
-	    fi
-	  fi
-	  ;; # -l
-	*.ltframework)
-	  if test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$deplib $compile_deplibs"
-	    finalize_deplibs="$deplib $finalize_deplibs"
-	  else
-	    deplibs="$deplib $deplibs"
-	    if test "$linkmode" = lib ; then
-		case "$new_inherited_linker_flags " in
-		    *" $deplib "*) ;;
-		    * ) func_append new_inherited_linker_flags " $deplib" ;;
-		esac
-	    fi
-	  fi
-	  continue
-	  ;;
-	-L*)
-	  case $linkmode in
-	  lib)
-	    deplibs="$deplib $deplibs"
-	    test "$pass" = conv && continue
-	    newdependency_libs="$deplib $newdependency_libs"
-	    func_stripname '-L' '' "$deplib"
-	    func_resolve_sysroot "$func_stripname_result"
-	    func_append newlib_search_path " $func_resolve_sysroot_result"
-	    ;;
-	  prog)
-	    if test "$pass" = conv; then
-	      deplibs="$deplib $deplibs"
-	      continue
-	    fi
-	    if test "$pass" = scan; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    fi
-	    func_stripname '-L' '' "$deplib"
-	    func_resolve_sysroot "$func_stripname_result"
-	    func_append newlib_search_path " $func_resolve_sysroot_result"
-	    ;;
-	  *)
-	    func_warning "\`-L' is ignored for archives/objects"
-	    ;;
-	  esac # linkmode
-	  continue
-	  ;; # -L
-	-R*)
-	  if test "$pass" = link; then
-	    func_stripname '-R' '' "$deplib"
-	    func_resolve_sysroot "$func_stripname_result"
-	    dir=$func_resolve_sysroot_result
-	    # Make sure the xrpath contains only unique directories.
-	    case "$xrpath " in
-	    *" $dir "*) ;;
-	    *) func_append xrpath " $dir" ;;
-	    esac
-	  fi
-	  deplibs="$deplib $deplibs"
-	  continue
-	  ;;
-	*.la)
-	  func_resolve_sysroot "$deplib"
-	  lib=$func_resolve_sysroot_result
-	  ;;
-	*.$libext)
-	  if test "$pass" = conv; then
-	    deplibs="$deplib $deplibs"
-	    continue
-	  fi
-	  case $linkmode in
-	  lib)
-	    # Linking convenience modules into shared libraries is allowed,
-	    # but linking other static libraries is non-portable.
-	    case " $dlpreconveniencelibs " in
-	    *" $deplib "*) ;;
-	    *)
-	      valid_a_lib=no
-	      case $deplibs_check_method in
-		match_pattern*)
-		  set dummy $deplibs_check_method; shift
-		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
-		    | $EGREP "$match_pattern_regex" > /dev/null; then
-		    valid_a_lib=yes
-		  fi
-		;;
-		pass_all)
-		  valid_a_lib=yes
-		;;
-	      esac
-	      if test "$valid_a_lib" != yes; then
-		echo
-		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
-		echo "*** I have the capability to make that library automatically link in when"
-		echo "*** you link to this library.  But I can only do this if you have a"
-		echo "*** shared version of the library, which you do not appear to have"
-		echo "*** because the file extensions .$libext of this argument makes me believe"
-		echo "*** that it is just a static archive that I should not use here."
-	      else
-		echo
-		$ECHO "*** Warning: Linking the shared library $output against the"
-		$ECHO "*** static library $deplib is not portable!"
-		deplibs="$deplib $deplibs"
-	      fi
-	      ;;
-	    esac
-	    continue
-	    ;;
-	  prog)
-	    if test "$pass" != link; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    fi
-	    continue
-	    ;;
-	  esac # linkmode
-	  ;; # *.$libext
-	*.lo | *.$objext)
-	  if test "$pass" = conv; then
-	    deplibs="$deplib $deplibs"
-	  elif test "$linkmode" = prog; then
-	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
-	      # If there is no dlopen support or we're linking statically,
-	      # we need to preload.
-	      func_append newdlprefiles " $deplib"
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    else
-	      func_append newdlfiles " $deplib"
-	    fi
-	  fi
-	  continue
-	  ;;
-	%DEPLIBS%)
-	  alldeplibs=yes
-	  continue
-	  ;;
-	esac # case $deplib
-
-	if test "$found" = yes || test -f "$lib"; then :
-	else
-	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
-	fi
-
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$lib" \
-	  || func_fatal_error "\`$lib' is not a valid libtool archive"
-
-	func_dirname "$lib" "" "."
-	ladir="$func_dirname_result"
-
-	dlname=
-	dlopen=
-	dlpreopen=
-	libdir=
-	library_names=
-	old_library=
-	inherited_linker_flags=
-	# If the library was installed with an old release of libtool,
-	# it will not redefine variables installed, or shouldnotlink
-	installed=yes
-	shouldnotlink=no
-	avoidtemprpath=
-
-
-	# Read the .la file
-	func_source "$lib"
-
-	# Convert "-framework foo" to "foo.ltframework"
-	if test -n "$inherited_linker_flags"; then
-	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
-	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
-	    case " $new_inherited_linker_flags " in
-	      *" $tmp_inherited_linker_flag "*) ;;
-	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
-	    esac
-	  done
-	fi
-	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	if test "$linkmode,$pass" = "lib,link" ||
-	   test "$linkmode,$pass" = "prog,scan" ||
-	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
-	  test -n "$dlopen" && func_append dlfiles " $dlopen"
-	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
-	fi
-
-	if test "$pass" = conv; then
-	  # Only check for convenience libraries
-	  deplibs="$lib $deplibs"
-	  if test -z "$libdir"; then
-	    if test -z "$old_library"; then
-	      func_fatal_error "cannot find name of link library for \`$lib'"
-	    fi
-	    # It is a libtool convenience library, so add in its objects.
-	    func_append convenience " $ladir/$objdir/$old_library"
-	    func_append old_convenience " $ladir/$objdir/$old_library"
-	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
-	    func_fatal_error "\`$lib' is not a convenience library"
-	  fi
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    deplibs="$deplib $deplibs"
-	    if $opt_preserve_dup_deps ; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
-	      esac
-	    fi
-	    func_append tmp_libs " $deplib"
-	  done
-	  continue
-	fi # $pass = conv
-
-
-	# Get the name of the library we link against.
-	linklib=
-	if test -n "$old_library" &&
-	   { test "$prefer_static_libs" = yes ||
-	     test "$prefer_static_libs,$installed" = "built,no"; }; then
-	  linklib=$old_library
-	else
-	  for l in $old_library $library_names; do
-	    linklib="$l"
-	  done
-	fi
-	if test -z "$linklib"; then
-	  func_fatal_error "cannot find name of link library for \`$lib'"
-	fi
-
-	# This library was specified with -dlopen.
-	if test "$pass" = dlopen; then
-	  if test -z "$libdir"; then
-	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
-	  fi
-	  if test -z "$dlname" ||
-	     test "$dlopen_support" != yes ||
-	     test "$build_libtool_libs" = no; then
-	    # If there is no dlname, no dlopen support or we're linking
-	    # statically, we need to preload.  We also need to preload any
-	    # dependent libraries so libltdl's deplib preloader doesn't
-	    # bomb out in the load deplibs phase.
-	    func_append dlprefiles " $lib $dependency_libs"
-	  else
-	    func_append newdlfiles " $lib"
-	  fi
-	  continue
-	fi # $pass = dlopen
-
-	# We need an absolute path.
-	case $ladir in
-	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
-	*)
-	  abs_ladir=`cd "$ladir" && pwd`
-	  if test -z "$abs_ladir"; then
-	    func_warning "cannot determine absolute directory name of \`$ladir'"
-	    func_warning "passing it literally to the linker, although it might fail"
-	    abs_ladir="$ladir"
-	  fi
-	  ;;
-	esac
-	func_basename "$lib"
-	laname="$func_basename_result"
-
-	# Find the relevant object directory and library name.
-	if test "X$installed" = Xyes; then
-	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    func_warning "library \`$lib' was moved."
-	    dir="$ladir"
-	    absdir="$abs_ladir"
-	    libdir="$abs_ladir"
-	  else
-	    dir="$lt_sysroot$libdir"
-	    absdir="$lt_sysroot$libdir"
-	  fi
-	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
-	else
-	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    dir="$ladir"
-	    absdir="$abs_ladir"
-	    # Remove this search path later
-	    func_append notinst_path " $abs_ladir"
-	  else
-	    dir="$ladir/$objdir"
-	    absdir="$abs_ladir/$objdir"
-	    # Remove this search path later
-	    func_append notinst_path " $abs_ladir"
-	  fi
-	fi # $installed = yes
-	func_stripname 'lib' '.la' "$laname"
-	name=$func_stripname_result
-
-	# This library was specified with -dlpreopen.
-	if test "$pass" = dlpreopen; then
-	  if test -z "$libdir" && test "$linkmode" = prog; then
-	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
-	  fi
-	  case "$host" in
-	    # special handling for platforms with PE-DLLs.
-	    *cygwin* | *mingw* | *cegcc* )
-	      # Linker will automatically link against shared library if both
-	      # static and shared are present.  Therefore, ensure we extract
-	      # symbols from the import library if a shared library is present
-	      # (otherwise, the dlopen module name will be incorrect).  We do
-	      # this by putting the import library name into $newdlprefiles.
-	      # We recover the dlopen module name by 'saving' the la file
-	      # name in a special purpose variable, and (later) extracting the
-	      # dlname from the la file.
-	      if test -n "$dlname"; then
-	        func_tr_sh "$dir/$linklib"
-	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
-	        func_append newdlprefiles " $dir/$linklib"
-	      else
-	        func_append newdlprefiles " $dir/$old_library"
-	        # Keep a list of preopened convenience libraries to check
-	        # that they are being used correctly in the link pass.
-	        test -z "$libdir" && \
-	          func_append dlpreconveniencelibs " $dir/$old_library"
-	      fi
-	    ;;
-	    * )
-	      # Prefer using a static library (so that no silly _DYNAMIC symbols
-	      # are required to link).
-	      if test -n "$old_library"; then
-	        func_append newdlprefiles " $dir/$old_library"
-	        # Keep a list of preopened convenience libraries to check
-	        # that they are being used correctly in the link pass.
-	        test -z "$libdir" && \
-	          func_append dlpreconveniencelibs " $dir/$old_library"
-	      # Otherwise, use the dlname, so that lt_dlopen finds it.
-	      elif test -n "$dlname"; then
-	        func_append newdlprefiles " $dir/$dlname"
-	      else
-	        func_append newdlprefiles " $dir/$linklib"
-	      fi
-	    ;;
-	  esac
-	fi # $pass = dlpreopen
-
-	if test -z "$libdir"; then
-	  # Link the convenience library
-	  if test "$linkmode" = lib; then
-	    deplibs="$dir/$old_library $deplibs"
-	  elif test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$dir/$old_library $compile_deplibs"
-	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
-	  else
-	    deplibs="$lib $deplibs" # used for prog,scan pass
-	  fi
-	  continue
-	fi
-
-
-	if test "$linkmode" = prog && test "$pass" != link; then
-	  func_append newlib_search_path " $ladir"
-	  deplibs="$lib $deplibs"
-
-	  linkalldeplibs=no
-	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
-	     test "$build_libtool_libs" = no; then
-	    linkalldeplibs=yes
-	  fi
-
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    case $deplib in
-	    -L*) func_stripname '-L' '' "$deplib"
-	         func_resolve_sysroot "$func_stripname_result"
-	         func_append newlib_search_path " $func_resolve_sysroot_result"
-		 ;;
-	    esac
-	    # Need to link against all dependency_libs?
-	    if test "$linkalldeplibs" = yes; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      # Need to hardcode shared library paths
-	      # or/and link against static libraries
-	      newdependency_libs="$deplib $newdependency_libs"
-	    fi
-	    if $opt_preserve_dup_deps ; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
-	      esac
-	    fi
-	    func_append tmp_libs " $deplib"
-	  done # for deplib
-	  continue
-	fi # $linkmode = prog...
-
-	if test "$linkmode,$pass" = "prog,link"; then
-	  if test -n "$library_names" &&
-	     { { test "$prefer_static_libs" = no ||
-	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
-	       test -z "$old_library"; }; then
-	    # We need to hardcode the library path
-	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
-	      # Make sure the rpath contains only unique directories.
-	      case "$temp_rpath:" in
-	      *"$absdir:"*) ;;
-	      *) func_append temp_rpath "$absdir:" ;;
-	      esac
-	    fi
-
-	    # Hardcode the library path.
-	    # Skip directories that are in the system default run-time
-	    # search path.
-	    case " $sys_lib_dlsearch_path " in
-	    *" $absdir "*) ;;
-	    *)
-	      case "$compile_rpath " in
-	      *" $absdir "*) ;;
-	      *) func_append compile_rpath " $absdir" ;;
-	      esac
-	      ;;
-	    esac
-	    case " $sys_lib_dlsearch_path " in
-	    *" $libdir "*) ;;
-	    *)
-	      case "$finalize_rpath " in
-	      *" $libdir "*) ;;
-	      *) func_append finalize_rpath " $libdir" ;;
-	      esac
-	      ;;
-	    esac
-	  fi # $linkmode,$pass = prog,link...
-
-	  if test "$alldeplibs" = yes &&
-	     { test "$deplibs_check_method" = pass_all ||
-	       { test "$build_libtool_libs" = yes &&
-		 test -n "$library_names"; }; }; then
-	    # We only need to search for static libraries
-	    continue
-	  fi
-	fi
-
-	link_static=no # Whether the deplib will be linked statically
-	use_static_libs=$prefer_static_libs
-	if test "$use_static_libs" = built && test "$installed" = yes; then
-	  use_static_libs=no
-	fi
-	if test -n "$library_names" &&
-	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
-	  case $host in
-	  *cygwin* | *mingw* | *cegcc*)
-	      # No point in relinking DLLs because paths are not encoded
-	      func_append notinst_deplibs " $lib"
-	      need_relink=no
-	    ;;
-	  *)
-	    if test "$installed" = no; then
-	      func_append notinst_deplibs " $lib"
-	      need_relink=yes
-	    fi
-	    ;;
-	  esac
-	  # This is a shared library
-
-	  # Warn about portability, can't link against -module's on some
-	  # systems (darwin).  Don't bleat about dlopened modules though!
-	  dlopenmodule=""
-	  for dlpremoduletest in $dlprefiles; do
-	    if test "X$dlpremoduletest" = "X$lib"; then
-	      dlopenmodule="$dlpremoduletest"
-	      break
-	    fi
-	  done
-	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
-	    echo
-	    if test "$linkmode" = prog; then
-	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
-	    else
-	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
-	    fi
-	    $ECHO "*** $linklib is not portable!"
-	  fi
-	  if test "$linkmode" = lib &&
-	     test "$hardcode_into_libs" = yes; then
-	    # Hardcode the library path.
-	    # Skip directories that are in the system default run-time
-	    # search path.
-	    case " $sys_lib_dlsearch_path " in
-	    *" $absdir "*) ;;
-	    *)
-	      case "$compile_rpath " in
-	      *" $absdir "*) ;;
-	      *) func_append compile_rpath " $absdir" ;;
-	      esac
-	      ;;
-	    esac
-	    case " $sys_lib_dlsearch_path " in
-	    *" $libdir "*) ;;
-	    *)
-	      case "$finalize_rpath " in
-	      *" $libdir "*) ;;
-	      *) func_append finalize_rpath " $libdir" ;;
-	      esac
-	      ;;
-	    esac
-	  fi
-
-	  if test -n "$old_archive_from_expsyms_cmds"; then
-	    # figure out the soname
-	    set dummy $library_names
-	    shift
-	    realname="$1"
-	    shift
-	    libname=`eval "\\$ECHO \"$libname_spec\""`
-	    # use dlname if we got it. it's perfectly good, no?
-	    if test -n "$dlname"; then
-	      soname="$dlname"
-	    elif test -n "$soname_spec"; then
-	      # bleh windows
-	      case $host in
-	      *cygwin* | mingw* | *cegcc*)
-	        func_arith $current - $age
-		major=$func_arith_result
-		versuffix="-$major"
-		;;
-	      esac
-	      eval soname=\"$soname_spec\"
-	    else
-	      soname="$realname"
-	    fi
-
-	    # Make a new name for the extract_expsyms_cmds to use
-	    soroot="$soname"
-	    func_basename "$soroot"
-	    soname="$func_basename_result"
-	    func_stripname 'lib' '.dll' "$soname"
-	    newlib=libimp-$func_stripname_result.a
-
-	    # If the library has no export list, then create one now
-	    if test -f "$output_objdir/$soname-def"; then :
-	    else
-	      func_verbose "extracting exported symbol list from \`$soname'"
-	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
-	    fi
-
-	    # Create $newlib
-	    if test -f "$output_objdir/$newlib"; then :; else
-	      func_verbose "generating import library for \`$soname'"
-	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
-	    fi
-	    # make sure the library variables are pointing to the new library
-	    dir=$output_objdir
-	    linklib=$newlib
-	  fi # test -n "$old_archive_from_expsyms_cmds"
-
-	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
-	    add_shlibpath=
-	    add_dir=
-	    add=
-	    lib_linked=yes
-	    case $hardcode_action in
-	    immediate | unsupported)
-	      if test "$hardcode_direct" = no; then
-		add="$dir/$linklib"
-		case $host in
-		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
-		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
-		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
-		    *-*-unixware7*) add_dir="-L$dir" ;;
-		  *-*-darwin* )
-		    # if the lib is a (non-dlopened) module then we can not
-		    # link against it, someone is ignoring the earlier warnings
-		    if /usr/bin/file -L $add 2> /dev/null |
-			 $GREP ": [^:]* bundle" >/dev/null ; then
-		      if test "X$dlopenmodule" != "X$lib"; then
-			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
-			if test -z "$old_library" ; then
-			  echo
-			  echo "*** And there doesn't seem to be a static archive available"
-			  echo "*** The link will probably fail, sorry"
-			else
-			  add="$dir/$old_library"
-			fi
-		      elif test -n "$old_library"; then
-			add="$dir/$old_library"
-		      fi
-		    fi
-		esac
-	      elif test "$hardcode_minus_L" = no; then
-		case $host in
-		*-*-sunos*) add_shlibpath="$dir" ;;
-		esac
-		add_dir="-L$dir"
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = no; then
-		add_shlibpath="$dir"
-		add="-l$name"
-	      else
-		lib_linked=no
-	      fi
-	      ;;
-	    relink)
-	      if test "$hardcode_direct" = yes &&
-	         test "$hardcode_direct_absolute" = no; then
-		add="$dir/$linklib"
-	      elif test "$hardcode_minus_L" = yes; then
-		add_dir="-L$absdir"
-		# Try looking first in the location we're being installed to.
-		if test -n "$inst_prefix_dir"; then
-		  case $libdir in
-		    [\\/]*)
-		      func_append add_dir " -L$inst_prefix_dir$libdir"
-		      ;;
-		  esac
-		fi
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = yes; then
-		add_shlibpath="$dir"
-		add="-l$name"
-	      else
-		lib_linked=no
-	      fi
-	      ;;
-	    *) lib_linked=no ;;
-	    esac
-
-	    if test "$lib_linked" != yes; then
-	      func_fatal_configuration "unsupported hardcode properties"
-	    fi
-
-	    if test -n "$add_shlibpath"; then
-	      case :$compile_shlibpath: in
-	      *":$add_shlibpath:"*) ;;
-	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
-	      esac
-	    fi
-	    if test "$linkmode" = prog; then
-	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
-	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
-	    else
-	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
-	      test -n "$add" && deplibs="$add $deplibs"
-	      if test "$hardcode_direct" != yes &&
-		 test "$hardcode_minus_L" != yes &&
-		 test "$hardcode_shlibpath_var" = yes; then
-		case :$finalize_shlibpath: in
-		*":$libdir:"*) ;;
-		*) func_append finalize_shlibpath "$libdir:" ;;
-		esac
-	      fi
-	    fi
-	  fi
-
-	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
-	    add_shlibpath=
-	    add_dir=
-	    add=
-	    # Finalize command for both is simple: just hardcode it.
-	    if test "$hardcode_direct" = yes &&
-	       test "$hardcode_direct_absolute" = no; then
-	      add="$libdir/$linklib"
-	    elif test "$hardcode_minus_L" = yes; then
-	      add_dir="-L$libdir"
-	      add="-l$name"
-	    elif test "$hardcode_shlibpath_var" = yes; then
-	      case :$finalize_shlibpath: in
-	      *":$libdir:"*) ;;
-	      *) func_append finalize_shlibpath "$libdir:" ;;
-	      esac
-	      add="-l$name"
-	    elif test "$hardcode_automatic" = yes; then
-	      if test -n "$inst_prefix_dir" &&
-		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
-		add="$inst_prefix_dir$libdir/$linklib"
-	      else
-		add="$libdir/$linklib"
-	      fi
-	    else
-	      # We cannot seem to hardcode it, guess we'll fake it.
-	      add_dir="-L$libdir"
-	      # Try looking first in the location we're being installed to.
-	      if test -n "$inst_prefix_dir"; then
-		case $libdir in
-		  [\\/]*)
-		    func_append add_dir " -L$inst_prefix_dir$libdir"
-		    ;;
-		esac
-	      fi
-	      add="-l$name"
-	    fi
-
-	    if test "$linkmode" = prog; then
-	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
-	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
-	    else
-	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
-	      test -n "$add" && deplibs="$add $deplibs"
-	    fi
-	  fi
-	elif test "$linkmode" = prog; then
-	  # Here we assume that one of hardcode_direct or hardcode_minus_L
-	  # is not unsupported.  This is valid on all known static and
-	  # shared platforms.
-	  if test "$hardcode_direct" != unsupported; then
-	    test -n "$old_library" && linklib="$old_library"
-	    compile_deplibs="$dir/$linklib $compile_deplibs"
-	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
-	  else
-	    compile_deplibs="-l$name -L$dir $compile_deplibs"
-	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
-	  fi
-	elif test "$build_libtool_libs" = yes; then
-	  # Not a shared library
-	  if test "$deplibs_check_method" != pass_all; then
-	    # We're trying link a shared library against a static one
-	    # but the system doesn't support it.
-
-	    # Just print a warning and add the library to dependency_libs so
-	    # that the program can be linked against the static library.
-	    echo
-	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
-	    echo "*** I have the capability to make that library automatically link in when"
-	    echo "*** you link to this library.  But I can only do this if you have a"
-	    echo "*** shared version of the library, which you do not appear to have."
-	    if test "$module" = yes; then
-	      echo "*** But as you try to build a module library, libtool will still create "
-	      echo "*** a static module, that should work as long as the dlopening application"
-	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
-	      if test -z "$global_symbol_pipe"; then
-		echo
-		echo "*** However, this would only work if libtool was able to extract symbol"
-		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
-		echo "*** not find such a program.  So, this module is probably useless."
-		echo "*** \`nm' from GNU binutils and a full rebuild may help."
-	      fi
-	      if test "$build_old_libs" = no; then
-		build_libtool_libs=module
-		build_old_libs=yes
-	      else
-		build_libtool_libs=no
-	      fi
-	    fi
-	  else
-	    deplibs="$dir/$old_library $deplibs"
-	    link_static=yes
-	  fi
-	fi # link shared/static library?
-
-	if test "$linkmode" = lib; then
-	  if test -n "$dependency_libs" &&
-	     { test "$hardcode_into_libs" != yes ||
-	       test "$build_old_libs" = yes ||
-	       test "$link_static" = yes; }; then
-	    # Extract -R from dependency_libs
-	    temp_deplibs=
-	    for libdir in $dependency_libs; do
-	      case $libdir in
-	      -R*) func_stripname '-R' '' "$libdir"
-	           temp_xrpath=$func_stripname_result
-		   case " $xrpath " in
-		   *" $temp_xrpath "*) ;;
-		   *) func_append xrpath " $temp_xrpath";;
-		   esac;;
-	      *) func_append temp_deplibs " $libdir";;
-	      esac
-	    done
-	    dependency_libs="$temp_deplibs"
-	  fi
-
-	  func_append newlib_search_path " $absdir"
-	  # Link against this library
-	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
-	  # ... and its dependency_libs
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    newdependency_libs="$deplib $newdependency_libs"
-	    case $deplib in
-              -L*) func_stripname '-L' '' "$deplib"
-                   func_resolve_sysroot "$func_stripname_result";;
-              *) func_resolve_sysroot "$deplib" ;;
-            esac
-	    if $opt_preserve_dup_deps ; then
-	      case "$tmp_libs " in
-	      *" $func_resolve_sysroot_result "*)
-                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
-	      esac
-	    fi
-	    func_append tmp_libs " $func_resolve_sysroot_result"
-	  done
-
-	  if test "$link_all_deplibs" != no; then
-	    # Add the search paths of all dependency libraries
-	    for deplib in $dependency_libs; do
-	      path=
-	      case $deplib in
-	      -L*) path="$deplib" ;;
-	      *.la)
-	        func_resolve_sysroot "$deplib"
-	        deplib=$func_resolve_sysroot_result
-	        func_dirname "$deplib" "" "."
-		dir=$func_dirname_result
-		# We need an absolute path.
-		case $dir in
-		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
-		*)
-		  absdir=`cd "$dir" && pwd`
-		  if test -z "$absdir"; then
-		    func_warning "cannot determine absolute directory name of \`$dir'"
-		    absdir="$dir"
-		  fi
-		  ;;
-		esac
-		if $GREP "^installed=no" $deplib > /dev/null; then
-		case $host in
-		*-*-darwin*)
-		  depdepl=
-		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
-		  if test -n "$deplibrary_names" ; then
-		    for tmp in $deplibrary_names ; do
-		      depdepl=$tmp
-		    done
-		    if test -f "$absdir/$objdir/$depdepl" ; then
-		      depdepl="$absdir/$objdir/$depdepl"
-		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
-                      if test -z "$darwin_install_name"; then
-                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
-                      fi
-		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
-		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
-		      path=
-		    fi
-		  fi
-		  ;;
-		*)
-		  path="-L$absdir/$objdir"
-		  ;;
-		esac
-		else
-		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-		  test -z "$libdir" && \
-		    func_fatal_error "\`$deplib' is not a valid libtool archive"
-		  test "$absdir" != "$libdir" && \
-		    func_warning "\`$deplib' seems to be moved"
-
-		  path="-L$absdir"
-		fi
-		;;
-	      esac
-	      case " $deplibs " in
-	      *" $path "*) ;;
-	      *) deplibs="$path $deplibs" ;;
-	      esac
-	    done
-	  fi # link_all_deplibs != no
-	fi # linkmode = lib
-      done # for deplib in $libs
-      if test "$pass" = link; then
-	if test "$linkmode" = "prog"; then
-	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
-	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
-	else
-	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	fi
-      fi
-      dependency_libs="$newdependency_libs"
-      if test "$pass" = dlpreopen; then
-	# Link the dlpreopened libraries before other libraries
-	for deplib in $save_deplibs; do
-	  deplibs="$deplib $deplibs"
-	done
-      fi
-      if test "$pass" != dlopen; then
-	if test "$pass" != conv; then
-	  # Make sure lib_search_path contains only unique directories.
-	  lib_search_path=
-	  for dir in $newlib_search_path; do
-	    case "$lib_search_path " in
-	    *" $dir "*) ;;
-	    *) func_append lib_search_path " $dir" ;;
-	    esac
-	  done
-	  newlib_search_path=
-	fi
-
-	if test "$linkmode,$pass" != "prog,link"; then
-	  vars="deplibs"
-	else
-	  vars="compile_deplibs finalize_deplibs"
-	fi
-	for var in $vars dependency_libs; do
-	  # Add libraries to $var in reverse order
-	  eval tmp_libs=\"\$$var\"
-	  new_libs=
-	  for deplib in $tmp_libs; do
-	    # FIXME: Pedantically, this is the right thing to do, so
-	    #        that some nasty dependency loop isn't accidentally
-	    #        broken:
-	    #new_libs="$deplib $new_libs"
-	    # Pragmatically, this seems to cause very few problems in
-	    # practice:
-	    case $deplib in
-	    -L*) new_libs="$deplib $new_libs" ;;
-	    -R*) ;;
-	    *)
-	      # And here is the reason: when a library appears more
-	      # than once as an explicit dependence of a library, or
-	      # is implicitly linked in more than once by the
-	      # compiler, it is considered special, and multiple
-	      # occurrences thereof are not removed.  Compare this
-	      # with having the same library being listed as a
-	      # dependency of multiple other libraries: in this case,
-	      # we know (pedantically, we assume) the library does not
-	      # need to be listed more than once, so we keep only the
-	      # last copy.  This is not always right, but it is rare
-	      # enough that we require users that really mean to play
-	      # such unportable linking tricks to link the library
-	      # using -Wl,-lname, so that libtool does not consider it
-	      # for duplicate removal.
-	      case " $specialdeplibs " in
-	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
-	      *)
-		case " $new_libs " in
-		*" $deplib "*) ;;
-		*) new_libs="$deplib $new_libs" ;;
-		esac
-		;;
-	      esac
-	      ;;
-	    esac
-	  done
-	  tmp_libs=
-	  for deplib in $new_libs; do
-	    case $deplib in
-	    -L*)
-	      case " $tmp_libs " in
-	      *" $deplib "*) ;;
-	      *) func_append tmp_libs " $deplib" ;;
-	      esac
-	      ;;
-	    *) func_append tmp_libs " $deplib" ;;
-	    esac
-	  done
-	  eval $var=\"$tmp_libs\"
-	done # for var
-      fi
-      # Last step: remove runtime libs from dependency_libs
-      # (they stay in deplibs)
-      tmp_libs=
-      for i in $dependency_libs ; do
-	case " $predeps $postdeps $compiler_lib_search_path " in
-	*" $i "*)
-	  i=""
-	  ;;
-	esac
-	if test -n "$i" ; then
-	  func_append tmp_libs " $i"
-	fi
-      done
-      dependency_libs=$tmp_libs
-    done # for pass
-    if test "$linkmode" = prog; then
-      dlfiles="$newdlfiles"
-    fi
-    if test "$linkmode" = prog || test "$linkmode" = lib; then
-      dlprefiles="$newdlprefiles"
-    fi
-
-    case $linkmode in
-    oldlib)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for archives"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for archives" ;;
-      esac
-
-      test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for archives"
-
-      test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for archives"
-
-      test -n "$vinfo" && \
-	func_warning "\`-version-info/-version-number' is ignored for archives"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for archives"
-
-      test -n "$export_symbols$export_symbols_regex" && \
-	func_warning "\`-export-symbols' is ignored for archives"
-
-      # Now set the variables for building old libraries.
-      build_libtool_libs=no
-      oldlibs="$output"
-      func_append objs "$old_deplibs"
-      ;;
-
-    lib)
-      # Make sure we only generate libraries of the form `libNAME.la'.
-      case $outputname in
-      lib*)
-	func_stripname 'lib' '.la' "$outputname"
-	name=$func_stripname_result
-	eval shared_ext=\"$shrext_cmds\"
-	eval libname=\"$libname_spec\"
-	;;
-      *)
-	test "$module" = no && \
-	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
-
-	if test "$need_lib_prefix" != no; then
-	  # Add the "lib" prefix for modules if required
-	  func_stripname '' '.la' "$outputname"
-	  name=$func_stripname_result
-	  eval shared_ext=\"$shrext_cmds\"
-	  eval libname=\"$libname_spec\"
-	else
-	  func_stripname '' '.la' "$outputname"
-	  libname=$func_stripname_result
-	fi
-	;;
-      esac
-
-      if test -n "$objs"; then
-	if test "$deplibs_check_method" != pass_all; then
-	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
-	else
-	  echo
-	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
-	  $ECHO "*** objects $objs is not portable!"
-	  func_append libobjs " $objs"
-	fi
-      fi
-
-      test "$dlself" != no && \
-	func_warning "\`-dlopen self' is ignored for libtool libraries"
-
-      set dummy $rpath
-      shift
-      test "$#" -gt 1 && \
-	func_warning "ignoring multiple \`-rpath's for a libtool library"
-
-      install_libdir="$1"
-
-      oldlibs=
-      if test -z "$rpath"; then
-	if test "$build_libtool_libs" = yes; then
-	  # Building a libtool convenience library.
-	  # Some compilers have problems with a `.al' extension so
-	  # convenience libraries should have the same extension an
-	  # archive normally would.
-	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
-	  build_libtool_libs=convenience
-	  build_old_libs=yes
-	fi
-
-	test -n "$vinfo" && \
-	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
-
-	test -n "$release" && \
-	  func_warning "\`-release' is ignored for convenience libraries"
-      else
-
-	# Parse the version information argument.
-	save_ifs="$IFS"; IFS=':'
-	set dummy $vinfo 0 0 0
-	shift
-	IFS="$save_ifs"
-
-	test -n "$7" && \
-	  func_fatal_help "too many parameters to \`-version-info'"
-
-	# convert absolute version numbers to libtool ages
-	# this retains compatibility with .la files and attempts
-	# to make the code below a bit more comprehensible
-
-	case $vinfo_number in
-	yes)
-	  number_major="$1"
-	  number_minor="$2"
-	  number_revision="$3"
-	  #
-	  # There are really only two kinds -- those that
-	  # use the current revision as the major version
-	  # and those that subtract age and use age as
-	  # a minor version.  But, then there is irix
-	  # which has an extra 1 added just for fun
-	  #
-	  case $version_type in
-	  # correct linux to gnu/linux during the next big refactor
-	  darwin|linux|osf|windows|none)
-	    func_arith $number_major + $number_minor
-	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_revision"
-	    ;;
-	  freebsd-aout|freebsd-elf|qnx|sunos)
-	    current="$number_major"
-	    revision="$number_minor"
-	    age="0"
-	    ;;
-	  irix|nonstopux)
-	    func_arith $number_major + $number_minor
-	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_minor"
-	    lt_irix_increment=no
-	    ;;
-	  esac
-	  ;;
-	no)
-	  current="$1"
-	  revision="$2"
-	  age="$3"
-	  ;;
-	esac
-
-	# Check that each of the things are valid numbers.
-	case $current in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "CURRENT \`$current' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	case $revision in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "REVISION \`$revision' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	case $age in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "AGE \`$age' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	if test "$age" -gt "$current"; then
-	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	fi
-
-	# Calculate the version variables.
-	major=
-	versuffix=
-	verstring=
-	case $version_type in
-	none) ;;
-
-	darwin)
-	  # Like Linux, but with the current version available in
-	  # verstring for coding it into the library header
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
-	  # Darwin ld doesn't like 0 for these options...
-	  func_arith $current + 1
-	  minor_current=$func_arith_result
-	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
-	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
-	  ;;
-
-	freebsd-aout)
-	  major=".$current"
-	  versuffix=".$current.$revision";
-	  ;;
-
-	freebsd-elf)
-	  major=".$current"
-	  versuffix=".$current"
-	  ;;
-
-	irix | nonstopux)
-	  if test "X$lt_irix_increment" = "Xno"; then
-	    func_arith $current - $age
-	  else
-	    func_arith $current - $age + 1
-	  fi
-	  major=$func_arith_result
-
-	  case $version_type in
-	    nonstopux) verstring_prefix=nonstopux ;;
-	    *)         verstring_prefix=sgi ;;
-	  esac
-	  verstring="$verstring_prefix$major.$revision"
-
-	  # Add in all the interfaces that we are compatible with.
-	  loop=$revision
-	  while test "$loop" -ne 0; do
-	    func_arith $revision - $loop
-	    iface=$func_arith_result
-	    func_arith $loop - 1
-	    loop=$func_arith_result
-	    verstring="$verstring_prefix$major.$iface:$verstring"
-	  done
-
-	  # Before this point, $major must not contain `.'.
-	  major=.$major
-	  versuffix="$major.$revision"
-	  ;;
-
-	linux) # correct to gnu/linux during the next big refactor
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
-	  ;;
-
-	osf)
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix=".$current.$age.$revision"
-	  verstring="$current.$age.$revision"
-
-	  # Add in all the interfaces that we are compatible with.
-	  loop=$age
-	  while test "$loop" -ne 0; do
-	    func_arith $current - $loop
-	    iface=$func_arith_result
-	    func_arith $loop - 1
-	    loop=$func_arith_result
-	    verstring="$verstring:${iface}.0"
-	  done
-
-	  # Make executables depend on our current version.
-	  func_append verstring ":${current}.0"
-	  ;;
-
-	qnx)
-	  major=".$current"
-	  versuffix=".$current"
-	  ;;
-
-	sunos)
-	  major=".$current"
-	  versuffix=".$current.$revision"
-	  ;;
-
-	windows)
-	  # Use '-' rather than '.', since we only want one
-	  # extension on DOS 8.3 filesystems.
-	  func_arith $current - $age
-	  major=$func_arith_result
-	  versuffix="-$major"
-	  ;;
-
-	*)
-	  func_fatal_configuration "unknown library version type \`$version_type'"
-	  ;;
-	esac
-
-	# Clear the version info if we defaulted, and they specified a release.
-	if test -z "$vinfo" && test -n "$release"; then
-	  major=
-	  case $version_type in
-	  darwin)
-	    # we can't check for "0.0" in archive_cmds due to quoting
-	    # problems, so we reset it completely
-	    verstring=
-	    ;;
-	  *)
-	    verstring="0.0"
-	    ;;
-	  esac
-	  if test "$need_version" = no; then
-	    versuffix=
-	  else
-	    versuffix=".0.0"
-	  fi
-	fi
-
-	# Remove version info from name if versioning should be avoided
-	if test "$avoid_version" = yes && test "$need_version" = no; then
-	  major=
-	  versuffix=
-	  verstring=""
-	fi
-
-	# Check to see if the archive will have undefined symbols.
-	if test "$allow_undefined" = yes; then
-	  if test "$allow_undefined_flag" = unsupported; then
-	    func_warning "undefined symbols not allowed in $host shared libraries"
-	    build_libtool_libs=no
-	    build_old_libs=yes
-	  fi
-	else
-	  # Don't allow undefined symbols.
-	  allow_undefined_flag="$no_undefined_flag"
-	fi
-
-      fi
-
-      func_generate_dlsyms "$libname" "$libname" "yes"
-      func_append libobjs " $symfileobj"
-      test "X$libobjs" = "X " && libobjs=
-
-      if test "$opt_mode" != relink; then
-	# Remove our outputs, but don't remove object files since they
-	# may have been created when compiling PIC objects.
-	removelist=
-	tempremovelist=`$ECHO "$output_objdir/*"`
-	for p in $tempremovelist; do
-	  case $p in
-	    *.$objext | *.gcno)
-	       ;;
-	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
-	       if test "X$precious_files_regex" != "X"; then
-		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
-		 then
-		   continue
-		 fi
-	       fi
-	       func_append removelist " $p"
-	       ;;
-	    *) ;;
-	  esac
-	done
-	test -n "$removelist" && \
-	  func_show_eval "${RM}r \$removelist"
-      fi
-
-      # Now set the variables for building old libraries.
-      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
-	func_append oldlibs " $output_objdir/$libname.$libext"
-
-	# Transform .lo files to .o files.
-	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
-      fi
-
-      # Eliminate all temporary directories.
-      #for path in $notinst_path; do
-      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
-      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
-      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
-      #done
-
-      if test -n "$xrpath"; then
-	# If the user specified any rpath flags, then add them.
-	temp_xrpath=
-	for libdir in $xrpath; do
-	  func_replace_sysroot "$libdir"
-	  func_append temp_xrpath " -R$func_replace_sysroot_result"
-	  case "$finalize_rpath " in
-	  *" $libdir "*) ;;
-	  *) func_append finalize_rpath " $libdir" ;;
-	  esac
-	done
-	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
-	  dependency_libs="$temp_xrpath $dependency_libs"
-	fi
-      fi
-
-      # Make sure dlfiles contains only unique files that won't be dlpreopened
-      old_dlfiles="$dlfiles"
-      dlfiles=
-      for lib in $old_dlfiles; do
-	case " $dlprefiles $dlfiles " in
-	*" $lib "*) ;;
-	*) func_append dlfiles " $lib" ;;
-	esac
-      done
-
-      # Make sure dlprefiles contains only unique files
-      old_dlprefiles="$dlprefiles"
-      dlprefiles=
-      for lib in $old_dlprefiles; do
-	case "$dlprefiles " in
-	*" $lib "*) ;;
-	*) func_append dlprefiles " $lib" ;;
-	esac
-      done
-
-      if test "$build_libtool_libs" = yes; then
-	if test -n "$rpath"; then
-	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
-	    # these systems don't actually have a c library (as such)!
-	    ;;
-	  *-*-rhapsody* | *-*-darwin1.[012])
-	    # Rhapsody C library is in the System framework
-	    func_append deplibs " System.ltframework"
-	    ;;
-	  *-*-netbsd*)
-	    # Don't link with libc until the a.out ld.so is fixed.
-	    ;;
-	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	    # Do not include libc due to us having libc/libc_r.
-	    ;;
-	  *-*-sco3.2v5* | *-*-sco5v6*)
-	    # Causes problems with __ctype
-	    ;;
-	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-	    # Compiler inserts libc in the correct place for threads to work
-	    ;;
-	  *)
-	    # Add libc to deplibs on all other systems if necessary.
-	    if test "$build_libtool_need_lc" = "yes"; then
-	      func_append deplibs " -lc"
-	    fi
-	    ;;
-	  esac
-	fi
-
-	# Transform deplibs into only deplibs that can be linked in shared.
-	name_save=$name
-	libname_save=$libname
-	release_save=$release
-	versuffix_save=$versuffix
-	major_save=$major
-	# I'm not sure if I'm treating the release correctly.  I think
-	# release should show up in the -l (ie -lgmp5) so we don't want to
-	# add it in twice.  Is that correct?
-	release=""
-	versuffix=""
-	major=""
-	newdeplibs=
-	droppeddeps=no
-	case $deplibs_check_method in
-	pass_all)
-	  # Don't check for shared/static.  Everything works.
-	  # This might be a little naive.  We might want to check
-	  # whether the library exists or not.  But this is on
-	  # osf3 & osf4 and I'm not really sure... Just
-	  # implementing what was already the behavior.
-	  newdeplibs=$deplibs
-	  ;;
-	test_compile)
-	  # This code stresses the "libraries are programs" paradigm to its
-	  # limits. Maybe even breaks it.  We compile a program, linking it
-	  # against the deplibs as a proxy for the library.  Then we can check
-	  # whether they linked in statically or dynamically with ldd.
-	  $opt_dry_run || $RM conftest.c
-	  cat > conftest.c <<EOF
-	  int main() { return 0; }
-EOF
-	  $opt_dry_run || $RM conftest
-	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
-	    ldd_output=`ldd conftest`
-	    for i in $deplibs; do
-	      case $i in
-	      -l*)
-		func_stripname -l '' "$i"
-		name=$func_stripname_result
-		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		  case " $predeps $postdeps " in
-		  *" $i "*)
-		    func_append newdeplibs " $i"
-		    i=""
-		    ;;
-		  esac
-		fi
-		if test -n "$i" ; then
-		  libname=`eval "\\$ECHO \"$libname_spec\""`
-		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-		  set dummy $deplib_matches; shift
-		  deplib_match=$1
-		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		    func_append newdeplibs " $i"
-		  else
-		    droppeddeps=yes
-		    echo
-		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-		    echo "*** I have the capability to make that library automatically link in when"
-		    echo "*** you link to this library.  But I can only do this if you have a"
-		    echo "*** shared version of the library, which I believe you do not have"
-		    echo "*** because a test_compile did reveal that the linker did not use it for"
-		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
-		  fi
-		fi
-		;;
-	      *)
-		func_append newdeplibs " $i"
-		;;
-	      esac
-	    done
-	  else
-	    # Error occurred in the first compile.  Let's try to salvage
-	    # the situation: Compile a separate program for each library.
-	    for i in $deplibs; do
-	      case $i in
-	      -l*)
-		func_stripname -l '' "$i"
-		name=$func_stripname_result
-		$opt_dry_run || $RM conftest
-		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
-		  ldd_output=`ldd conftest`
-		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		    case " $predeps $postdeps " in
-		    *" $i "*)
-		      func_append newdeplibs " $i"
-		      i=""
-		      ;;
-		    esac
-		  fi
-		  if test -n "$i" ; then
-		    libname=`eval "\\$ECHO \"$libname_spec\""`
-		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-		    set dummy $deplib_matches; shift
-		    deplib_match=$1
-		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		      func_append newdeplibs " $i"
-		    else
-		      droppeddeps=yes
-		      echo
-		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-		      echo "*** I have the capability to make that library automatically link in when"
-		      echo "*** you link to this library.  But I can only do this if you have a"
-		      echo "*** shared version of the library, which you do not appear to have"
-		      echo "*** because a test_compile did reveal that the linker did not use this one"
-		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
-		    fi
-		  fi
-		else
-		  droppeddeps=yes
-		  echo
-		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
-		  echo "*** make it link in!  You will probably need to install it or some"
-		  echo "*** library that it depends on before this library will be fully"
-		  echo "*** functional.  Installing it before continuing would be even better."
-		fi
-		;;
-	      *)
-		func_append newdeplibs " $i"
-		;;
-	      esac
-	    done
-	  fi
-	  ;;
-	file_magic*)
-	  set dummy $deplibs_check_method; shift
-	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-	  for a_deplib in $deplibs; do
-	    case $a_deplib in
-	    -l*)
-	      func_stripname -l '' "$a_deplib"
-	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		case " $predeps $postdeps " in
-		*" $a_deplib "*)
-		  func_append newdeplibs " $a_deplib"
-		  a_deplib=""
-		  ;;
-		esac
-	      fi
-	      if test -n "$a_deplib" ; then
-		libname=`eval "\\$ECHO \"$libname_spec\""`
-		if test -n "$file_magic_glob"; then
-		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
-		else
-		  libnameglob=$libname
-		fi
-		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
-		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  if test "$want_nocaseglob" = yes; then
-		    shopt -s nocaseglob
-		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
-		    $nocaseglob
-		  else
-		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
-		  fi
-		  for potent_lib in $potential_libs; do
-		      # Follow soft links.
-		      if ls -lLd "$potent_lib" 2>/dev/null |
-			 $GREP " -> " >/dev/null; then
-			continue
-		      fi
-		      # The statement above tries to avoid entering an
-		      # endless loop below, in case of cyclic links.
-		      # We might still enter an endless loop, since a link
-		      # loop can be closed while we follow links,
-		      # but so what?
-		      potlib="$potent_lib"
-		      while test -h "$potlib" 2>/dev/null; do
-			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
-			case $potliblink in
-			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
-			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
-			esac
-		      done
-		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
-			 $SED -e 10q |
-			 $EGREP "$file_magic_regex" > /dev/null; then
-			func_append newdeplibs " $a_deplib"
-			a_deplib=""
-			break 2
-		      fi
-		  done
-		done
-	      fi
-	      if test -n "$a_deplib" ; then
-		droppeddeps=yes
-		echo
-		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-		echo "*** I have the capability to make that library automatically link in when"
-		echo "*** you link to this library.  But I can only do this if you have a"
-		echo "*** shared version of the library, which you do not appear to have"
-		echo "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
-		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
-		else
-		  $ECHO "*** with $libname and none of the candidates passed a file format test"
-		  $ECHO "*** using a file magic. Last file checked: $potlib"
-		fi
-	      fi
-	      ;;
-	    *)
-	      # Add a -L argument.
-	      func_append newdeplibs " $a_deplib"
-	      ;;
-	    esac
-	  done # Gone through all deplibs.
-	  ;;
-	match_pattern*)
-	  set dummy $deplibs_check_method; shift
-	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-	  for a_deplib in $deplibs; do
-	    case $a_deplib in
-	    -l*)
-	      func_stripname -l '' "$a_deplib"
-	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		case " $predeps $postdeps " in
-		*" $a_deplib "*)
-		  func_append newdeplibs " $a_deplib"
-		  a_deplib=""
-		  ;;
-		esac
-	      fi
-	      if test -n "$a_deplib" ; then
-		libname=`eval "\\$ECHO \"$libname_spec\""`
-		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-		  for potent_lib in $potential_libs; do
-		    potlib="$potent_lib" # see symlink-check above in file_magic test
-		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
-		       $EGREP "$match_pattern_regex" > /dev/null; then
-		      func_append newdeplibs " $a_deplib"
-		      a_deplib=""
-		      break 2
-		    fi
-		  done
-		done
-	      fi
-	      if test -n "$a_deplib" ; then
-		droppeddeps=yes
-		echo
-		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-		echo "*** I have the capability to make that library automatically link in when"
-		echo "*** you link to this library.  But I can only do this if you have a"
-		echo "*** shared version of the library, which you do not appear to have"
-		echo "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
-		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
-		else
-		  $ECHO "*** with $libname and none of the candidates passed a file format test"
-		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
-		fi
-	      fi
-	      ;;
-	    *)
-	      # Add a -L argument.
-	      func_append newdeplibs " $a_deplib"
-	      ;;
-	    esac
-	  done # Gone through all deplibs.
-	  ;;
-	none | unknown | *)
-	  newdeplibs=""
-	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
-	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-	    for i in $predeps $postdeps ; do
-	      # can't use Xsed below, because $i might contain '/'
-	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
-	    done
-	  fi
-	  case $tmp_deplibs in
-	  *[!\	\ ]*)
-	    echo
-	    if test "X$deplibs_check_method" = "Xnone"; then
-	      echo "*** Warning: inter-library dependencies are not supported in this platform."
-	    else
-	      echo "*** Warning: inter-library dependencies are not known to be supported."
-	    fi
-	    echo "*** All declared inter-library dependencies are being dropped."
-	    droppeddeps=yes
-	    ;;
-	  esac
-	  ;;
-	esac
-	versuffix=$versuffix_save
-	major=$major_save
-	release=$release_save
-	libname=$libname_save
-	name=$name_save
-
-	case $host in
-	*-*-rhapsody* | *-*-darwin1.[012])
-	  # On Rhapsody replace the C library with the System framework
-	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
-	  ;;
-	esac
-
-	if test "$droppeddeps" = yes; then
-	  if test "$module" = yes; then
-	    echo
-	    echo "*** Warning: libtool could not satisfy all declared inter-library"
-	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
-	    echo "*** a static module, that should work as long as the dlopening"
-	    echo "*** application is linked with the -dlopen flag."
-	    if test -z "$global_symbol_pipe"; then
-	      echo
-	      echo "*** However, this would only work if libtool was able to extract symbol"
-	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
-	      echo "*** not find such a program.  So, this module is probably useless."
-	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
-	    fi
-	    if test "$build_old_libs" = no; then
-	      oldlibs="$output_objdir/$libname.$libext"
-	      build_libtool_libs=module
-	      build_old_libs=yes
-	    else
-	      build_libtool_libs=no
-	    fi
-	  else
-	    echo "*** The inter-library dependencies that have been dropped here will be"
-	    echo "*** automatically added whenever a program is linked with this library"
-	    echo "*** or is declared to -dlopen it."
-
-	    if test "$allow_undefined" = no; then
-	      echo
-	      echo "*** Since this library must not contain undefined symbols,"
-	      echo "*** because either the platform does not support them or"
-	      echo "*** it was explicitly requested with -no-undefined,"
-	      echo "*** libtool will only create a static version of it."
-	      if test "$build_old_libs" = no; then
-		oldlibs="$output_objdir/$libname.$libext"
-		build_libtool_libs=module
-		build_old_libs=yes
-	      else
-		build_libtool_libs=no
-	      fi
-	    fi
-	  fi
-	fi
-	# Done checking deplibs!
-	deplibs=$newdeplibs
-      fi
-      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
-      case $host in
-	*-*-darwin*)
-	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  ;;
-      esac
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-	case " $new_libs " in
-	*" -L$path/$objdir "*) ;;
-	*)
-	  case " $deplibs " in
-	  *" -L$path/$objdir "*)
-	    func_append new_libs " -L$path/$objdir" ;;
-	  esac
-	  ;;
-	esac
-      done
-      for deplib in $deplibs; do
-	case $deplib in
-	-L*)
-	  case " $new_libs " in
-	  *" $deplib "*) ;;
-	  *) func_append new_libs " $deplib" ;;
-	  esac
-	  ;;
-	*) func_append new_libs " $deplib" ;;
-	esac
-      done
-      deplibs="$new_libs"
-
-      # All the library-specific variables (install_libdir is set above).
-      library_names=
-      old_library=
-      dlname=
-
-      # Test again, we may have decided not to build it any more
-      if test "$build_libtool_libs" = yes; then
-	# Remove ${wl} instances when linking with ld.
-	# FIXME: should test the right _cmds variable.
-	case $archive_cmds in
-	  *\$LD\ *) wl= ;;
-        esac
-	if test "$hardcode_into_libs" = yes; then
-	  # Hardcode the library paths
-	  hardcode_libdirs=
-	  dep_rpath=
-	  rpath="$finalize_rpath"
-	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
-	  for libdir in $rpath; do
-	    if test -n "$hardcode_libdir_flag_spec"; then
-	      if test -n "$hardcode_libdir_separator"; then
-		func_replace_sysroot "$libdir"
-		libdir=$func_replace_sysroot_result
-		if test -z "$hardcode_libdirs"; then
-		  hardcode_libdirs="$libdir"
-		else
-		  # Just accumulate the unique libdirs.
-		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		    ;;
-		  *)
-		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
-		    ;;
-		  esac
-		fi
-	      else
-		eval flag=\"$hardcode_libdir_flag_spec\"
-		func_append dep_rpath " $flag"
-	      fi
-	    elif test -n "$runpath_var"; then
-	      case "$perm_rpath " in
-	      *" $libdir "*) ;;
-	      *) func_append perm_rpath " $libdir" ;;
-	      esac
-	    fi
-	  done
-	  # Substitute the hardcoded libdirs into the rpath.
-	  if test -n "$hardcode_libdir_separator" &&
-	     test -n "$hardcode_libdirs"; then
-	    libdir="$hardcode_libdirs"
-	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
-	  fi
-	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
-	    # We should set the runpath_var.
-	    rpath=
-	    for dir in $perm_rpath; do
-	      func_append rpath "$dir:"
-	    done
-	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
-	  fi
-	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
-	fi
-
-	shlibpath="$finalize_shlibpath"
-	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
-	if test -n "$shlibpath"; then
-	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
-	fi
-
-	# Get the real and link names of the library.
-	eval shared_ext=\"$shrext_cmds\"
-	eval library_names=\"$library_names_spec\"
-	set dummy $library_names
-	shift
-	realname="$1"
-	shift
-
-	if test -n "$soname_spec"; then
-	  eval soname=\"$soname_spec\"
-	else
-	  soname="$realname"
-	fi
-	if test -z "$dlname"; then
-	  dlname=$soname
-	fi
-
-	lib="$output_objdir/$realname"
-	linknames=
-	for link
-	do
-	  func_append linknames " $link"
-	done
-
-	# Use standard objects if they are pic
-	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
-	test "X$libobjs" = "X " && libobjs=
-
-	delfiles=
-	if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
-	  export_symbols="$output_objdir/$libname.uexp"
-	  func_append delfiles " $export_symbols"
-	fi
-
-	orig_export_symbols=
-	case $host_os in
-	cygwin* | mingw* | cegcc*)
-	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
-	    # exporting using user supplied symfile
-	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
-	      # and it's NOT already a .def file. Must figure out
-	      # which of the given symbols are data symbols and tag
-	      # them as such. So, trigger use of export_symbols_cmds.
-	      # export_symbols gets reassigned inside the "prepare
-	      # the list of exported symbols" if statement, so the
-	      # include_expsyms logic still works.
-	      orig_export_symbols="$export_symbols"
-	      export_symbols=
-	      always_export_symbols=yes
-	    fi
-	  fi
-	  ;;
-	esac
-
-	# Prepare the list of exported symbols
-	if test -z "$export_symbols"; then
-	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
-	    func_verbose "generating symbol list for \`$libname.la'"
-	    export_symbols="$output_objdir/$libname.exp"
-	    $opt_dry_run || $RM $export_symbols
-	    cmds=$export_symbols_cmds
-	    save_ifs="$IFS"; IFS='~'
-	    for cmd1 in $cmds; do
-	      IFS="$save_ifs"
-	      # Take the normal branch if the nm_file_list_spec branch
-	      # doesn't work or if tool conversion is not needed.
-	      case $nm_file_list_spec~$to_tool_file_cmd in
-		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
-		  try_normal_branch=yes
-		  eval cmd=\"$cmd1\"
-		  func_len " $cmd"
-		  len=$func_len_result
-		  ;;
-		*)
-		  try_normal_branch=no
-		  ;;
-	      esac
-	      if test "$try_normal_branch" = yes \
-		 && { test "$len" -lt "$max_cmd_len" \
-		      || test "$max_cmd_len" -le -1; }
-	      then
-		func_show_eval "$cmd" 'exit $?'
-		skipped_export=false
-	      elif test -n "$nm_file_list_spec"; then
-		func_basename "$output"
-		output_la=$func_basename_result
-		save_libobjs=$libobjs
-		save_output=$output
-		output=${output_objdir}/${output_la}.nm
-		func_to_tool_file "$output"
-		libobjs=$nm_file_list_spec$func_to_tool_file_result
-		func_append delfiles " $output"
-		func_verbose "creating $NM input file list: $output"
-		for obj in $save_libobjs; do
-		  func_to_tool_file "$obj"
-		  $ECHO "$func_to_tool_file_result"
-		done > "$output"
-		eval cmd=\"$cmd1\"
-		func_show_eval "$cmd" 'exit $?'
-		output=$save_output
-		libobjs=$save_libobjs
-		skipped_export=false
-	      else
-		# The command line is too long to execute in one step.
-		func_verbose "using reloadable object file for export list..."
-		skipped_export=:
-		# Break out early, otherwise skipped_export may be
-		# set to false by a later but shorter cmd.
-		break
-	      fi
-	    done
-	    IFS="$save_ifs"
-	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
-	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-	    fi
-	  fi
-	fi
-
-	if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	  tmp_export_symbols="$export_symbols"
-	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
-	fi
-
-	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
-	  # The given exports_symbols file has to be filtered, so filter it.
-	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
-	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	  # 's' commands which not all seds can handle. GNU sed should be fine
-	  # though. Also, the filter scales superlinearly with the number of
-	  # global variables. join(1) would be nice here, but unfortunately
-	  # isn't a blessed tool.
-	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
-	  export_symbols=$output_objdir/$libname.def
-	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-	fi
-
-	tmp_deplibs=
-	for test_deplib in $deplibs; do
-	  case " $convenience " in
-	  *" $test_deplib "*) ;;
-	  *)
-	    func_append tmp_deplibs " $test_deplib"
-	    ;;
-	  esac
-	done
-	deplibs="$tmp_deplibs"
-
-	if test -n "$convenience"; then
-	  if test -n "$whole_archive_flag_spec" &&
-	    test "$compiler_needs_object" = yes &&
-	    test -z "$libobjs"; then
-	    # extract the archives, so we have objects to list.
-	    # TODO: could optimize this to just extract one archive.
-	    whole_archive_flag_spec=
-	  fi
-	  if test -n "$whole_archive_flag_spec"; then
-	    save_libobjs=$libobjs
-	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-	    test "X$libobjs" = "X " && libobjs=
-	  else
-	    gentop="$output_objdir/${outputname}x"
-	    func_append generated " $gentop"
-
-	    func_extract_archives $gentop $convenience
-	    func_append libobjs " $func_extract_archives_result"
-	    test "X$libobjs" = "X " && libobjs=
-	  fi
-	fi
-
-	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
-	  eval flag=\"$thread_safe_flag_spec\"
-	  func_append linker_flags " $flag"
-	fi
-
-	# Make a backup of the uninstalled library when relinking
-	if test "$opt_mode" = relink; then
-	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
-	fi
-
-	# Do each of the archive commands.
-	if test "$module" = yes && test -n "$module_cmds" ; then
-	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-	    eval test_cmds=\"$module_expsym_cmds\"
-	    cmds=$module_expsym_cmds
-	  else
-	    eval test_cmds=\"$module_cmds\"
-	    cmds=$module_cmds
-	  fi
-	else
-	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-	    eval test_cmds=\"$archive_expsym_cmds\"
-	    cmds=$archive_expsym_cmds
-	  else
-	    eval test_cmds=\"$archive_cmds\"
-	    cmds=$archive_cmds
-	  fi
-	fi
-
-	if test "X$skipped_export" != "X:" &&
-	   func_len " $test_cmds" &&
-	   len=$func_len_result &&
-	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-	  :
-	else
-	  # The command line is too long to link in one step, link piecewise
-	  # or, if using GNU ld and skipped_export is not :, use a linker
-	  # script.
-
-	  # Save the value of $output and $libobjs because we want to
-	  # use them later.  If we have whole_archive_flag_spec, we
-	  # want to use save_libobjs as it was before
-	  # whole_archive_flag_spec was expanded, because we can't
-	  # assume the linker understands whole_archive_flag_spec.
-	  # This may have to be revisited, in case too many
-	  # convenience libraries get linked in and end up exceeding
-	  # the spec.
-	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
-	    save_libobjs=$libobjs
-	  fi
-	  save_output=$output
-	  func_basename "$output"
-	  output_la=$func_basename_result
-
-	  # Clear the reloadable object creation command queue and
-	  # initialize k to one.
-	  test_cmds=
-	  concat_cmds=
-	  objlist=
-	  last_robj=
-	  k=1
-
-	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
-	    output=${output_objdir}/${output_la}.lnkscript
-	    func_verbose "creating GNU ld script: $output"
-	    echo 'INPUT (' > $output
-	    for obj in $save_libobjs
-	    do
-	      func_to_tool_file "$obj"
-	      $ECHO "$func_to_tool_file_result" >> $output
-	    done
-	    echo ')' >> $output
-	    func_append delfiles " $output"
-	    func_to_tool_file "$output"
-	    output=$func_to_tool_file_result
-	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
-	    output=${output_objdir}/${output_la}.lnk
-	    func_verbose "creating linker input file list: $output"
-	    : > $output
-	    set x $save_libobjs
-	    shift
-	    firstobj=
-	    if test "$compiler_needs_object" = yes; then
-	      firstobj="$1 "
-	      shift
-	    fi
-	    for obj
-	    do
-	      func_to_tool_file "$obj"
-	      $ECHO "$func_to_tool_file_result" >> $output
-	    done
-	    func_append delfiles " $output"
-	    func_to_tool_file "$output"
-	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
-	  else
-	    if test -n "$save_libobjs"; then
-	      func_verbose "creating reloadable object files..."
-	      output=$output_objdir/$output_la-${k}.$objext
-	      eval test_cmds=\"$reload_cmds\"
-	      func_len " $test_cmds"
-	      len0=$func_len_result
-	      len=$len0
-
-	      # Loop over the list of objects to be linked.
-	      for obj in $save_libobjs
-	      do
-		func_len " $obj"
-		func_arith $len + $func_len_result
-		len=$func_arith_result
-		if test "X$objlist" = X ||
-		   test "$len" -lt "$max_cmd_len"; then
-		  func_append objlist " $obj"
-		else
-		  # The command $test_cmds is almost too long, add a
-		  # command to the queue.
-		  if test "$k" -eq 1 ; then
-		    # The first file doesn't have a previous command to add.
-		    reload_objs=$objlist
-		    eval concat_cmds=\"$reload_cmds\"
-		  else
-		    # All subsequent reloadable object files will link in
-		    # the last one created.
-		    reload_objs="$objlist $last_robj"
-		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
-		  fi
-		  last_robj=$output_objdir/$output_la-${k}.$objext
-		  func_arith $k + 1
-		  k=$func_arith_result
-		  output=$output_objdir/$output_la-${k}.$objext
-		  objlist=" $obj"
-		  func_len " $last_robj"
-		  func_arith $len0 + $func_len_result
-		  len=$func_arith_result
-		fi
-	      done
-	      # Handle the remaining objects by creating one last
-	      # reloadable object file.  All subsequent reloadable object
-	      # files will link in the last one created.
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      reload_objs="$objlist $last_robj"
-	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
-	      if test -n "$last_robj"; then
-	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
-	      fi
-	      func_append delfiles " $output"
-
-	    else
-	      output=
-	    fi
-
-	    if ${skipped_export-false}; then
-	      func_verbose "generating symbol list for \`$libname.la'"
-	      export_symbols="$output_objdir/$libname.exp"
-	      $opt_dry_run || $RM $export_symbols
-	      libobjs=$output
-	      # Append the command to create the export file.
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
-	      if test -n "$last_robj"; then
-		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
-	      fi
-	    fi
-
-	    test -n "$save_libobjs" &&
-	      func_verbose "creating a temporary reloadable object file: $output"
-
-	    # Loop through the commands generated above and execute them.
-	    save_ifs="$IFS"; IFS='~'
-	    for cmd in $concat_cmds; do
-	      IFS="$save_ifs"
-	      $opt_silent || {
-		  func_quote_for_expand "$cmd"
-		  eval "func_echo $func_quote_for_expand_result"
-	      }
-	      $opt_dry_run || eval "$cmd" || {
-		lt_exit=$?
-
-		# Restore the uninstalled library and exit
-		if test "$opt_mode" = relink; then
-		  ( cd "$output_objdir" && \
-		    $RM "${realname}T" && \
-		    $MV "${realname}U" "$realname" )
-		fi
-
-		exit $lt_exit
-	      }
-	    done
-	    IFS="$save_ifs"
-
-	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
-	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-	    fi
-	  fi
-
-          if ${skipped_export-false}; then
-	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	      tmp_export_symbols="$export_symbols"
-	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
-	    fi
-
-	    if test -n "$orig_export_symbols"; then
-	      # The given exports_symbols file has to be filtered, so filter it.
-	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
-	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	      # 's' commands which not all seds can handle. GNU sed should be fine
-	      # though. Also, the filter scales superlinearly with the number of
-	      # global variables. join(1) would be nice here, but unfortunately
-	      # isn't a blessed tool.
-	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
-	      export_symbols=$output_objdir/$libname.def
-	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-	    fi
-	  fi
-
-	  libobjs=$output
-	  # Restore the value of output.
-	  output=$save_output
-
-	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
-	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-	    test "X$libobjs" = "X " && libobjs=
-	  fi
-	  # Expand the library linking commands again to reset the
-	  # value of $libobjs for piecewise linking.
-
-	  # Do each of the archive commands.
-	  if test "$module" = yes && test -n "$module_cmds" ; then
-	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-	      cmds=$module_expsym_cmds
-	    else
-	      cmds=$module_cmds
-	    fi
-	  else
-	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-	      cmds=$archive_expsym_cmds
-	    else
-	      cmds=$archive_cmds
-	    fi
-	  fi
-	fi
-
-	if test -n "$delfiles"; then
-	  # Append the command to remove temporary files to $cmds.
-	  eval cmds=\"\$cmds~\$RM $delfiles\"
-	fi
-
-	# Add any objects from preloaded convenience libraries
-	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
-	  func_append generated " $gentop"
-
-	  func_extract_archives $gentop $dlprefiles
-	  func_append libobjs " $func_extract_archives_result"
-	  test "X$libobjs" = "X " && libobjs=
-	fi
-
-	save_ifs="$IFS"; IFS='~'
-	for cmd in $cmds; do
-	  IFS="$save_ifs"
-	  eval cmd=\"$cmd\"
-	  $opt_silent || {
-	    func_quote_for_expand "$cmd"
-	    eval "func_echo $func_quote_for_expand_result"
-	  }
-	  $opt_dry_run || eval "$cmd" || {
-	    lt_exit=$?
-
-	    # Restore the uninstalled library and exit
-	    if test "$opt_mode" = relink; then
-	      ( cd "$output_objdir" && \
-	        $RM "${realname}T" && \
-		$MV "${realname}U" "$realname" )
-	    fi
-
-	    exit $lt_exit
-	  }
-	done
-	IFS="$save_ifs"
-
-	# Restore the uninstalled library and exit
-	if test "$opt_mode" = relink; then
-	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
-
-	  if test -n "$convenience"; then
-	    if test -z "$whole_archive_flag_spec"; then
-	      func_show_eval '${RM}r "$gentop"'
-	    fi
-	  fi
-
-	  exit $EXIT_SUCCESS
-	fi
-
-	# Create links to the real library.
-	for linkname in $linknames; do
-	  if test "$realname" != "$linkname"; then
-	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
-	  fi
-	done
-
-	# If -module or -export-dynamic was specified, set the dlname.
-	if test "$module" = yes || test "$export_dynamic" = yes; then
-	  # On all known operating systems, these are identical.
-	  dlname="$soname"
-	fi
-      fi
-      ;;
-
-    obj)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for objects"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for objects" ;;
-      esac
-
-      test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for objects"
-
-      test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for objects"
-
-      test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for objects"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for objects"
-
-      case $output in
-      *.lo)
-	test -n "$objs$old_deplibs" && \
-	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
-
-	libobj=$output
-	func_lo2o "$libobj"
-	obj=$func_lo2o_result
-	;;
-      *)
-	libobj=
-	obj="$output"
-	;;
-      esac
-
-      # Delete the old objects.
-      $opt_dry_run || $RM $obj $libobj
-
-      # Objects from convenience libraries.  This assumes
-      # single-version convenience libraries.  Whenever we create
-      # different ones for PIC/non-PIC, this we'll have to duplicate
-      # the extraction.
-      reload_conv_objs=
-      gentop=
-      # reload_cmds runs $LD directly, so let us get rid of
-      # -Wl from whole_archive_flag_spec and hope we can get by with
-      # turning comma into space..
-      wl=
-
-      if test -n "$convenience"; then
-	if test -n "$whole_archive_flag_spec"; then
-	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
-	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
-	else
-	  gentop="$output_objdir/${obj}x"
-	  func_append generated " $gentop"
-
-	  func_extract_archives $gentop $convenience
-	  reload_conv_objs="$reload_objs $func_extract_archives_result"
-	fi
-      fi
-
-      # If we're not building shared, we need to use non_pic_objs
-      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
-
-      # Create the old-style object.
-      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
-
-      output="$obj"
-      func_execute_cmds "$reload_cmds" 'exit $?'
-
-      # Exit if we aren't doing a library object file.
-      if test -z "$libobj"; then
-	if test -n "$gentop"; then
-	  func_show_eval '${RM}r "$gentop"'
-	fi
-
-	exit $EXIT_SUCCESS
-      fi
-
-      if test "$build_libtool_libs" != yes; then
-	if test -n "$gentop"; then
-	  func_show_eval '${RM}r "$gentop"'
-	fi
-
-	# Create an invalid libtool object if no PIC, so that we don't
-	# accidentally link it into a program.
-	# $show "echo timestamp > $libobj"
-	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
-	exit $EXIT_SUCCESS
-      fi
-
-      if test -n "$pic_flag" || test "$pic_mode" != default; then
-	# Only do commands if we really have different PIC objects.
-	reload_objs="$libobjs $reload_conv_objs"
-	output="$libobj"
-	func_execute_cmds "$reload_cmds" 'exit $?'
-      fi
-
-      if test -n "$gentop"; then
-	func_show_eval '${RM}r "$gentop"'
-      fi
-
-      exit $EXIT_SUCCESS
-      ;;
-
-    prog)
-      case $host in
-	*cygwin*) func_stripname '' '.exe' "$output"
-	          output=$func_stripname_result.exe;;
-      esac
-      test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for programs"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for programs"
-
-      test "$preload" = yes \
-        && test "$dlopen_support" = unknown \
-	&& test "$dlopen_self" = unknown \
-	&& test "$dlopen_self_static" = unknown && \
-	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
-
-      case $host in
-      *-*-rhapsody* | *-*-darwin1.[012])
-	# On Rhapsody replace the C library is the System framework
-	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
-	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
-	;;
-      esac
-
-      case $host in
-      *-*-darwin*)
-	# Don't allow lazy linking, it breaks C++ global constructors
-	# But is supposedly fixed on 10.4 or later (yay!).
-	if test "$tagname" = CXX ; then
-	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
-	    10.[0123])
-	      func_append compile_command " ${wl}-bind_at_load"
-	      func_append finalize_command " ${wl}-bind_at_load"
-	    ;;
-	  esac
-	fi
-	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
-	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	;;
-      esac
-
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-	case " $new_libs " in
-	*" -L$path/$objdir "*) ;;
-	*)
-	  case " $compile_deplibs " in
-	  *" -L$path/$objdir "*)
-	    func_append new_libs " -L$path/$objdir" ;;
-	  esac
-	  ;;
-	esac
-      done
-      for deplib in $compile_deplibs; do
-	case $deplib in
-	-L*)
-	  case " $new_libs " in
-	  *" $deplib "*) ;;
-	  *) func_append new_libs " $deplib" ;;
-	  esac
-	  ;;
-	*) func_append new_libs " $deplib" ;;
-	esac
-      done
-      compile_deplibs="$new_libs"
-
-
-      func_append compile_command " $compile_deplibs"
-      func_append finalize_command " $finalize_deplibs"
-
-      if test -n "$rpath$xrpath"; then
-	# If the user specified any rpath flags, then add them.
-	for libdir in $rpath $xrpath; do
-	  # This is the magic to use -rpath.
-	  case "$finalize_rpath " in
-	  *" $libdir "*) ;;
-	  *) func_append finalize_rpath " $libdir" ;;
-	  esac
-	done
-      fi
-
-      # Now hardcode the library paths
-      rpath=
-      hardcode_libdirs=
-      for libdir in $compile_rpath $finalize_rpath; do
-	if test -n "$hardcode_libdir_flag_spec"; then
-	  if test -n "$hardcode_libdir_separator"; then
-	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
-	    else
-	      # Just accumulate the unique libdirs.
-	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		;;
-	      *)
-		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
-		;;
-	      esac
-	    fi
-	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    func_append rpath " $flag"
-	  fi
-	elif test -n "$runpath_var"; then
-	  case "$perm_rpath " in
-	  *" $libdir "*) ;;
-	  *) func_append perm_rpath " $libdir" ;;
-	  esac
-	fi
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
-	  case :$dllsearchpath: in
-	  *":$libdir:"*) ;;
-	  ::) dllsearchpath=$libdir;;
-	  *) func_append dllsearchpath ":$libdir";;
-	  esac
-	  case :$dllsearchpath: in
-	  *":$testbindir:"*) ;;
-	  ::) dllsearchpath=$testbindir;;
-	  *) func_append dllsearchpath ":$testbindir";;
-	  esac
-	  ;;
-	esac
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
-	eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      compile_rpath="$rpath"
-
-      rpath=
-      hardcode_libdirs=
-      for libdir in $finalize_rpath; do
-	if test -n "$hardcode_libdir_flag_spec"; then
-	  if test -n "$hardcode_libdir_separator"; then
-	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
-	    else
-	      # Just accumulate the unique libdirs.
-	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		;;
-	      *)
-		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
-		;;
-	      esac
-	    fi
-	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    func_append rpath " $flag"
-	  fi
-	elif test -n "$runpath_var"; then
-	  case "$finalize_perm_rpath " in
-	  *" $libdir "*) ;;
-	  *) func_append finalize_perm_rpath " $libdir" ;;
-	  esac
-	fi
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
-	eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      finalize_rpath="$rpath"
-
-      if test -n "$libobjs" && test "$build_old_libs" = yes; then
-	# Transform all the library objects into standard objects.
-	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
-	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
-      fi
-
-      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
-
-      # template prelinking step
-      if test -n "$prelink_cmds"; then
-	func_execute_cmds "$prelink_cmds" 'exit $?'
-      fi
-
-      wrappers_required=yes
-      case $host in
-      *cegcc* | *mingw32ce*)
-        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
-        wrappers_required=no
-        ;;
-      *cygwin* | *mingw* )
-        if test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
-        ;;
-      *)
-        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
-        ;;
-      esac
-      if test "$wrappers_required" = no; then
-	# Replace the output file specification.
-	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
-	link_command="$compile_command$compile_rpath"
-
-	# We have no uninstalled library dependencies, so finalize right now.
-	exit_status=0
-	func_show_eval "$link_command" 'exit_status=$?'
-
-	if test -n "$postlink_cmds"; then
-	  func_to_tool_file "$output"
-	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-	  func_execute_cmds "$postlink_cmds" 'exit $?'
-	fi
-
-	# Delete the generated files.
-	if test -f "$output_objdir/${outputname}S.${objext}"; then
-	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
-	fi
-
-	exit $exit_status
-      fi
-
-      if test -n "$compile_shlibpath$finalize_shlibpath"; then
-	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
-      fi
-      if test -n "$finalize_shlibpath"; then
-	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
-      fi
-
-      compile_var=
-      finalize_var=
-      if test -n "$runpath_var"; then
-	if test -n "$perm_rpath"; then
-	  # We should set the runpath_var.
-	  rpath=
-	  for dir in $perm_rpath; do
-	    func_append rpath "$dir:"
-	  done
-	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
-	fi
-	if test -n "$finalize_perm_rpath"; then
-	  # We should set the runpath_var.
-	  rpath=
-	  for dir in $finalize_perm_rpath; do
-	    func_append rpath "$dir:"
-	  done
-	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
-	fi
-      fi
-
-      if test "$no_install" = yes; then
-	# We don't need to create a wrapper script.
-	link_command="$compile_var$compile_command$compile_rpath"
-	# Replace the output file specification.
-	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
-	# Delete the old output file.
-	$opt_dry_run || $RM $output
-	# Link the executable and exit
-	func_show_eval "$link_command" 'exit $?'
-
-	if test -n "$postlink_cmds"; then
-	  func_to_tool_file "$output"
-	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-	  func_execute_cmds "$postlink_cmds" 'exit $?'
-	fi
-
-	exit $EXIT_SUCCESS
-      fi
-
-      if test "$hardcode_action" = relink; then
-	# Fast installation is not supported
-	link_command="$compile_var$compile_command$compile_rpath"
-	relink_command="$finalize_var$finalize_command$finalize_rpath"
-
-	func_warning "this platform does not like uninstalled shared libraries"
-	func_warning "\`$output' will be relinked during installation"
-      else
-	if test "$fast_install" != no; then
-	  link_command="$finalize_var$compile_command$finalize_rpath"
-	  if test "$fast_install" = yes; then
-	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
-	  else
-	    # fast_install is set to needless
-	    relink_command=
-	  fi
-	else
-	  link_command="$compile_var$compile_command$compile_rpath"
-	  relink_command="$finalize_var$finalize_command$finalize_rpath"
-	fi
-      fi
-
-      # Replace the output file specification.
-      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-
-      # Delete the old output files.
-      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
-
-      func_show_eval "$link_command" 'exit $?'
-
-      if test -n "$postlink_cmds"; then
-	func_to_tool_file "$output_objdir/$outputname"
-	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-	func_execute_cmds "$postlink_cmds" 'exit $?'
-      fi
-
-      # Now create the wrapper script.
-      func_verbose "creating $output"
-
-      # Quote the relink command for shipping.
-      if test -n "$relink_command"; then
-	# Preserve any variables that may affect compiler behavior
-	for var in $variables_saved_for_relink; do
-	  if eval test -z \"\${$var+set}\"; then
-	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-	  elif eval var_value=\$$var; test -z "$var_value"; then
-	    relink_command="$var=; export $var; $relink_command"
-	  else
-	    func_quote_for_eval "$var_value"
-	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
-	  fi
-	done
-	relink_command="(cd `pwd`; $relink_command)"
-	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
-      fi
-
-      # Only actually do things if not in dry run mode.
-      $opt_dry_run || {
-	# win32 will think the script is a binary if it has
-	# a .exe suffix, so we strip it off here.
-	case $output in
-	  *.exe) func_stripname '' '.exe' "$output"
-	         output=$func_stripname_result ;;
-	esac
-	# test for cygwin because mv fails w/o .exe extensions
-	case $host in
-	  *cygwin*)
-	    exeext=.exe
-	    func_stripname '' '.exe' "$outputname"
-	    outputname=$func_stripname_result ;;
-	  *) exeext= ;;
-	esac
-	case $host in
-	  *cygwin* | *mingw* )
-	    func_dirname_and_basename "$output" "" "."
-	    output_name=$func_basename_result
-	    output_path=$func_dirname_result
-	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
-	    cwrapper="$output_path/$output_name.exe"
-	    $RM $cwrappersource $cwrapper
-	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
-
-	    func_emit_cwrapperexe_src > $cwrappersource
-
-	    # The wrapper executable is built using the $host compiler,
-	    # because it contains $host paths and files. If cross-
-	    # compiling, it, like the target executable, must be
-	    # executed on the $host or under an emulation environment.
-	    $opt_dry_run || {
-	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
-	      $STRIP $cwrapper
-	    }
-
-	    # Now, create the wrapper script for func_source use:
-	    func_ltwrapper_scriptname $cwrapper
-	    $RM $func_ltwrapper_scriptname_result
-	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
-	    $opt_dry_run || {
-	      # note: this script will not be executed, so do not chmod.
-	      if test "x$build" = "x$host" ; then
-		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
-	      else
-		func_emit_wrapper no > $func_ltwrapper_scriptname_result
-	      fi
-	    }
-	  ;;
-	  * )
-	    $RM $output
-	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
-
-	    func_emit_wrapper no > $output
-	    chmod +x $output
-	  ;;
-	esac
-      }
-      exit $EXIT_SUCCESS
-      ;;
-    esac
-
-    # See if we need to build an old-fashioned archive.
-    for oldlib in $oldlibs; do
-
-      if test "$build_libtool_libs" = convenience; then
-	oldobjs="$libobjs_save $symfileobj"
-	addlibs="$convenience"
-	build_libtool_libs=no
-      else
-	if test "$build_libtool_libs" = module; then
-	  oldobjs="$libobjs_save"
-	  build_libtool_libs=no
-	else
-	  oldobjs="$old_deplibs $non_pic_objects"
-	  if test "$preload" = yes && test -f "$symfileobj"; then
-	    func_append oldobjs " $symfileobj"
-	  fi
-	fi
-	addlibs="$old_convenience"
-      fi
-
-      if test -n "$addlibs"; then
-	gentop="$output_objdir/${outputname}x"
-	func_append generated " $gentop"
-
-	func_extract_archives $gentop $addlibs
-	func_append oldobjs " $func_extract_archives_result"
-      fi
-
-      # Do each command in the archive commands.
-      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
-	cmds=$old_archive_from_new_cmds
-      else
-
-	# Add any objects from preloaded convenience libraries
-	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
-	  func_append generated " $gentop"
-
-	  func_extract_archives $gentop $dlprefiles
-	  func_append oldobjs " $func_extract_archives_result"
-	fi
-
-	# POSIX demands no paths to be encoded in archives.  We have
-	# to avoid creating archives with duplicate basenames if we
-	# might have to extract them afterwards, e.g., when creating a
-	# static archive out of a convenience library, or when linking
-	# the entirety of a libtool archive into another (currently
-	# not supported by libtool).
-	if (for obj in $oldobjs
-	    do
-	      func_basename "$obj"
-	      $ECHO "$func_basename_result"
-	    done | sort | sort -uc >/dev/null 2>&1); then
-	  :
-	else
-	  echo "copying selected object files to avoid basename conflicts..."
-	  gentop="$output_objdir/${outputname}x"
-	  func_append generated " $gentop"
-	  func_mkdir_p "$gentop"
-	  save_oldobjs=$oldobjs
-	  oldobjs=
-	  counter=1
-	  for obj in $save_oldobjs
-	  do
-	    func_basename "$obj"
-	    objbase="$func_basename_result"
-	    case " $oldobjs " in
-	    " ") oldobjs=$obj ;;
-	    *[\ /]"$objbase "*)
-	      while :; do
-		# Make sure we don't pick an alternate name that also
-		# overlaps.
-		newobj=lt$counter-$objbase
-		func_arith $counter + 1
-		counter=$func_arith_result
-		case " $oldobjs " in
-		*[\ /]"$newobj "*) ;;
-		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
-		esac
-	      done
-	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
-	      func_append oldobjs " $gentop/$newobj"
-	      ;;
-	    *) func_append oldobjs " $obj" ;;
-	    esac
-	  done
-	fi
-	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
-	tool_oldlib=$func_to_tool_file_result
-	eval cmds=\"$old_archive_cmds\"
-
-	func_len " $cmds"
-	len=$func_len_result
-	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-	  cmds=$old_archive_cmds
-	elif test -n "$archiver_list_spec"; then
-	  func_verbose "using command file archive linking..."
-	  for obj in $oldobjs
-	  do
-	    func_to_tool_file "$obj"
-	    $ECHO "$func_to_tool_file_result"
-	  done > $output_objdir/$libname.libcmd
-	  func_to_tool_file "$output_objdir/$libname.libcmd"
-	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
-	  cmds=$old_archive_cmds
-	else
-	  # the command line is too long to link in one step, link in parts
-	  func_verbose "using piecewise archive linking..."
-	  save_RANLIB=$RANLIB
-	  RANLIB=:
-	  objlist=
-	  concat_cmds=
-	  save_oldobjs=$oldobjs
-	  oldobjs=
-	  # Is there a better way of finding the last object in the list?
-	  for obj in $save_oldobjs
-	  do
-	    last_oldobj=$obj
-	  done
-	  eval test_cmds=\"$old_archive_cmds\"
-	  func_len " $test_cmds"
-	  len0=$func_len_result
-	  len=$len0
-	  for obj in $save_oldobjs
-	  do
-	    func_len " $obj"
-	    func_arith $len + $func_len_result
-	    len=$func_arith_result
-	    func_append objlist " $obj"
-	    if test "$len" -lt "$max_cmd_len"; then
-	      :
-	    else
-	      # the above command should be used before it gets too long
-	      oldobjs=$objlist
-	      if test "$obj" = "$last_oldobj" ; then
-		RANLIB=$save_RANLIB
-	      fi
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
-	      objlist=
-	      len=$len0
-	    fi
-	  done
-	  RANLIB=$save_RANLIB
-	  oldobjs=$objlist
-	  if test "X$oldobjs" = "X" ; then
-	    eval cmds=\"\$concat_cmds\"
-	  else
-	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
-	  fi
-	fi
-      fi
-      func_execute_cmds "$cmds" 'exit $?'
-    done
-
-    test -n "$generated" && \
-      func_show_eval "${RM}r$generated"
-
-    # Now create the libtool archive.
-    case $output in
-    *.la)
-      old_library=
-      test "$build_old_libs" = yes && old_library="$libname.$libext"
-      func_verbose "creating $output"
-
-      # Preserve any variables that may affect compiler behavior
-      for var in $variables_saved_for_relink; do
-	if eval test -z \"\${$var+set}\"; then
-	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-	elif eval var_value=\$$var; test -z "$var_value"; then
-	  relink_command="$var=; export $var; $relink_command"
-	else
-	  func_quote_for_eval "$var_value"
-	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
-	fi
-      done
-      # Quote the link command for shipping.
-      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
-      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
-      if test "$hardcode_automatic" = yes ; then
-	relink_command=
-      fi
-
-      # Only create the output if not a dry run.
-      $opt_dry_run || {
-	for installed in no yes; do
-	  if test "$installed" = yes; then
-	    if test -z "$install_libdir"; then
-	      break
-	    fi
-	    output="$output_objdir/$outputname"i
-	    # Replace all uninstalled libtool libraries with the installed ones
-	    newdependency_libs=
-	    for deplib in $dependency_libs; do
-	      case $deplib in
-	      *.la)
-		func_basename "$deplib"
-		name="$func_basename_result"
-		func_resolve_sysroot "$deplib"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$deplib' is not a valid libtool archive"
-		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
-		;;
-	      -L*)
-		func_stripname -L '' "$deplib"
-		func_replace_sysroot "$func_stripname_result"
-		func_append newdependency_libs " -L$func_replace_sysroot_result"
-		;;
-	      -R*)
-		func_stripname -R '' "$deplib"
-		func_replace_sysroot "$func_stripname_result"
-		func_append newdependency_libs " -R$func_replace_sysroot_result"
-		;;
-	      *) func_append newdependency_libs " $deplib" ;;
-	      esac
-	    done
-	    dependency_libs="$newdependency_libs"
-	    newdlfiles=
-
-	    for lib in $dlfiles; do
-	      case $lib in
-	      *.la)
-	        func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
-		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
-		;;
-	      *) func_append newdlfiles " $lib" ;;
-	      esac
-	    done
-	    dlfiles="$newdlfiles"
-	    newdlprefiles=
-	    for lib in $dlprefiles; do
-	      case $lib in
-	      *.la)
-		# Only pass preopened files to the pseudo-archive (for
-		# eventual linking with the app. that links it) if we
-		# didn't already link the preopened objects directly into
-		# the library:
-		func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
-		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
-		;;
-	      esac
-	    done
-	    dlprefiles="$newdlprefiles"
-	  else
-	    newdlfiles=
-	    for lib in $dlfiles; do
-	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
-		*) abs=`pwd`"/$lib" ;;
-	      esac
-	      func_append newdlfiles " $abs"
-	    done
-	    dlfiles="$newdlfiles"
-	    newdlprefiles=
-	    for lib in $dlprefiles; do
-	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
-		*) abs=`pwd`"/$lib" ;;
-	      esac
-	      func_append newdlprefiles " $abs"
-	    done
-	    dlprefiles="$newdlprefiles"
-	  fi
-	  $RM $output
-	  # place dlname in correct position for cygwin
-	  # In fact, it would be nice if we could use this code for all target
-	  # systems that can't hard-code library paths into their executables
-	  # and that have no shared library path variable independent of PATH,
-	  # but it turns out we can't easily determine that from inspecting
-	  # libtool variables, so we have to hard-code the OSs to which it
-	  # applies here; at the moment, that means platforms that use the PE
-	  # object format with DLL files.  See the long comment at the top of
-	  # tests/bindir.at for full details.
-	  tdlname=$dlname
-	  case $host,$output,$installed,$module,$dlname in
-	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
-	      # If a -bindir argument was supplied, place the dll there.
-	      if test "x$bindir" != x ;
-	      then
-		func_relative_path "$install_libdir" "$bindir"
-		tdlname=$func_relative_path_result$dlname
-	      else
-		# Otherwise fall back on heuristic.
-		tdlname=../bin/$dlname
-	      fi
-	      ;;
-	  esac
-	  $ECHO > $output "\
-# $outputname - a libtool library file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='$tdlname'
-
-# Names of this library.
-library_names='$library_names'
-
-# The name of the static archive.
-old_library='$old_library'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags='$new_inherited_linker_flags'
-
-# Libraries that this one depends upon.
-dependency_libs='$dependency_libs'
-
-# Names of additional weak libraries provided by this library
-weak_library_names='$weak_libs'
-
-# Version information for $libname.
-current=$current
-age=$age
-revision=$revision
-
-# Is this an already installed library?
-installed=$installed
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=$module
-
-# Files to dlopen/dlpreopen
-dlopen='$dlfiles'
-dlpreopen='$dlprefiles'
-
-# Directory that this library needs to be installed in:
-libdir='$install_libdir'"
-	  if test "$installed" = no && test "$need_relink" = yes; then
-	    $ECHO >> $output "\
-relink_command=\"$relink_command\""
-	  fi
-	done
-      }
-
-      # Do a symbolic link so that the libtool archive can be found in
-      # LD_LIBRARY_PATH before the program is installed.
-      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
-      ;;
-    esac
-    exit $EXIT_SUCCESS
-}
-
-{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
-    func_mode_link ${1+"$@"}
-
-
-# func_mode_uninstall arg...
-func_mode_uninstall ()
-{
-    $opt_debug
-    RM="$nonopt"
-    files=
-    rmforce=
-    exit_status=0
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic="$magic"
-
-    for arg
-    do
-      case $arg in
-      -f) func_append RM " $arg"; rmforce=yes ;;
-      -*) func_append RM " $arg" ;;
-      *) func_append files " $arg" ;;
-      esac
-    done
-
-    test -z "$RM" && \
-      func_fatal_help "you must specify an RM program"
-
-    rmdirs=
-
-    for file in $files; do
-      func_dirname "$file" "" "."
-      dir="$func_dirname_result"
-      if test "X$dir" = X.; then
-	odir="$objdir"
-      else
-	odir="$dir/$objdir"
-      fi
-      func_basename "$file"
-      name="$func_basename_result"
-      test "$opt_mode" = uninstall && odir="$dir"
-
-      # Remember odir for removal later, being careful to avoid duplicates
-      if test "$opt_mode" = clean; then
-	case " $rmdirs " in
-	  *" $odir "*) ;;
-	  *) func_append rmdirs " $odir" ;;
-	esac
-      fi
-
-      # Don't error if the file doesn't exist and rm -f was used.
-      if { test -L "$file"; } >/dev/null 2>&1 ||
-	 { test -h "$file"; } >/dev/null 2>&1 ||
-	 test -f "$file"; then
-	:
-      elif test -d "$file"; then
-	exit_status=1
-	continue
-      elif test "$rmforce" = yes; then
-	continue
-      fi
-
-      rmfiles="$file"
-
-      case $name in
-      *.la)
-	# Possibly a libtool archive, so verify it.
-	if func_lalib_p "$file"; then
-	  func_source $dir/$name
-
-	  # Delete the libtool libraries and symlinks.
-	  for n in $library_names; do
-	    func_append rmfiles " $odir/$n"
-	  done
-	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
-
-	  case "$opt_mode" in
-	  clean)
-	    case " $library_names " in
-	    *" $dlname "*) ;;
-	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
-	    esac
-	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
-	    ;;
-	  uninstall)
-	    if test -n "$library_names"; then
-	      # Do each command in the postuninstall commands.
-	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
-	    fi
-
-	    if test -n "$old_library"; then
-	      # Do each command in the old_postuninstall commands.
-	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
-	    fi
-	    # FIXME: should reinstall the best remaining shared library.
-	    ;;
-	  esac
-	fi
-	;;
-
-      *.lo)
-	# Possibly a libtool object, so verify it.
-	if func_lalib_p "$file"; then
-
-	  # Read the .lo file
-	  func_source $dir/$name
-
-	  # Add PIC object to the list of files to remove.
-	  if test -n "$pic_object" &&
-	     test "$pic_object" != none; then
-	    func_append rmfiles " $dir/$pic_object"
-	  fi
-
-	  # Add non-PIC object to the list of files to remove.
-	  if test -n "$non_pic_object" &&
-	     test "$non_pic_object" != none; then
-	    func_append rmfiles " $dir/$non_pic_object"
-	  fi
-	fi
-	;;
-
-      *)
-	if test "$opt_mode" = clean ; then
-	  noexename=$name
-	  case $file in
-	  *.exe)
-	    func_stripname '' '.exe' "$file"
-	    file=$func_stripname_result
-	    func_stripname '' '.exe' "$name"
-	    noexename=$func_stripname_result
-	    # $file with .exe has already been added to rmfiles,
-	    # add $file without .exe
-	    func_append rmfiles " $file"
-	    ;;
-	  esac
-	  # Do a test to see if this is a libtool program.
-	  if func_ltwrapper_p "$file"; then
-	    if func_ltwrapper_executable_p "$file"; then
-	      func_ltwrapper_scriptname "$file"
-	      relink_command=
-	      func_source $func_ltwrapper_scriptname_result
-	      func_append rmfiles " $func_ltwrapper_scriptname_result"
-	    else
-	      relink_command=
-	      func_source $dir/$noexename
-	    fi
-
-	    # note $name still contains .exe if it was in $file originally
-	    # as does the version of $file that was added into $rmfiles
-	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
-	    if test "$fast_install" = yes && test -n "$relink_command"; then
-	      func_append rmfiles " $odir/lt-$name"
-	    fi
-	    if test "X$noexename" != "X$name" ; then
-	      func_append rmfiles " $odir/lt-${noexename}.c"
-	    fi
-	  fi
-	fi
-	;;
-      esac
-      func_show_eval "$RM $rmfiles" 'exit_status=1'
-    done
-
-    # Try to remove the ${objdir}s in the directories where we deleted files
-    for dir in $rmdirs; do
-      if test -d "$dir"; then
-	func_show_eval "rmdir $dir >/dev/null 2>&1"
-      fi
-    done
-
-    exit $exit_status
-}
-
-{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
-    func_mode_uninstall ${1+"$@"}
-
-test -z "$opt_mode" && {
-  help="$generic_help"
-  func_fatal_help "you must specify a MODE"
-}
-
-test -z "$exec_cmd" && \
-  func_fatal_help "invalid operation mode \`$opt_mode'"
-
-if test -n "$exec_cmd"; then
-  eval exec "$exec_cmd"
-  exit $EXIT_FAILURE
-fi
-
-exit $exit_status
-
-
-# The TAGs below are defined such that we never get into a situation
-# in which we disable both kinds of libraries.  Given conflicting
-# choices, we go for a static library, that is the most portable,
-# since we can't tell whether shared libraries were disabled because
-# the user asked for that or because the platform doesn't support
-# them.  This is particularly important on AIX, because we don't
-# support having both static and shared libraries enabled at the same
-# time on that platform, so we default to a shared-only configuration.
-# If a disable-shared tag is given, we'll fallback to a static-only
-# configuration.  But we'll never go from static-only to shared-only.
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
-build_libtool_libs=no
-build_old_libs=yes
-# ### END LIBTOOL TAG CONFIG: disable-shared
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-static
-build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
-# ### END LIBTOOL TAG CONFIG: disable-static
-
-# Local Variables:
-# mode:shell-script
-# sh-indentation:2
-# End:
-# vi:sw=2
-
diff --git a/config/missing b/config/missing
deleted file mode 100755
index cdea514..0000000
--- a/config/missing
+++ /dev/null
@@ -1,215 +0,0 @@
-#! /bin/sh
-# Common wrapper for a few potentially missing GNU programs.
-
-scriptversion=2012-06-26.16; # UTC
-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-# Originally written by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
-  echo 1>&2 "Try '$0 --help' for more information"
-  exit 1
-fi
-
-case $1 in
-
-  --is-lightweight)
-    # Used by our autoconf macros to check whether the available missing
-    # script is modern enough.
-    exit 0
-    ;;
-
-  --run)
-    # Back-compat with the calling convention used by older automake.
-    shift
-    ;;
-
-  -h|--h|--he|--hel|--help)
-    echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
-to PROGRAM being missing or too old.
-
-Options:
-  -h, --help      display this help and exit
-  -v, --version   output version information and exit
-
-Supported PROGRAM values:
-  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
-  bison     yacc      flex         lex       help2man
-
-Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
-'g' are ignored when checking the name.
-
-Send bug reports to <bug-automake at gnu.org>."
-    exit $?
-    ;;
-
-  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-    echo "missing $scriptversion (GNU Automake)"
-    exit $?
-    ;;
-
-  -*)
-    echo 1>&2 "$0: unknown '$1' option"
-    echo 1>&2 "Try '$0 --help' for more information"
-    exit 1
-    ;;
-
-esac
-
-# Run the given program, remember its exit status.
-"$@"; st=$?
-
-# If it succeeded, we are done.
-test $st -eq 0 && exit 0
-
-# Also exit now if we it failed (or wasn't found), and '--version' was
-# passed; such an option is passed most likely to detect whether the
-# program is present and works.
-case $2 in --version|--help) exit $st;; esac
-
-# Exit code 63 means version mismatch.  This often happens when the user
-# tries to use an ancient version of a tool on a file that requires a
-# minimum version.
-if test $st -eq 63; then
-  msg="probably too old"
-elif test $st -eq 127; then
-  # Program was missing.
-  msg="missing on your system"
-else
-  # Program was found and executed, but failed.  Give up.
-  exit $st
-fi
-
-perl_URL=http://www.perl.org/
-flex_URL=http://flex.sourceforge.net/
-gnu_software_URL=http://www.gnu.org/software
-
-program_details ()
-{
-  case $1 in
-    aclocal|automake)
-      echo "The '$1' program is part of the GNU Automake package:"
-      echo "<$gnu_software_URL/automake>"
-      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
-      echo "<$gnu_software_URL/autoconf>"
-      echo "<$gnu_software_URL/m4/>"
-      echo "<$perl_URL>"
-      ;;
-    autoconf|autom4te|autoheader)
-      echo "The '$1' program is part of the GNU Autoconf package:"
-      echo "<$gnu_software_URL/autoconf/>"
-      echo "It also requires GNU m4 and Perl in order to run:"
-      echo "<$gnu_software_URL/m4/>"
-      echo "<$perl_URL>"
-      ;;
-  esac
-}
-
-give_advice ()
-{
-  # Normalize program name to check for.
-  normalized_program=`echo "$1" | sed '
-    s/^gnu-//; t
-    s/^gnu//; t
-    s/^g//; t'`
-
-  printf '%s\n' "'$1' is $msg."
-
-  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
-  case $normalized_program in
-    autoconf*)
-      echo "You should only need it if you modified 'configure.ac',"
-      echo "or m4 files included by it."
-      program_details 'autoconf'
-      ;;
-    autoheader*)
-      echo "You should only need it if you modified 'acconfig.h' or"
-      echo "$configure_deps."
-      program_details 'autoheader'
-      ;;
-    automake*)
-      echo "You should only need it if you modified 'Makefile.am' or"
-      echo "$configure_deps."
-      program_details 'automake'
-      ;;
-    aclocal*)
-      echo "You should only need it if you modified 'acinclude.m4' or"
-      echo "$configure_deps."
-      program_details 'aclocal'
-      ;;
-   autom4te*)
-      echo "You might have modified some maintainer files that require"
-      echo "the 'automa4te' program to be rebuilt."
-      program_details 'autom4te'
-      ;;
-    bison*|yacc*)
-      echo "You should only need it if you modified a '.y' file."
-      echo "You may want to install the GNU Bison package:"
-      echo "<$gnu_software_URL/bison/>"
-      ;;
-    lex*|flex*)
-      echo "You should only need it if you modified a '.l' file."
-      echo "You may want to install the Fast Lexical Analyzer package:"
-      echo "<$flex_URL>"
-      ;;
-    help2man*)
-      echo "You should only need it if you modified a dependency" \
-           "of a man page."
-      echo "You may want to install the GNU Help2man package:"
-      echo "<$gnu_software_URL/help2man/>"
-    ;;
-    makeinfo*)
-      echo "You should only need it if you modified a '.texi' file, or"
-      echo "any other file indirectly affecting the aspect of the manual."
-      echo "You might want to install the Texinfo package:"
-      echo "<$gnu_software_URL/texinfo/>"
-      echo "The spurious makeinfo call might also be the consequence of"
-      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
-      echo "want to install GNU make:"
-      echo "<$gnu_software_URL/make/>"
-      ;;
-    *)
-      echo "You might have modified some files without having the proper"
-      echo "tools for further handling them.  Check the 'README' file, it"
-      echo "often tells you about the needed prerequisites for installing"
-      echo "this package.  You may also peek at any GNU archive site, in"
-      echo "case some other package contains this missing '$1' program."
-      ;;
-  esac
-}
-
-give_advice "$1" | sed -e '1s/^/WARNING: /' \
-                       -e '2,$s/^/         /' >&2
-
-# Propagate the correct exit status (expected to be 127 for a program
-# not found, 63 for a program that failed due to version mismatch).
-exit $st
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/config/test-driver b/config/test-driver
deleted file mode 100755
index 32bf39e..0000000
--- a/config/test-driver
+++ /dev/null
@@ -1,127 +0,0 @@
-#! /bin/sh
-# test-driver - basic testsuite driver script.
-
-scriptversion=2012-06-27.10; # UTC
-
-# Copyright (C) 2011-2013 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake at gnu.org> or send patches to
-# <automake-patches at gnu.org>.
-
-# Make unconditional expansion of undefined variables an error.  This
-# helps a lot in preventing typo-related bugs.
-set -u
-
-usage_error ()
-{
-  echo "$0: $*" >&2
-  print_usage >&2
-  exit 2
-}
-
-print_usage ()
-{
-  cat <<END
-Usage:
-  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
-              [--expect-failure={yes|no}] [--color-tests={yes|no}]
-              [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT
-The '--test-name', '--log-file' and '--trs-file' options are mandatory.
-END
-}
-
-# TODO: better error handling in option parsing (in particular, ensure
-# TODO: $log_file, $trs_file and $test_name are defined).
-test_name= # Used for reporting.
-log_file=  # Where to save the output of the test script.
-trs_file=  # Where to save the metadata of the test run.
-expect_failure=no
-color_tests=no
-enable_hard_errors=yes
-while test $# -gt 0; do
-  case $1 in
-  --help) print_usage; exit $?;;
-  --version) echo "test-driver $scriptversion"; exit $?;;
-  --test-name) test_name=$2; shift;;
-  --log-file) log_file=$2; shift;;
-  --trs-file) trs_file=$2; shift;;
-  --color-tests) color_tests=$2; shift;;
-  --expect-failure) expect_failure=$2; shift;;
-  --enable-hard-errors) enable_hard_errors=$2; shift;;
-  --) shift; break;;
-  -*) usage_error "invalid option: '$1'";;
-  esac
-  shift
-done
-
-if test $color_tests = yes; then
-  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
-  red='' # Red.
-  grn='' # Green.
-  lgn='' # Light green.
-  blu='' # Blue.
-  mgn='' # Magenta.
-  std=''     # No color.
-else
-  red= grn= lgn= blu= mgn= std=
-fi
-
-do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
-trap "st=129; $do_exit" 1
-trap "st=130; $do_exit" 2
-trap "st=141; $do_exit" 13
-trap "st=143; $do_exit" 15
-
-# Test script is run here.
-"$@" >$log_file 2>&1
-estatus=$?
-if test $enable_hard_errors = no && test $estatus -eq 99; then
-  estatus=1
-fi
-
-case $estatus:$expect_failure in
-  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
-  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
-  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
-  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
-  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
-  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
-esac
-
-# Report outcome to console.
-echo "${col}${res}${std}: $test_name"
-
-# Register the test result, and other relevant metadata.
-echo ":test-result: $res" > $trs_file
-echo ":global-test-result: $res" >> $trs_file
-echo ":recheck: $recheck" >> $trs_file
-echo ":copy-in-global-log: $gcopy" >> $trs_file
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/configure b/configure
deleted file mode 100755
index 351eb9b..0000000
--- a/configure
+++ /dev/null
@@ -1,24511 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for eccodes  .
-#
-# Report bugs to <Software.Support at ecmwf.int>.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# Use a proper internal environment variable to ensure we don't fall
-  # into an infinite loop, continuously re-executing ourselves.
-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
-    _as_can_reexec=no; export _as_can_reexec;
-    # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
-  fi
-  # We don't want this to propagate to other subprocesses.
-          { _as_can_reexec=; unset _as_can_reexec;}
-if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-"
-  as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
-  exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-
-  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
-    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
-    PATH=/empty FPATH=/empty; export PATH FPATH
-    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
-      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  as_found=:
-  case $as_dir in #(
-	 /*)
-	   for as_base in sh bash ksh sh5; do
-	     # Try only shells that exist, to save several forks.
-	     as_shell=$as_dir/$as_base
-	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  CONFIG_SHELL=$as_shell as_have_required=yes
-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  break 2
-fi
-fi
-	   done;;
-       esac
-  as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
-  export CONFIG_SHELL
-             # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
-fi
-
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-  else
-    $as_echo "$0: Please tell bug-autoconf at gnu.org and
-$0: Software.Support at ecmwf.int about your system, including
-$0: any error possibly output before this message. Then
-$0: install a modern shell, or manually run the script
-$0: under such a shell if you do have one."
-  fi
-  exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
-  as_lineno_1=$LINENO as_lineno_1a=$LINENO
-  as_lineno_2=$LINENO as_lineno_2a=$LINENO
-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
-  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
-  # already done that, so ensure we don't try to do so again and fall
-  # in an infinite loop.  This has already happened in practice.
-  _as_can_reexec=no; export _as_can_reexec
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='eccodes'
-PACKAGE_TARNAME='eccodes'
-PACKAGE_VERSION=' '
-PACKAGE_STRING='eccodes  '
-PACKAGE_BUGREPORT='Software.Support at ecmwf.int'
-PACKAGE_URL=''
-
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_unique_file="src/grib_api.h"
-ac_subst_vars='am__EXEEXT_FALSE
-am__EXEEXT_TRUE
-LTLIBOBJS
-LIBOBJS
-LINUX_DISTRIBUTION_VERSION
-LINUX_DISTRIBUTION_NAME
-WERROR
-WARN_PEDANTIC
-RM
-CREATING_SHARED_LIBS_FALSE
-CREATING_SHARED_LIBS_TRUE
-WITH_FORTRAN_FALSE
-WITH_FORTRAN_TRUE
-WITH_PYTHON_FALSE
-WITH_PYTHON_TRUE
-PYTHON_DATA_HANDLER
-NUMPY_INCLUDE
-PYTHON_CHECK
-PYTHON_CONFIG
-PYTHON_LIBS
-PYTHON_CFLAGS
-PYTHON_LDFLAGS
-PYTHON_INCLUDES
-pkgpyexecdir
-pyexecdir
-pkgpythondir
-pythondir
-PYTHON_PLATFORM
-PYTHON_EXEC_PREFIX
-PYTHON_PREFIX
-PYTHON_VERSION
-PYTHON
-WITH_PERL_FALSE
-WITH_PERL_TRUE
-GRIB_API_INC
-GRIB_API_LIB
-PERL_MAKE_OPTIONS
-PERL
-PERL_INSTALL_OPTIONS
-LIB_PNG
-CCSDS_TEST
-AEC_DIR
-LIB_AEC
-JPEG_TEST
-LIB_JASPER
-LIB_OPENJPEG
-OPENJPEG_DIR
-JASPER_DIR
-NETCDF_LDFLAGS
-EMOS_LIB
-IFS_SAMPLES_DIR
-F90_MODULE_FLAG
-F90_CHECK
-FORTRAN_MOD
-DEBUG_IN_MOD_FALSE
-DEBUG_IN_MOD_TRUE
-ECCODES_DEFINITION_PATH
-ECCODES_SAMPLES_PATH
-RPM_RELEASE
-RPM_CONFIGURE_ARGS
-RPM_HOST_OS
-RPM_HOST_VENDOR
-RPM_HOST_CPU
-WITH_MARS_TESTS_FALSE
-WITH_MARS_TESTS_TRUE
-GRIB_DEVEL
-DEVEL_RULES
-UPPER_CASE_MOD_FALSE
-UPPER_CASE_MOD_TRUE
-ac_ct_FC
-FCFLAGS
-FC
-ac_ct_F77
-FFLAGS
-F77
-LEXLIB
-LEX_OUTPUT_ROOT
-LEX
-YFLAGS
-YACC
-PERLDIR
-AM_BACKSLASH
-AM_DEFAULT_VERBOSITY
-AM_DEFAULT_V
-AM_V
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-am__nodep
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-am__untar
-am__tar
-AMTAR
-am__leading_dot
-SET_MAKE
-mkdir_p
-MKDIR_P
-INSTALL_STRIP_PROGRAM
-install_sh
-MAKEINFO
-AUTOHEADER
-AUTOMAKE
-AUTOCONF
-ACLOCAL
-VERSION
-PACKAGE
-CYGPATH_W
-am__isrc
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-ECCODES_AGE
-ECCODES_REVISION
-ECCODES_CURRENT
-ECCODES_PATCH_VERSION
-ECCODES_MINOR_VERSION
-ECCODES_MAJOR_VERSION
-ECCODES_VERSION_STR
-ECCODES_MAIN_VERSION
-LIBTOOL_DEPS
-CPP
-OTOOL64
-OTOOL
-LIPO
-NMEDIT
-DSYMUTIL
-MANIFEST_TOOL
-AWK
-RANLIB
-STRIP
-ac_ct_AR
-AR
-DLLTOOL
-OBJDUMP
-LN_S
-NM
-ac_ct_DUMPBIN
-DUMPBIN
-LD
-FGREP
-EGREP
-GREP
-SED
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-LIBTOOL
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_shared
-enable_static
-with_pic
-enable_fast_install
-with_gnu_ld
-with_sysroot
-enable_libtool_lock
-enable_dependency_tracking
-enable_silent_rules
-enable_pthread
-enable_ibmpower67_opt
-enable_ieee_native
-enable_align_memory
-enable_vector
-enable_memory_management
-enable_development
-enable_largefile
-with_rpm_release
-enable_fortran
-with_ifs_samples
-with_emos
-with_fortranlibdir
-with_fortranlibs
-enable_timer
-enable_omp_packing
-with_netcdf
-enable_jpeg
-with_jasper
-with_openjpeg
-with_aec
-with_png_support
-enable_install_system_perl
-with_perl
-with_perl_options
-enable_python
-enable_numpy
-enable_werror_always
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP
-YACC
-YFLAGS
-F77
-FFLAGS
-FC
-FCFLAGS
-PYTHON
-PYTHON_INCLUDES
-PYTHON_LDFLAGS
-PYTHON_CFLAGS
-PYTHON_LIBS
-PYTHON_CONFIG'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *=)   ac_optarg= ;;
-  *)    ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    case $ac_envvar in #(
-      '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
-    esac
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-  esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
-		datadir sysconfdir sharedstatedir localstatedir includedir \
-		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  # Remove trailing slashes.
-  case $ac_val in
-    */ )
-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-      eval $ac_var=\$ac_val;;
-  esac
-  # Be sure to have absolute directory names.
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_myself" : 'X\(//\)[^/]' \| \
-	 X"$as_myself" : 'X\(//\)$' \| \
-	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
-	pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures eccodes   to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/eccodes]
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-
-Program names:
-  --program-prefix=PREFIX            prepend PREFIX to installed program names
-  --program-suffix=SUFFIX            append SUFFIX to installed program names
-  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-  case $ac_init_help in
-     short | recursive ) echo "Configuration of eccodes  :";;
-   esac
-  cat <<\_ACEOF
-
-Optional Features:
-  --disable-option-checking  ignore unrecognized --enable/--with options
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-shared[=PKGS]  build shared libraries [default=yes]
-  --enable-static[=PKGS]  build static libraries [default=yes]
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
-  --disable-libtool-lock  avoid locking (might break parallel builds)
-  --enable-dependency-tracking
-                          do not reject slow dependency extractors
-  --disable-dependency-tracking
-                          speeds up one-time build
-  --enable-silent-rules   less verbose build output (undo: "make V=1")
-  --disable-silent-rules  verbose build output (undo: "make V=0")
-  --enable-pthread        enable POSIX threads [by default disabled]
-  --enable-ibmpower67_opt enable IBM POWER 6/7 optimisations [by default
-                          disabled]
-  --disable-ieee-native   disable ieee native packing
-  --enable-align-memory   enable memory alignment [by default disabled]
-  --enable-vector         enable vectorised code [by default disabled]
-  --enable-memory-management
-                          enable memory [by default disabled]
-  --enable-development    enable development configuration [by default
-                          disabled]
-  --disable-largefile     omit support for large files
-  --disable-fortran       disable fortran interface [by default enabled]
-  --enable-timer          enable timer [by default disabled]
-  --enable-omp-packing    enable OpenMP multithreaded packing [by default
-                          disabled]
-  --disable-jpeg          disable jpeg 2000 for grib 2 decoding/encoding [by
-                          default enabled]
-  --enable-install-system-perl
-                          perl modules will install in the standard perl
-                          installation
-  --enable-python         Enable the Python interface in the build [by default
-                          disabled]
-  --disable-numpy         Disable NumPy as the data handling package for the
-                          Python interface [by default enabled]
-  --enable-werror-always  enable -Werror despite compiler version
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
-                          both]
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
-  --with-sysroot=DIR Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).
-  --with-rpm-release=NUMBER       The rpms will use this release number  (defaults to 1)
-  --with-ifs-samples=ifs-samples-dir
-                          ifs_samples will be installed in ifs-samples-dir
-  --with-emos=EMOS        use emos for tests
-  --with-fortranlibdir=FORTRANDIR
-                          fortran libraries directory
-  --with-fortranlibs=FORTRANLIBS
-                          fortran libraries to link from C
-  --with-netcdf=NETCDF    enable netcdf encoding/decoding using netcdf library
-                          in NETCDF
-  --with-jasper=JASPER    use specified jasper installation directory
-  --with-openjpeg=OPENJPEG
-                          use specified openjpeg installation directory
-  --with-aec=DIR          use specified libaec installation directory
-  --with-png-support      add support for png decoding/encoding
-  --with-perl=PERL        use specified Perl binary to configure Perl grib_api
-  --with-perl-options=OPTIONS
-                          options to pass on command-line when generating Perl
-                          grib_api's Makefile from Makefile.PL
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  CPP         C preprocessor
-  YACC        The `Yet Another Compiler Compiler' implementation to use.
-              Defaults to the first program found out of: `bison -y', `byacc',
-              `yacc'.
-  YFLAGS      The list of arguments that will be passed by default to $YACC.
-              This script will default YFLAGS to the empty string to avoid a
-              default value of `-d' given by some make applications.
-  F77         Fortran 77 compiler command
-  FFLAGS      Fortran 77 compiler flags
-  FC          Fortran compiler command
-  FCFLAGS     Fortran compiler flags
-  PYTHON      the Python interpreter
-  PYTHON_INCLUDES
-              Include flags for python
-  PYTHON_LDFLAGS
-              Link flags for python
-  PYTHON_CFLAGS
-              C flags for python
-  PYTHON_LIBS Libraries for python
-  PYTHON_CONFIG
-              Path to python-config
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <Software.Support at ecmwf.int>.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" ||
-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-      continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-eccodes configure
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_compile
-
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
-
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
-ac_fn_c_check_func ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $2 innocuous_$2
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $2 (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $2
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $2 ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$2 || defined __stub___$2
-choke me
-#endif
-
-int
-main ()
-{
-return $2 ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_func
-
-# ac_fn_f77_try_compile LINENO
-# ----------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_f77_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_f77_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_f77_try_compile
-
-# ac_fn_f77_try_link LINENO
-# -------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_f77_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_f77_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_f77_try_link
-
-# ac_fn_fc_try_compile LINENO
-# ---------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_fc_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_fc_try_compile
-
-# ac_fn_fc_try_link LINENO
-# ------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_fc_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_fc_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_fc_try_link
-
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ----------------------------------------- ##
-## Report this to Software.Support at ecmwf.int ##
-## ----------------------------------------- ##"
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
-ac_fn_c_check_type ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=no"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof ($2))
-	 return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
-	    return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_type
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by eccodes $as_me  , which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
-  done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
-    2)
-      as_fn_append ac_configure_args1 " '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-	ac_must_keep_next=false # Got value, back to normal.
-      else
-	case $ac_arg in
-	  *=* | --config-cache | -C | -disable-* | --disable-* \
-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-	  | -with-* | --with-* | -without-* | --without-* | --x)
-	    case "$ac_configure_args0 " in
-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-	    esac
-	    ;;
-	  -* ) ac_must_keep_next=true ;;
-	esac
-      fi
-      as_fn_append ac_configure_args " '$ac_arg'"
-      ;;
-    esac
-  done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-	"s/'\''/'\''\\\\'\'''\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
-      echo
-      for ac_var in $ac_subst_files
-      do
-	eval ac_val=\$$ac_var
-	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special files
-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-	# differences in whitespace do not lead to failure.
-	ac_old_val_w=`echo x $ac_old_val`
-	ac_new_val_w=`echo x $ac_new_val`
-	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	  ac_cache_corrupted=:
-	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-	  eval $ac_var=\$ac_old_val
-	fi
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-ac_aux_dir=
-for ac_dir in config "$srcdir"/config; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-
-case `pwd` in
-  *\ * | *\	*)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
-esac
-
-
-
-macro_version='2.4.2'
-macro_revision='1.3337'
-
-
-
-
-
-
-
-
-
-
-
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-$as_echo_n "checking how to print strings... " >&6; }
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
-else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO ""
-}
-
-case "$ECHO" in
-  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-$as_echo "printf" >&6; } ;;
-  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-$as_echo "print -r" >&6; } ;;
-  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-$as_echo "cat" >&6; } ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-	;;
-    [ab].out )
-	# We found the default executable, but exeext='' is most
-	# certainly right.
-	break;;
-    *.* )
-	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-	then :; else
-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	fi
-	# We set ac_cv_exeext here because the later test for it is not
-	# safe: cross compilers may not add the suffix if given an `-o'
-	# argument, so we may need to know it at that point already.
-	# Even if this section looks crufty: it has the advantage of
-	# actually working.
-	break;;
-    * )
-	break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	  break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
-   then ac_cv_path_FGREP="$GREP -F"
-   else
-     if test -z "$FGREP"; then
-  ac_path_FGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in fgrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_FGREP" || continue
-# Check for GNU ac_path_FGREP and select it if it is found.
-  # Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'FGREP' >> "conftest.nl"
-    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_FGREP="$ac_path_FGREP"
-      ac_path_FGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_FGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_FGREP"; then
-    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_FGREP=$FGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
- FGREP="$ac_cv_path_FGREP"
-
-
-test -z "$GREP" && GREP=grep
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if ${lt_cv_path_LD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if ${lt_cv_path_NM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in dumpbin "link -dump"
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DUMPBIN"; then
-  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DUMPBIN=$ac_cv_prog_DUMPBIN
-if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$DUMPBIN" && break
-  done
-fi
-if test -z "$DUMPBIN"; then
-  ac_ct_DUMPBIN=$DUMPBIN
-  for ac_prog in dumpbin "link -dump"
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DUMPBIN"; then
-  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
-if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_DUMPBIN" && break
-done
-
-  if test "x$ac_ct_DUMPBIN" = x; then
-    DUMPBIN=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DUMPBIN=$ac_ct_DUMPBIN
-  fi
-fi
-
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if ${lt_cv_nm_interface+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
-  cat conftest.out >&5
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if ${lt_cv_sys_max_cmd_len+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-    i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[	 ]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
-	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-
-fi
-
-if test -n $lt_cv_sys_max_cmd_len ; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-
-
-
-
-
-: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,b/c, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
-
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-
-
-
-
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-if ${lt_cv_to_host_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
-esac
-
-fi
-
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-if ${lt_cv_to_tool_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  #assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
-
-fi
-
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if ${lt_cv_ld_reload_flag+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_reload_flag='-r'
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test "$GCC" != yes; then
-      reload_cmds=false
-    fi
-    ;;
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OBJDUMP=$ac_ct_OBJDUMP
-  fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if ${lt_cv_deplibs_check_method+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[4-9]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[45]*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[3-9]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-    fi
-    ;;
-  esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DLLTOOL=$ac_ct_DLLTOOL
-  fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh
-  # decide which to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-    ;;
-  *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-    ;;
-  esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in ar
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$AR" && break
-  done
-fi
-if test -z "$AR"; then
-  ac_ct_AR=$AR
-  for ac_prog in ar
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_AR" && break
-done
-
-  if test "x$ac_ct_AR" = x; then
-    AR="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-fi
-
-: ${AR=ar}
-: ${AR_FLAGS=cru}
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-$as_echo_n "checking for archiver @FILE support... " >&6; }
-if ${lt_cv_ar_at_file+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ar_at_file=no
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-      if test "$ac_status" -eq 0; then
-	# Ensure the archiver fails upon bogus file names.
-	rm -f conftest.$ac_objext libconftest.a
-	{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	if test "$ac_status" -ne 0; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-$as_echo "$lt_cv_ar_at_file" >&6; }
-
-if test "x$lt_cv_ar_at_file" = xno; then
-  archiver_list_spec=
-else
-  archiver_list_spec=$lt_cv_ar_at_file
-fi
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-test -z "$STRIP" && STRIP=:
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-test -z "$RANLIB" && RANLIB=:
-
-
-
-
-
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_prog in gawk mawk nawk awk
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if ${lt_cv_sys_global_symbol_pipe+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[BCDT]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[ABCDGISTW]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[ABCDEGRST]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[BCDEGRST]'
-  ;;
-osf*)
-  symcode='[BCDEGQRST]'
-  ;;
-solaris*)
-  symcode='[BDRT]'
-  ;;
-sco3.2v5*)
-  symcode='[DT]'
-  ;;
-sysv4.2uw2*)
-  symcode='[DT]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[ABDT]'
-  ;;
-sysv4)
-  symcode='[DFNSTU]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[ABCDGIRSTW]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK '"\
-"     {last_section=section; section=\$ 3};"\
-"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
-  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
-#else
-# define LT_DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-	  cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-LT_DLSYM_CONST struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-	  cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_globsym_save_LIBS=$LIBS
-	  lt_globsym_save_CFLAGS=$CFLAGS
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS=$lt_globsym_save_LIBS
-	  CFLAGS=$lt_globsym_save_CFLAGS
-	else
-	  echo "cannot find nm_test_func in $nlist" >&5
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&5
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-    fi
-  else
-    echo "$progname: failed program was:" >&5
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-
-fi
-
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-  nm_file_list_spec='@'
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-$as_echo_n "checking for sysroot... " >&6; }
-
-# Check whether --with-sysroot was given.
-if test "${with_sysroot+set}" = set; then :
-  withval=$with_sysroot;
-else
-  with_sysroot=no
-fi
-
-
-lt_sysroot=
-case ${with_sysroot} in #(
- yes)
-   if test "$GCC" = yes; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
-$as_echo "${with_sysroot}" >&6; }
-   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-   ;;
-esac
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-$as_echo "${lt_sysroot:-no}" >&6; }
-
-
-
-
-
-# Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock;
-fi
-
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-	HPUX_IA64_MODE="32"
-	;;
-      *ELF-64*)
-	HPUX_IA64_MODE="64"
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -melf32bsmip"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -melf32bmipn32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -melf64bmip"
-	;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -32"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -n32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -64"
-	  ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_i386_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
-	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
-	    LD="${LD-ld} -m elf32ppclinux"
-	    ;;
-	  s390x-*linux*)
-	    LD="${LD-ld} -m elf_s390"
-	    ;;
-	  sparc64-*linux*)
-	    LD="${LD-ld} -m elf32_sparc"
-	    ;;
-	esac
-	;;
-      *64-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_x86_64_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_x86_64"
-	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
-	    LD="${LD-ld} -m elf64ppc"
-	    ;;
-	  s390*-*linux*|s390*-*tpf*)
-	    LD="${LD-ld} -m elf64_s390"
-	    ;;
-	  sparc*-*linux*)
-	    LD="${LD-ld} -m elf64_sparc"
-	    ;;
-	esac
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if ${lt_cv_cc_needs_belf+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_cc_needs_belf=yes
-else
-  lt_cv_cc_needs_belf=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-     ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*)
-        case $host in
-        i?86-*-solaris*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        sparc*-*-solaris*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-        esac
-        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD="${LD-ld}_sol2"
-        fi
-        ;;
-      *)
-	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-set dummy ${ac_tool_prefix}mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$MANIFEST_TOOL"; then
-  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-if test -n "$MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-$as_echo "$MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-  # Extract the first word of "mt", so it can be a program name with args.
-set dummy mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_MANIFEST_TOOL"; then
-  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-if test -n "$ac_ct_MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_MANIFEST_TOOL" = x; then
-    MANIFEST_TOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-  fi
-else
-  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-fi
-
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-if ${lt_cv_path_mainfest_tool+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_path_mainfest_tool=no
-  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-  cat conftest.err >&5
-  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-    lt_cv_path_mainfest_tool=yes
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
-  MANIFEST_TOOL=:
-fi
-
-
-
-
-
-
-  case $host_os in
-    rhapsody* | darwin*)
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DSYMUTIL"; then
-  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-DSYMUTIL=$ac_cv_prog_DSYMUTIL
-if test -n "$DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DSYMUTIL"; then
-  ac_ct_DSYMUTIL=$DSYMUTIL
-  # Extract the first word of "dsymutil", so it can be a program name with args.
-set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DSYMUTIL"; then
-  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
-if test -n "$ac_ct_DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_DSYMUTIL" = x; then
-    DSYMUTIL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DSYMUTIL=$ac_ct_DSYMUTIL
-  fi
-else
-  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NMEDIT"; then
-  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-NMEDIT=$ac_cv_prog_NMEDIT
-if test -n "$NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_NMEDIT"; then
-  ac_ct_NMEDIT=$NMEDIT
-  # Extract the first word of "nmedit", so it can be a program name with args.
-set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_NMEDIT"; then
-  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
-if test -n "$ac_ct_NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_NMEDIT" = x; then
-    NMEDIT=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    NMEDIT=$ac_ct_NMEDIT
-  fi
-else
-  NMEDIT="$ac_cv_prog_NMEDIT"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
-set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LIPO"; then
-  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-LIPO=$ac_cv_prog_LIPO
-if test -n "$LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_LIPO"; then
-  ac_ct_LIPO=$LIPO
-  # Extract the first word of "lipo", so it can be a program name with args.
-set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_LIPO"; then
-  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_LIPO="lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
-if test -n "$ac_ct_LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_LIPO" = x; then
-    LIPO=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    LIPO=$ac_ct_LIPO
-  fi
-else
-  LIPO="$ac_cv_prog_LIPO"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL"; then
-  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL=$ac_cv_prog_OTOOL
-if test -n "$OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL"; then
-  ac_ct_OTOOL=$OTOOL
-  # Extract the first word of "otool", so it can be a program name with args.
-set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL"; then
-  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL="otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
-if test -n "$ac_ct_OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL" = x; then
-    OTOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL=$ac_ct_OTOOL
-  fi
-else
-  OTOOL="$ac_cv_prog_OTOOL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL64"; then
-  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL64=$ac_cv_prog_OTOOL64
-if test -n "$OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL64"; then
-  ac_ct_OTOOL64=$OTOOL64
-  # Extract the first word of "otool64", so it can be a program name with args.
-set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL64"; then
-  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL64="otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
-if test -n "$ac_ct_OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_OTOOL64" = x; then
-    OTOOL64=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL64=$ac_ct_OTOOL64
-  fi
-else
-  OTOOL64="$ac_cv_prog_OTOOL64"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if ${lt_cv_apple_cc_single_mod+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-	# By default we will add the -single_module flag. You can override
-	# by either setting the environment variable LT_MULTI_MODULE
-	# non-empty at configure time, or by adding -multi_module to the
-	# link flags.
-	rm -rf libconftest.dylib*
-	echo "int foo(void){return 1;}" > conftest.c
-	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&5
-	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-	# If there is a non-empty error log, and "single_module"
-	# appears in it, assume the flag caused a linker warning
-        if test -s conftest.err && $GREP single_module conftest.err; then
-	  cat conftest.err >&5
-	# Otherwise, if the output was created with a 0 exit code from
-	# the compiler, it worked.
-	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
-	  lt_cv_apple_cc_single_mod=yes
-	else
-	  cat conftest.err >&5
-	fi
-	rm -rf libconftest.dylib*
-	rm -f conftest.*
-      fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if ${lt_cv_ld_exported_symbols_list+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_ld_exported_symbols_list=yes
-else
-  lt_cv_ld_exported_symbols_list=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-	LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
-$as_echo_n "checking for -force_load linker flag... " >&6; }
-if ${lt_cv_ld_force_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_force_load=no
-      cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
-      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
-      echo "$AR cru libconftest.a conftest.o" >&5
-      $AR cru libconftest.a conftest.o 2>&5
-      echo "$RANLIB libconftest.a" >&5
-      $RANLIB libconftest.a 2>&5
-      cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
-      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-      _lt_result=$?
-      if test -s conftest.err && $GREP force_load conftest.err; then
-	cat conftest.err >&5
-      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
-	lt_cv_ld_force_load=yes
-      else
-	cat conftest.err >&5
-      fi
-        rm -f conftest.err libconftest.a conftest conftest.c
-        rm -rf conftest.dSYM
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
-$as_echo "$lt_cv_ld_force_load" >&6; }
-    case $host_os in
-    rhapsody* | darwin1.[012])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[012]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-		  inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_header in dlfcn.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
-"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-# Set options
-# Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
-  enableval=$enable_shared; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_shared=yes
-fi
-
-
-
-
-
-
-
-
-
-
-        enable_dlopen=no
-
-
-  enable_win32_dll=no
-
-
-
-  # Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
-  enableval=$enable_static; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_static=yes
-fi
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
-  withval=$with_pic; lt_p=${PACKAGE-default}
-    case $withval in
-    yes|no) pic_mode=$withval ;;
-    *)
-      pic_mode=default
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for lt_pkg in $withval; do
-	IFS="$lt_save_ifs"
-	if test "X$lt_pkg" = "X$lt_p"; then
-	  pic_mode=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  pic_mode=default
-fi
-
-
-test -z "$pic_mode" && pic_mode=default
-
-
-
-
-
-
-
-  # Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
-  enableval=$enable_fast_install; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_fast_install=yes
-fi
-
-
-
-
-
-
-
-
-
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-test -z "$LN_S" && LN_S="ln -s"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if ${lt_cv_objdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
-objdir=$lt_cv_objdir
-
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
-
-
-
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/${ac_tool_prefix}file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-
-
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/file"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  else
-    MAGIC_CMD=:
-  fi
-fi
-
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-
-lt_save_CC="$CC"
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-objext=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-
-lt_prog_compiler_no_builtin_flag=
-
-if test "$GCC" = yes; then
-  case $cc_basename in
-  nvcc*)
-    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
-  *)
-    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
-  esac
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_rtti_exceptions=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="-fno-rtti -fno-exceptions"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_rtti_exceptions=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
-
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
-    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
-else
-    :
-fi
-
-fi
-
-
-
-
-
-
-  lt_prog_compiler_wl=
-lt_prog_compiler_pic=
-lt_prog_compiler_static=
-
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl='-Wl,'
-    lt_prog_compiler_static='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl='-Xlinker '
-      if test -n "$lt_prog_compiler_pic"; then
-        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static='-Bstatic'
-      else
-	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-KPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fPIC'
-	lt_prog_compiler_static='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='--shared'
-	lt_prog_compiler_static='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	lt_prog_compiler_wl='-Wl,-Wl,,'
-	lt_prog_compiler_pic='-PIC'
-	lt_prog_compiler_static='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-fpic'
-	lt_prog_compiler_static='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-qpic'
-	lt_prog_compiler_static='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl=''
-	  ;;
-	*Sun\ F* | *Sun*Fortran*)
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Wl,'
-	  ;;
-        *Intel*\ [CF]*Compiler*)
-	  lt_prog_compiler_wl='-Wl,'
-	  lt_prog_compiler_pic='-fPIC'
-	  lt_prog_compiler_static='-static'
-	  ;;
-	*Portland\ Group*)
-	  lt_prog_compiler_wl='-Wl,'
-	  lt_prog_compiler_pic='-fpic'
-	  lt_prog_compiler_static='-Bstatic'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	lt_prog_compiler_wl='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl='-Qoption ld '
-      lt_prog_compiler_pic='-PIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic='-Kconform_pic'
-	lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_can_build_shared=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic='-pic'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic=
-    ;;
-  *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
-    case $lt_prog_compiler_pic in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
-     esac
-else
-    lt_prog_compiler_pic=
-     lt_prog_compiler_can_build_shared=no
-fi
-
-fi
-
-
-
-
-
-
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works" = xyes; then
-    :
-else
-    lt_prog_compiler_static=
-fi
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag=
-  always_export_symbols=no
-  archive_cmds=
-  archive_expsym_cmds=
-  compiler_needs_object=no
-  enable_shared_with_static_runtimes=no
-  export_dynamic_flag_spec=
-  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic=no
-  hardcode_direct=no
-  hardcode_direct_absolute=no
-  hardcode_libdir_flag_spec=
-  hardcode_libdir_separator=
-  hardcode_minus_L=no
-  hardcode_shlibpath_var=unsupported
-  inherit_rpath=no
-  link_all_deplibs=unknown
-  module_cmds=
-  module_expsym_cmds=
-  old_archive_from_new_cmds=
-  old_archive_from_expsyms_cmds=
-  thread_safe_flag_spec=
-  whole_archive_flag_spec=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  ld_shlibs=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec='-L$libdir'
-      export_dynamic_flag_spec='${wl}--export-all-symbols'
-      allow_undefined_flag=unsupported
-      always_export_symbols=no
-      enable_shared_with_static_runtimes=yes
-      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      link_all_deplibs=yes
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec=
-      export_dynamic_flag_spec=
-      whole_archive_flag_spec=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag=unsupported
-      always_export_symbols=yes
-      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds=''
-      hardcode_direct=yes
-      hardcode_direct_absolute=yes
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      file_list_spec='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L=yes
-	  hardcode_libdir_flag_spec='-L$libdir'
-	  hardcode_libdir_separator=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag="-z nodefs"
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath_
-fi
-
-	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag=' ${wl}-bernotok'
-	  allow_undefined_flag=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec='$convenience'
-	  fi
-	  archive_cmds_need_lc=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	hardcode_libdir_flag_spec=' '
-	allow_undefined_flag=unsupported
-	always_export_symbols=yes
-	file_list_spec='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-	enable_shared_with_static_runtimes=yes
-	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	old_postinstall_cmds='chmod 644 $oldlib'
-	postlink_cmds='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	hardcode_libdir_flag_spec=' '
-	allow_undefined_flag=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	old_archive_from_new_cmds='true'
-	# FIXME: Should let the user specify the lib program.
-	old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	enable_shared_with_static_runtimes=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc=no
-  hardcode_direct=no
-  hardcode_automatic=yes
-  hardcode_shlibpath_var=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
-  else
-    whole_archive_flag_spec=''
-  fi
-  link_all_deplibs=yes
-  allow_undefined_flag="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
-  else
-  ld_shlibs=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_direct=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L=yes
-      export_dynamic_flag_spec='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator=:
-	hardcode_direct=yes
-	hardcode_direct_absolute=yes
-	export_dynamic_flag_spec='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-
-	  # Older versions of the 11.00 compiler do not understand -b yet
-	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
-$as_echo_n "checking if $CC understands -b... " >&6; }
-if ${lt_cv_prog_compiler__b+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler__b=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS -b"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler__b=yes
-       fi
-     else
-       lt_cv_prog_compiler__b=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
-$as_echo "$lt_cv_prog_compiler__b" >&6; }
-
-if test x"$lt_cv_prog_compiler__b" = xyes; then
-    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-else
-    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-fi
-
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct=no
-	  hardcode_shlibpath_var=no
-	  ;;
-	*)
-	  hardcode_direct=yes
-	  hardcode_direct_absolute=yes
-	  export_dynamic_flag_spec='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-int foo (void) { return 0; }
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      inherit_rpath=yes
-      link_all_deplibs=yes
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    newsos6)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_shlibpath_var=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct=yes
-	hardcode_shlibpath_var=no
-	hardcode_direct_absolute=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      allow_undefined_flag=unsupported
-      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec='-rpath $libdir'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_separator=:
-      ;;
-
-    solaris*)
-      no_undefined_flag=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_shlibpath_var=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds='$CC -r -o $output$reload_objs'
-	  hardcode_direct=no
-        ;;
-	motorola)
-	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var=no
-      export_dynamic_flag_spec='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag='${wl}-z,text'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag='${wl}-z,text'
-      allow_undefined_flag='${wl}-z,nodefs'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-R,$libdir'
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      export_dynamic_flag_spec='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
-
-    *)
-      ld_shlibs=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
-test "$ld_shlibs" = no && can_build_shared=no
-
-with_gnu_ld=$with_gnu_ld
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl
-	  pic_flag=$lt_prog_compiler_pic
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag
-	  allow_undefined_flag=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc=no
-	  else
-	    lt_cv_archive_cmds_need_lc=yes
-	  fi
-	  allow_undefined_flag=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
-    *) lt_sed_strip_eq="s,=/,/,g" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-  case $lt_search_path_spec in
-  *\;*)
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-    ;;
-  *)
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-    ;;
-  esac
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[lt_foo]++; }
-  if (lt_freq[lt_foo] == 1) { print lt_foo; }
-}'`
-  # AWK program above erroneously prepends '/' to C:/dos/paths
-  # for these hosts.
-  case $host_os in
-    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
-  esac
-  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" ||
-   test -n "$runpath_var" ||
-   test "X$hardcode_automatic" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
-     test "$hardcode_minus_L" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
-
-if test "$hardcode_action" = relink ||
-   test "$inherit_rpath" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-  if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-
-fi
-
-    ;;
-
-  *)
-    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_shl_load=yes
-else
-  ac_cv_lib_dld_shl_load=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
-  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if ${ac_cv_lib_svld_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_svld_dlopen=yes
-else
-  ac_cv_lib_svld_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if ${ac_cv_lib_dld_dld_link+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link ();
-int
-main ()
-{
-return dld_link ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_dld_link=yes
-else
-  ac_cv_lib_dld_dld_link=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
-  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self_static+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self_static=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self_static=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-striplib=
-old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    fi
-    ;;
-  *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-  # Report which library types will actually be built
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[4-9]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-
-
-
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC="$lt_save_CC"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-        ac_config_commands="$ac_config_commands libtool"
-
-
-
-
-# Only expand once:
-
-
-
-
-
-# Source file containing package/library versioning information.
-
- . ${srcdir}/version.sh
-
-ECCODES_MAIN_VERSION="${ECCODES_MAJOR_VERSION}.${ECCODES_MINOR_VERSION}.${ECCODES_REVISION_VERSION}"
- echo $ECCODES_MAIN_VERSION
-
-PACKAGE_VERSION="${ECCODES_MAIN_VERSION}"
-ECCODES_VERSION_STR="${ECCODES_MAIN_VERSION}"
-ECCODES_PATCH_VERSION="${ECCODES_REVISION_VERSION}"
-
-
-
-
-
-
-
-
-
-
-echo "configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}"
-
-# Ensure that make can run correctly
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name.  Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
-  *[\\\"\#\$\&\'\`$am_lf]*)
-    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
-esac
-case $srcdir in
-  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
-    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$*" = "X"; then
-	# -L didn't work.
-	set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$*" != "X $srcdir/configure conftest.file" \
-	&& test "$*" != "X conftest.file $srcdir/configure"; then
-
-	# If neither matched, then we have a broken ls.  This can happen
-	# if, for instance, CONFIG_SHELL is bash and it inherits a
-	# broken ls alias from the environment.  This has actually
-	# happened.  Such a system could not be considered "sane".
-	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment" "$LINENO" 5
-     fi
-     if test "$2" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$2" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   as_fn_error $? "newly created file is older than distributed files!
-Check your system clock" "$LINENO" 5
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-
-rm -f conftest.file
-
-
-
-ac_config_headers="$ac_config_headers src/config.h"
-
-ac_config_files="$ac_config_files src/eccodes_version.h"
-
-ac_config_files="$ac_config_files rpms/eccodes.pc rpms/eccodes.spec rpms/eccodes_f90.pc"
-
-am__api_version='1.13'
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
-  ./ | .// | /[cC]/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-	  if test $ac_prog = install &&
-	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  elif test $ac_prog = install &&
-	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # program-specific install script used by HP pwplus--don't use.
-	    :
-	  else
-	    rm -rf conftest.one conftest.two conftest.dir
-	    echo one > conftest.one
-	    echo two > conftest.two
-	    mkdir conftest.dir
-	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
-	      test -s conftest.one && test -s conftest.two &&
-	      test -s conftest.dir/conftest.one &&
-	      test -s conftest.dir/conftest.two
-	    then
-	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	      break 3
-	    fi
-	  fi
-	fi
-      done
-    done
-    ;;
-esac
-
-  done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-test "$program_prefix" != NONE &&
-  program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
-  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-
-if test x"${MISSING+set}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
-  *)
-    MISSING="\${SHELL} $am_aux_dir/missing" ;;
-  esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
-else
-  am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
-fi
-
-if test x"${install_sh}" != xset; then
-  case $am_aux_dir in
-  *\ * | *\	*)
-    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
-  *)
-    install_sh="\${SHELL} $am_aux_dir/install-sh"
-  esac
-fi
-
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
-  if ${ac_cv_path_mkdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in mkdir gmkdir; do
-	 for ac_exec_ext in '' $ac_executable_extensions; do
-	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
-	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
-	     'mkdir (GNU coreutils) '* | \
-	     'mkdir (coreutils) '* | \
-	     'mkdir (fileutils) '4.1*)
-	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
-	       break 3;;
-	   esac
-	 done
-       done
-  done
-IFS=$as_save_IFS
-
-fi
-
-  test -d ./--version && rmdir ./--version
-  if test "${ac_cv_path_mkdir+set}" = set; then
-    MKDIR_P="$ac_cv_path_mkdir -p"
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for MKDIR_P within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    MKDIR_P="$ac_install_sh -d"
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-	@echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
- if test "x$enable_dependency_tracking" != xno; then
-  AMDEP_TRUE=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
-fi
-
-
-# Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules;
-fi
-
-case $enable_silent_rules in # (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=1;;
-esac
-am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if $as_echo 'TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-	@$(TRUE)
-.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
-    AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AM_BACKSLASH='\'
-
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
-  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
-  # is not polluted with repeated "-I."
-  am__isrc=' -I$(srcdir)'
-  # test to see if srcdir already configured
-  if test -f $srcdir/config.status; then
-    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
-  fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-
-
-# Define the identity of the package.
-
- PACKAGE=$PACKAGE_NAME
- VERSION=${PACKAGE_VERSION}
-
-
-# Some tools Automake needs.
-
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-
-
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-
-
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-
-
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-
-
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-mkdir_p='$(MKDIR_P)'
-
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AMTAR='$${TAR-tar}'
-
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar  pax cpio none'
-
-am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
-
-
-
-
-
-depcc="$CC"   am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
-else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
-fi
-
-
-
-
-definition_files_path="${datadir}/eccodes/definitions"
-samples_files_path="${datadir}/eccodes/samples"
-ifs_samples_files_path="${datadir}/eccodes/ifs_samples"
-default_perl_install="${prefix}/perl"
-
-
-cat >>confdefs.h <<_ACEOF
-#define ECCODES_MAIN_VERSION $ECCODES_MAIN_VERSION
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define ECCODES_MAJOR_VERSION $ECCODES_MAJOR_VERSION
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define ECCODES_MINOR_VERSION $ECCODES_MINOR_VERSION
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define ECCODES_REVISION_VERSION $ECCODES_REVISION_VERSION
-_ACEOF
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define ECCODES_CURRENT $ECCODES_CURRENT
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define ECCODES_REVISION $ECCODES_REVISION
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define ECCODES_AGE $ECCODES_AGE
-_ACEOF
-
-
-
-
-
-PERLDIR=perl
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in xlc_r xlc gcc cc pgcc
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in xlc_r xlc gcc cc pgcc
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-	@echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-for ac_prog in 'bison -y' byacc
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_YACC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$YACC"; then
-  ac_cv_prog_YACC="$YACC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_YACC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-YACC=$ac_cv_prog_YACC
-if test -n "$YACC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
-$as_echo "$YACC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$YACC" && break
-done
-test -n "$YACC" || YACC="yacc"
-
-for ac_prog in flex lex
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LEX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LEX"; then
-  ac_cv_prog_LEX="$LEX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LEX="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-LEX=$ac_cv_prog_LEX
-if test -n "$LEX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5
-$as_echo "$LEX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$LEX" && break
-done
-test -n "$LEX" || LEX=":"
-
-if test "x$LEX" != "x:"; then
-  cat >conftest.l <<_ACEOF
-%%
-a { ECHO; }
-b { REJECT; }
-c { yymore (); }
-d { yyless (1); }
-e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument.  */
-    yyless ((input () != 0)); }
-f { unput (yytext[0]); }
-. { BEGIN INITIAL; }
-%%
-#ifdef YYTEXT_POINTER
-extern char *yytext;
-#endif
-int
-main (void)
-{
-  return ! yylex () + ! yywrap ();
-}
-_ACEOF
-{ { ac_try="$LEX conftest.l"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$LEX conftest.l") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5
-$as_echo_n "checking lex output file root... " >&6; }
-if ${ac_cv_prog_lex_root+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-if test -f lex.yy.c; then
-  ac_cv_prog_lex_root=lex.yy
-elif test -f lexyy.c; then
-  ac_cv_prog_lex_root=lexyy
-else
-  as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5
-$as_echo "$ac_cv_prog_lex_root" >&6; }
-LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
-
-if test -z "${LEXLIB+set}"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5
-$as_echo_n "checking lex library... " >&6; }
-if ${ac_cv_lib_lex+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    ac_save_LIBS=$LIBS
-    ac_cv_lib_lex='none needed'
-    for ac_lib in '' -lfl -ll; do
-      LIBS="$ac_lib $ac_save_LIBS"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-`cat $LEX_OUTPUT_ROOT.c`
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_lex=$ac_lib
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-      test "$ac_cv_lib_lex" != 'none needed' && break
-    done
-    LIBS=$ac_save_LIBS
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5
-$as_echo "$ac_cv_lib_lex" >&6; }
-  test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5
-$as_echo_n "checking whether yytext is a pointer... " >&6; }
-if ${ac_cv_prog_lex_yytext_pointer+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # POSIX says lex can declare yytext either as a pointer or an array; the
-# default is implementation-dependent.  Figure out which it is, since
-# not all implementations provide the %pointer and %array declarations.
-ac_cv_prog_lex_yytext_pointer=no
-ac_save_LIBS=$LIBS
-LIBS="$LEXLIB $ac_save_LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-  #define YYTEXT_POINTER 1
-`cat $LEX_OUTPUT_ROOT.c`
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_prog_lex_yytext_pointer=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_save_LIBS
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5
-$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; }
-if test $ac_cv_prog_lex_yytext_pointer = yes; then
-
-$as_echo "#define YYTEXT_POINTER 1" >>confdefs.h
-
-fi
-rm -f conftest.l $LEX_OUTPUT_ROOT.c
-
-fi
-ac_ext=f
-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_f77_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in pgf90 pgf77 xlf gfortran f77 g77 f90 ifort
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$F77"; then
-  ac_cv_prog_F77="$F77" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-F77=$ac_cv_prog_F77
-if test -n "$F77"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5
-$as_echo "$F77" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$F77" && break
-  done
-fi
-if test -z "$F77"; then
-  ac_ct_F77=$F77
-  for ac_prog in pgf90 pgf77 xlf gfortran f77 g77 f90 ifort
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_F77"; then
-  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_F77="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_F77=$ac_cv_prog_ac_ct_F77
-if test -n "$ac_ct_F77"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5
-$as_echo "$ac_ct_F77" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_F77" && break
-done
-
-  if test "x$ac_ct_F77" = x; then
-    F77=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    F77=$ac_ct_F77
-  fi
-fi
-
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-rm -f a.out
-
-# If we don't use `.F' as extension, the preprocessor is not run on the
-# input file.  (Note that this only needs to work for GNU compilers.)
-ac_save_ext=$ac_ext
-ac_ext=F
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5
-$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; }
-if ${ac_cv_f77_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-#ifndef __GNUC__
-       choke me
-#endif
-
-      end
-_ACEOF
-if ac_fn_f77_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_f77_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5
-$as_echo "$ac_cv_f77_compiler_gnu" >&6; }
-ac_ext=$ac_save_ext
-ac_test_FFLAGS=${FFLAGS+set}
-ac_save_FFLAGS=$FFLAGS
-FFLAGS=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5
-$as_echo_n "checking whether $F77 accepts -g... " >&6; }
-if ${ac_cv_prog_f77_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  FFLAGS=-g
-cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_f77_try_compile "$LINENO"; then :
-  ac_cv_prog_f77_g=yes
-else
-  ac_cv_prog_f77_g=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5
-$as_echo "$ac_cv_prog_f77_g" >&6; }
-if test "$ac_test_FFLAGS" = set; then
-  FFLAGS=$ac_save_FFLAGS
-elif test $ac_cv_prog_f77_g = yes; then
-  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
-    FFLAGS="-g -O2"
-  else
-    FFLAGS="-g"
-  fi
-else
-  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
-    FFLAGS="-O2"
-  else
-    FFLAGS=
-  fi
-fi
-
-if test $ac_compiler_gnu = yes; then
-  G77=yes
-else
-  G77=
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-      ac_ext=f
-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_f77_compiler_gnu
-
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-
-archive_cmds_need_lc_F77=no
-allow_undefined_flag_F77=
-always_export_symbols_F77=no
-archive_expsym_cmds_F77=
-export_dynamic_flag_spec_F77=
-hardcode_direct_F77=no
-hardcode_direct_absolute_F77=no
-hardcode_libdir_flag_spec_F77=
-hardcode_libdir_separator_F77=
-hardcode_minus_L_F77=no
-hardcode_automatic_F77=no
-inherit_rpath_F77=no
-module_cmds_F77=
-module_expsym_cmds_F77=
-link_all_deplibs_F77=unknown
-old_archive_cmds_F77=$old_archive_cmds
-reload_flag_F77=$reload_flag
-reload_cmds_F77=$reload_cmds
-no_undefined_flag_F77=
-whole_archive_flag_spec_F77=
-enable_shared_with_static_runtimes_F77=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-objext_F77=$objext
-
-# No sense in running all these tests if we already determined that
-# the F77 compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-  # save warnings/boilerplate of simple test code
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${F77-"f77"}
-  CFLAGS=$FFLAGS
-  compiler=$CC
-  compiler_F77=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-  GCC=$G77
-  if test -n "$compiler"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[4-9]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-    GCC_F77="$G77"
-    LD_F77="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    lt_prog_compiler_wl_F77=
-lt_prog_compiler_pic_F77=
-lt_prog_compiler_static_F77=
-
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl_F77='-Wl,'
-    lt_prog_compiler_static_F77='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_F77='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic_F77='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_F77='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static_F77=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_F77='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared_F77=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_F77='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic_F77=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic_F77='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl_F77='-Xlinker '
-      if test -n "$lt_prog_compiler_pic_F77"; then
-        lt_prog_compiler_pic_F77="-Xcompiler $lt_prog_compiler_pic_F77"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_F77='-Bstatic'
-      else
-	lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_F77='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static_F77='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-KPIC'
-	lt_prog_compiler_static_F77='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-fPIC'
-	lt_prog_compiler_static_F77='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='--shared'
-	lt_prog_compiler_static_F77='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	lt_prog_compiler_wl_F77='-Wl,-Wl,,'
-	lt_prog_compiler_pic_F77='-PIC'
-	lt_prog_compiler_static_F77='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-fpic'
-	lt_prog_compiler_static_F77='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl_F77='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static_F77='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-qpic'
-	lt_prog_compiler_static_F77='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic_F77='-KPIC'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  lt_prog_compiler_wl_F77=''
-	  ;;
-	*Sun\ F* | *Sun*Fortran*)
-	  lt_prog_compiler_pic_F77='-KPIC'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  lt_prog_compiler_wl_F77='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic_F77='-KPIC'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  lt_prog_compiler_wl_F77='-Wl,'
-	  ;;
-        *Intel*\ [CF]*Compiler*)
-	  lt_prog_compiler_wl_F77='-Wl,'
-	  lt_prog_compiler_pic_F77='-fPIC'
-	  lt_prog_compiler_static_F77='-static'
-	  ;;
-	*Portland\ Group*)
-	  lt_prog_compiler_wl_F77='-Wl,'
-	  lt_prog_compiler_pic_F77='-fpic'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_F77='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static_F77='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static_F77='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	lt_prog_compiler_wl_F77='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl_F77='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl_F77='-Qoption ld '
-      lt_prog_compiler_pic_F77='-PIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic_F77='-Kconform_pic'
-	lt_prog_compiler_static_F77='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      lt_prog_compiler_can_build_shared_F77=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic_F77='-pic'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared_F77=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_F77=
-    ;;
-  *)
-    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_F77=$lt_prog_compiler_pic_F77
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_F77" >&5
-$as_echo "$lt_cv_prog_compiler_pic_F77" >&6; }
-lt_prog_compiler_pic_F77=$lt_cv_prog_compiler_pic_F77
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_F77"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works_F77=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_F77"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works_F77=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_F77" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then
-    case $lt_prog_compiler_pic_F77 in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
-     esac
-else
-    lt_prog_compiler_pic_F77=
-     lt_prog_compiler_can_build_shared_F77=no
-fi
-
-fi
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works_F77=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works_F77=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_F77=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_F77" >&5
-$as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then
-    :
-else
-    lt_prog_compiler_static_F77=
-fi
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_F77=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_F77=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; }
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_F77=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_F77=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag_F77=
-  always_export_symbols_F77=no
-  archive_cmds_F77=
-  archive_expsym_cmds_F77=
-  compiler_needs_object_F77=no
-  enable_shared_with_static_runtimes_F77=no
-  export_dynamic_flag_spec_F77=
-  export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic_F77=no
-  hardcode_direct_F77=no
-  hardcode_direct_absolute_F77=no
-  hardcode_libdir_flag_spec_F77=
-  hardcode_libdir_separator_F77=
-  hardcode_minus_L_F77=no
-  hardcode_shlibpath_var_F77=unsupported
-  inherit_rpath_F77=no
-  link_all_deplibs_F77=unknown
-  module_cmds_F77=
-  module_expsym_cmds_F77=
-  old_archive_from_new_cmds_F77=
-  old_archive_from_expsyms_cmds_F77=
-  thread_safe_flag_spec_F77=
-  whole_archive_flag_spec_F77=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms_F77=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  ld_shlibs_F77=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec_F77='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec_F77=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs_F77=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_F77=''
-        ;;
-      m68k)
-            archive_cmds_F77='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_F77='-L$libdir'
-            hardcode_minus_L_F77=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag_F77=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      export_dynamic_flag_spec_F77='${wl}--export-all-symbols'
-      allow_undefined_flag_F77=unsupported
-      always_export_symbols_F77=no
-      enable_shared_with_static_runtimes_F77=yes
-      export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms_F77='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      link_all_deplibs_F77=yes
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct_F77=no
-      hardcode_shlibpath_var_F77=no
-      hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec_F77='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec_F77=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_F77=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_F77=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds_F77='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec_F77='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-	  archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds_F77='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs_F77=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs_F77=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs_F77=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-	    archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs_F77=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs_F77" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec_F77=
-      export_dynamic_flag_spec_F77=
-      whole_archive_flag_spec_F77=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag_F77=unsupported
-      always_export_symbols_F77=yes
-      archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L_F77=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct_F77=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds_F77=''
-      hardcode_direct_F77=yes
-      hardcode_direct_absolute_F77=yes
-      hardcode_libdir_separator_F77=':'
-      link_all_deplibs_F77=yes
-      file_list_spec_F77='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct_F77=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L_F77=yes
-	  hardcode_libdir_flag_spec_F77='-L$libdir'
-	  hardcode_libdir_separator_F77=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec_F77='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols_F77=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag_F77='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_f77_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__F77=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__F77"; then
-    lt_cv_aix_libpath__F77=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__F77"; then
-    lt_cv_aix_libpath__F77="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__F77
-fi
-
-        hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds_F77='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag_F77="-z nodefs"
-	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_f77_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__F77=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__F77"; then
-    lt_cv_aix_libpath__F77=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__F77"; then
-    lt_cv_aix_libpath__F77="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__F77
-fi
-
-	 hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag_F77=' ${wl}-bernotok'
-	  allow_undefined_flag_F77=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    whole_archive_flag_spec_F77='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec_F77='$convenience'
-	  fi
-	  archive_cmds_need_lc_F77=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_F77=''
-        ;;
-      m68k)
-            archive_cmds_F77='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_F77='-L$libdir'
-            hardcode_minus_L_F77=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec_F77=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	hardcode_libdir_flag_spec_F77=' '
-	allow_undefined_flag_F77=unsupported
-	always_export_symbols_F77=yes
-	file_list_spec_F77='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_F77='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, F77)='true'
-	enable_shared_with_static_runtimes_F77=yes
-	exclude_expsyms_F77='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	old_postinstall_cmds_F77='chmod 644 $oldlib'
-	postlink_cmds_F77='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	hardcode_libdir_flag_spec_F77=' '
-	allow_undefined_flag_F77=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	old_archive_from_new_cmds_F77='true'
-	# FIXME: Should let the user specify the lib program.
-	old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	enable_shared_with_static_runtimes_F77=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc_F77=no
-  hardcode_direct_F77=no
-  hardcode_automatic_F77=yes
-  hardcode_shlibpath_var_F77=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec_F77='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-    compiler_needs_object_F77=yes
-  else
-    whole_archive_flag_spec_F77=''
-  fi
-  link_all_deplibs_F77=yes
-  allow_undefined_flag_F77="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
-  else
-  ld_shlibs_F77=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_F77=yes
-      hardcode_minus_L_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds_F77='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      hardcode_direct_F77=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L_F77=yes
-      export_dynamic_flag_spec_F77='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	archive_cmds_F77='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_F77=:
-	hardcode_direct_F77=yes
-	hardcode_direct_absolute_F77=yes
-	export_dynamic_flag_spec_F77='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L_F77=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_F77='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_F77='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_F77=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct_F77=no
-	  hardcode_shlibpath_var_F77=no
-	  ;;
-	*)
-	  hardcode_direct_F77=yes
-	  hardcode_direct_absolute_F77=yes
-	  export_dynamic_flag_spec_F77='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L_F77=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   cat > conftest.$ac_ext <<_ACEOF
-
-      subroutine foo
-      end
-_ACEOF
-if ac_fn_f77_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc_F77='no'
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      inherit_rpath_F77=yes
-      link_all_deplibs_F77=yes
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    newsos6)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_F77=yes
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct_F77=yes
-	hardcode_shlibpath_var_F77=no
-	hardcode_direct_absolute_F77=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec_F77='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec_F77='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_minus_L_F77=yes
-      allow_undefined_flag_F77=unsupported
-      archive_cmds_F77='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag_F77=' -expect_unresolved \*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc_F77='no'
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag_F77=' -expect_unresolved \*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec_F77='-rpath $libdir'
-      fi
-      archive_cmds_need_lc_F77='no'
-      hardcode_libdir_separator_F77=:
-      ;;
-
-    solaris*)
-      no_undefined_flag_F77=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds_F77='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds_F77='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_F77='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_shlibpath_var_F77=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs_F77=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_direct_F77=yes
-      hardcode_minus_L_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_F77=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds_F77='$CC -r -o $output$reload_objs'
-	  hardcode_direct_F77=no
-        ;;
-	motorola)
-	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var_F77=no
-      export_dynamic_flag_spec_F77='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var_F77=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs_F77=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_F77='${wl}-z,text'
-      archive_cmds_need_lc_F77=no
-      hardcode_shlibpath_var_F77=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag_F77='${wl}-z,text'
-      allow_undefined_flag_F77='${wl}-z,nodefs'
-      archive_cmds_need_lc_F77=no
-      hardcode_shlibpath_var_F77=no
-      hardcode_libdir_flag_spec_F77='${wl}-R,$libdir'
-      hardcode_libdir_separator_F77=':'
-      link_all_deplibs_F77=yes
-      export_dynamic_flag_spec_F77='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    *)
-      ld_shlibs_F77=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec_F77='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_F77" >&5
-$as_echo "$ld_shlibs_F77" >&6; }
-test "$ld_shlibs_F77" = no && can_build_shared=no
-
-with_gnu_ld_F77=$with_gnu_ld
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_F77" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_F77=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_F77 in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc_F77+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl_F77
-	  pic_flag=$lt_prog_compiler_pic_F77
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag_F77
-	  allow_undefined_flag_F77=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_F77 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds_F77 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc_F77=no
-	  else
-	    lt_cv_archive_cmds_need_lc_F77=yes
-	  fi
-	  allow_undefined_flag_F77=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_F77" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc_F77" >&6; }
-      archive_cmds_need_lc_F77=$lt_cv_archive_cmds_need_lc_F77
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_F77\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_F77\""
-    cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_f77_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action_F77=
-if test -n "$hardcode_libdir_flag_spec_F77" ||
-   test -n "$runpath_var_F77" ||
-   test "X$hardcode_automatic_F77" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct_F77" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
-     test "$hardcode_minus_L_F77" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_F77=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_F77=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_F77=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_F77" >&5
-$as_echo "$hardcode_action_F77" >&6; }
-
-if test "$hardcode_action_F77" = relink ||
-   test "$inherit_rpath_F77" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-  CFLAGS="$lt_save_CFLAGS"
-fi # test "$_lt_disable_F77" != yes
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in pgf90 xlf90 gfortran f90 ifort
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$FC"; then
-  ac_cv_prog_FC="$FC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_FC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-FC=$ac_cv_prog_FC
-if test -n "$FC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5
-$as_echo "$FC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$FC" && break
-  done
-fi
-if test -z "$FC"; then
-  ac_ct_FC=$FC
-  for ac_prog in pgf90 xlf90 gfortran f90 ifort
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_FC"; then
-  ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_FC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_FC=$ac_cv_prog_ac_ct_FC
-if test -n "$ac_ct_FC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5
-$as_echo "$ac_ct_FC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_FC" && break
-done
-
-  if test "x$ac_ct_FC" = x; then
-    FC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    FC=$ac_ct_FC
-  fi
-fi
-
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-rm -f a.out
-
-# If we don't use `.F' as extension, the preprocessor is not run on the
-# input file.  (Note that this only needs to work for GNU compilers.)
-ac_save_ext=$ac_ext
-ac_ext=F
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran compiler" >&5
-$as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; }
-if ${ac_cv_fc_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-#ifndef __GNUC__
-       choke me
-#endif
-
-      end
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_fc_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5
-$as_echo "$ac_cv_fc_compiler_gnu" >&6; }
-ac_ext=$ac_save_ext
-ac_test_FCFLAGS=${FCFLAGS+set}
-ac_save_FCFLAGS=$FCFLAGS
-FCFLAGS=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5
-$as_echo_n "checking whether $FC accepts -g... " >&6; }
-if ${ac_cv_prog_fc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  FCFLAGS=-g
-cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-  ac_cv_prog_fc_g=yes
-else
-  ac_cv_prog_fc_g=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5
-$as_echo "$ac_cv_prog_fc_g" >&6; }
-if test "$ac_test_FCFLAGS" = set; then
-  FCFLAGS=$ac_save_FCFLAGS
-elif test $ac_cv_prog_fc_g = yes; then
-  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
-    FCFLAGS="-g -O2"
-  else
-    FCFLAGS="-g"
-  fi
-else
-  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
-    FCFLAGS="-O2"
-  else
-    FCFLAGS=
-  fi
-fi
-
-if test $ac_compiler_gnu = yes; then
-  GFC=yes
-else
-  GFC=
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-func_stripname_cnf ()
-{
-  case ${2} in
-  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-  esac
-} # func_stripname_cnf
-
-
-      ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-
-archive_cmds_need_lc_FC=no
-allow_undefined_flag_FC=
-always_export_symbols_FC=no
-archive_expsym_cmds_FC=
-export_dynamic_flag_spec_FC=
-hardcode_direct_FC=no
-hardcode_direct_absolute_FC=no
-hardcode_libdir_flag_spec_FC=
-hardcode_libdir_separator_FC=
-hardcode_minus_L_FC=no
-hardcode_automatic_FC=no
-inherit_rpath_FC=no
-module_cmds_FC=
-module_expsym_cmds_FC=
-link_all_deplibs_FC=unknown
-old_archive_cmds_FC=$old_archive_cmds
-reload_flag_FC=$reload_flag
-reload_cmds_FC=$reload_cmds
-no_undefined_flag_FC=
-whole_archive_flag_spec_FC=
-enable_shared_with_static_runtimes_FC=no
-
-# Source file extension for fc test sources.
-ac_ext=${ac_fc_srcext-f}
-
-# Object file extension for compiled fc test sources.
-objext=o
-objext_FC=$objext
-
-# No sense in running all these tests if we already determined that
-# the FC compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-  # save warnings/boilerplate of simple test code
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${FC-"f95"}
-  CFLAGS=$FCFLAGS
-  compiler=$CC
-  GCC=$ac_cv_fc_compiler_gnu
-
-  compiler_FC=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-  if test -n "$compiler"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[4-9]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-    GCC_FC="$ac_cv_fc_compiler_gnu"
-    LD_FC="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    # Dependencies to place before and after the object being linked:
-predep_objects_FC=
-postdep_objects_FC=
-predeps_FC=
-postdeps_FC=
-compiler_lib_search_path_FC=
-
-cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer a
-      a=0
-      return
-      end
-_LT_EOF
-
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
-esac
-
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case ${prev}${p} in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
-	 prev=$p
-	 continue
-       fi
-
-       # Expand the sysroot to ease extracting the directories later.
-       if test -z "$prev"; then
-         case $p in
-         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-         esac
-       fi
-       case $p in
-       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-       esac
-       if test "$pre_test_object_deps_done" = no; then
-	 case ${prev} in
-	 -L | -R)
-	   # Internal compiler library paths should come after those
-	   # provided the user.  The postdeps already come after the
-	   # user supplied libs so there is no need to process them.
-	   if test -z "$compiler_lib_search_path_FC"; then
-	     compiler_lib_search_path_FC="${prev}${p}"
-	   else
-	     compiler_lib_search_path_FC="${compiler_lib_search_path_FC} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$postdeps_FC"; then
-	   postdeps_FC="${prev}${p}"
-	 else
-	   postdeps_FC="${postdeps_FC} ${prev}${p}"
-	 fi
-       fi
-       prev=
-       ;;
-
-    *.lto.$objext) ;; # Ignore GCC LTO objects
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-	 pre_test_object_deps_done=yes
-	 continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 if test -z "$predep_objects_FC"; then
-	   predep_objects_FC="$p"
-	 else
-	   predep_objects_FC="$predep_objects_FC $p"
-	 fi
-       else
-	 if test -z "$postdep_objects_FC"; then
-	   postdep_objects_FC="$p"
-	 else
-	   postdep_objects_FC="$postdep_objects_FC $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling FC test program"
-fi
-
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-
-
-case " $postdeps_FC " in
-*" -lc "*) archive_cmds_need_lc_FC=no ;;
-esac
- compiler_lib_search_dirs_FC=
-if test -n "${compiler_lib_search_path_FC}"; then
- compiler_lib_search_dirs_FC=`echo " ${compiler_lib_search_path_FC}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    lt_prog_compiler_wl_FC=
-lt_prog_compiler_pic_FC=
-lt_prog_compiler_static_FC=
-
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl_FC='-Wl,'
-    lt_prog_compiler_static_FC='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_FC='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic_FC='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic_FC='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic_FC='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_FC='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static_FC=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_FC='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared_FC=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_FC='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic_FC=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      lt_prog_compiler_pic_FC='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl_FC='-Xlinker '
-      if test -n "$lt_prog_compiler_pic_FC"; then
-        lt_prog_compiler_pic_FC="-Xcompiler $lt_prog_compiler_pic_FC"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_FC='-Bstatic'
-      else
-	lt_prog_compiler_static_FC='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic_FC='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_FC='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static_FC='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static_FC='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-KPIC'
-	lt_prog_compiler_static_FC='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-fPIC'
-	lt_prog_compiler_static_FC='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='--shared'
-	lt_prog_compiler_static_FC='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	lt_prog_compiler_wl_FC='-Wl,-Wl,,'
-	lt_prog_compiler_pic_FC='-PIC'
-	lt_prog_compiler_static_FC='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-fpic'
-	lt_prog_compiler_static_FC='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl_FC='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static_FC='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	lt_prog_compiler_wl_FC='-Wl,'
-	lt_prog_compiler_pic_FC='-qpic'
-	lt_prog_compiler_static_FC='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic_FC='-KPIC'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  lt_prog_compiler_wl_FC=''
-	  ;;
-	*Sun\ F* | *Sun*Fortran*)
-	  lt_prog_compiler_pic_FC='-KPIC'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  lt_prog_compiler_wl_FC='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic_FC='-KPIC'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  lt_prog_compiler_wl_FC='-Wl,'
-	  ;;
-        *Intel*\ [CF]*Compiler*)
-	  lt_prog_compiler_wl_FC='-Wl,'
-	  lt_prog_compiler_pic_FC='-fPIC'
-	  lt_prog_compiler_static_FC='-static'
-	  ;;
-	*Portland\ Group*)
-	  lt_prog_compiler_wl_FC='-Wl,'
-	  lt_prog_compiler_pic_FC='-fpic'
-	  lt_prog_compiler_static_FC='-Bstatic'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_FC='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static_FC='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static_FC='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	lt_prog_compiler_wl_FC='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl_FC='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl_FC='-Qoption ld '
-      lt_prog_compiler_pic_FC='-PIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic_FC='-Kconform_pic'
-	lt_prog_compiler_static_FC='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      lt_prog_compiler_pic_FC='-KPIC'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl_FC='-Wl,'
-      lt_prog_compiler_can_build_shared_FC=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic_FC='-pic'
-      lt_prog_compiler_static_FC='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared_FC=no
-      ;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_FC=
-    ;;
-  *)
-    lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC"
-    ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_FC=$lt_prog_compiler_pic_FC
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_FC" >&5
-$as_echo "$lt_cv_prog_compiler_pic_FC" >&6; }
-lt_prog_compiler_pic_FC=$lt_cv_prog_compiler_pic_FC
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_FC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_FC works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_FC works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works_FC=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_FC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works_FC=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_FC" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works_FC" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works_FC" = xyes; then
-    case $lt_prog_compiler_pic_FC in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_FC=" $lt_prog_compiler_pic_FC" ;;
-     esac
-else
-    lt_prog_compiler_pic_FC=
-     lt_prog_compiler_can_build_shared_FC=no
-fi
-
-fi
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_FC eval lt_tmp_static_flag=\"$lt_prog_compiler_static_FC\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works_FC=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works_FC=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_FC=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_FC" >&5
-$as_echo "$lt_cv_prog_compiler_static_works_FC" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works_FC" = xyes; then
-    :
-else
-    lt_prog_compiler_static_FC=
-fi
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_FC=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_FC=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; }
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_FC=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_FC=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_FC" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
-  runpath_var=
-  allow_undefined_flag_FC=
-  always_export_symbols_FC=no
-  archive_cmds_FC=
-  archive_expsym_cmds_FC=
-  compiler_needs_object_FC=no
-  enable_shared_with_static_runtimes_FC=no
-  export_dynamic_flag_spec_FC=
-  export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic_FC=no
-  hardcode_direct_FC=no
-  hardcode_direct_absolute_FC=no
-  hardcode_libdir_flag_spec_FC=
-  hardcode_libdir_separator_FC=
-  hardcode_minus_L_FC=no
-  hardcode_shlibpath_var_FC=unsupported
-  inherit_rpath_FC=no
-  link_all_deplibs_FC=unknown
-  module_cmds_FC=
-  module_expsym_cmds_FC=
-  old_archive_from_new_cmds_FC=
-  old_archive_from_expsyms_cmds_FC=
-  thread_safe_flag_spec_FC=
-  whole_archive_flag_spec_FC=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms_FC=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms_FC='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  ld_shlibs_FC=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec_FC='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec_FC="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec_FC=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs_FC=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_FC=''
-        ;;
-      m68k)
-            archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_FC='-L$libdir'
-            hardcode_minus_L_FC=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag_FC=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds_FC='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, FC) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      export_dynamic_flag_spec_FC='${wl}--export-all-symbols'
-      allow_undefined_flag_FC=unsupported
-      always_export_symbols_FC=no
-      enable_shared_with_static_runtimes_FC=yes
-      export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms_FC='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds_FC='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    haiku*)
-      archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      link_all_deplibs_FC=yes
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct_FC=no
-      hardcode_shlibpath_var_FC=no
-      hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec_FC='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds_FC='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  whole_archive_flag_spec_FC=
-	  tmp_sharedflag='--shared' ;;
-	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_FC=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec_FC='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  compiler_needs_object_FC=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	archive_cmds_FC='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  whole_archive_flag_spec_FC='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-	  archive_cmds_FC='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        ld_shlibs_FC=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_FC='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	ld_shlibs_FC=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs_FC=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-	    archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    ld_shlibs_FC=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds_FC='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs_FC" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec_FC=
-      export_dynamic_flag_spec_FC=
-      whole_archive_flag_spec_FC=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag_FC=unsupported
-      always_export_symbols_FC=yes
-      archive_expsym_cmds_FC='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L_FC=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct_FC=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds_FC='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds_FC='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds_FC=''
-      hardcode_direct_FC=yes
-      hardcode_direct_absolute_FC=yes
-      hardcode_libdir_separator_FC=':'
-      link_all_deplibs_FC=yes
-      file_list_spec_FC='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  hardcode_direct_FC=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L_FC=yes
-	  hardcode_libdir_flag_spec_FC='-L$libdir'
-	  hardcode_libdir_separator_FC=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      export_dynamic_flag_spec_FC='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols_FC=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag_FC='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__FC
-fi
-
-        hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds_FC='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec_FC='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag_FC="-z nodefs"
-	  archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__FC"; then
-    lt_cv_aix_libpath__FC="/usr/lib:/lib"
-  fi
-
-fi
-
-  aix_libpath=$lt_cv_aix_libpath__FC
-fi
-
-	 hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag_FC=' ${wl}-bernotok'
-	  allow_undefined_flag_FC=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    whole_archive_flag_spec_FC='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec_FC='$convenience'
-	  fi
-	  archive_cmds_need_lc_FC=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            archive_expsym_cmds_FC=''
-        ;;
-      m68k)
-            archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec_FC='-L$libdir'
-            hardcode_minus_L_FC=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec_FC=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	hardcode_libdir_flag_spec_FC=' '
-	allow_undefined_flag_FC=unsupported
-	always_export_symbols_FC=yes
-	file_list_spec_FC='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_FC='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	archive_expsym_cmds_FC='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, FC)='true'
-	enable_shared_with_static_runtimes_FC=yes
-	exclude_expsyms_FC='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	old_postinstall_cmds_FC='chmod 644 $oldlib'
-	postlink_cmds_FC='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	hardcode_libdir_flag_spec_FC=' '
-	allow_undefined_flag_FC=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds_FC='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	old_archive_from_new_cmds_FC='true'
-	# FIXME: Should let the user specify the lib program.
-	old_archive_cmds_FC='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	enable_shared_with_static_runtimes_FC=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc_FC=no
-  hardcode_direct_FC=no
-  hardcode_automatic_FC=yes
-  hardcode_shlibpath_var_FC=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec_FC='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-    compiler_needs_object_FC=yes
-  else
-    whole_archive_flag_spec_FC=''
-  fi
-  link_all_deplibs_FC=yes
-  allow_undefined_flag_FC="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds_FC="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds_FC="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds_FC="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds_FC="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
-  else
-  ld_shlibs_FC=no
-  fi
-
-      ;;
-
-    dgux*)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_FC=yes
-      hardcode_minus_L_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds_FC='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      hardcode_direct_FC=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L_FC=yes
-      export_dynamic_flag_spec_FC='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_FC=:
-	hardcode_direct_FC=yes
-	hardcode_direct_absolute_FC=yes
-	export_dynamic_flag_spec_FC='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L_FC=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_FC='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_FC=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_direct_FC=no
-	  hardcode_shlibpath_var_FC=no
-	  ;;
-	*)
-	  hardcode_direct_FC=yes
-	  hardcode_direct_absolute_FC=yes
-	  export_dynamic_flag_spec_FC='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L_FC=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   cat > conftest.$ac_ext <<_ACEOF
-
-      subroutine foo
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc_FC='no'
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      inherit_rpath_FC=yes
-      link_all_deplibs_FC=yes
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds_FC='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_direct_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    newsos6)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_FC=yes
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct_FC=yes
-	hardcode_shlibpath_var_FC=no
-	hardcode_direct_absolute_FC=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec_FC='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec_FC='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	ld_shlibs_FC=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_minus_L_FC=yes
-      allow_undefined_flag_FC=unsupported
-      archive_cmds_FC='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds_FC='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag_FC=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag_FC=' -expect_unresolved \*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc_FC='no'
-      hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_FC=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag_FC=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag_FC=' -expect_unresolved \*'
-	archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_FC='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec_FC='-rpath $libdir'
-      fi
-      archive_cmds_need_lc_FC='no'
-      hardcode_libdir_separator_FC=:
-      ;;
-
-    solaris*)
-      no_undefined_flag_FC=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds_FC='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  archive_cmds_FC='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  archive_cmds_FC='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      hardcode_libdir_flag_spec_FC='-R$libdir'
-      hardcode_shlibpath_var_FC=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec_FC='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec_FC='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs_FC=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds_FC='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_direct_FC=yes
-      hardcode_minus_L_FC=yes
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_FC=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds_FC='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds_FC='$CC -r -o $output$reload_objs'
-	  hardcode_direct_FC=no
-        ;;
-	motorola)
-	  archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_FC=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var_FC=no
-      export_dynamic_flag_spec_FC='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var_FC=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs_FC=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_FC='${wl}-z,text'
-      archive_cmds_need_lc_FC=no
-      hardcode_shlibpath_var_FC=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag_FC='${wl}-z,text'
-      allow_undefined_flag_FC='${wl}-z,nodefs'
-      archive_cmds_need_lc_FC=no
-      hardcode_shlibpath_var_FC=no
-      hardcode_libdir_flag_spec_FC='${wl}-R,$libdir'
-      hardcode_libdir_separator_FC=':'
-      link_all_deplibs_FC=yes
-      export_dynamic_flag_spec_FC='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_FC='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_FC='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_FC='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_FC='-L$libdir'
-      hardcode_shlibpath_var_FC=no
-      ;;
-
-    *)
-      ld_shlibs_FC=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec_FC='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_FC" >&5
-$as_echo "$ld_shlibs_FC" >&6; }
-test "$ld_shlibs_FC" = no && can_build_shared=no
-
-with_gnu_ld_FC=$with_gnu_ld
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_FC" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_FC=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_FC in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc_FC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl_FC
-	  pic_flag=$lt_prog_compiler_pic_FC
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag_FC
-	  allow_undefined_flag_FC=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc_FC=no
-	  else
-	    lt_cv_archive_cmds_need_lc_FC=yes
-	  fi
-	  allow_undefined_flag_FC=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_FC" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc_FC" >&6; }
-      archive_cmds_need_lc_FC=$lt_cv_archive_cmds_need_lc_FC
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_FC\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_FC\""
-    cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_fc_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-
-fi
-
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action_FC=
-if test -n "$hardcode_libdir_flag_spec_FC" ||
-   test -n "$runpath_var_FC" ||
-   test "X$hardcode_automatic_FC" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct_FC" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, FC)" != no &&
-     test "$hardcode_minus_L_FC" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_FC=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_FC=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_FC=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_FC" >&5
-$as_echo "$hardcode_action_FC" >&6; }
-
-if test "$hardcode_action_FC" = relink ||
-   test "$inherit_rpath_FC" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-fi # test "$_lt_disable_FC" != yes
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-# Check whether --enable-pthread was given.
-if test "${enable_pthread+set}" = set; then :
-  enableval=$enable_pthread; pthreads=${enableval}
-else
-  pthreads=no
-
-fi
-
-if test "x${pthreads}" = xyes; then
-   GRIB_PTHREADS=1
-else
-   GRIB_PTHREADS=0
-fi
-
-if test $GRIB_PTHREADS -eq 1
-then
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if pthreads available" >&5
-$as_echo_n "checking if pthreads available... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  OLDLIBS=$LIBS
-  LIBS="$LIBS -lpthread"
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-       #include <pthread.h>
-       #include <stdio.h>
-
-       #define NUMTHRDS 4
-       static int count;
-
-       static pthread_once_t once  = PTHREAD_ONCE_INIT;
-       static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-       static pthread_t callThd[NUMTHRDS];
-
-       static void init() {
-         pthread_mutexattr_t attr;
-
-         pthread_mutexattr_init(&attr);
-         pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
-         pthread_mutex_init(&mutex,&attr);
-         pthread_mutexattr_destroy(&attr);
-       }
-
-       void* increment(void* arg);
-
-       int main(int argc,char** argv){
-         long i;
-         void* status=0;
-         pthread_attr_t attr;
-         pthread_attr_init(&attr);
-         count=0;
-         pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
-         for (i=0;i<NUMTHRDS;i++) {
-           pthread_create( &callThd[i], &attr, increment, (void *)i);
-         }
-         pthread_attr_destroy(&attr);
-         for(i=0; i<NUMTHRDS; i++)
-             pthread_join( callThd[i], &status);
-         return 0;
-       }
-
-       void* increment(void* arg) {
-         int i=(long)arg;
-         pthread_once(&once,&init);
-         pthread_mutex_lock(&mutex);
-         count+=i;
-         pthread_mutex_unlock(&mutex);
-		 pthread_exit((void*) 0);
-       }
-
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  GRIB_PTHREADS=1
-else
-  GRIB_PTHREADS=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $GRIB_PTHREADS = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	LIBS=$OLDLIBS
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Linux pthreads available" >&5
-$as_echo_n "checking if Linux pthreads available... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  OLDLIBS=$LIBS
-  LIBS="$LIBS -lpthread"
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-       #include <pthread.h>
-       #include <stdio.h>
-
-       #define NUMTHRDS 4
-       static int count;
-	   #define PTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
-	   extern int pthread_mutexattr_settype(pthread_mutexattr_t* attr,int type);
-
-       static pthread_once_t once  = PTHREAD_ONCE_INIT;
-       static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-       static pthread_t callThd[NUMTHRDS];
-
-       static void init() {
-         pthread_mutexattr_t attr;
-		 pthread_mutexattr_init(&attr);
-		 pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
-         pthread_mutex_init(&mutex,&attr);
-         pthread_mutexattr_destroy(&attr);
-       }
-
-       void* increment(void* arg);
-
-       int main(int argc,char** argv){
-         long i;
-         void* status=0;
-         pthread_attr_t attr;
-         pthread_attr_init(&attr);
-         count=0;
-         pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
-         for (i=0;i<NUMTHRDS;i++) {
-           pthread_create( &callThd[i], &attr, increment, (void *)i);
-         }
-         pthread_attr_destroy(&attr);
-         for(i=0; i<NUMTHRDS; i++)
-             pthread_join( callThd[i], &status);
-         return 0;
-       }
-
-       void* increment(void* arg) {
-         int i=(long)arg;
-         pthread_once(&once,&init);
-         pthread_mutex_lock(&mutex);
-         count+=i;
-         pthread_mutex_unlock(&mutex);
-		 pthread_exit((void*) 0);
-       }
-
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  GRIB_LINUX_PTHREADS=1
-   GRIB_PTHREADS=1
-else
-  GRIB_LINUX_PTHREADS=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $GRIB_LINUX_PTHREADS = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	LIBS=$OLDLIBS
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-else
-   GRIB_LINUX_PTHREADS=0
-fi
-
-
-cat >>confdefs.h <<_ACEOF
-#define GRIB_PTHREADS $GRIB_PTHREADS
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define GRIB_LINUX_PTHREADS $GRIB_LINUX_PTHREADS
-_ACEOF
-
-
-# Check whether --enable-ibmpower67_opt was given.
-if test "${enable_ibmpower67_opt+set}" = set; then :
-  enableval=$enable_ibmpower67_opt; ibmpower67_opts=${enableval}
-else
-  ibmpower67_opts=no
-
-fi
-
-if test "x${ibmpower67_opts}" = xyes; then
-   GRIB_IBMPOWER67_OPT=1
-else
-   GRIB_IBMPOWER67_OPT=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define GRIB_IBMPOWER67_OPT $GRIB_IBMPOWER67_OPT
-_ACEOF
-
-
-
-ac_cv_prog_f90_uppercase_mod=no
-
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran 90 compiler capitalizes .mod filenames" >&5
-$as_echo_n "checking if Fortran 90 compiler capitalizes .mod filenames... " >&6; }
-cat <<EOF >conftest.f90
-    module conftest
-    end module conftest
-EOF
-
-ac_try='$FC $FCFLAGS -c conftest.f90 >&5'
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -f CONFTEST.mod ; then
-   ac_cv_prog_f90_uppercase_mod=yes
-   rm -f CONFTEST.mod
-else
-   ac_cv_prog_f90_uppercase_mod=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f90_uppercase_mod" >&5
-$as_echo "$ac_cv_prog_f90_uppercase_mod" >&6; }
-#rm -f conftest*
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
- if test "x$ac_cv_prog_f90_uppercase_mod" = xyes; then
-  UPPER_CASE_MOD_TRUE=
-  UPPER_CASE_MOD_FALSE='#'
-else
-  UPPER_CASE_MOD_TRUE='#'
-  UPPER_CASE_MOD_FALSE=
-fi
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if double and float are ieee big endian" >&5
-$as_echo_n "checking if double and float are ieee big endian... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-     int compare(unsigned char* a,unsigned char* b) {
-       while(*a != 0) if (*(b++)!=*(a++)) return 1;
-       return 0;
-     }
-     int main(int argc,char** argv) {
-       unsigned char dc[]={0x30,0x61,0xDE,0x80,0x93,0x67,0xCC,0xD9,0};
-       double da=1.23456789e-75;
-       unsigned char* ca;
-
-       unsigned char fc[]={0x05,0x83,0x48,0x22,0};
-       float fa=1.23456789e-35;
-
-       if (sizeof(double)!=8) return 1;
-
-       ca=(unsigned char*)&da;
-       if (compare(dc,ca)) return 1;
-
-       if (sizeof(float)!=4) return 1;
-
-       ca=(unsigned char*)&fa;
-       if (compare(fc,ca)) return 1;
-
-       return 0;
-     }
-
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  IS_IEEE_BE=1
-else
-  IS_IEEE_BE=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $IS_IEEE_BE = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define IEEE_BE $IS_IEEE_BE
-_ACEOF
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if double and float are ieee little endian" >&5
-$as_echo_n "checking if double and float are ieee little endian... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-     int compare(unsigned char* a,unsigned char* b) {
-       while(*a != 0) if (*(b++)!=*(a++)) return 1;
-       return 0;
-     }
-     int main(int argc,char** argv) {
-       unsigned char dc[]={0xD9,0xCC,0x67,0x93,0x80,0xDE,0x61,0x30,0};
-       double da=1.23456789e-75;
-       unsigned char* ca;
-
-       unsigned char fc[]={0x22,0x48,0x83,0x05,0};
-       float fa=1.23456789e-35;
-
-       if (sizeof(double)!=8) return 1;
-
-       ca=(unsigned char*)&da;
-       if (compare(dc,ca)) return 1;
-
-       if (sizeof(float)!=4) return 1;
-
-       ca=(unsigned char*)&fa;
-       if (compare(fc,ca)) return 1;
-
-       return 0;
-     }
-
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  IS_IEEE_LE=1
-else
-  IS_IEEE_LE=0
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $IS_IEEE_LE = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define IEEE_LE $IS_IEEE_LE
-_ACEOF
-
-
-# Check whether --enable-ieee-native was given.
-if test "${enable_ieee_native+set}" = set; then :
-  enableval=$enable_ieee_native; without_ieee=1
-else
-  without_ieee=0
-fi
-
-
-if test $without_ieee -eq 1
-then
-
-cat >>confdefs.h <<_ACEOF
-#define IEEE_LE 0
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define IEEE_BE 0
-_ACEOF
-
-fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Big Endian" >&5
-$as_echo_n "checking if Big Endian... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-      int main(int argc,char** argv){
-        long one= 1;
-        return !(*((char *)(&one)));
-      }
-
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  IS_BIG_ENDIAN=0
-else
-  IS_BIG_ENDIAN=1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $IS_BIG_ENDIAN = 0
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define IS_BIG_ENDIAN $IS_BIG_ENDIAN
-_ACEOF
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if inline in C" >&5
-$as_echo_n "checking if inline in C... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-	  inline int x(int a) {return a;}
-      int main(int argc,char** argv){
-	    int a=1;
-        return x(a);
-      }
-
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  HAS_INLINE=inline
-else
-  HAS_INLINE=
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  if test x$HAS_INLINE = "x"
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define GRIB_INLINE $HAS_INLINE
-_ACEOF
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if bus error on unaligned pointers" >&5
-$as_echo_n "checking if bus error on unaligned pointers... " >&6; }
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-	  void foo(char* p) {long x=*((long*)p)+1;}
-	  int main(int argc,char** argv) {char* p="xxxxxxxxx";foo(++p);return 0;}
-
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  MEM_ALIGN=0
-else
-  MEM_ALIGN=1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  if test $MEM_ALIGN = "0"
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define GRIB_MEM_ALIGN $MEM_ALIGN
-_ACEOF
-
-
-ac_fn_c_check_func "$LINENO" "posix_memalign" "ac_cv_func_posix_memalign"
-if test "x$ac_cv_func_posix_memalign" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define POSIX_MEMALIGN 1
-_ACEOF
-
-fi
-
-
-# Check whether --enable-align-memory was given.
-if test "${enable_align_memory+set}" = set; then :
-  enableval=$enable_align_memory;
-cat >>confdefs.h <<_ACEOF
-#define GRIB_MEM_ALIGN 1
-_ACEOF
-
-fi
-
-
-# Check whether --enable-vector was given.
-if test "${enable_vector+set}" = set; then :
-  enableval=$enable_vector; vectorise=${enableval}
-else
-  vectorise=no
-fi
-
-if test "x${vectorise}" = xyes
-then
-   vectorise=1
-else
-   vectorise=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define VECTOR $vectorise
-_ACEOF
-
-
-# Check whether --enable-memory-management was given.
-if test "${enable_memory_management+set}" = set; then :
-  enableval=$enable_memory_management;
-cat >>confdefs.h <<_ACEOF
-#define MANAGE_MEM 1
-_ACEOF
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define MANAGE_MEM 0
-_ACEOF
-
-
-fi
-
-
-DEVEL_RULES=''
-# Check whether --enable-development was given.
-if test "${enable_development+set}" = set; then :
-  enableval=$enable_development; GRIB_DEVEL=${enableval}
-else
-  GRIB_DEVEL=no
-
-fi
-
-if test "x${GRIB_DEVEL}" = xyes
-then
-   GRIB_DEVEL=1
-   DEVEL_RULES='extrules.am'
-else
-   GRIB_DEVEL=0
-   DEVEL_RULES='dummy.am'
-fi
-
-
-
- if test $GRIB_DEVEL -eq 1; then
-  WITH_MARS_TESTS_TRUE=
-  WITH_MARS_TESTS_FALSE='#'
-else
-  WITH_MARS_TESTS_TRUE='#'
-  WITH_MARS_TESTS_FALSE=
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
-$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_source+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h> /* for off_t */
-     #include <stdio.h>
-int
-main ()
-{
-int (*fp) (FILE *, off_t, int) = fseeko;
-     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_sys_largefile_source=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#define _LARGEFILE_SOURCE 1
-#include <sys/types.h> /* for off_t */
-     #include <stdio.h>
-int
-main ()
-{
-int (*fp) (FILE *, off_t, int) = fseeko;
-     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_sys_largefile_source=1; break
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  ac_cv_sys_largefile_source=unknown
-  break
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5
-$as_echo "$ac_cv_sys_largefile_source" >&6; }
-case $ac_cv_sys_largefile_source in #(
-  no | unknown) ;;
-  *)
-cat >>confdefs.h <<_ACEOF
-#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
-_ACEOF
-;;
-esac
-rm -rf conftest*
-
-# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
-# in glibc 2.1.3, but that breaks too many other things.
-# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
-if test $ac_cv_sys_largefile_source != unknown; then
-
-$as_echo "#define HAVE_FSEEKO 1" >>confdefs.h
-
-fi
-
-CREATE_H=''
-if test x"$ac_cv_func_fseeko" != xyes ; then
-	CREATE_H='./create_h.sh 1'
-else
-	CREATE_H='./create_h.sh 0'
-fi
-
-# Check whether --enable-largefile was given.
-if test "${enable_largefile+set}" = set; then :
-  enableval=$enable_largefile;
-fi
-
-if test "$enable_largefile" != no; then
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_sys_largefile_CC=no
-     if test "$GCC" != yes; then
-       ac_save_CC=$CC
-       while :; do
-	 # IRIX 6.2 and later do not support large files by default,
-	 # so use the C compiler's -n32 option if that helps.
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-	 if ac_fn_c_try_compile "$LINENO"; then :
-  break
-fi
-rm -f core conftest.err conftest.$ac_objext
-	 CC="$CC -n32"
-	 if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_largefile_CC=' -n32'; break
-fi
-rm -f core conftest.err conftest.$ac_objext
-	 break
-       done
-       CC=$ac_save_CC
-       rm -f conftest.$ac_ext
-    fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-$as_echo "$ac_cv_sys_largefile_CC" >&6; }
-  if test "$ac_cv_sys_largefile_CC" != no; then
-    CC=$CC$ac_cv_sys_largefile_CC
-  fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if ${ac_cv_sys_file_offset_bits+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_file_offset_bits=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#define _FILE_OFFSET_BITS 64
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_file_offset_bits=64; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  ac_cv_sys_file_offset_bits=unknown
-  break
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
-case $ac_cv_sys_file_offset_bits in #(
-  no | unknown) ;;
-  *)
-cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
-;;
-esac
-rm -rf conftest*
-  if test $ac_cv_sys_file_offset_bits = unknown; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
-if ${ac_cv_sys_large_files+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_large_files=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#define _LARGE_FILES 1
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_sys_large_files=1; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  ac_cv_sys_large_files=unknown
-  break
-done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-$as_echo "$ac_cv_sys_large_files" >&6; }
-case $ac_cv_sys_large_files in #(
-  no | unknown) ;;
-  *)
-cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
-_ACEOF
-;;
-esac
-rm -rf conftest*
-  fi
-
-
-fi
-
-
-
-
-RPM_HOST_CPU=${host_cpu}
-RPM_HOST_VENDOR=${host_vendor}
-RPM_HOST_OS=${host_os}
-RPM_CONFIGURE_ARGS=${ac_configure_args}
-
-
-
-
-
-# Check whether --with-rpm-release was given.
-if test "${with_rpm_release+set}" = set; then :
-  withval=$with_rpm_release; RPM_RELEASE="$withval"
-else
-  RPM_RELEASE=1
-fi
-
-
-
-ECCODES_SAMPLES_PATH=$samples_files_path
-ECCODES_DEFINITION_PATH=$definition_files_path
-
-
-
-
-# Check whether --enable-fortran was given.
-if test "${enable_fortran+set}" = set; then :
-  enableval=$enable_fortran; with_fortran=${enableval}
-else
-  with_fortran=yes
-fi
-
-
-if test "x${with_fortran}" = xyes; then
-   without_fortran=0
-else
-   without_fortran=1
-fi
-
-if test "x$FC" = "x"
-then
-  without_fortran=1
-fi
-
-ac_cv_prog_f90_uppercase_mod=no
-
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran 90 compiler capitalizes .mod filenames" >&5
-$as_echo_n "checking if Fortran 90 compiler capitalizes .mod filenames... " >&6; }
-cat <<EOF >conftest.f90
-    module conftest
-    end module conftest
-EOF
-
-ac_try='$FC $FCFLAGS -c conftest.f90 >&5'
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -f CONFTEST.mod ; then
-   ac_cv_prog_f90_uppercase_mod=yes
-   rm -f CONFTEST.mod
-else
-   ac_cv_prog_f90_uppercase_mod=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f90_uppercase_mod" >&5
-$as_echo "$ac_cv_prog_f90_uppercase_mod" >&6; }
-#rm -f conftest*
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
- if test "x$ac_cv_prog_f90_uppercase_mod" = xyes; then
-  UPPER_CASE_MOD_TRUE=
-  UPPER_CASE_MOD_FALSE='#'
-else
-  UPPER_CASE_MOD_TRUE='#'
-  UPPER_CASE_MOD_FALSE=
-fi
-
-
-
-ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Fortran 90 can resolve debug symbols in modules" >&5
-$as_echo_n "checking if Fortran 90 can resolve debug symbols in modules... " >&6; }
-cat <<EOF >conftest-module.f90
-    module conftest
-    end module conftest
-EOF
-cat <<EOF >conftest.f90
-	program f90usemodule
-	use CONFTEST
-	end program f90usemodule
-EOF
-
-ac_compile_module='$FC -g -c conftest-module.f90 >&5'
-ac_link_program='$FC -g -o conftest -I. conftest.f90 >&5'
-
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile_module\""; } >&5
-  (eval $ac_compile_module) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link_program\""; } >&5
-  (eval $ac_link_program) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -f conftest ; then
-   ac_cv_prog_f90_debug_in_module=yes
-   rm -f conftest
-else
-   ac_cv_prog_f90_debug_in_module=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f90_debug_in_module" >&5
-$as_echo "$ac_cv_prog_f90_debug_in_module" >&6; }
-#rm -f conftest*
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
- if test "x$ac_cv_prog_f90_debug_in_module" = xyes; then
-  DEBUG_IN_MOD_TRUE=
-  DEBUG_IN_MOD_FALSE='#'
-else
-  DEBUG_IN_MOD_TRUE='#'
-  DEBUG_IN_MOD_FALSE=
-fi
-
-
-if test $without_fortran -ne 1 && test "x$ac_cv_prog_f90_debug_in_module" != xyes \
-		&& test "x$enable_shared" = xyes && test "x$FCFLAGS" = "x-g"
-then
-	without_fortran=1
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
-
-  Your Fortran compiler ($FC) does not support linking to dynamic library modules when debug is enabled. This is a known
-problem with Portland compilers versions 7 and 8, for example. Possible workarounds are:
-
-  - Use a Portland compiler version 10 or higher or a different compiler.
-  - Disable shared libraries (e.g. configure --disable-shared)
-  - Disable debug (e.g. configure FCFLAGS=\"\")
-
-  Compilation of the Fortran module has been disabled
-
-" >&5
-$as_echo "$as_me: WARNING:
-
-  Your Fortran compiler ($FC) does not support linking to dynamic library modules when debug is enabled. This is a known
-problem with Portland compilers versions 7 and 8, for example. Possible workarounds are:
-
-  - Use a Portland compiler version 10 or higher or a different compiler.
-  - Disable shared libraries (e.g. configure --disable-shared)
-  - Disable debug (e.g. configure FCFLAGS=\"\")
-
-  Compilation of the Fortran module has been disabled
-
-" >&2;}
-fi
-
-
-if test $without_fortran -ne 1
-then
-  FORTRAN_MOD=fortran
-
-  F90_CHECK="examples/F90"
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking fortran 90 modules inclusion flag" >&5
-$as_echo_n "checking fortran 90 modules inclusion flag... " >&6; }
-if ${ax_cv_f90_modflag+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-i=0
-while test \( -f tmpdir_$i \) -o \( -d tmpdir_$i \) ; do
-  i=`expr $i + 1`
-done
-mkdir tmpdir_$i
-cd tmpdir_$i
-cat > conftest.$ac_ext <<_ACEOF
-
-!234567
-      module conftest_module
-      contains
-      subroutine conftest_routine
-      write(*,'(a)') 'gotcha!'
-      end subroutine conftest_routine
-      end module conftest_module
-
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-cd ..
-ax_cv_f90_modflag="not found"
-for ax_flag in "-I" "-M" "-p"; do
-  if test "$ax_cv_f90_modflag" = "not found" ; then
-    ax_save_FCFLAGS="$FCFLAGS"
-    FCFLAGS="$ax_save_FCFLAGS ${ax_flag}tmpdir_$i"
-    cat > conftest.$ac_ext <<_ACEOF
-
-!234567
-      program conftest_program
-      use conftest_module
-      call conftest_routine
-      end program conftest_program
-
-_ACEOF
-if ac_fn_fc_try_compile "$LINENO"; then :
-  ax_cv_f90_modflag="$ax_flag"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    FCFLAGS="$ax_save_FCFLAGS"
-  fi
-done
-rm -fr tmpdir_$i
-#if test "$ax_cv_f90_modflag" = "not found" ; then
-#  AC_MSG_ERROR([unable to find compiler flag for modules inclusion])
-#fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_f90_modflag" >&5
-$as_echo "$ax_cv_f90_modflag" >&6; }
-  if test "$ax_cv_f90_modflag" = "not found" ; then
-    as_fn_error $? "unable to find compiler flag for modules inclusion" "$LINENO" 5
-  fi
-  F90_MODULE_FLAG=$ax_cv_f90_modflag
-
-fi
-
-
-# Check whether --with-ifs-samples was given.
-if test "${with_ifs_samples+set}" = set; then :
-  withval=$with_ifs_samples; ifs_samples=$withval
-else
-  ifs_samples='none'
-fi
-
-IFS_SAMPLES_DIR=""
-
-if test $ifs_samples != 'none'
-then
-	IFS_SAMPLES_DIR=$ifs_samples
-else
-	IFS_SAMPLES_DIR=$ifs_samples_files_path
-fi
-
-
-
-
-# Check whether --with-emos was given.
-if test "${with_emos+set}" = set; then :
-  withval=$with_emos; emos=$withval
-else
-  emos='none'
-fi
-
-
-EMOS_LIB=""
-if test "$emos" != 'none'
-then
-  EMOS_LIB=$emos
-
-$as_echo "#define HAVE_LIBEMOS 1" >>confdefs.h
-
-fi
-
-
-
-# Check whether --with-fortranlibdir was given.
-if test "${with_fortranlibdir+set}" = set; then :
-  withval=$with_fortranlibdir; fortranlibdir=$withval
-else
-  fortranlibdir=''
-fi
-
-
-
-# Check whether --with-fortranlibs was given.
-if test "${with_fortranlibs+set}" = set; then :
-  withval=$with_fortranlibs; fortranlibs=$withval
-else
-  fortranlibs='none'
-fi
-
-
-if test "$fortranlibs" != 'none'
-then
-   EMOS_LIB="$emos -L$fortranlibdir $fortranlibs -Wl,-rpath $fortranlibdir"
-fi
-
-
-
-# Check whether --enable-timer was given.
-if test "${enable_timer+set}" = set; then :
-  enableval=$enable_timer; with_timer=${enableval}
-else
-  with_timer=no
-fi
-
-if test "x${with_timer}" = xyes; then
-
-$as_echo "#define GRIB_TIMER 1" >>confdefs.h
-
-else
-
-$as_echo "#define GRIB_TIMER 0" >>confdefs.h
-
-fi
-
-
-# Check whether --enable-omp-packing was given.
-if test "${enable_omp_packing+set}" = set; then :
-  enableval=$enable_omp_packing; with_omp=${enableval}
-else
-  with_omp=no
-fi
-
-if test "x${with_omp}" = xyes; then
-
-$as_echo "#define OMP_PACKING 1" >>confdefs.h
-
-else
-
-$as_echo "#define OMP_PACKING 0" >>confdefs.h
-
-fi
-
-
-# Check whether --with-netcdf was given.
-if test "${with_netcdf+set}" = set; then :
-  withval=$with_netcdf; netcdf_dir=$withval
-else
-  netcdf_dir='none'
-fi
-
-with_netcdf=0
-if test $netcdf_dir != 'none'
-then
-	with_netcdf=1
-	CFLAGS="$CFLAGS -I${netcdf_dir}/include"
-    NETCDF_LDFLAGS="-L${netcdf_dir}/lib -lnetcdf"
-    ORIG_LDFLAGS=$LDFLAGS
-    LDFLAGS="$LDFLAGS $NETCDF_LDFLAGS"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nc_open in -lnetcdf" >&5
-$as_echo_n "checking for nc_open in -lnetcdf... " >&6; }
-if ${ac_cv_lib_netcdf_nc_open+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnetcdf  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char nc_open ();
-int
-main ()
-{
-return nc_open ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_netcdf_nc_open=yes
-else
-  ac_cv_lib_netcdf_nc_open=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_netcdf_nc_open" >&5
-$as_echo "$ac_cv_lib_netcdf_nc_open" >&6; }
-if test "x$ac_cv_lib_netcdf_nc_open" = xyes; then :
-  netcdf_ok=1
-else
-  netcdf_ok=0
-fi
-
-    LDFLAGS=$ORIG_LDFLAGS
-	if test $netcdf_ok -eq 0
-	then
-      { $as_echo "$as_me:${as_lineno-$LINENO}:
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-  CONFIGURATION ERROR: netcdf test not passed.
-  Please check that the path to the netcdf library given in --with-netcdf=PATH_TO_NETCDF
-  is correct. Otherwise build without netcdf.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-	  " >&5
-$as_echo "$as_me:
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-  CONFIGURATION ERROR: netcdf test not passed.
-  Please check that the path to the netcdf library given in --with-netcdf=PATH_TO_NETCDF
-  is correct. Otherwise build without netcdf.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-	  " >&6;}
-	  test 0 -eq 1
-	  exit
-    fi
-
-
-$as_echo "#define HAVE_NETCDF 1" >>confdefs.h
-
-fi
-
-# Check whether --enable-jpeg was given.
-if test "${enable_jpeg+set}" = set; then :
-  enableval=$enable_jpeg; without_jpeg=1
-else
-  without_jpeg=0
-fi
-
-
-
-# Check whether --with-jasper was given.
-if test "${with_jasper+set}" = set; then :
-  withval=$with_jasper; jasper_dir=$withval
-else
-  jasper_dir='system'
-fi
-
-
-JASPER_DIR=$jasper_dir
-
-
-if test $jasper_dir != 'system'
-then
-  CFLAGS="$CFLAGS -I${jasper_dir}/include"
-  LDFLAGS="$LDFLAGS -L${jasper_dir}/lib"
-fi
-
-
-# Check whether --with-openjpeg was given.
-if test "${with_openjpeg+set}" = set; then :
-  withval=$with_openjpeg; openjpeg_dir=$withval
-else
-  openjpeg_dir='system'
-fi
-
-
-OPENJPEG_DIR=$openjpeg_dir
-
-
-if test $openjpeg_dir != 'system'
-then
-  CFLAGS="$CFLAGS -I${openjpeg_dir}/include"
-  LDFLAGS="$LDFLAGS -L${openjpeg_dir}/lib"
-fi
-
-if test $without_jpeg -ne 1
-then
-
-$as_echo "#define HAVE_JPEG 1" >>confdefs.h
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jas_stream_memopen in -ljasper" >&5
-$as_echo_n "checking for jas_stream_memopen in -ljasper... " >&6; }
-if ${ac_cv_lib_jasper_jas_stream_memopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ljasper  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char jas_stream_memopen ();
-int
-main ()
-{
-return jas_stream_memopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_jasper_jas_stream_memopen=yes
-else
-  ac_cv_lib_jasper_jas_stream_memopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jasper_jas_stream_memopen" >&5
-$as_echo "$ac_cv_lib_jasper_jas_stream_memopen" >&6; }
-if test "x$ac_cv_lib_jasper_jas_stream_memopen" = xyes; then :
-  jasper_ok=1
-else
-  jasper_ok=0
-fi
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for opj_image_create in -lopenjpeg" >&5
-$as_echo_n "checking for opj_image_create in -lopenjpeg... " >&6; }
-if ${ac_cv_lib_openjpeg_opj_image_create+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lopenjpeg  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opj_image_create ();
-int
-main ()
-{
-return opj_image_create ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_openjpeg_opj_image_create=yes
-else
-  ac_cv_lib_openjpeg_opj_image_create=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_openjpeg_opj_image_create" >&5
-$as_echo "$ac_cv_lib_openjpeg_opj_image_create" >&6; }
-if test "x$ac_cv_lib_openjpeg_opj_image_create" = xyes; then :
-  openjpeg_ok=1
-else
-  openjpeg_ok=0
-fi
-
-
-    jpeg_ok=0
-
-    # prefer openjpeg over jasper
-	if test $openjpeg_ok -eq 1
-	then
-	  jpeg_ok=1
-      LIB_OPENJPEG='-lopenjpeg -lm'
-      LIBS="$LIB_OPENJPEG $LIBS"
-
-$as_echo "#define HAVE_LIBOPENJPEG 1" >>confdefs.h
-
-
-    elif test $jasper_ok -eq 1
-    then
-	  jpeg_ok=1
-      LIB_JASPER='-ljasper'
-      LIBS="$LIB_JASPER $LIBS"
-
-$as_echo "#define HAVE_LIBJASPER 1" >>confdefs.h
-
-
-	fi
-
-	if test $jpeg_ok -eq 0
-	then
-      { $as_echo "$as_me:${as_lineno-$LINENO}:
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-  CONFIGURATION ERROR: jpeg library (jasper or openjpeg) required.
-  jpeg library installation is not working or missing.
-
-  To fix this problem you have the following options.
-  1) Install without jpeg support enabled (--disable-jpeg), but you will not be able to
-     decode grib2 data encoded in jpeg.
-  2) Check if you have a jpeg library installed in a path different from your system path.
-     In this case you can provide your jpeg library installation path to the configure
-     through the options:
-        --with-jasper=\"jasper_lib_path\"
-        --with-openjpeg=\"openjpeg_lib_path\"
-  3) Download and install one of the supported jpeg libraries.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-	  " >&5
-$as_echo "$as_me:
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-  CONFIGURATION ERROR: jpeg library (jasper or openjpeg) required.
-  jpeg library installation is not working or missing.
-
-  To fix this problem you have the following options.
-  1) Install without jpeg support enabled (--disable-jpeg), but you will not be able to
-     decode grib2 data encoded in jpeg.
-  2) Check if you have a jpeg library installed in a path different from your system path.
-     In this case you can provide your jpeg library installation path to the configure
-     through the options:
-        --with-jasper=\"jasper_lib_path\"
-        --with-openjpeg=\"openjpeg_lib_path\"
-  3) Download and install one of the supported jpeg libraries.
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-	  " >&6;}
-	   0 -eq 1
-	  exit
-    fi
-  JPEG_TEST="jpeg.sh"
-
-fi
-
-CCSDS_TEST=""
-
-# Check whether --with-aec was given.
-if test "${with_aec+set}" = set; then :
-  withval=$with_aec;
-else
-  with_aec=no
-fi
-
-
-if test "x$with_aec" != xno ; then
-  if test "x$with_aec" != xyes ; then
-    LDFLAGS="$LDFLAGS -L$with_aec/lib"
-    CPPFLAGS="$CPPFLAGS -I$with_aec/include"
-  fi
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for aec_encode in -laec" >&5
-$as_echo_n "checking for aec_encode in -laec... " >&6; }
-if ${ac_cv_lib_aec_aec_encode+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-laec  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char aec_encode ();
-int
-main ()
-{
-return aec_encode ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_aec_aec_encode=yes
-else
-  ac_cv_lib_aec_aec_encode=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_aec_aec_encode" >&5
-$as_echo "$ac_cv_lib_aec_aec_encode" >&6; }
-if test "x$ac_cv_lib_aec_aec_encode" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBAEC 1
-_ACEOF
-
-  LIBS="-laec $LIBS"
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "aec test failed (--without-aec to disable)
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-  CCSDS_TEST="ccsds.sh"
-  LIB_AEC='-laec'
-
-  AEC_DIR="$with_aec"
-
-
-fi
-
-
-
-# Check whether --with-png-support was given.
-if test "${with_png_support+set}" = set; then :
-  withval=$with_png_support; with_png=1
-else
-  with_png=0
-fi
-
-
-if test $with_png -gt 0
-then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PNG " >&5
-$as_echo_n "checking for PNG ... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
-$as_echo "" >&6; }
-    ac_fn_c_check_header_mongrel "$LINENO" "png.h" "ac_cv_header_png_h" "$ac_includes_default"
-if test "x$ac_cv_header_png_h" = xyes; then :
-  passed=1
-else
-  passed=0
-fi
-
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_read_png in -lpng" >&5
-$as_echo_n "checking for png_read_png in -lpng... " >&6; }
-if ${ac_cv_lib_png_png_read_png+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpng  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char png_read_png ();
-int
-main ()
-{
-return png_read_png ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_png_png_read_png=yes
-else
-  ac_cv_lib_png_png_read_png=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png_png_read_png" >&5
-$as_echo "$ac_cv_lib_png_png_read_png" >&6; }
-if test "x$ac_cv_lib_png_png_read_png" = xyes; then :
-  passed=1
-else
-  passed=0
-fi
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if PNG support package is complete" >&5
-$as_echo_n "checking if PNG support package is complete... " >&6; }
-
-    if test $passed -gt 0
-    then
-      LIB_PNG='-lpng'
-      LIBS="$LIB_PNG $LIBS"
-
-$as_echo "#define HAVE_LIBPNG 1" >>confdefs.h
-
-
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no -- some components failed test" >&5
-$as_echo "no -- some components failed test" >&6; }
-    fi
-fi
-
-
-#PERL_INSTALL_OPTIONS="PREFIX=$prefix INSTALLDIRS=perl"
-PERL_INSTALL_OPTIONS="LIB=$default_perl_install"
-
-# Check whether --enable-install-system-perl was given.
-if test "${enable_install_system_perl+set}" = set; then :
-  enableval=$enable_install_system_perl; enable_perl_install='yes'
-else
-  enable_perl_install='no'
-fi
-
-
-if test "$enable_perl_install" = 'yes'
-then
-    PERL_INSTALL_OPTIONS=""
-fi
-
-
-
-
-# Check whether --with-perl was given.
-if test "${with_perl+set}" = set; then :
-  withval=$with_perl; with_perl=$withval
-else
-  with_perl='no'
-fi
-
-
-if test "$with_perl" != 'no'
-then
-  if test "$with_perl" != 'yes'
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl" >&5
-$as_echo_n "checking for perl... " >&6; }
-if ${ac_cv_path_PERL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_path_PERL="$with_perl"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_PERL" >&5
-$as_echo "$ac_cv_path_PERL" >&6; };
-    PERL=$ac_cv_path_PERL
-      else
-    for ac_prog in perl perl5
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PERL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PERL in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PERL=$ac_cv_path_PERL
-if test -n "$PERL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
-$as_echo "$PERL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$PERL" && break
-done
-test -n "$PERL" || PERL="perl"
-  fi
-fi
-
-builddir=`pwd`
-
-GRIB_API_LIB="${builddir}/src/grib_api.a"
-GRIB_API_INC="${builddir}/src"
-
-# Check whether --with-perl-options was given.
-if test "${with_perl_options+set}" = set; then :
-  withval=$with_perl_options; PERL_MAKE_OPTIONS=$withval
-fi
-
-
-
-
-
- if test $with_perl != no; then
-  WITH_PERL_TRUE=
-  WITH_PERL_FALSE='#'
-else
-  WITH_PERL_TRUE='#'
-  WITH_PERL_FALSE=
-fi
-
-
-# Check whether --enable-python was given.
-if test "${enable_python+set}" = set; then :
-  enableval=$enable_python;
-fi
-
-
-# Check whether --enable-numpy was given.
-if test "${enable_numpy+set}" = set; then :
-  enableval=$enable_numpy;
-fi
-
-
-if test "x$enable_python" = "xyes"
-then
-
-
-
-
-
-
-        if test -n "$PYTHON"; then
-      # If the user set $PYTHON, use it and don't search something else.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 2.5" >&5
-$as_echo_n "checking whether $PYTHON version is >= 2.5... " >&6; }
-      prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
-sys.exit(sys.hexversion < minverhex)"
-  if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
-   ($PYTHON -c "$prog") >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-			       as_fn_error $? "Python interpreter is too old" "$LINENO" 5
-fi
-      am_display_PYTHON=$PYTHON
-    else
-      # Otherwise, try each interpreter until we find one that satisfies
-      # VERSION.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.5" >&5
-$as_echo_n "checking for a Python interpreter with version >= 2.5... " >&6; }
-if ${am_cv_pathless_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-	for am_cv_pathless_PYTHON in python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7  python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
-	  test "$am_cv_pathless_PYTHON" = none && break
-	  prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
-sys.exit(sys.hexversion < minverhex)"
-  if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5
-   ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
-  break
-fi
-	done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
-$as_echo "$am_cv_pathless_PYTHON" >&6; }
-      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
-      if test "$am_cv_pathless_PYTHON" = none; then
-	PYTHON=:
-      else
-        # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
-set dummy $am_cv_pathless_PYTHON; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PYTHON in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PYTHON=$ac_cv_path_PYTHON
-if test -n "$PYTHON"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-      fi
-      am_display_PYTHON=$am_cv_pathless_PYTHON
-    fi
-
-
-  if test "$PYTHON" = :; then
-      as_fn_error $? "no suitable Python interpreter found" "$LINENO" 5
-  else
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
-  PYTHON_VERSION=$am_cv_python_version
-
-
-
-  PYTHON_PREFIX='${prefix}'
-
-  PYTHON_EXEC_PREFIX='${exec_prefix}'
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
-  PYTHON_PLATFORM=$am_cv_python_platform
-
-
-  # Just factor out some code duplication.
-  am_python_setup_sysconfig="\
-import sys
-# Prefer sysconfig over distutils.sysconfig, for better compatibility
-# with python 3.x.  See automake bug#10227.
-try:
-    import sysconfig
-except ImportError:
-    can_use_sysconfig = 0
-else:
-    can_use_sysconfig = 1
-# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
-# <https://github.com/pypa/virtualenv/issues/118>
-try:
-    from platform import python_implementation
-    if python_implementation() == 'CPython' and sys.version[:3] == '2.7':
-        can_use_sysconfig = 0
-except ImportError:
-    pass"
-
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$prefix" = xNONE
-     then
-       am_py_prefix=$ac_default_prefix
-     else
-       am_py_prefix=$prefix
-     fi
-     am_cv_python_pythondir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pythondir in
-     $am_py_prefix*)
-       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
-       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
-       ;;
-     *)
-       case $am_py_prefix in
-         /usr|/System*) ;;
-         *)
-	  am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
-	  ;;
-       esac
-       ;;
-     esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
-  pythondir=$am_cv_python_pythondir
-
-
-
-  pkgpythondir=\${pythondir}/$PACKAGE
-
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$exec_prefix" = xNONE
-     then
-       am_py_exec_prefix=$am_py_prefix
-     else
-       am_py_exec_prefix=$exec_prefix
-     fi
-     am_cv_python_pyexecdir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pyexecdir in
-     $am_py_exec_prefix*)
-       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
-       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
-       ;;
-     *)
-       case $am_py_exec_prefix in
-         /usr|/System*) ;;
-         *)
-	   am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
-	   ;;
-       esac
-       ;;
-     esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
-  pyexecdir=$am_cv_python_pyexecdir
-
-
-
-  pkgpyexecdir=\${pyexecdir}/$PACKAGE
-
-
-
-  fi
-
-
-
-
-
-
-
-
-
-  for ac_prog in python$PYTHON_VERSION-config python-config
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PYTHON_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PYTHON_CONFIG="$PYTHON_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in `dirname $PYTHON`
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PYTHON_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG
-if test -n "$PYTHON_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5
-$as_echo "$PYTHON_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$PYTHON_CONFIG" && break
-done
-test -n "$PYTHON_CONFIG" || PYTHON_CONFIG="no"
-
-  if test "$PYTHON_CONFIG" = no; then :
-  as_fn_error $? "cannot find python-config for $PYTHON." "$LINENO" 5
-fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking python include flags" >&5
-$as_echo_n "checking python include flags... " >&6; }
-  PYTHON_INCLUDES=`$PYTHON_CONFIG --includes`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_INCLUDES" >&5
-$as_echo "$PYTHON_INCLUDES" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking python link flags" >&5
-$as_echo_n "checking python link flags... " >&6; }
-  PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
-$as_echo "$PYTHON_LDFLAGS" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking python C flags" >&5
-$as_echo_n "checking python C flags... " >&6; }
-  PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CFLAGS" >&5
-$as_echo "$PYTHON_CFLAGS" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking python libraries" >&5
-$as_echo_n "checking python libraries... " >&6; }
-  PYTHON_LIBS=`$PYTHON_CONFIG --libs`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LIBS" >&5
-$as_echo "$PYTHON_LIBS" >&6; }
-
-  # macro that gets the include path for Python.h which is used to build
-  # the shared library corresponding to the GRIB API Python module.
-  # AX_PYTHON_DEVEL
-
-  # enable testing scripts if building with Python
-  PYTHON_CHECK='examples/python'
-
-
-  data_handler=numpy
-  if test "x$enable_numpy" != "xno"
-  then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether numpy is installed" >&5
-$as_echo_n "checking whether numpy is installed... " >&6; }
-
-    has_numpy=`$PYTHON -c "import numpy;print numpy" 2> /dev/null`
-    if test "x$has_numpy" = "x"
-    then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-       as_fn_error $? "NumPy is not installed. Use --disable-numpy if you want to disable Numpy from the build." "$LINENO" 5
-    else
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-       NUMPY_INCLUDE=`$PYTHON -c "import numpy;print numpy.get_include()"`
-
-    fi
-  else
-    data_handler=array
-  fi
-
-  PYTHON_DATA_HANDLER=$data_handler
-
-fi
-
- if test x$PYTHON != x; then
-  WITH_PYTHON_TRUE=
-  WITH_PYTHON_FALSE='#'
-else
-  WITH_PYTHON_TRUE='#'
-  WITH_PYTHON_FALSE=
-fi
-
- if test x$FORTRAN_MOD != x; then
-  WITH_FORTRAN_TRUE=
-  WITH_FORTRAN_FALSE='#'
-else
-  WITH_FORTRAN_TRUE='#'
-  WITH_FORTRAN_FALSE=
-fi
-
- if test "x$enable_shared" = xyes; then
-  CREATING_SHARED_LIBS_TRUE=
-  CREATING_SHARED_LIBS_FALSE='#'
-else
-  CREATING_SHARED_LIBS_TRUE='#'
-  CREATING_SHARED_LIBS_FALSE=
-fi
-
-
-
-
-# Extract the first word of "rm", so it can be a program name with args.
-set dummy rm; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RM"; then
-  ac_cv_prog_RM="$RM" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RM="rm"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RM=$ac_cv_prog_RM
-if test -n "$RM"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RM" >&5
-$as_echo "$RM" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="${ac_tool_prefix}ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AR"; then
-  ac_ct_AR=$AR
-  # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_AR" = x; then
-    AR="ar"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
-else
-  AR="$ac_cv_prog_AR"
-fi
-
-
-WARN_PEDANTIC=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -pedantic -Wall" >&5
-$as_echo_n "checking whether $CC supports -pedantic -Wall... " >&6; }
-if ${grib_api_cv_prog_cc_pedantic__Wall+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  save_CFLAGS="$CFLAGS"
-CFLAGS="-pedantic -Wall"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  grib_api_cv_prog_cc_pedantic__Wall=yes
-else
-  grib_api_cv_prog_cc_pedantic__Wall=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-CFLAGS="$save_CFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $grib_api_cv_prog_cc_pedantic__Wall" >&5
-$as_echo "$grib_api_cv_prog_cc_pedantic__Wall" >&6; }
-if test $grib_api_cv_prog_cc_pedantic__Wall = yes; then :
-  WARN_PEDANTIC="-pedantic -Wall"
-fi
-
-
-WERROR=
-# Check whether --enable-werror-always was given.
-if test "${enable_werror_always+set}" = set; then :
-  enableval=$enable_werror_always;
-else
-  enable_werror_always=no
-fi
-
-if test $enable_werror_always = yes; then :
-  WERROR=-Werror
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pow in -lm" >&5
-$as_echo_n "checking for pow in -lm... " >&6; }
-if ${ac_cv_lib_m_pow+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char pow ();
-int
-main ()
-{
-return pow ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_m_pow=yes
-else
-  ac_cv_lib_m_pow=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_pow" >&5
-$as_echo "$ac_cv_lib_m_pow" >&6; }
-if test "x$ac_cv_lib_m_pow" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-ac_header_dirent=no
-for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
-  as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
-$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
-if eval \${$as_ac_Header+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <$ac_hdr>
-
-int
-main ()
-{
-if ((DIR *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$as_ac_Header=yes"
-else
-  eval "$as_ac_Header=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$as_ac_Header
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
-_ACEOF
-
-ac_header_dirent=$ac_hdr; break
-fi
-
-done
-# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
-if test $ac_header_dirent = dirent.h; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opendir ();
-int
-main ()
-{
-return opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' dir; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_opendir=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_opendir+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_opendir+:} false; then :
-
-else
-  ac_cv_search_opendir=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
-ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char opendir ();
-int
-main ()
-{
-return opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' x; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_opendir=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_opendir+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_opendir+:} false; then :
-
-else
-  ac_cv_search_opendir=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
-ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-for ac_header in stddef.h stdlib.h string.h sys/param.h sys/time.h unistd.h math.h stdarg.h assert.h ctype.h fcntl.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
-$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if ${ac_cv_header_time+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_time=yes
-else
-  ac_cv_header_time=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
-$as_echo "$ac_cv_header_time" >&6; }
-if test $ac_cv_header_time = yes; then
-
-$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5
-$as_echo_n "checking whether closedir returns void... " >&6; }
-if ${ac_cv_func_closedir_void+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  ac_cv_func_closedir_void=yes
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header_dirent>
-#ifndef __cplusplus
-int closedir ();
-#endif
-
-int
-main ()
-{
-return closedir (opendir (".")) != 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_func_closedir_void=no
-else
-  ac_cv_func_closedir_void=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5
-$as_echo "$ac_cv_func_closedir_void" >&6; }
-if test $ac_cv_func_closedir_void = yes; then
-
-$as_echo "#define CLOSEDIR_VOID 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5
-$as_echo_n "checking return type of signal handlers... " >&6; }
-if ${ac_cv_type_signal+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <signal.h>
-
-int
-main ()
-{
-return *(signal (0, 0)) (0) == 1;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_type_signal=int
-else
-  ac_cv_type_signal=void
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5
-$as_echo "$ac_cv_type_signal" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define RETSIGTYPE $ac_cv_type_signal
-_ACEOF
-
-
-for ac_func in vprintf
-do :
-  ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
-if test "x$ac_cv_func_vprintf" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_VPRINTF 1
-_ACEOF
-
-ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
-if test "x$ac_cv_func__doprnt" = xyes; then :
-
-$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h
-
-fi
-
-fi
-done
-
-
-for ac_func in bzero gettimeofday
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-HOST_CPU=${host_cpu}
-HOST_VENDOR=${host_vendor}
-HOST_OS=${host_os}
-
-if test x$HOST_OS = "xlinux-gnu"
-then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Linux distribution " >&5
-$as_echo_n "checking for Linux distribution ... " >&6; }
-
-	# This works for Fedora, RedHat and Slackware
-	for f in /etc/fedora-release /etc/redhat-release /etc/slackware-release
-	do
-		if test -f $f; then
-			distro=`cat $f`
-			break
-		fi
-	done
-
-	# This works in Ubuntu (11 at least)
-	if test -f /etc/lsb-release; then
-		distro=`cat /etc/lsb-release | grep DISTRIB_ID | awk -F= '{print }' `
-		distro_version=`cat /etc/lsb-release | grep DISTRIB_RELEASE | awk -F= '{print }' `
-	fi
-
-	# For SuSE
-	if test -f /etc/SuSE-release; then
-		distro=`cat /etc/SuSE-release | head -1`
-		#distro_version=`cat /etc/SuSE-release | tail -1 | awk -F= '{print }' `
-	fi
-
-	# At least Debian has this
-	if test -f /etc/issue.net -a "x$distro" = x; then
-		distro=`cat /etc/issue.net | head -1`
-	fi
-
-	# Everything else
-	if test "x$distro" = x; then
-		distro="Unknown Linux"
-	fi
-
-	LINUX_DISTRIBUTION_NAME=$distro
-	LINUX_DISTRIBUTION_VERSION=$distro_version
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINUX_DISTRIBUTION_NAME $LINUX_DISTRIBUTION_VERSION" >&5
-$as_echo "$LINUX_DISTRIBUTION_NAME $LINUX_DISTRIBUTION_VERSION" >&6; }
-
-else
-	LINUX_DISTRIBUTION_NAME=$HOST_OS
-	LINUX_DISTRIBUTION_VERSION=""
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: OS is non-Linux UNIX $HOST_OS." >&5
-$as_echo "$as_me: OS is non-Linux UNIX $HOST_OS." >&6;}
-fi
-
-
-
-
-
-ac_config_files="$ac_config_files Makefile src/Makefile fortran/Makefile tools/Makefile data/Makefile definitions/Makefile samples/Makefile ifs_samples/grib1/Makefile ifs_samples/grib1_mlgrib2/Makefile ifs_samples/grib1_mlgrib2_ieee64/Makefile tests/Makefile examples/C/Makefile examples/F90/Makefile tigge/Makefile perl/GRIB-API/Makefile.PL perl/Makefile python/Makefile examples/python/Makefile"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \.
-      sed -n \
-	"s/'/'\\\\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-      if test ! -f "$cache_file" || test -h "$cache_file"; then
-	cat confcache >"$cache_file"
-      else
-        case $cache_file in #(
-        */* | ?:*)
-	  mv -f confcache "$cache_file"$$ &&
-	  mv -f "$cache_file"$$ "$cache_file" ;; #(
-        *)
-	  mv -f confcache "$cache_file" ;;
-	esac
-      fi
-    fi
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
-$as_echo_n "checking that generated files are newer than configure... " >&6; }
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
-$as_echo "done" >&6; }
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  as_fn_error $? "conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
- if test -n "$EXEEXT"; then
-  am__EXEEXT_TRUE=
-  am__EXEEXT_FALSE='#'
-else
-  am__EXEEXT_TRUE='#'
-  am__EXEEXT_FALSE=
-fi
-
-if test -z "${UPPER_CASE_MOD_TRUE}" && test -z "${UPPER_CASE_MOD_FALSE}"; then
-  as_fn_error $? "conditional \"UPPER_CASE_MOD\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_MARS_TESTS_TRUE}" && test -z "${WITH_MARS_TESTS_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_MARS_TESTS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${UPPER_CASE_MOD_TRUE}" && test -z "${UPPER_CASE_MOD_FALSE}"; then
-  as_fn_error $? "conditional \"UPPER_CASE_MOD\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${DEBUG_IN_MOD_TRUE}" && test -z "${DEBUG_IN_MOD_FALSE}"; then
-  as_fn_error $? "conditional \"DEBUG_IN_MOD\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_PERL_TRUE}" && test -z "${WITH_PERL_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_PERL\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_PYTHON_TRUE}" && test -z "${WITH_PYTHON_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_PYTHON\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_FORTRAN_TRUE}" && test -z "${WITH_FORTRAN_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_FORTRAN\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${CREATING_SHARED_LIBS_TRUE}" && test -z "${CREATING_SHARED_LIBS_FALSE}"; then
-  as_fn_error $? "conditional \"CREATING_SHARED_LIBS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by eccodes $as_me  , which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-      --config     print configuration, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE]
-                   instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to <Software.Support at ecmwf.int>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-eccodes config.status
-configured by $0, generated by GNU Autoconf 2.69,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-MKDIR_P='$MKDIR_P'
-AWK='$AWK'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=?*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  --*=)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    '') as_fn_error $? "missing file argument" ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h)
-    # Conflict between --help and --header
-    as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
-  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
-  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-  shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-  CONFIG_SHELL='$SHELL'
-  export CONFIG_SHELL
-  exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
-enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
-pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
-enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
-SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
-ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
-PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
-host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
-host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
-host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
-build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
-build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
-build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
-SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
-Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
-GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
-EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
-FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
-LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
-NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
-LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
-exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
-lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
-lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
-lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
-AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
-STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
-lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
-CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
-compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
-GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
-nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
-objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
-need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
-DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
-NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
-LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
-OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
-libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
-hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
-version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
-install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
-striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
-predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
-postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
-predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
-postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
-LD_F77='`$ECHO "$LD_F77" | $SED "$delay_single_quote_subst"`'
-LD_FC='`$ECHO "$LD_FC" | $SED "$delay_single_quote_subst"`'
-reload_flag_F77='`$ECHO "$reload_flag_F77" | $SED "$delay_single_quote_subst"`'
-reload_flag_FC='`$ECHO "$reload_flag_FC" | $SED "$delay_single_quote_subst"`'
-reload_cmds_F77='`$ECHO "$reload_cmds_F77" | $SED "$delay_single_quote_subst"`'
-reload_cmds_FC='`$ECHO "$reload_cmds_FC" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds_F77='`$ECHO "$old_archive_cmds_F77" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds_FC='`$ECHO "$old_archive_cmds_FC" | $SED "$delay_single_quote_subst"`'
-compiler_F77='`$ECHO "$compiler_F77" | $SED "$delay_single_quote_subst"`'
-compiler_FC='`$ECHO "$compiler_FC" | $SED "$delay_single_quote_subst"`'
-GCC_F77='`$ECHO "$GCC_F77" | $SED "$delay_single_quote_subst"`'
-GCC_FC='`$ECHO "$GCC_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_F77='`$ECHO "$lt_prog_compiler_no_builtin_flag_F77" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_FC='`$ECHO "$lt_prog_compiler_no_builtin_flag_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_F77='`$ECHO "$lt_prog_compiler_pic_F77" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_FC='`$ECHO "$lt_prog_compiler_pic_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_F77='`$ECHO "$lt_prog_compiler_wl_F77" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_FC='`$ECHO "$lt_prog_compiler_wl_FC" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static_F77='`$ECHO "$lt_prog_compiler_static_F77" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static_FC='`$ECHO "$lt_prog_compiler_static_FC" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_F77='`$ECHO "$lt_cv_prog_compiler_c_o_F77" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_FC='`$ECHO "$lt_cv_prog_compiler_c_o_FC" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc_F77='`$ECHO "$archive_cmds_need_lc_F77" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc_FC='`$ECHO "$archive_cmds_need_lc_FC" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_F77='`$ECHO "$enable_shared_with_static_runtimes_F77" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_FC='`$ECHO "$enable_shared_with_static_runtimes_FC" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_F77='`$ECHO "$export_dynamic_flag_spec_F77" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_FC='`$ECHO "$export_dynamic_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec_F77='`$ECHO "$whole_archive_flag_spec_F77" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec_FC='`$ECHO "$whole_archive_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object_F77='`$ECHO "$compiler_needs_object_F77" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object_FC='`$ECHO "$compiler_needs_object_FC" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_F77='`$ECHO "$old_archive_from_new_cmds_F77" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_FC='`$ECHO "$old_archive_from_new_cmds_FC" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_F77='`$ECHO "$old_archive_from_expsyms_cmds_F77" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_FC='`$ECHO "$old_archive_from_expsyms_cmds_FC" | $SED "$delay_single_quote_subst"`'
-archive_cmds_F77='`$ECHO "$archive_cmds_F77" | $SED "$delay_single_quote_subst"`'
-archive_cmds_FC='`$ECHO "$archive_cmds_FC" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds_F77='`$ECHO "$archive_expsym_cmds_F77" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds_FC='`$ECHO "$archive_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`'
-module_cmds_F77='`$ECHO "$module_cmds_F77" | $SED "$delay_single_quote_subst"`'
-module_cmds_FC='`$ECHO "$module_cmds_FC" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds_F77='`$ECHO "$module_expsym_cmds_F77" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds_FC='`$ECHO "$module_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld_F77='`$ECHO "$with_gnu_ld_F77" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld_FC='`$ECHO "$with_gnu_ld_FC" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag_F77='`$ECHO "$allow_undefined_flag_F77" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag_FC='`$ECHO "$allow_undefined_flag_FC" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag_F77='`$ECHO "$no_undefined_flag_F77" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag_FC='`$ECHO "$no_undefined_flag_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_F77='`$ECHO "$hardcode_libdir_flag_spec_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_FC='`$ECHO "$hardcode_libdir_flag_spec_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator_F77='`$ECHO "$hardcode_libdir_separator_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator_FC='`$ECHO "$hardcode_libdir_separator_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_F77='`$ECHO "$hardcode_direct_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_FC='`$ECHO "$hardcode_direct_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute_F77='`$ECHO "$hardcode_direct_absolute_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute_FC='`$ECHO "$hardcode_direct_absolute_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L_F77='`$ECHO "$hardcode_minus_L_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L_FC='`$ECHO "$hardcode_minus_L_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_F77='`$ECHO "$hardcode_shlibpath_var_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_FC='`$ECHO "$hardcode_shlibpath_var_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic_F77='`$ECHO "$hardcode_automatic_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic_FC='`$ECHO "$hardcode_automatic_FC" | $SED "$delay_single_quote_subst"`'
-inherit_rpath_F77='`$ECHO "$inherit_rpath_F77" | $SED "$delay_single_quote_subst"`'
-inherit_rpath_FC='`$ECHO "$inherit_rpath_FC" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs_F77='`$ECHO "$link_all_deplibs_F77" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs_FC='`$ECHO "$link_all_deplibs_FC" | $SED "$delay_single_quote_subst"`'
-always_export_symbols_F77='`$ECHO "$always_export_symbols_F77" | $SED "$delay_single_quote_subst"`'
-always_export_symbols_FC='`$ECHO "$always_export_symbols_FC" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds_F77='`$ECHO "$export_symbols_cmds_F77" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds_FC='`$ECHO "$export_symbols_cmds_FC" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms_F77='`$ECHO "$exclude_expsyms_F77" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms_FC='`$ECHO "$exclude_expsyms_FC" | $SED "$delay_single_quote_subst"`'
-include_expsyms_F77='`$ECHO "$include_expsyms_F77" | $SED "$delay_single_quote_subst"`'
-include_expsyms_FC='`$ECHO "$include_expsyms_FC" | $SED "$delay_single_quote_subst"`'
-prelink_cmds_F77='`$ECHO "$prelink_cmds_F77" | $SED "$delay_single_quote_subst"`'
-prelink_cmds_FC='`$ECHO "$prelink_cmds_FC" | $SED "$delay_single_quote_subst"`'
-postlink_cmds_F77='`$ECHO "$postlink_cmds_F77" | $SED "$delay_single_quote_subst"`'
-postlink_cmds_FC='`$ECHO "$postlink_cmds_FC" | $SED "$delay_single_quote_subst"`'
-file_list_spec_F77='`$ECHO "$file_list_spec_F77" | $SED "$delay_single_quote_subst"`'
-file_list_spec_FC='`$ECHO "$file_list_spec_FC" | $SED "$delay_single_quote_subst"`'
-hardcode_action_F77='`$ECHO "$hardcode_action_F77" | $SED "$delay_single_quote_subst"`'
-hardcode_action_FC='`$ECHO "$hardcode_action_FC" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_F77='`$ECHO "$compiler_lib_search_dirs_F77" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_FC='`$ECHO "$compiler_lib_search_dirs_FC" | $SED "$delay_single_quote_subst"`'
-predep_objects_F77='`$ECHO "$predep_objects_F77" | $SED "$delay_single_quote_subst"`'
-predep_objects_FC='`$ECHO "$predep_objects_FC" | $SED "$delay_single_quote_subst"`'
-postdep_objects_F77='`$ECHO "$postdep_objects_F77" | $SED "$delay_single_quote_subst"`'
-postdep_objects_FC='`$ECHO "$postdep_objects_FC" | $SED "$delay_single_quote_subst"`'
-predeps_F77='`$ECHO "$predeps_F77" | $SED "$delay_single_quote_subst"`'
-predeps_FC='`$ECHO "$predeps_FC" | $SED "$delay_single_quote_subst"`'
-postdeps_F77='`$ECHO "$postdeps_F77" | $SED "$delay_single_quote_subst"`'
-postdeps_FC='`$ECHO "$postdeps_FC" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path_F77='`$ECHO "$compiler_lib_search_path_F77" | $SED "$delay_single_quote_subst"`'
-compiler_lib_search_path_FC='`$ECHO "$compiler_lib_search_path_FC" | $SED "$delay_single_quote_subst"`'
-
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in SHELL \
-ECHO \
-PATH_SEPARATOR \
-SED \
-GREP \
-EGREP \
-FGREP \
-LD \
-NM \
-LN_S \
-lt_SP2NL \
-lt_NL2SP \
-reload_flag \
-OBJDUMP \
-deplibs_check_method \
-file_magic_cmd \
-file_magic_glob \
-want_nocaseglob \
-DLLTOOL \
-sharedlib_from_linklib_cmd \
-AR \
-AR_FLAGS \
-archiver_list_spec \
-STRIP \
-RANLIB \
-CC \
-CFLAGS \
-compiler \
-lt_cv_sys_global_symbol_pipe \
-lt_cv_sys_global_symbol_to_cdecl \
-lt_cv_sys_global_symbol_to_c_name_address \
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
-nm_file_list_spec \
-lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_pic \
-lt_prog_compiler_wl \
-lt_prog_compiler_static \
-lt_cv_prog_compiler_c_o \
-need_locks \
-MANIFEST_TOOL \
-DSYMUTIL \
-NMEDIT \
-LIPO \
-OTOOL \
-OTOOL64 \
-shrext_cmds \
-export_dynamic_flag_spec \
-whole_archive_flag_spec \
-compiler_needs_object \
-with_gnu_ld \
-allow_undefined_flag \
-no_undefined_flag \
-hardcode_libdir_flag_spec \
-hardcode_libdir_separator \
-exclude_expsyms \
-include_expsyms \
-file_list_spec \
-variables_saved_for_relink \
-libname_spec \
-library_names_spec \
-soname_spec \
-install_override_mode \
-finish_eval \
-old_striplib \
-striplib \
-compiler_lib_search_dirs \
-predep_objects \
-postdep_objects \
-predeps \
-postdeps \
-compiler_lib_search_path \
-LD_F77 \
-LD_FC \
-reload_flag_F77 \
-reload_flag_FC \
-compiler_F77 \
-compiler_FC \
-lt_prog_compiler_no_builtin_flag_F77 \
-lt_prog_compiler_no_builtin_flag_FC \
-lt_prog_compiler_pic_F77 \
-lt_prog_compiler_pic_FC \
-lt_prog_compiler_wl_F77 \
-lt_prog_compiler_wl_FC \
-lt_prog_compiler_static_F77 \
-lt_prog_compiler_static_FC \
-lt_cv_prog_compiler_c_o_F77 \
-lt_cv_prog_compiler_c_o_FC \
-export_dynamic_flag_spec_F77 \
-export_dynamic_flag_spec_FC \
-whole_archive_flag_spec_F77 \
-whole_archive_flag_spec_FC \
-compiler_needs_object_F77 \
-compiler_needs_object_FC \
-with_gnu_ld_F77 \
-with_gnu_ld_FC \
-allow_undefined_flag_F77 \
-allow_undefined_flag_FC \
-no_undefined_flag_F77 \
-no_undefined_flag_FC \
-hardcode_libdir_flag_spec_F77 \
-hardcode_libdir_flag_spec_FC \
-hardcode_libdir_separator_F77 \
-hardcode_libdir_separator_FC \
-exclude_expsyms_F77 \
-exclude_expsyms_FC \
-include_expsyms_F77 \
-include_expsyms_FC \
-file_list_spec_F77 \
-file_list_spec_FC \
-compiler_lib_search_dirs_F77 \
-compiler_lib_search_dirs_FC \
-predep_objects_F77 \
-predep_objects_FC \
-postdep_objects_F77 \
-postdep_objects_FC \
-predeps_F77 \
-predeps_FC \
-postdeps_F77 \
-postdeps_FC \
-compiler_lib_search_path_F77 \
-compiler_lib_search_path_FC; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in reload_cmds \
-old_postinstall_cmds \
-old_postuninstall_cmds \
-old_archive_cmds \
-extract_expsyms_cmds \
-old_archive_from_new_cmds \
-old_archive_from_expsyms_cmds \
-archive_cmds \
-archive_expsym_cmds \
-module_cmds \
-module_expsym_cmds \
-export_symbols_cmds \
-prelink_cmds \
-postlink_cmds \
-postinstall_cmds \
-postuninstall_cmds \
-finish_cmds \
-sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec \
-reload_cmds_F77 \
-reload_cmds_FC \
-old_archive_cmds_F77 \
-old_archive_cmds_FC \
-old_archive_from_new_cmds_F77 \
-old_archive_from_new_cmds_FC \
-old_archive_from_expsyms_cmds_F77 \
-old_archive_from_expsyms_cmds_FC \
-archive_cmds_F77 \
-archive_cmds_FC \
-archive_expsym_cmds_F77 \
-archive_expsym_cmds_FC \
-module_cmds_F77 \
-module_cmds_FC \
-module_expsym_cmds_F77 \
-module_expsym_cmds_FC \
-export_symbols_cmds_F77 \
-export_symbols_cmds_FC \
-prelink_cmds_F77 \
-prelink_cmds_FC \
-postlink_cmds_F77 \
-postlink_cmds_FC; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-ac_aux_dir='$ac_aux_dir'
-xsi_shell='$xsi_shell'
-lt_shell_append='$lt_shell_append'
-
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'
-
-
-
-
-
-
-
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
-    "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;;
-    "src/eccodes_version.h") CONFIG_FILES="$CONFIG_FILES src/eccodes_version.h" ;;
-    "rpms/eccodes.pc") CONFIG_FILES="$CONFIG_FILES rpms/eccodes.pc" ;;
-    "rpms/eccodes.spec") CONFIG_FILES="$CONFIG_FILES rpms/eccodes.spec" ;;
-    "rpms/eccodes_f90.pc") CONFIG_FILES="$CONFIG_FILES rpms/eccodes_f90.pc" ;;
-    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-    "fortran/Makefile") CONFIG_FILES="$CONFIG_FILES fortran/Makefile" ;;
-    "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
-    "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;;
-    "definitions/Makefile") CONFIG_FILES="$CONFIG_FILES definitions/Makefile" ;;
-    "samples/Makefile") CONFIG_FILES="$CONFIG_FILES samples/Makefile" ;;
-    "ifs_samples/grib1/Makefile") CONFIG_FILES="$CONFIG_FILES ifs_samples/grib1/Makefile" ;;
-    "ifs_samples/grib1_mlgrib2/Makefile") CONFIG_FILES="$CONFIG_FILES ifs_samples/grib1_mlgrib2/Makefile" ;;
-    "ifs_samples/grib1_mlgrib2_ieee64/Makefile") CONFIG_FILES="$CONFIG_FILES ifs_samples/grib1_mlgrib2_ieee64/Makefile" ;;
-    "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
-    "examples/C/Makefile") CONFIG_FILES="$CONFIG_FILES examples/C/Makefile" ;;
-    "examples/F90/Makefile") CONFIG_FILES="$CONFIG_FILES examples/F90/Makefile" ;;
-    "tigge/Makefile") CONFIG_FILES="$CONFIG_FILES tigge/Makefile" ;;
-    "perl/GRIB-API/Makefile.PL") CONFIG_FILES="$CONFIG_FILES perl/GRIB-API/Makefile.PL" ;;
-    "perl/Makefile") CONFIG_FILES="$CONFIG_FILES perl/Makefile" ;;
-    "python/Makefile") CONFIG_FILES="$CONFIG_FILES python/Makefile" ;;
-    "examples/python/Makefile") CONFIG_FILES="$CONFIG_FILES examples/python/Makefile" ;;
-
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp= ac_tmp=
-  trap 'exit_status=$?
-  : "${ac_tmp:=$tmp}"
-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  . ./conf$$subs.sh ||
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
-  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-  if test $ac_delim_n = $ac_delim_num; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = ""
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
-h
-s///
-s/^/:/
-s/[	 ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[	 ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[	 ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
-  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_tt"; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any.  Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  for (key in D) D_is_set[key] = 1
-  FS = ""
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
-  line = \$ 0
-  split(line, arg, " ")
-  if (arg[1] == "#") {
-    defundef = arg[2]
-    mac1 = arg[3]
-  } else {
-    defundef = substr(arg[1], 2)
-    mac1 = arg[2]
-  }
-  split(mac1, mac2, "(") #)
-  macro = mac2[1]
-  prefix = substr(line, 1, index(line, defundef) - 1)
-  if (D_is_set[macro]) {
-    # Preserve the white space surrounding the "#".
-    print prefix "define", macro P[macro] D[macro]
-    next
-  } else {
-    # Replace #undef with comments.  This is necessary, for example,
-    # in the case of _POSIX_SOURCE, which is predefined and required
-    # on some systems where configure will not decide to define it.
-    if (defundef == "undef") {
-      print "/*", prefix defundef, macro, "*/"
-      next
-    }
-  }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$ac_tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
-	 # because $ac_f cannot contain `:'.
-	 test -f "$ac_f" ||
-	   case $ac_f in
-	   [\\/$]*) false;;
-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-	   esac ||
-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-	`' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
-  esac
-  ac_MKDIR_P=$MKDIR_P
-  case $MKDIR_P in
-  [\\/$]* | ?:[\\/]* ) ;;
-  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
-  esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-  s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-s&@MKDIR_P@&$ac_MKDIR_P&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
-      "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&2;}
-
-  rm -f "$ac_tmp/stdin"
-  case $ac_file in
-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-  :H)
-  #
-  # CONFIG_HEADER
-  #
-  if test x"$ac_file" != x-; then
-    {
-      $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
-    } >"$ac_tmp/config.h" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      rm -f "$ac_file"
-      mv "$ac_tmp/config.h" "$ac_file" \
-	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    fi
-  else
-    $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error $? "could not create -" "$LINENO" 5
-  fi
-# Compute "$ac_file"'s index in $config_headers.
-_am_arg="$ac_file"
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
-$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$_am_arg" : 'X\(//\)[^/]' \| \
-	 X"$_am_arg" : 'X\(//\)$' \| \
-	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$_am_arg" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`/stamp-h$_am_stamp_count
- ;;
-
-  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
-  esac
-
-
-  case $ac_file$ac_mode in
-    "libtool":C)
-
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-
-# The names of the tagged configurations supported by this script.
-available_tags="F77 FC "
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# What type of objects to build.
-pic_mode=$pic_mode
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# An echo program that protects backslashes.
-ECHO=$lt_ECHO
-
-# The PATH separator for the build system.
-PATH_SEPARATOR=$lt_PATH_SEPARATOR
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# A sed program that does not truncate output.
-SED=$lt_SED
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="\$SED -e 1s/^X//"
-
-# A grep program that handles long lines.
-GREP=$lt_GREP
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# A literal string matcher.
-FGREP=$lt_FGREP
-
-# A BSD- or MS-compatible name lister.
-NM=$lt_NM
-
-# Whether we need soft or hard links.
-LN_S=$lt_LN_S
-
-# What is the maximum length of a command?
-max_cmd_len=$max_cmd_len
-
-# Object file suffix (normally "o").
-objext=$ac_objext
-
-# Executable file suffix (normally "").
-exeext=$exeext
-
-# whether the shell understands "unset".
-lt_unset=$lt_unset
-
-# turn spaces into newlines.
-SP2NL=$lt_lt_SP2NL
-
-# turn newlines into spaces.
-NL2SP=$lt_lt_NL2SP
-
-# convert \$build file names to \$host format.
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-
-# convert \$build files to toolchain format.
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-
-# An object symbol dumper.
-OBJDUMP=$lt_OBJDUMP
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method = "file_magic".
-file_magic_cmd=$lt_file_magic_cmd
-
-# How to find potential files when deplibs_check_method = "file_magic".
-file_magic_glob=$lt_file_magic_glob
-
-# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-want_nocaseglob=$lt_want_nocaseglob
-
-# DLL creation program.
-DLLTOOL=$lt_DLLTOOL
-
-# Command to associate shared and link libraries.
-sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-
-# The archiver.
-AR=$lt_AR
-
-# Flags to create an archive.
-AR_FLAGS=$lt_AR_FLAGS
-
-# How to feed a file listing to the archiver.
-archiver_list_spec=$lt_archiver_list_spec
-
-# A symbol stripping program.
-STRIP=$lt_STRIP
-
-# Commands used to install an old-style archive.
-RANLIB=$lt_RANLIB
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Whether to use a lock for old archive extraction.
-lock_old_archive_extraction=$lock_old_archive_extraction
-
-# A C compiler.
-LTCC=$lt_CC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_CFLAGS
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
-
-# Specify filename containing input files for \$NM.
-nm_file_list_spec=$lt_nm_file_list_spec
-
-# The root where to search for dependent libraries,and in which our libraries should be installed.
-lt_sysroot=$lt_sysroot
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=$MAGIC_CMD
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Manifest tool.
-MANIFEST_TOOL=$lt_MANIFEST_TOOL
-
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=$lt_DSYMUTIL
-
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=$lt_NMEDIT
-
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=$lt_LIPO
-
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=$lt_OTOOL
-
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=$lt_OTOOL64
-
-# Old archive suffix (normally "a").
-libext=$libext
-
-# Shared library suffix (normally ".so").
-shrext_cmds=$lt_shrext_cmds
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink=$lt_variables_saved_for_relink
-
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Library versioning type.
-version_type=$version_type
-
-# Shared library runtime path variable.
-runpath_var=$runpath_var
-
-# Shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Permission mode override for installation of shared libraries.
-install_override_mode=$lt_install_override_mode
-
-# Command to use after installation of a shared archive.
-postinstall_cmds=$lt_postinstall_cmds
-
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=$lt_finish_eval
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-
-# The linker used to build libraries.
-LD=$lt_LD
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds
-
-# A language specific compiler.
-CC=$lt_compiler
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds
-module_expsym_cmds=$lt_module_expsym_cmds
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects
-postdep_objects=$lt_postdep_objects
-predeps=$lt_predeps
-postdeps=$lt_postdeps
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path
-
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-  if test x"$xsi_shell" = xyes; then
-  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-func_dirname ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_basename ()$/,/^} # func_basename /c\
-func_basename ()\
-{\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-func_dirname_and_basename ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-func_stripname ()\
-{\
-\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-\    # positional parameters, so assign one to ordinary parameter first.\
-\    func_stripname_result=${3}\
-\    func_stripname_result=${func_stripname_result#"${1}"}\
-\    func_stripname_result=${func_stripname_result%"${2}"}\
-} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-func_split_long_opt ()\
-{\
-\    func_split_long_opt_name=${1%%=*}\
-\    func_split_long_opt_arg=${1#*=}\
-} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-func_split_short_opt ()\
-{\
-\    func_split_short_opt_arg=${1#??}\
-\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-func_lo2o ()\
-{\
-\    case ${1} in\
-\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-\      *)    func_lo2o_result=${1} ;;\
-\    esac\
-} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_xform ()$/,/^} # func_xform /c\
-func_xform ()\
-{\
-    func_xform_result=${1%.*}.lo\
-} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_arith ()$/,/^} # func_arith /c\
-func_arith ()\
-{\
-    func_arith_result=$(( $* ))\
-} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_len ()$/,/^} # func_len /c\
-func_len ()\
-{\
-    func_len_result=${#1}\
-} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-fi
-
-if test x"$lt_shell_append" = xyes; then
-  sed -e '/^func_append ()$/,/^} # func_append /c\
-func_append ()\
-{\
-    eval "${1}+=\\${2}"\
-} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-func_append_quoted ()\
-{\
-\    func_quote_for_eval "${2}"\
-\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  # Save a `func_append' function call where possible by direct use of '+='
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-else
-  # Save a `func_append' function call even when '+=' is not available
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-fi
-
-
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: F77
-
-# The linker used to build libraries.
-LD=$lt_LD_F77
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag_F77
-reload_cmds=$lt_reload_cmds_F77
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_F77
-
-# A language specific compiler.
-CC=$lt_compiler_F77
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_F77
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_F77
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_F77
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_F77
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_F77
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_F77
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_F77
-archive_expsym_cmds=$lt_archive_expsym_cmds_F77
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_F77
-module_expsym_cmds=$lt_module_expsym_cmds_F77
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_F77
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_F77
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_F77
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_F77
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute_F77
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_F77
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic_F77
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_F77
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_F77
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_F77
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_F77
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_F77
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_F77
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_F77
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds_F77
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_F77
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_F77
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects_F77
-postdep_objects=$lt_postdep_objects_F77
-predeps=$lt_predeps_F77
-postdeps=$lt_postdeps_F77
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_F77
-
-# ### END LIBTOOL TAG CONFIG: F77
-_LT_EOF
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: FC
-
-# The linker used to build libraries.
-LD=$lt_LD_FC
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag_FC
-reload_cmds=$lt_reload_cmds_FC
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_FC
-
-# A language specific compiler.
-CC=$lt_compiler_FC
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_FC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_FC
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_FC
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_FC
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_FC
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_FC
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_FC
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_FC
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_FC
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_FC
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_FC
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_FC
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_FC
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_FC
-archive_expsym_cmds=$lt_archive_expsym_cmds_FC
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_FC
-module_expsym_cmds=$lt_module_expsym_cmds_FC
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_FC
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_FC
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_FC
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_FC
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_FC
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_FC
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute_FC
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_FC
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_FC
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic_FC
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_FC
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_FC
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_FC
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_FC
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_FC
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_FC
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_FC
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds_FC
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_FC
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_FC
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_FC
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects_FC
-postdep_objects=$lt_postdep_objects_FC
-predeps=$lt_predeps_FC
-postdeps=$lt_postdeps_FC
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_FC
-
-# ### END LIBTOOL TAG CONFIG: FC
-_LT_EOF
-
- ;;
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Older Autoconf quotes --file arguments for eval, but not when files
-  # are listed without --file.  Let's play safe and only enable the eval
-  # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
-  shift
-  for mf
-  do
-    # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
-    # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$mf" : 'X\(//\)[^/]' \| \
-	 X"$mf" : 'X\(//\)$' \| \
-	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$file" : 'X\(//\)[^/]' \| \
-	 X"$file" : 'X\(//\)$' \| \
-	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      as_dir=$dirpart/$fdir; as_fn_mkdir_p
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
- ;;
-
-  esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit 1
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}:
-
-  Configuration completed.
-
-    You can now say 'make' to compile the eccodes package, 'make check' to
-	  test it  and 'make install' to install it afterwards.
-	  " >&5
-$as_echo "$as_me:
-
-  Configuration completed.
-
-    You can now say 'make' to compile the eccodes package, 'make check' to
-	  test it  and 'make install' to install it afterwards.
-	  " >&6;}
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
index 06162c0..0df7e73 100644
--- a/data/CMakeLists.txt
+++ b/data/CMakeLists.txt
@@ -23,7 +23,6 @@ if( ENABLE_TESTS )
   set_property( TEST eccodes_download_gribs APPEND PROPERTY LABELS download_data )
 endif()
 
-
 # Copy other files - e.g. reference data, text files etc from the source data dir
 LIST(APPEND other_files
     60_model_levels
@@ -64,6 +63,7 @@ LIST(APPEND other_files
     step_grib1.log
     typeOfProcessedData.ok
     tigge_pf_ecmwf.grib2.ref
+    grib_data_files.txt
 )
 
 foreach( file ${other_files} )
diff --git a/data/Makefile.in b/data/Makefile.in
deleted file mode 100644
index 08dec11..0000000
--- a/data/Makefile.in
+++ /dev/null
@@ -1,497 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = data
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AEC_DIR = @AEC_DIR@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CCSDS_TEST = @CCSDS_TEST@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEVEL_RULES = @DEVEL_RULES@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECCODES_AGE = @ECCODES_AGE@
-ECCODES_CURRENT = @ECCODES_CURRENT@
-ECCODES_DEFINITION_PATH = @ECCODES_DEFINITION_PATH@
-ECCODES_MAIN_VERSION = @ECCODES_MAIN_VERSION@
-ECCODES_MAJOR_VERSION = @ECCODES_MAJOR_VERSION@
-ECCODES_MINOR_VERSION = @ECCODES_MINOR_VERSION@
-ECCODES_PATCH_VERSION = @ECCODES_PATCH_VERSION@
-ECCODES_REVISION = @ECCODES_REVISION@
-ECCODES_SAMPLES_PATH = @ECCODES_SAMPLES_PATH@
-ECCODES_VERSION_STR = @ECCODES_VERSION_STR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB = @EMOS_LIB@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-F90_CHECK = @F90_CHECK@
-F90_MODULE_FLAG = @F90_MODULE_FLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FORTRAN_MOD = @FORTRAN_MOD@
-GREP = @GREP@
-GRIB_API_INC = @GRIB_API_INC@
-GRIB_API_LIB = @GRIB_API_LIB@
-GRIB_DEVEL = @GRIB_DEVEL@
-IFS_SAMPLES_DIR = @IFS_SAMPLES_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JASPER_DIR = @JASPER_DIR@
-JPEG_TEST = @JPEG_TEST@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_AEC = @LIB_AEC@
-LIB_JASPER = @LIB_JASPER@
-LIB_OPENJPEG = @LIB_OPENJPEG@
-LIB_PNG = @LIB_PNG@
-LINUX_DISTRIBUTION_NAME = @LINUX_DISTRIBUTION_NAME@
-LINUX_DISTRIBUTION_VERSION = @LINUX_DISTRIBUTION_VERSION@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENJPEG_DIR = @OPENJPEG_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PERLDIR = @PERLDIR@
-PERL_INSTALL_OPTIONS = @PERL_INSTALL_OPTIONS@
-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_CHECK = @PYTHON_CHECK@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_DATA_HANDLER = @PYTHON_DATA_HANDLER@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RM = @RM@
-RPM_CONFIGURE_ARGS = @RPM_CONFIGURE_ARGS@
-RPM_HOST_CPU = @RPM_HOST_CPU@
-RPM_HOST_OS = @RPM_HOST_OS@
-RPM_HOST_VENDOR = @RPM_HOST_VENDOR@
-RPM_RELEASE = @RPM_RELEASE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_PEDANTIC = @WARN_PEDANTIC@
-WERROR = @WERROR@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-EXTRA_DIST = CMakeLists.txt
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu data/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-local mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	clean-local cscopelist-am ctags-am distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags-am uninstall uninstall-am
-
-clean-local:
-	@./download.sh -c .
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/data/bufr/bufr_data_files.txt b/data/bufr/bufr_data_files.txt
index 932c32d..0411148 100644
--- a/data/bufr/bufr_data_files.txt
+++ b/data/bufr/bufr_data_files.txt
@@ -35,7 +35,6 @@ b005_87.bufr
 b005_89.bufr
 b006_96.bufr
 b007_31.bufr
-bad.bufr
 bssh_170.bufr
 bssh_176.bufr
 bssh_178.bufr
@@ -107,10 +106,7 @@ rado_250.bufr
 s4kn_165.bufr
 sb19_206.bufr
 sbu8_206.bufr
-ship_11.bufr
-ship_12.bufr
 ship_13.bufr
-ship_14.bufr
 ship_19.bufr
 ship_9.bufr
 smin_49.bufr
@@ -122,7 +118,6 @@ soil_7.bufr
 ssbt_127.bufr
 stuk_7.bufr
 syno_1.bufr
-syno_2.bufr
 syno_3.bufr
 syno_4.bufr
 syno_multi.bufr
@@ -141,3 +136,4 @@ PraticaTemp.bufr
 profiler_european.bufr
 metar_with_2_bias.bufr
 temp-land-with-substituted-values.bufr
+imssnow.bufr
diff --git a/data/bufr/bufr_ref_files.txt b/data/bufr/bufr_ref_files.txt
index 5494484..8f7d3bf 100644
--- a/data/bufr/bufr_ref_files.txt
+++ b/data/bufr/bufr_ref_files.txt
@@ -106,10 +106,7 @@ rado_250.bufr.num.ref
 s4kn_165.bufr.num.ref
 sb19_206.bufr.num.ref
 sbu8_206.bufr.num.ref
-ship_11.bufr.num.ref
-ship_12.bufr.num.ref
 ship_13.bufr.num.ref
-ship_14.bufr.num.ref
 ship_19.bufr.num.ref
 ship_9.bufr.num.ref
 smin_49.bufr.num.ref
@@ -121,7 +118,6 @@ soil_7.bufr.num.ref
 ssbt_127.bufr.num.ref
 stuk_7.bufr.num.ref
 syno_1.bufr.num.ref
-syno_2.bufr.num.ref
 syno_3.bufr.num.ref
 syno_4.bufr.num.ref
 temp_101.bufr.num.ref
@@ -240,10 +236,7 @@ rado_250.bufr.desc.ref
 s4kn_165.bufr.desc.ref
 sb19_206.bufr.desc.ref
 sbu8_206.bufr.desc.ref
-ship_11.bufr.desc.ref
-ship_12.bufr.desc.ref
 ship_13.bufr.desc.ref
-ship_14.bufr.desc.ref
 ship_19.bufr.desc.ref
 ship_9.bufr.desc.ref
 smin_49.bufr.desc.ref
@@ -255,7 +248,6 @@ soil_7.bufr.desc.ref
 ssbt_127.bufr.desc.ref
 stuk_7.bufr.desc.ref
 syno_1.bufr.desc.ref
-syno_2.bufr.desc.ref
 syno_3.bufr.desc.ref
 syno_4.bufr.desc.ref
 temp_101.bufr.desc.ref
@@ -268,7 +260,6 @@ syno_multi.bufr.desc.ref
 synop_multi_subset.bufr.desc.ref
 aaen_55.bufr.ls.ref
 syno_multi.bufr.header.ref
-bad.bufr.json.v0.16.0.ref
 207003.bufr.json.ref
 new_207003.bufr.ref
 new_aaen_55.bufr.ref
@@ -352,10 +343,7 @@ new_ocea_21.bufr.ref
 new_pgps_110.bufr.ref
 new_pilo_91.bufr.ref
 new_s4kn_165.bufr.ref
-new_ship_11.bufr.ref
-new_ship_12.bufr.ref
 new_ship_13.bufr.ref
-new_ship_14.bufr.ref
 new_ship_19.bufr.ref
 new_ship_9.bufr.ref
 new_smin_49.bufr.ref
@@ -367,7 +355,6 @@ new_soil_7.bufr.ref
 new_ssbt_127.bufr.ref
 new_stuk_7.bufr.ref
 new_syno_1.bufr.ref
-new_syno_2.bufr.ref
 new_syno_3.bufr.ref
 new_syno_4.bufr.ref
 new_syno_multi.bufr.ref
@@ -378,7 +365,6 @@ new_temp_106.bufr.ref
 new_tmr7_129.bufr.ref
 new_tros_31.bufr.ref
 new_wavb_134.bufr.ref
-set_unexpandedDescriptors.filter
 311001.bufr.ref
 uegabe.bufr.num.ref
 syno.bufr.out.ref
diff --git a/data/tigge/CMakeLists.txt b/data/tigge/CMakeLists.txt
index adab34f..110c52d 100644
--- a/data/tigge/CMakeLists.txt
+++ b/data/tigge/CMakeLists.txt
@@ -11,3 +11,12 @@ ecbuild_get_test_multidata( TARGET eccodes_download_tigge_gribs
 if( ENABLE_TESTS )
   set_property( TEST eccodes_download_tigge_gribs APPEND PROPERTY LABELS download_data )
 endif()
+
+#######
+# Copy other files - e.g. reference data, text files etc from the source data dir
+LIST(APPEND other_files
+    tigge_data_files.txt
+)
+foreach( file ${other_files} )
+   execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${file} ${CMAKE_CURRENT_BINARY_DIR} )
+endforeach()
diff --git a/definitions/Makefile.in b/definitions/Makefile.in
deleted file mode 100644
index 1e3047d..0000000
--- a/definitions/Makefile.in
+++ /dev/null
@@ -1,17282 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = definitions
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(dist_definitions_DATA) $(dist_definitionsbudg_DATA) \
-	$(dist_definitionsbufr_DATA) \
-	$(dist_definitionsbufr_tables_DATA) \
-	$(dist_definitionsbufr_tables_0_local_101_98_0_DATA) \
-	$(dist_definitionsbufr_tables_0_local_101_98_0_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_local_1_98_0_DATA) \
-	$(dist_definitionsbufr_tables_0_local_1_98_0_6_DATA) \
-	$(dist_definitionsbufr_tables_0_local_1_98_0_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_local_2_98_0_DATA) \
-	$(dist_definitionsbufr_tables_0_local_2_98_0_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_local_3_98_0_DATA) \
-	$(dist_definitionsbufr_tables_0_local_3_98_0_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_10_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_10_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_11_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_11_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_12_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_12_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_13_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_13_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_14_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_14_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_15_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_15_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_16_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_16_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_17_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_17_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_18_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_18_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_19_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_19_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_20_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_20_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_21_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_21_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_22_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_22_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_23_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_23_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_24_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_24_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_25_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_25_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_26_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_26_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_6_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_6_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_7_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_7_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_8_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_8_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_9_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_9_codetables_DATA) \
-	$(dist_definitionsbufr_tables_3_local_1_98_0_DATA) \
-	$(dist_definitionsbufr_tables_3_wmo_11_DATA) \
-	$(dist_definitionsbufr_tables_3_wmo_6_DATA) \
-	$(dist_definitionsbufr_templates_DATA) \
-	$(dist_definitionsbufr_templates_local_DATA) \
-	$(dist_definitionscdf_DATA) $(dist_definitionscommon_DATA) \
-	$(dist_definitionsgrib1_DATA) \
-	$(dist_definitionsgrib1_localConcepts_ammc_DATA) \
-	$(dist_definitionsgrib1_localConcepts_cnmc_DATA) \
-	$(dist_definitionsgrib1_localConcepts_ecmf_DATA) \
-	$(dist_definitionsgrib1_localConcepts_edzw_DATA) \
-	$(dist_definitionsgrib1_localConcepts_efkl_DATA) \
-	$(dist_definitionsgrib1_localConcepts_eidb_DATA) \
-	$(dist_definitionsgrib1_localConcepts_ekmi_DATA) \
-	$(dist_definitionsgrib1_localConcepts_enmi_DATA) \
-	$(dist_definitionsgrib1_localConcepts_eswi_DATA) \
-	$(dist_definitionsgrib1_localConcepts_kwbc_DATA) \
-	$(dist_definitionsgrib1_localConcepts_lfpw_DATA) \
-	$(dist_definitionsgrib1_localConcepts_lowm_DATA) \
-	$(dist_definitionsgrib1_localConcepts_rjtd_DATA) \
-	$(dist_definitionsgrib1_localConcepts_sbsj_DATA) \
-	$(dist_definitionsgrib1_local_ecmf_DATA) \
-	$(dist_definitionsgrib1_local_edzw_DATA) \
-	$(dist_definitionsgrib1_local_rjtd_DATA) \
-	$(dist_definitionsgrib2_DATA) \
-	$(dist_definitionsgrib2_local_DATA) \
-	$(dist_definitionsgrib2_localConcepts_cnmc_DATA) \
-	$(dist_definitionsgrib2_localConcepts_ecmf_DATA) \
-	$(dist_definitionsgrib2_localConcepts_edzw_DATA) \
-	$(dist_definitionsgrib2_localConcepts_efkl_DATA) \
-	$(dist_definitionsgrib2_localConcepts_egrr_DATA) \
-	$(dist_definitionsgrib2_localConcepts_ekmi_DATA) \
-	$(dist_definitionsgrib2_localConcepts_eswi_DATA) \
-	$(dist_definitionsgrib2_localConcepts_kwbc_DATA) \
-	$(dist_definitionsgrib2_localConcepts_lfpw_DATA) \
-	$(dist_definitionsgrib2_localConcepts_lfpw1_DATA) \
-	$(dist_definitionsgrib2_localConcepts_lssw_DATA) \
-	$(dist_definitionsgrib2_local_1098_DATA) \
-	$(dist_definitionsgrib2_local_edzw_DATA) \
-	$(dist_definitionsgrib2_tables_DATA) \
-	$(dist_definitionsgrib2_tables_0_DATA) \
-	$(dist_definitionsgrib2_tables_1_DATA) \
-	$(dist_definitionsgrib2_tables_10_DATA) \
-	$(dist_definitionsgrib2_tables_11_DATA) \
-	$(dist_definitionsgrib2_tables_12_DATA) \
-	$(dist_definitionsgrib2_tables_13_DATA) \
-	$(dist_definitionsgrib2_tables_14_DATA) \
-	$(dist_definitionsgrib2_tables_15_DATA) \
-	$(dist_definitionsgrib2_tables_16_DATA) \
-	$(dist_definitionsgrib2_tables_17_DATA) \
-	$(dist_definitionsgrib2_tables_2_DATA) \
-	$(dist_definitionsgrib2_tables_3_DATA) \
-	$(dist_definitionsgrib2_tables_4_DATA) \
-	$(dist_definitionsgrib2_tables_5_DATA) \
-	$(dist_definitionsgrib2_tables_6_DATA) \
-	$(dist_definitionsgrib2_tables_7_DATA) \
-	$(dist_definitionsgrib2_tables_8_DATA) \
-	$(dist_definitionsgrib2_tables_9_DATA) \
-	$(dist_definitionsgrib2_tables_local_ecmf_DATA) \
-	$(dist_definitionsgrib2_tables_local_ecmf_4_DATA) \
-	$(dist_definitionsgts_DATA) $(dist_definitionshdf5_DATA) \
-	$(dist_definitionsmars_DATA) $(dist_definitionsmars_eswi_DATA) \
-	$(dist_definitionsmetar_DATA) \
-	$(dist_definitionsmetar_stations_DATA) \
-	$(dist_definitionstaf_DATA) \
-	$(dist_definitionstaf_stations_DATA) \
-	$(dist_definitionstide_DATA) $(dist_definitionswrap_DATA)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(definitionsdir)" \
-	"$(DESTDIR)$(definitionsbudgdir)" \
-	"$(DESTDIR)$(definitionsbufrdir)" \
-	"$(DESTDIR)$(definitionsbufr_tablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_6dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_10dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_10_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_11dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_11_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_12dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_12_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_13dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_13_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_14dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_14_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_15dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_15_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_16dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_16_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_17dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_17_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_18dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_18_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_19dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_19_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_20dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_20_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_21dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_21_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_22dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_22_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_23dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_23_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_24dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_24_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_25dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_25_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_26dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_26_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_6dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_6_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_7dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_7_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_8dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_8_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_9dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_0_wmo_9_codetablesdir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_3_local_1_98_0dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_3_wmo_11dir)" \
-	"$(DESTDIR)$(definitionsbufr_tables_3_wmo_6dir)" \
-	"$(DESTDIR)$(definitionsbufr_templatesdir)" \
-	"$(DESTDIR)$(definitionsbufr_templates_localdir)" \
-	"$(DESTDIR)$(definitionscdfdir)" \
-	"$(DESTDIR)$(definitionscommondir)" \
-	"$(DESTDIR)$(definitionsgrib1dir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_ammcdir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_cnmcdir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_ecmfdir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_edzwdir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_efkldir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_eidbdir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_ekmidir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_enmidir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_eswidir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_kwbcdir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_lfpwdir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_lowmdir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_rjtddir)" \
-	"$(DESTDIR)$(definitionsgrib1_localConcepts_sbsjdir)" \
-	"$(DESTDIR)$(definitionsgrib1_local_ecmfdir)" \
-	"$(DESTDIR)$(definitionsgrib1_local_edzwdir)" \
-	"$(DESTDIR)$(definitionsgrib1_local_rjtddir)" \
-	"$(DESTDIR)$(definitionsgrib2dir)" \
-	"$(DESTDIR)$(definitionsgrib2_localdir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_cnmcdir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_ecmfdir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_edzwdir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_efkldir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_egrrdir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_ekmidir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_eswidir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_kwbcdir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_lfpwdir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_lfpw1dir)" \
-	"$(DESTDIR)$(definitionsgrib2_localConcepts_lsswdir)" \
-	"$(DESTDIR)$(definitionsgrib2_local_1098dir)" \
-	"$(DESTDIR)$(definitionsgrib2_local_edzwdir)" \
-	"$(DESTDIR)$(definitionsgrib2_tablesdir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_0dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_1dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_10dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_11dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_12dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_13dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_14dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_15dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_16dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_17dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_2dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_3dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_4dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_5dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_6dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_7dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_8dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_9dir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_local_ecmfdir)" \
-	"$(DESTDIR)$(definitionsgrib2_tables_local_ecmf_4dir)" \
-	"$(DESTDIR)$(definitionsgtsdir)" \
-	"$(DESTDIR)$(definitionshdf5dir)" \
-	"$(DESTDIR)$(definitionsmarsdir)" \
-	"$(DESTDIR)$(definitionsmars_eswidir)" \
-	"$(DESTDIR)$(definitionsmetardir)" \
-	"$(DESTDIR)$(definitionsmetar_stationsdir)" \
-	"$(DESTDIR)$(definitionstafdir)" \
-	"$(DESTDIR)$(definitionstaf_stationsdir)" \
-	"$(DESTDIR)$(definitionstidedir)" \
-	"$(DESTDIR)$(definitionswrapdir)"
-DATA = $(dist_definitions_DATA) $(dist_definitionsbudg_DATA) \
-	$(dist_definitionsbufr_DATA) \
-	$(dist_definitionsbufr_tables_DATA) \
-	$(dist_definitionsbufr_tables_0_local_101_98_0_DATA) \
-	$(dist_definitionsbufr_tables_0_local_101_98_0_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_local_1_98_0_DATA) \
-	$(dist_definitionsbufr_tables_0_local_1_98_0_6_DATA) \
-	$(dist_definitionsbufr_tables_0_local_1_98_0_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_local_2_98_0_DATA) \
-	$(dist_definitionsbufr_tables_0_local_2_98_0_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_local_3_98_0_DATA) \
-	$(dist_definitionsbufr_tables_0_local_3_98_0_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_10_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_10_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_11_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_11_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_12_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_12_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_13_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_13_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_14_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_14_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_15_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_15_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_16_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_16_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_17_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_17_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_18_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_18_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_19_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_19_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_20_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_20_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_21_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_21_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_22_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_22_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_23_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_23_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_24_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_24_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_25_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_25_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_26_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_26_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_6_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_6_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_7_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_7_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_8_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_8_codetables_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_9_DATA) \
-	$(dist_definitionsbufr_tables_0_wmo_9_codetables_DATA) \
-	$(dist_definitionsbufr_tables_3_local_1_98_0_DATA) \
-	$(dist_definitionsbufr_tables_3_wmo_11_DATA) \
-	$(dist_definitionsbufr_tables_3_wmo_6_DATA) \
-	$(dist_definitionsbufr_templates_DATA) \
-	$(dist_definitionsbufr_templates_local_DATA) \
-	$(dist_definitionscdf_DATA) $(dist_definitionscommon_DATA) \
-	$(dist_definitionsgrib1_DATA) \
-	$(dist_definitionsgrib1_localConcepts_ammc_DATA) \
-	$(dist_definitionsgrib1_localConcepts_cnmc_DATA) \
-	$(dist_definitionsgrib1_localConcepts_ecmf_DATA) \
-	$(dist_definitionsgrib1_localConcepts_edzw_DATA) \
-	$(dist_definitionsgrib1_localConcepts_efkl_DATA) \
-	$(dist_definitionsgrib1_localConcepts_eidb_DATA) \
-	$(dist_definitionsgrib1_localConcepts_ekmi_DATA) \
-	$(dist_definitionsgrib1_localConcepts_enmi_DATA) \
-	$(dist_definitionsgrib1_localConcepts_eswi_DATA) \
-	$(dist_definitionsgrib1_localConcepts_kwbc_DATA) \
-	$(dist_definitionsgrib1_localConcepts_lfpw_DATA) \
-	$(dist_definitionsgrib1_localConcepts_lowm_DATA) \
-	$(dist_definitionsgrib1_localConcepts_rjtd_DATA) \
-	$(dist_definitionsgrib1_localConcepts_sbsj_DATA) \
-	$(dist_definitionsgrib1_local_ecmf_DATA) \
-	$(dist_definitionsgrib1_local_edzw_DATA) \
-	$(dist_definitionsgrib1_local_rjtd_DATA) \
-	$(dist_definitionsgrib2_DATA) \
-	$(dist_definitionsgrib2_local_DATA) \
-	$(dist_definitionsgrib2_localConcepts_cnmc_DATA) \
-	$(dist_definitionsgrib2_localConcepts_ecmf_DATA) \
-	$(dist_definitionsgrib2_localConcepts_edzw_DATA) \
-	$(dist_definitionsgrib2_localConcepts_efkl_DATA) \
-	$(dist_definitionsgrib2_localConcepts_egrr_DATA) \
-	$(dist_definitionsgrib2_localConcepts_ekmi_DATA) \
-	$(dist_definitionsgrib2_localConcepts_eswi_DATA) \
-	$(dist_definitionsgrib2_localConcepts_kwbc_DATA) \
-	$(dist_definitionsgrib2_localConcepts_lfpw_DATA) \
-	$(dist_definitionsgrib2_localConcepts_lfpw1_DATA) \
-	$(dist_definitionsgrib2_localConcepts_lssw_DATA) \
-	$(dist_definitionsgrib2_local_1098_DATA) \
-	$(dist_definitionsgrib2_local_edzw_DATA) \
-	$(dist_definitionsgrib2_tables_DATA) \
-	$(dist_definitionsgrib2_tables_0_DATA) \
-	$(dist_definitionsgrib2_tables_1_DATA) \
-	$(dist_definitionsgrib2_tables_10_DATA) \
-	$(dist_definitionsgrib2_tables_11_DATA) \
-	$(dist_definitionsgrib2_tables_12_DATA) \
-	$(dist_definitionsgrib2_tables_13_DATA) \
-	$(dist_definitionsgrib2_tables_14_DATA) \
-	$(dist_definitionsgrib2_tables_15_DATA) \
-	$(dist_definitionsgrib2_tables_16_DATA) \
-	$(dist_definitionsgrib2_tables_17_DATA) \
-	$(dist_definitionsgrib2_tables_2_DATA) \
-	$(dist_definitionsgrib2_tables_3_DATA) \
-	$(dist_definitionsgrib2_tables_4_DATA) \
-	$(dist_definitionsgrib2_tables_5_DATA) \
-	$(dist_definitionsgrib2_tables_6_DATA) \
-	$(dist_definitionsgrib2_tables_7_DATA) \
-	$(dist_definitionsgrib2_tables_8_DATA) \
-	$(dist_definitionsgrib2_tables_9_DATA) \
-	$(dist_definitionsgrib2_tables_local_ecmf_DATA) \
-	$(dist_definitionsgrib2_tables_local_ecmf_4_DATA) \
-	$(dist_definitionsgts_DATA) $(dist_definitionshdf5_DATA) \
-	$(dist_definitionsmars_DATA) $(dist_definitionsmars_eswi_DATA) \
-	$(dist_definitionsmetar_DATA) \
-	$(dist_definitionsmetar_stations_DATA) \
-	$(dist_definitionstaf_DATA) \
-	$(dist_definitionstaf_stations_DATA) \
-	$(dist_definitionstide_DATA) $(dist_definitionswrap_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AEC_DIR = @AEC_DIR@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CCSDS_TEST = @CCSDS_TEST@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEVEL_RULES = @DEVEL_RULES@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECCODES_AGE = @ECCODES_AGE@
-ECCODES_CURRENT = @ECCODES_CURRENT@
-ECCODES_DEFINITION_PATH = @ECCODES_DEFINITION_PATH@
-ECCODES_MAIN_VERSION = @ECCODES_MAIN_VERSION@
-ECCODES_MAJOR_VERSION = @ECCODES_MAJOR_VERSION@
-ECCODES_MINOR_VERSION = @ECCODES_MINOR_VERSION@
-ECCODES_PATCH_VERSION = @ECCODES_PATCH_VERSION@
-ECCODES_REVISION = @ECCODES_REVISION@
-ECCODES_SAMPLES_PATH = @ECCODES_SAMPLES_PATH@
-ECCODES_VERSION_STR = @ECCODES_VERSION_STR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB = @EMOS_LIB@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-F90_CHECK = @F90_CHECK@
-F90_MODULE_FLAG = @F90_MODULE_FLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FORTRAN_MOD = @FORTRAN_MOD@
-GREP = @GREP@
-GRIB_API_INC = @GRIB_API_INC@
-GRIB_API_LIB = @GRIB_API_LIB@
-GRIB_DEVEL = @GRIB_DEVEL@
-IFS_SAMPLES_DIR = @IFS_SAMPLES_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JASPER_DIR = @JASPER_DIR@
-JPEG_TEST = @JPEG_TEST@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_AEC = @LIB_AEC@
-LIB_JASPER = @LIB_JASPER@
-LIB_OPENJPEG = @LIB_OPENJPEG@
-LIB_PNG = @LIB_PNG@
-LINUX_DISTRIBUTION_NAME = @LINUX_DISTRIBUTION_NAME@
-LINUX_DISTRIBUTION_VERSION = @LINUX_DISTRIBUTION_VERSION@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENJPEG_DIR = @OPENJPEG_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PERLDIR = @PERLDIR@
-PERL_INSTALL_OPTIONS = @PERL_INSTALL_OPTIONS@
-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_CHECK = @PYTHON_CHECK@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_DATA_HANDLER = @PYTHON_DATA_HANDLER@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RM = @RM@
-RPM_CONFIGURE_ARGS = @RPM_CONFIGURE_ARGS@
-RPM_HOST_CPU = @RPM_HOST_CPU@
-RPM_HOST_OS = @RPM_HOST_OS@
-RPM_HOST_VENDOR = @RPM_HOST_VENDOR@
-RPM_RELEASE = @RPM_RELEASE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_PEDANTIC = @WARN_PEDANTIC@
-WERROR = @WERROR@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-
-#This file is generated by make_makefile_am.pl
-#  DON'T EDIT!!!
-definitionsdir = @ECCODES_DEFINITION_PATH@
-dist_definitions_DATA = \
-	./CMakeLists.txt\
-	./boot.def\
-	./empty_template.def\
-	./installDefinitions.sh\
-	./mars_param.table\
-	./param_id.table\
-	./parameters_version.def\
-	./publish_new_parameters.sh\
-	./stepUnits.table
-
-definitionsbudgdir = @ECCODES_DEFINITION_PATH@/budg
-dist_definitionsbudg_DATA = \
-	budg/boot.def\
-	budg/mars_labeling.def\
-	budg/section.1.def\
-	budg/section.4.def
-
-definitionsbufrdir = @ECCODES_DEFINITION_PATH@/bufr
-dist_definitionsbufr_DATA = \
-	bufr/boot.def\
-	bufr/boot_edition_1.def\
-	bufr/boot_edition_2.def\
-	bufr/boot_edition_3.def\
-	bufr/boot_edition_4.def\
-	bufr/dataKeys.def\
-	bufr/old_section.1.def\
-	bufr/rdb_key.def\
-	bufr/rdb_key_28.def\
-	bufr/section.0.def\
-	bufr/section.1.1.def\
-	bufr/section.1.2.def\
-	bufr/section.1.3.def\
-	bufr/section.1.4.def\
-	bufr/section.2.def\
-	bufr/section.3.def\
-	bufr/section.4.def\
-	bufr/section.5.def\
-	bufr/section1_flags.table\
-	bufr/section3_flags.table
-
-definitionsbufr_tablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables
-dist_definitionsbufr_tables_DATA = \
-	bufr/tables/operators.table
-
-definitionsbufr_tables_0_local_1_98_0dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/local/1/98/0
-dist_definitionsbufr_tables_0_local_1_98_0_DATA = \
-	bufr/tables/0/local/1/98/0/element.table\
-	bufr/tables/0/local/1/98/0/sequence.def
-
-definitionsbufr_tables_0_local_1_98_0_6dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/local/1/98/0/6
-dist_definitionsbufr_tables_0_local_1_98_0_6_DATA = \
-	bufr/tables/0/local/1/98/0/6/element.table
-
-definitionsbufr_tables_0_local_1_98_0_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/local/1/98/0/codetables
-dist_definitionsbufr_tables_0_local_1_98_0_codetables_DATA = \
-	bufr/tables/0/local/1/98/0/codetables/13202.table\
-	bufr/tables/0/local/1/98/0/codetables/20252.table\
-	bufr/tables/0/local/1/98/0/codetables/20253.table\
-	bufr/tables/0/local/1/98/0/codetables/21196.table\
-	bufr/tables/0/local/1/98/0/codetables/21199.table\
-	bufr/tables/0/local/1/98/0/codetables/21227.table\
-	bufr/tables/0/local/1/98/0/codetables/2194.table\
-	bufr/tables/0/local/1/98/0/codetables/2196.table\
-	bufr/tables/0/local/1/98/0/codetables/2199.table\
-	bufr/tables/0/local/1/98/0/codetables/2207.table\
-	bufr/tables/0/local/1/98/0/codetables/2231.table\
-	bufr/tables/0/local/1/98/0/codetables/2232.table\
-	bufr/tables/0/local/1/98/0/codetables/2251.table\
-	bufr/tables/0/local/1/98/0/codetables/2252.table\
-	bufr/tables/0/local/1/98/0/codetables/2254.table\
-	bufr/tables/0/local/1/98/0/codetables/33195.table\
-	bufr/tables/0/local/1/98/0/codetables/33205.table\
-	bufr/tables/0/local/1/98/0/codetables/33206.table\
-	bufr/tables/0/local/1/98/0/codetables/33207.table\
-	bufr/tables/0/local/1/98/0/codetables/33208.table\
-	bufr/tables/0/local/1/98/0/codetables/33209.table\
-	bufr/tables/0/local/1/98/0/codetables/33220.table\
-	bufr/tables/0/local/1/98/0/codetables/33221.table\
-	bufr/tables/0/local/1/98/0/codetables/33222.table\
-	bufr/tables/0/local/1/98/0/codetables/33223.table\
-	bufr/tables/0/local/1/98/0/codetables/33224.table\
-	bufr/tables/0/local/1/98/0/codetables/33225.table\
-	bufr/tables/0/local/1/98/0/codetables/33226.table\
-	bufr/tables/0/local/1/98/0/codetables/33227.table\
-	bufr/tables/0/local/1/98/0/codetables/33228.table\
-	bufr/tables/0/local/1/98/0/codetables/33229.table\
-	bufr/tables/0/local/1/98/0/codetables/33230.table\
-	bufr/tables/0/local/1/98/0/codetables/33232.table\
-	bufr/tables/0/local/1/98/0/codetables/33233.table\
-	bufr/tables/0/local/1/98/0/codetables/33234.table\
-	bufr/tables/0/local/1/98/0/codetables/33236.table\
-	bufr/tables/0/local/1/98/0/codetables/33237.table\
-	bufr/tables/0/local/1/98/0/codetables/33238.table\
-	bufr/tables/0/local/1/98/0/codetables/33239.table\
-	bufr/tables/0/local/1/98/0/codetables/33240.table\
-	bufr/tables/0/local/1/98/0/codetables/33243.table\
-	bufr/tables/0/local/1/98/0/codetables/33244.table\
-	bufr/tables/0/local/1/98/0/codetables/33245.table\
-	bufr/tables/0/local/1/98/0/codetables/33246.table\
-	bufr/tables/0/local/1/98/0/codetables/33247.table\
-	bufr/tables/0/local/1/98/0/codetables/33248.table\
-	bufr/tables/0/local/1/98/0/codetables/33249.table\
-	bufr/tables/0/local/1/98/0/codetables/33252.table\
-	bufr/tables/0/local/1/98/0/codetables/33254.table\
-	bufr/tables/0/local/1/98/0/codetables/40203.table\
-	bufr/tables/0/local/1/98/0/codetables/40211.table\
-	bufr/tables/0/local/1/98/0/codetables/49193.table\
-	bufr/tables/0/local/1/98/0/codetables/49194.table\
-	bufr/tables/0/local/1/98/0/codetables/8193.table\
-	bufr/tables/0/local/1/98/0/codetables/8195.table\
-	bufr/tables/0/local/1/98/0/codetables/8201.table
-
-definitionsbufr_tables_0_local_101_98_0dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/local/101/98/0
-dist_definitionsbufr_tables_0_local_101_98_0_DATA = \
-	bufr/tables/0/local/101/98/0/element.table\
-	bufr/tables/0/local/101/98/0/sequence.def
-
-definitionsbufr_tables_0_local_101_98_0_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/local/101/98/0/codetables
-dist_definitionsbufr_tables_0_local_101_98_0_codetables_DATA = \
-	bufr/tables/0/local/101/98/0/codetables/13202.table\
-	bufr/tables/0/local/101/98/0/codetables/20252.table\
-	bufr/tables/0/local/101/98/0/codetables/20253.table\
-	bufr/tables/0/local/101/98/0/codetables/21196.table\
-	bufr/tables/0/local/101/98/0/codetables/21199.table\
-	bufr/tables/0/local/101/98/0/codetables/2194.table\
-	bufr/tables/0/local/101/98/0/codetables/2196.table\
-	bufr/tables/0/local/101/98/0/codetables/2199.table\
-	bufr/tables/0/local/101/98/0/codetables/2231.table\
-	bufr/tables/0/local/101/98/0/codetables/2232.table\
-	bufr/tables/0/local/101/98/0/codetables/2251.table\
-	bufr/tables/0/local/101/98/0/codetables/2252.table\
-	bufr/tables/0/local/101/98/0/codetables/2254.table\
-	bufr/tables/0/local/101/98/0/codetables/33195.table\
-	bufr/tables/0/local/101/98/0/codetables/33205.table\
-	bufr/tables/0/local/101/98/0/codetables/33206.table\
-	bufr/tables/0/local/101/98/0/codetables/33207.table\
-	bufr/tables/0/local/101/98/0/codetables/33208.table\
-	bufr/tables/0/local/101/98/0/codetables/33209.table\
-	bufr/tables/0/local/101/98/0/codetables/33220.table\
-	bufr/tables/0/local/101/98/0/codetables/33221.table\
-	bufr/tables/0/local/101/98/0/codetables/33222.table\
-	bufr/tables/0/local/101/98/0/codetables/33223.table\
-	bufr/tables/0/local/101/98/0/codetables/33224.table\
-	bufr/tables/0/local/101/98/0/codetables/33225.table\
-	bufr/tables/0/local/101/98/0/codetables/33226.table\
-	bufr/tables/0/local/101/98/0/codetables/33227.table\
-	bufr/tables/0/local/101/98/0/codetables/33228.table\
-	bufr/tables/0/local/101/98/0/codetables/33229.table\
-	bufr/tables/0/local/101/98/0/codetables/33230.table\
-	bufr/tables/0/local/101/98/0/codetables/33232.table\
-	bufr/tables/0/local/101/98/0/codetables/33233.table\
-	bufr/tables/0/local/101/98/0/codetables/33234.table\
-	bufr/tables/0/local/101/98/0/codetables/33236.table\
-	bufr/tables/0/local/101/98/0/codetables/33237.table\
-	bufr/tables/0/local/101/98/0/codetables/33238.table\
-	bufr/tables/0/local/101/98/0/codetables/33239.table\
-	bufr/tables/0/local/101/98/0/codetables/33240.table\
-	bufr/tables/0/local/101/98/0/codetables/33243.table\
-	bufr/tables/0/local/101/98/0/codetables/33244.table\
-	bufr/tables/0/local/101/98/0/codetables/33245.table\
-	bufr/tables/0/local/101/98/0/codetables/33246.table\
-	bufr/tables/0/local/101/98/0/codetables/33247.table\
-	bufr/tables/0/local/101/98/0/codetables/33248.table\
-	bufr/tables/0/local/101/98/0/codetables/33249.table\
-	bufr/tables/0/local/101/98/0/codetables/33252.table\
-	bufr/tables/0/local/101/98/0/codetables/33254.table\
-	bufr/tables/0/local/101/98/0/codetables/49193.table\
-	bufr/tables/0/local/101/98/0/codetables/49194.table\
-	bufr/tables/0/local/101/98/0/codetables/8079.table\
-	bufr/tables/0/local/101/98/0/codetables/8193.table\
-	bufr/tables/0/local/101/98/0/codetables/8195.table
-
-definitionsbufr_tables_0_local_2_98_0dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/local/2/98/0
-dist_definitionsbufr_tables_0_local_2_98_0_DATA = \
-	bufr/tables/0/local/2/98/0/element.table\
-	bufr/tables/0/local/2/98/0/sequence.def
-
-definitionsbufr_tables_0_local_2_98_0_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/local/2/98/0/codetables
-dist_definitionsbufr_tables_0_local_2_98_0_codetables_DATA = \
-	bufr/tables/0/local/2/98/0/codetables/25192.table\
-	bufr/tables/0/local/2/98/0/codetables/40214.table\
-	bufr/tables/0/local/2/98/0/codetables/5237.table\
-	bufr/tables/0/local/2/98/0/codetables/8201.table
-
-definitionsbufr_tables_0_local_3_98_0dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/local/3/98/0
-dist_definitionsbufr_tables_0_local_3_98_0_DATA = \
-	bufr/tables/0/local/3/98/0/element.table\
-	bufr/tables/0/local/3/98/0/sequence.def
-
-definitionsbufr_tables_0_local_3_98_0_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/local/3/98/0/codetables
-dist_definitionsbufr_tables_0_local_3_98_0_codetables_DATA = \
-	bufr/tables/0/local/3/98/0/codetables/25192.table\
-	bufr/tables/0/local/3/98/0/codetables/40214.table\
-	bufr/tables/0/local/3/98/0/codetables/5237.table\
-	bufr/tables/0/local/3/98/0/codetables/8201.table
-
-definitionsbufr_tables_0_wmo_10dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/10
-dist_definitionsbufr_tables_0_wmo_10_DATA = \
-	bufr/tables/0/wmo/10/element.table\
-	bufr/tables/0/wmo/10/sequence.def
-
-definitionsbufr_tables_0_wmo_10_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/10/codetables
-dist_definitionsbufr_tables_0_wmo_10_codetables_DATA = \
-	bufr/tables/0/wmo/10/codetables/1003.table\
-	bufr/tables/0/wmo/10/codetables/10063.table\
-	bufr/tables/0/wmo/10/codetables/10064.table\
-	bufr/tables/0/wmo/10/codetables/1007.table\
-	bufr/tables/0/wmo/10/codetables/1031.table\
-	bufr/tables/0/wmo/10/codetables/1032.table\
-	bufr/tables/0/wmo/10/codetables/1033.table\
-	bufr/tables/0/wmo/10/codetables/1035.table\
-	bufr/tables/0/wmo/10/codetables/1090.table\
-	bufr/tables/0/wmo/10/codetables/1092.table\
-	bufr/tables/0/wmo/10/codetables/11031.table\
-	bufr/tables/0/wmo/10/codetables/11037.table\
-	bufr/tables/0/wmo/10/codetables/11038.table\
-	bufr/tables/0/wmo/10/codetables/11039.table\
-	bufr/tables/0/wmo/10/codetables/13038.table\
-	bufr/tables/0/wmo/10/codetables/13039.table\
-	bufr/tables/0/wmo/10/codetables/13040.table\
-	bufr/tables/0/wmo/10/codetables/13041.table\
-	bufr/tables/0/wmo/10/codetables/13051.table\
-	bufr/tables/0/wmo/10/codetables/13056.table\
-	bufr/tables/0/wmo/10/codetables/13057.table\
-	bufr/tables/0/wmo/10/codetables/15025.table\
-	bufr/tables/0/wmo/10/codetables/19001.table\
-	bufr/tables/0/wmo/10/codetables/19008.table\
-	bufr/tables/0/wmo/10/codetables/19010.table\
-	bufr/tables/0/wmo/10/codetables/20003.table\
-	bufr/tables/0/wmo/10/codetables/20004.table\
-	bufr/tables/0/wmo/10/codetables/20005.table\
-	bufr/tables/0/wmo/10/codetables/20008.table\
-	bufr/tables/0/wmo/10/codetables/20009.table\
-	bufr/tables/0/wmo/10/codetables/2001.table\
-	bufr/tables/0/wmo/10/codetables/20011.table\
-	bufr/tables/0/wmo/10/codetables/20012.table\
-	bufr/tables/0/wmo/10/codetables/20017.table\
-	bufr/tables/0/wmo/10/codetables/20018.table\
-	bufr/tables/0/wmo/10/codetables/2002.table\
-	bufr/tables/0/wmo/10/codetables/20021.table\
-	bufr/tables/0/wmo/10/codetables/20022.table\
-	bufr/tables/0/wmo/10/codetables/20023.table\
-	bufr/tables/0/wmo/10/codetables/20024.table\
-	bufr/tables/0/wmo/10/codetables/20025.table\
-	bufr/tables/0/wmo/10/codetables/20026.table\
-	bufr/tables/0/wmo/10/codetables/20027.table\
-	bufr/tables/0/wmo/10/codetables/20029.table\
-	bufr/tables/0/wmo/10/codetables/2003.table\
-	bufr/tables/0/wmo/10/codetables/20032.table\
-	bufr/tables/0/wmo/10/codetables/20033.table\
-	bufr/tables/0/wmo/10/codetables/20034.table\
-	bufr/tables/0/wmo/10/codetables/20035.table\
-	bufr/tables/0/wmo/10/codetables/20036.table\
-	bufr/tables/0/wmo/10/codetables/20037.table\
-	bufr/tables/0/wmo/10/codetables/2004.table\
-	bufr/tables/0/wmo/10/codetables/20040.table\
-	bufr/tables/0/wmo/10/codetables/20041.table\
-	bufr/tables/0/wmo/10/codetables/20042.table\
-	bufr/tables/0/wmo/10/codetables/20045.table\
-	bufr/tables/0/wmo/10/codetables/20050.table\
-	bufr/tables/0/wmo/10/codetables/20055.table\
-	bufr/tables/0/wmo/10/codetables/20056.table\
-	bufr/tables/0/wmo/10/codetables/20062.table\
-	bufr/tables/0/wmo/10/codetables/20063.table\
-	bufr/tables/0/wmo/10/codetables/20071.table\
-	bufr/tables/0/wmo/10/codetables/20086.table\
-	bufr/tables/0/wmo/10/codetables/20090.table\
-	bufr/tables/0/wmo/10/codetables/20101.table\
-	bufr/tables/0/wmo/10/codetables/20102.table\
-	bufr/tables/0/wmo/10/codetables/2011.table\
-	bufr/tables/0/wmo/10/codetables/2012.table\
-	bufr/tables/0/wmo/10/codetables/2013.table\
-	bufr/tables/0/wmo/10/codetables/2014.table\
-	bufr/tables/0/wmo/10/codetables/2015.table\
-	bufr/tables/0/wmo/10/codetables/2016.table\
-	bufr/tables/0/wmo/10/codetables/2019.table\
-	bufr/tables/0/wmo/10/codetables/2020.table\
-	bufr/tables/0/wmo/10/codetables/2021.table\
-	bufr/tables/0/wmo/10/codetables/2022.table\
-	bufr/tables/0/wmo/10/codetables/2023.table\
-	bufr/tables/0/wmo/10/codetables/2024.table\
-	bufr/tables/0/wmo/10/codetables/2025.table\
-	bufr/tables/0/wmo/10/codetables/2030.table\
-	bufr/tables/0/wmo/10/codetables/2031.table\
-	bufr/tables/0/wmo/10/codetables/2032.table\
-	bufr/tables/0/wmo/10/codetables/2033.table\
-	bufr/tables/0/wmo/10/codetables/2034.table\
-	bufr/tables/0/wmo/10/codetables/2036.table\
-	bufr/tables/0/wmo/10/codetables/2037.table\
-	bufr/tables/0/wmo/10/codetables/2038.table\
-	bufr/tables/0/wmo/10/codetables/2039.table\
-	bufr/tables/0/wmo/10/codetables/2040.table\
-	bufr/tables/0/wmo/10/codetables/2041.table\
-	bufr/tables/0/wmo/10/codetables/2044.table\
-	bufr/tables/0/wmo/10/codetables/2045.table\
-	bufr/tables/0/wmo/10/codetables/2046.table\
-	bufr/tables/0/wmo/10/codetables/2048.table\
-	bufr/tables/0/wmo/10/codetables/2049.table\
-	bufr/tables/0/wmo/10/codetables/2050.table\
-	bufr/tables/0/wmo/10/codetables/2051.table\
-	bufr/tables/0/wmo/10/codetables/2052.table\
-	bufr/tables/0/wmo/10/codetables/2053.table\
-	bufr/tables/0/wmo/10/codetables/2054.table\
-	bufr/tables/0/wmo/10/codetables/2055.table\
-	bufr/tables/0/wmo/10/codetables/2056.table\
-	bufr/tables/0/wmo/10/codetables/2057.table\
-	bufr/tables/0/wmo/10/codetables/2058.table\
-	bufr/tables/0/wmo/10/codetables/2059.table\
-	bufr/tables/0/wmo/10/codetables/2060.table\
-	bufr/tables/0/wmo/10/codetables/2061.table\
-	bufr/tables/0/wmo/10/codetables/2062.table\
-	bufr/tables/0/wmo/10/codetables/2064.table\
-	bufr/tables/0/wmo/10/codetables/2066.table\
-	bufr/tables/0/wmo/10/codetables/2070.table\
-	bufr/tables/0/wmo/10/codetables/2080.table\
-	bufr/tables/0/wmo/10/codetables/2081.table\
-	bufr/tables/0/wmo/10/codetables/2083.table\
-	bufr/tables/0/wmo/10/codetables/2084.table\
-	bufr/tables/0/wmo/10/codetables/2095.table\
-	bufr/tables/0/wmo/10/codetables/2096.table\
-	bufr/tables/0/wmo/10/codetables/2097.table\
-	bufr/tables/0/wmo/10/codetables/2098.table\
-	bufr/tables/0/wmo/10/codetables/2101.table\
-	bufr/tables/0/wmo/10/codetables/2103.table\
-	bufr/tables/0/wmo/10/codetables/2104.table\
-	bufr/tables/0/wmo/10/codetables/21066.table\
-	bufr/tables/0/wmo/10/codetables/21067.table\
-	bufr/tables/0/wmo/10/codetables/21068.table\
-	bufr/tables/0/wmo/10/codetables/21069.table\
-	bufr/tables/0/wmo/10/codetables/21070.table\
-	bufr/tables/0/wmo/10/codetables/21072.table\
-	bufr/tables/0/wmo/10/codetables/21073.table\
-	bufr/tables/0/wmo/10/codetables/21076.table\
-	bufr/tables/0/wmo/10/codetables/21109.table\
-	bufr/tables/0/wmo/10/codetables/21115.table\
-	bufr/tables/0/wmo/10/codetables/21116.table\
-	bufr/tables/0/wmo/10/codetables/21119.table\
-	bufr/tables/0/wmo/10/codetables/21144.table\
-	bufr/tables/0/wmo/10/codetables/2115.table\
-	bufr/tables/0/wmo/10/codetables/21150.table\
-	bufr/tables/0/wmo/10/codetables/21155.table\
-	bufr/tables/0/wmo/10/codetables/21158.table\
-	bufr/tables/0/wmo/10/codetables/21159.table\
-	bufr/tables/0/wmo/10/codetables/21169.table\
-	bufr/tables/0/wmo/10/codetables/2119.table\
-	bufr/tables/0/wmo/10/codetables/2131.table\
-	bufr/tables/0/wmo/10/codetables/2143.table\
-	bufr/tables/0/wmo/10/codetables/2144.table\
-	bufr/tables/0/wmo/10/codetables/2145.table\
-	bufr/tables/0/wmo/10/codetables/2146.table\
-	bufr/tables/0/wmo/10/codetables/2148.table\
-	bufr/tables/0/wmo/10/codetables/2149.table\
-	bufr/tables/0/wmo/10/codetables/2150.table\
-	bufr/tables/0/wmo/10/codetables/2151.table\
-	bufr/tables/0/wmo/10/codetables/2152.table\
-	bufr/tables/0/wmo/10/codetables/2158.table\
-	bufr/tables/0/wmo/10/codetables/2159.table\
-	bufr/tables/0/wmo/10/codetables/2163.table\
-	bufr/tables/0/wmo/10/codetables/2164.table\
-	bufr/tables/0/wmo/10/codetables/2166.table\
-	bufr/tables/0/wmo/10/codetables/2167.table\
-	bufr/tables/0/wmo/10/codetables/2169.table\
-	bufr/tables/0/wmo/10/codetables/2172.table\
-	bufr/tables/0/wmo/10/codetables/2175.table\
-	bufr/tables/0/wmo/10/codetables/2176.table\
-	bufr/tables/0/wmo/10/codetables/2177.table\
-	bufr/tables/0/wmo/10/codetables/2178.table\
-	bufr/tables/0/wmo/10/codetables/2179.table\
-	bufr/tables/0/wmo/10/codetables/2180.table\
-	bufr/tables/0/wmo/10/codetables/2181.table\
-	bufr/tables/0/wmo/10/codetables/2182.table\
-	bufr/tables/0/wmo/10/codetables/2183.table\
-	bufr/tables/0/wmo/10/codetables/2184.table\
-	bufr/tables/0/wmo/10/codetables/2185.table\
-	bufr/tables/0/wmo/10/codetables/2186.table\
-	bufr/tables/0/wmo/10/codetables/2187.table\
-	bufr/tables/0/wmo/10/codetables/2188.table\
-	bufr/tables/0/wmo/10/codetables/2189.table\
-	bufr/tables/0/wmo/10/codetables/22056.table\
-	bufr/tables/0/wmo/10/codetables/22060.table\
-	bufr/tables/0/wmo/10/codetables/22061.table\
-	bufr/tables/0/wmo/10/codetables/22067.table\
-	bufr/tables/0/wmo/10/codetables/22068.table\
-	bufr/tables/0/wmo/10/codetables/22120.table\
-	bufr/tables/0/wmo/10/codetables/22121.table\
-	bufr/tables/0/wmo/10/codetables/22122.table\
-	bufr/tables/0/wmo/10/codetables/22123.table\
-	bufr/tables/0/wmo/10/codetables/23001.table\
-	bufr/tables/0/wmo/10/codetables/23002.table\
-	bufr/tables/0/wmo/10/codetables/23003.table\
-	bufr/tables/0/wmo/10/codetables/23004.table\
-	bufr/tables/0/wmo/10/codetables/23005.table\
-	bufr/tables/0/wmo/10/codetables/23006.table\
-	bufr/tables/0/wmo/10/codetables/23007.table\
-	bufr/tables/0/wmo/10/codetables/23008.table\
-	bufr/tables/0/wmo/10/codetables/23009.table\
-	bufr/tables/0/wmo/10/codetables/23016.table\
-	bufr/tables/0/wmo/10/codetables/23018.table\
-	bufr/tables/0/wmo/10/codetables/23031.table\
-	bufr/tables/0/wmo/10/codetables/23032.table\
-	bufr/tables/0/wmo/10/codetables/24003.table\
-	bufr/tables/0/wmo/10/codetables/25004.table\
-	bufr/tables/0/wmo/10/codetables/25005.table\
-	bufr/tables/0/wmo/10/codetables/25006.table\
-	bufr/tables/0/wmo/10/codetables/25009.table\
-	bufr/tables/0/wmo/10/codetables/25010.table\
-	bufr/tables/0/wmo/10/codetables/25011.table\
-	bufr/tables/0/wmo/10/codetables/25012.table\
-	bufr/tables/0/wmo/10/codetables/25013.table\
-	bufr/tables/0/wmo/10/codetables/25015.table\
-	bufr/tables/0/wmo/10/codetables/25017.table\
-	bufr/tables/0/wmo/10/codetables/25020.table\
-	bufr/tables/0/wmo/10/codetables/25021.table\
-	bufr/tables/0/wmo/10/codetables/25030.table\
-	bufr/tables/0/wmo/10/codetables/25032.table\
-	bufr/tables/0/wmo/10/codetables/25033.table\
-	bufr/tables/0/wmo/10/codetables/25034.table\
-	bufr/tables/0/wmo/10/codetables/25036.table\
-	bufr/tables/0/wmo/10/codetables/25040.table\
-	bufr/tables/0/wmo/10/codetables/25041.table\
-	bufr/tables/0/wmo/10/codetables/25042.table\
-	bufr/tables/0/wmo/10/codetables/25045.table\
-	bufr/tables/0/wmo/10/codetables/25046.table\
-	bufr/tables/0/wmo/10/codetables/25047.table\
-	bufr/tables/0/wmo/10/codetables/25048.table\
-	bufr/tables/0/wmo/10/codetables/25049.table\
-	bufr/tables/0/wmo/10/codetables/25051.table\
-	bufr/tables/0/wmo/10/codetables/25053.table\
-	bufr/tables/0/wmo/10/codetables/25069.table\
-	bufr/tables/0/wmo/10/codetables/25086.table\
-	bufr/tables/0/wmo/10/codetables/25093.table\
-	bufr/tables/0/wmo/10/codetables/25095.table\
-	bufr/tables/0/wmo/10/codetables/25096.table\
-	bufr/tables/0/wmo/10/codetables/25097.table\
-	bufr/tables/0/wmo/10/codetables/25098.table\
-	bufr/tables/0/wmo/10/codetables/25099.table\
-	bufr/tables/0/wmo/10/codetables/25110.table\
-	bufr/tables/0/wmo/10/codetables/25120.table\
-	bufr/tables/0/wmo/10/codetables/25122.table\
-	bufr/tables/0/wmo/10/codetables/25123.table\
-	bufr/tables/0/wmo/10/codetables/25124.table\
-	bufr/tables/0/wmo/10/codetables/26010.table\
-	bufr/tables/0/wmo/10/codetables/29001.table\
-	bufr/tables/0/wmo/10/codetables/29002.table\
-	bufr/tables/0/wmo/10/codetables/30031.table\
-	bufr/tables/0/wmo/10/codetables/30032.table\
-	bufr/tables/0/wmo/10/codetables/31021.table\
-	bufr/tables/0/wmo/10/codetables/31031.table\
-	bufr/tables/0/wmo/10/codetables/33002.table\
-	bufr/tables/0/wmo/10/codetables/33003.table\
-	bufr/tables/0/wmo/10/codetables/33005.table\
-	bufr/tables/0/wmo/10/codetables/33006.table\
-	bufr/tables/0/wmo/10/codetables/33015.table\
-	bufr/tables/0/wmo/10/codetables/33020.table\
-	bufr/tables/0/wmo/10/codetables/33021.table\
-	bufr/tables/0/wmo/10/codetables/33022.table\
-	bufr/tables/0/wmo/10/codetables/33023.table\
-	bufr/tables/0/wmo/10/codetables/33024.table\
-	bufr/tables/0/wmo/10/codetables/33025.table\
-	bufr/tables/0/wmo/10/codetables/33026.table\
-	bufr/tables/0/wmo/10/codetables/33027.table\
-	bufr/tables/0/wmo/10/codetables/33028.table\
-	bufr/tables/0/wmo/10/codetables/33030.table\
-	bufr/tables/0/wmo/10/codetables/33031.table\
-	bufr/tables/0/wmo/10/codetables/33032.table\
-	bufr/tables/0/wmo/10/codetables/33033.table\
-	bufr/tables/0/wmo/10/codetables/33035.table\
-	bufr/tables/0/wmo/10/codetables/33037.table\
-	bufr/tables/0/wmo/10/codetables/33038.table\
-	bufr/tables/0/wmo/10/codetables/33039.table\
-	bufr/tables/0/wmo/10/codetables/33041.table\
-	bufr/tables/0/wmo/10/codetables/33042.table\
-	bufr/tables/0/wmo/10/codetables/33043.table\
-	bufr/tables/0/wmo/10/codetables/33044.table\
-	bufr/tables/0/wmo/10/codetables/33047.table\
-	bufr/tables/0/wmo/10/codetables/33048.table\
-	bufr/tables/0/wmo/10/codetables/33049.table\
-	bufr/tables/0/wmo/10/codetables/33050.table\
-	bufr/tables/0/wmo/10/codetables/33052.table\
-	bufr/tables/0/wmo/10/codetables/33053.table\
-	bufr/tables/0/wmo/10/codetables/33060.table\
-	bufr/tables/0/wmo/10/codetables/35000.table\
-	bufr/tables/0/wmo/10/codetables/35001.table\
-	bufr/tables/0/wmo/10/codetables/35030.table\
-	bufr/tables/0/wmo/10/codetables/35031.table\
-	bufr/tables/0/wmo/10/codetables/35032.table\
-	bufr/tables/0/wmo/10/codetables/35033.table\
-	bufr/tables/0/wmo/10/codetables/35034.table\
-	bufr/tables/0/wmo/10/codetables/40011.table\
-	bufr/tables/0/wmo/10/codetables/40012.table\
-	bufr/tables/0/wmo/10/codetables/40013.table\
-	bufr/tables/0/wmo/10/codetables/4059.table\
-	bufr/tables/0/wmo/10/codetables/8001.table\
-	bufr/tables/0/wmo/10/codetables/8002.table\
-	bufr/tables/0/wmo/10/codetables/8003.table\
-	bufr/tables/0/wmo/10/codetables/8004.table\
-	bufr/tables/0/wmo/10/codetables/8005.table\
-	bufr/tables/0/wmo/10/codetables/8006.table\
-	bufr/tables/0/wmo/10/codetables/8007.table\
-	bufr/tables/0/wmo/10/codetables/8008.table\
-	bufr/tables/0/wmo/10/codetables/8009.table\
-	bufr/tables/0/wmo/10/codetables/8010.table\
-	bufr/tables/0/wmo/10/codetables/8011.table\
-	bufr/tables/0/wmo/10/codetables/8012.table\
-	bufr/tables/0/wmo/10/codetables/8013.table\
-	bufr/tables/0/wmo/10/codetables/8014.table\
-	bufr/tables/0/wmo/10/codetables/8016.table\
-	bufr/tables/0/wmo/10/codetables/8017.table\
-	bufr/tables/0/wmo/10/codetables/8018.table\
-	bufr/tables/0/wmo/10/codetables/8021.table\
-	bufr/tables/0/wmo/10/codetables/8023.table\
-	bufr/tables/0/wmo/10/codetables/8024.table\
-	bufr/tables/0/wmo/10/codetables/8025.table\
-	bufr/tables/0/wmo/10/codetables/8026.table\
-	bufr/tables/0/wmo/10/codetables/8029.table\
-	bufr/tables/0/wmo/10/codetables/8033.table\
-	bufr/tables/0/wmo/10/codetables/8035.table\
-	bufr/tables/0/wmo/10/codetables/8036.table\
-	bufr/tables/0/wmo/10/codetables/8039.table\
-	bufr/tables/0/wmo/10/codetables/8040.table\
-	bufr/tables/0/wmo/10/codetables/8041.table\
-	bufr/tables/0/wmo/10/codetables/8042.table\
-	bufr/tables/0/wmo/10/codetables/8043.table\
-	bufr/tables/0/wmo/10/codetables/8050.table\
-	bufr/tables/0/wmo/10/codetables/8051.table\
-	bufr/tables/0/wmo/10/codetables/8052.table\
-	bufr/tables/0/wmo/10/codetables/8053.table\
-	bufr/tables/0/wmo/10/codetables/8054.table\
-	bufr/tables/0/wmo/10/codetables/8060.table\
-	bufr/tables/0/wmo/10/codetables/8065.table\
-	bufr/tables/0/wmo/10/codetables/8066.table\
-	bufr/tables/0/wmo/10/codetables/8070.table\
-	bufr/tables/0/wmo/10/codetables/8072.table\
-	bufr/tables/0/wmo/10/codetables/8074.table\
-	bufr/tables/0/wmo/10/codetables/8075.table\
-	bufr/tables/0/wmo/10/codetables/8076.table\
-	bufr/tables/0/wmo/10/codetables/8077.table\
-	bufr/tables/0/wmo/10/codetables/8079.table\
-	bufr/tables/0/wmo/10/codetables/8080.table\
-	bufr/tables/0/wmo/10/codetables/8081.table\
-	bufr/tables/0/wmo/10/codetables/8082.table\
-	bufr/tables/0/wmo/10/codetables/8083.table\
-	bufr/tables/0/wmo/10/codetables/8085.table
-
-definitionsbufr_tables_0_wmo_11dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/11
-dist_definitionsbufr_tables_0_wmo_11_DATA = \
-	bufr/tables/0/wmo/11/element.table\
-	bufr/tables/0/wmo/11/sequence.def
-
-definitionsbufr_tables_0_wmo_11_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/11/codetables
-dist_definitionsbufr_tables_0_wmo_11_codetables_DATA = \
-	bufr/tables/0/wmo/11/codetables/1003.table\
-	bufr/tables/0/wmo/11/codetables/10063.table\
-	bufr/tables/0/wmo/11/codetables/10064.table\
-	bufr/tables/0/wmo/11/codetables/1007.table\
-	bufr/tables/0/wmo/11/codetables/1031.table\
-	bufr/tables/0/wmo/11/codetables/1032.table\
-	bufr/tables/0/wmo/11/codetables/1033.table\
-	bufr/tables/0/wmo/11/codetables/1035.table\
-	bufr/tables/0/wmo/11/codetables/1090.table\
-	bufr/tables/0/wmo/11/codetables/1092.table\
-	bufr/tables/0/wmo/11/codetables/11031.table\
-	bufr/tables/0/wmo/11/codetables/11037.table\
-	bufr/tables/0/wmo/11/codetables/11038.table\
-	bufr/tables/0/wmo/11/codetables/11039.table\
-	bufr/tables/0/wmo/11/codetables/13038.table\
-	bufr/tables/0/wmo/11/codetables/13039.table\
-	bufr/tables/0/wmo/11/codetables/13040.table\
-	bufr/tables/0/wmo/11/codetables/13041.table\
-	bufr/tables/0/wmo/11/codetables/13051.table\
-	bufr/tables/0/wmo/11/codetables/13056.table\
-	bufr/tables/0/wmo/11/codetables/13057.table\
-	bufr/tables/0/wmo/11/codetables/15025.table\
-	bufr/tables/0/wmo/11/codetables/19001.table\
-	bufr/tables/0/wmo/11/codetables/19008.table\
-	bufr/tables/0/wmo/11/codetables/19010.table\
-	bufr/tables/0/wmo/11/codetables/20003.table\
-	bufr/tables/0/wmo/11/codetables/20004.table\
-	bufr/tables/0/wmo/11/codetables/20005.table\
-	bufr/tables/0/wmo/11/codetables/20008.table\
-	bufr/tables/0/wmo/11/codetables/20009.table\
-	bufr/tables/0/wmo/11/codetables/2001.table\
-	bufr/tables/0/wmo/11/codetables/20011.table\
-	bufr/tables/0/wmo/11/codetables/20012.table\
-	bufr/tables/0/wmo/11/codetables/20017.table\
-	bufr/tables/0/wmo/11/codetables/20018.table\
-	bufr/tables/0/wmo/11/codetables/2002.table\
-	bufr/tables/0/wmo/11/codetables/20021.table\
-	bufr/tables/0/wmo/11/codetables/20022.table\
-	bufr/tables/0/wmo/11/codetables/20023.table\
-	bufr/tables/0/wmo/11/codetables/20024.table\
-	bufr/tables/0/wmo/11/codetables/20025.table\
-	bufr/tables/0/wmo/11/codetables/20026.table\
-	bufr/tables/0/wmo/11/codetables/20027.table\
-	bufr/tables/0/wmo/11/codetables/20029.table\
-	bufr/tables/0/wmo/11/codetables/2003.table\
-	bufr/tables/0/wmo/11/codetables/20032.table\
-	bufr/tables/0/wmo/11/codetables/20033.table\
-	bufr/tables/0/wmo/11/codetables/20034.table\
-	bufr/tables/0/wmo/11/codetables/20035.table\
-	bufr/tables/0/wmo/11/codetables/20036.table\
-	bufr/tables/0/wmo/11/codetables/20037.table\
-	bufr/tables/0/wmo/11/codetables/2004.table\
-	bufr/tables/0/wmo/11/codetables/20040.table\
-	bufr/tables/0/wmo/11/codetables/20041.table\
-	bufr/tables/0/wmo/11/codetables/20042.table\
-	bufr/tables/0/wmo/11/codetables/20045.table\
-	bufr/tables/0/wmo/11/codetables/20050.table\
-	bufr/tables/0/wmo/11/codetables/20055.table\
-	bufr/tables/0/wmo/11/codetables/20056.table\
-	bufr/tables/0/wmo/11/codetables/20062.table\
-	bufr/tables/0/wmo/11/codetables/20063.table\
-	bufr/tables/0/wmo/11/codetables/20071.table\
-	bufr/tables/0/wmo/11/codetables/20086.table\
-	bufr/tables/0/wmo/11/codetables/20090.table\
-	bufr/tables/0/wmo/11/codetables/20101.table\
-	bufr/tables/0/wmo/11/codetables/20102.table\
-	bufr/tables/0/wmo/11/codetables/2011.table\
-	bufr/tables/0/wmo/11/codetables/2012.table\
-	bufr/tables/0/wmo/11/codetables/2013.table\
-	bufr/tables/0/wmo/11/codetables/2014.table\
-	bufr/tables/0/wmo/11/codetables/2015.table\
-	bufr/tables/0/wmo/11/codetables/2016.table\
-	bufr/tables/0/wmo/11/codetables/2019.table\
-	bufr/tables/0/wmo/11/codetables/2020.table\
-	bufr/tables/0/wmo/11/codetables/2021.table\
-	bufr/tables/0/wmo/11/codetables/2022.table\
-	bufr/tables/0/wmo/11/codetables/2023.table\
-	bufr/tables/0/wmo/11/codetables/2024.table\
-	bufr/tables/0/wmo/11/codetables/2025.table\
-	bufr/tables/0/wmo/11/codetables/2030.table\
-	bufr/tables/0/wmo/11/codetables/2031.table\
-	bufr/tables/0/wmo/11/codetables/2032.table\
-	bufr/tables/0/wmo/11/codetables/2033.table\
-	bufr/tables/0/wmo/11/codetables/2034.table\
-	bufr/tables/0/wmo/11/codetables/2036.table\
-	bufr/tables/0/wmo/11/codetables/2037.table\
-	bufr/tables/0/wmo/11/codetables/2038.table\
-	bufr/tables/0/wmo/11/codetables/2039.table\
-	bufr/tables/0/wmo/11/codetables/2040.table\
-	bufr/tables/0/wmo/11/codetables/2041.table\
-	bufr/tables/0/wmo/11/codetables/2044.table\
-	bufr/tables/0/wmo/11/codetables/2045.table\
-	bufr/tables/0/wmo/11/codetables/2046.table\
-	bufr/tables/0/wmo/11/codetables/2048.table\
-	bufr/tables/0/wmo/11/codetables/2049.table\
-	bufr/tables/0/wmo/11/codetables/2050.table\
-	bufr/tables/0/wmo/11/codetables/2051.table\
-	bufr/tables/0/wmo/11/codetables/2052.table\
-	bufr/tables/0/wmo/11/codetables/2053.table\
-	bufr/tables/0/wmo/11/codetables/2054.table\
-	bufr/tables/0/wmo/11/codetables/2055.table\
-	bufr/tables/0/wmo/11/codetables/2056.table\
-	bufr/tables/0/wmo/11/codetables/2057.table\
-	bufr/tables/0/wmo/11/codetables/2058.table\
-	bufr/tables/0/wmo/11/codetables/2059.table\
-	bufr/tables/0/wmo/11/codetables/2060.table\
-	bufr/tables/0/wmo/11/codetables/2061.table\
-	bufr/tables/0/wmo/11/codetables/2062.table\
-	bufr/tables/0/wmo/11/codetables/2064.table\
-	bufr/tables/0/wmo/11/codetables/2066.table\
-	bufr/tables/0/wmo/11/codetables/2070.table\
-	bufr/tables/0/wmo/11/codetables/2080.table\
-	bufr/tables/0/wmo/11/codetables/2081.table\
-	bufr/tables/0/wmo/11/codetables/2083.table\
-	bufr/tables/0/wmo/11/codetables/2084.table\
-	bufr/tables/0/wmo/11/codetables/2095.table\
-	bufr/tables/0/wmo/11/codetables/2096.table\
-	bufr/tables/0/wmo/11/codetables/2097.table\
-	bufr/tables/0/wmo/11/codetables/2098.table\
-	bufr/tables/0/wmo/11/codetables/2101.table\
-	bufr/tables/0/wmo/11/codetables/2103.table\
-	bufr/tables/0/wmo/11/codetables/2104.table\
-	bufr/tables/0/wmo/11/codetables/21066.table\
-	bufr/tables/0/wmo/11/codetables/21067.table\
-	bufr/tables/0/wmo/11/codetables/21068.table\
-	bufr/tables/0/wmo/11/codetables/21069.table\
-	bufr/tables/0/wmo/11/codetables/21070.table\
-	bufr/tables/0/wmo/11/codetables/21072.table\
-	bufr/tables/0/wmo/11/codetables/21073.table\
-	bufr/tables/0/wmo/11/codetables/21076.table\
-	bufr/tables/0/wmo/11/codetables/21109.table\
-	bufr/tables/0/wmo/11/codetables/21115.table\
-	bufr/tables/0/wmo/11/codetables/21116.table\
-	bufr/tables/0/wmo/11/codetables/21119.table\
-	bufr/tables/0/wmo/11/codetables/21144.table\
-	bufr/tables/0/wmo/11/codetables/2115.table\
-	bufr/tables/0/wmo/11/codetables/21150.table\
-	bufr/tables/0/wmo/11/codetables/21155.table\
-	bufr/tables/0/wmo/11/codetables/21158.table\
-	bufr/tables/0/wmo/11/codetables/21159.table\
-	bufr/tables/0/wmo/11/codetables/21169.table\
-	bufr/tables/0/wmo/11/codetables/2119.table\
-	bufr/tables/0/wmo/11/codetables/2131.table\
-	bufr/tables/0/wmo/11/codetables/2143.table\
-	bufr/tables/0/wmo/11/codetables/2144.table\
-	bufr/tables/0/wmo/11/codetables/2145.table\
-	bufr/tables/0/wmo/11/codetables/2146.table\
-	bufr/tables/0/wmo/11/codetables/2148.table\
-	bufr/tables/0/wmo/11/codetables/2149.table\
-	bufr/tables/0/wmo/11/codetables/2150.table\
-	bufr/tables/0/wmo/11/codetables/2151.table\
-	bufr/tables/0/wmo/11/codetables/2152.table\
-	bufr/tables/0/wmo/11/codetables/2158.table\
-	bufr/tables/0/wmo/11/codetables/2159.table\
-	bufr/tables/0/wmo/11/codetables/2163.table\
-	bufr/tables/0/wmo/11/codetables/2164.table\
-	bufr/tables/0/wmo/11/codetables/2166.table\
-	bufr/tables/0/wmo/11/codetables/2167.table\
-	bufr/tables/0/wmo/11/codetables/2169.table\
-	bufr/tables/0/wmo/11/codetables/2172.table\
-	bufr/tables/0/wmo/11/codetables/2175.table\
-	bufr/tables/0/wmo/11/codetables/2176.table\
-	bufr/tables/0/wmo/11/codetables/2177.table\
-	bufr/tables/0/wmo/11/codetables/2178.table\
-	bufr/tables/0/wmo/11/codetables/2179.table\
-	bufr/tables/0/wmo/11/codetables/2180.table\
-	bufr/tables/0/wmo/11/codetables/2181.table\
-	bufr/tables/0/wmo/11/codetables/2182.table\
-	bufr/tables/0/wmo/11/codetables/2183.table\
-	bufr/tables/0/wmo/11/codetables/2184.table\
-	bufr/tables/0/wmo/11/codetables/2185.table\
-	bufr/tables/0/wmo/11/codetables/2186.table\
-	bufr/tables/0/wmo/11/codetables/2187.table\
-	bufr/tables/0/wmo/11/codetables/2188.table\
-	bufr/tables/0/wmo/11/codetables/2189.table\
-	bufr/tables/0/wmo/11/codetables/22056.table\
-	bufr/tables/0/wmo/11/codetables/22060.table\
-	bufr/tables/0/wmo/11/codetables/22061.table\
-	bufr/tables/0/wmo/11/codetables/22067.table\
-	bufr/tables/0/wmo/11/codetables/22068.table\
-	bufr/tables/0/wmo/11/codetables/22120.table\
-	bufr/tables/0/wmo/11/codetables/22121.table\
-	bufr/tables/0/wmo/11/codetables/22122.table\
-	bufr/tables/0/wmo/11/codetables/22123.table\
-	bufr/tables/0/wmo/11/codetables/23001.table\
-	bufr/tables/0/wmo/11/codetables/23002.table\
-	bufr/tables/0/wmo/11/codetables/23003.table\
-	bufr/tables/0/wmo/11/codetables/23004.table\
-	bufr/tables/0/wmo/11/codetables/23005.table\
-	bufr/tables/0/wmo/11/codetables/23006.table\
-	bufr/tables/0/wmo/11/codetables/23007.table\
-	bufr/tables/0/wmo/11/codetables/23008.table\
-	bufr/tables/0/wmo/11/codetables/23009.table\
-	bufr/tables/0/wmo/11/codetables/23016.table\
-	bufr/tables/0/wmo/11/codetables/23018.table\
-	bufr/tables/0/wmo/11/codetables/23031.table\
-	bufr/tables/0/wmo/11/codetables/23032.table\
-	bufr/tables/0/wmo/11/codetables/24003.table\
-	bufr/tables/0/wmo/11/codetables/25004.table\
-	bufr/tables/0/wmo/11/codetables/25005.table\
-	bufr/tables/0/wmo/11/codetables/25006.table\
-	bufr/tables/0/wmo/11/codetables/25009.table\
-	bufr/tables/0/wmo/11/codetables/25010.table\
-	bufr/tables/0/wmo/11/codetables/25011.table\
-	bufr/tables/0/wmo/11/codetables/25012.table\
-	bufr/tables/0/wmo/11/codetables/25013.table\
-	bufr/tables/0/wmo/11/codetables/25015.table\
-	bufr/tables/0/wmo/11/codetables/25017.table\
-	bufr/tables/0/wmo/11/codetables/25020.table\
-	bufr/tables/0/wmo/11/codetables/25021.table\
-	bufr/tables/0/wmo/11/codetables/25030.table\
-	bufr/tables/0/wmo/11/codetables/25032.table\
-	bufr/tables/0/wmo/11/codetables/25033.table\
-	bufr/tables/0/wmo/11/codetables/25034.table\
-	bufr/tables/0/wmo/11/codetables/25036.table\
-	bufr/tables/0/wmo/11/codetables/25040.table\
-	bufr/tables/0/wmo/11/codetables/25041.table\
-	bufr/tables/0/wmo/11/codetables/25042.table\
-	bufr/tables/0/wmo/11/codetables/25045.table\
-	bufr/tables/0/wmo/11/codetables/25046.table\
-	bufr/tables/0/wmo/11/codetables/25047.table\
-	bufr/tables/0/wmo/11/codetables/25048.table\
-	bufr/tables/0/wmo/11/codetables/25049.table\
-	bufr/tables/0/wmo/11/codetables/25051.table\
-	bufr/tables/0/wmo/11/codetables/25053.table\
-	bufr/tables/0/wmo/11/codetables/25069.table\
-	bufr/tables/0/wmo/11/codetables/25086.table\
-	bufr/tables/0/wmo/11/codetables/25093.table\
-	bufr/tables/0/wmo/11/codetables/25095.table\
-	bufr/tables/0/wmo/11/codetables/25096.table\
-	bufr/tables/0/wmo/11/codetables/25097.table\
-	bufr/tables/0/wmo/11/codetables/25098.table\
-	bufr/tables/0/wmo/11/codetables/25099.table\
-	bufr/tables/0/wmo/11/codetables/25110.table\
-	bufr/tables/0/wmo/11/codetables/25120.table\
-	bufr/tables/0/wmo/11/codetables/25122.table\
-	bufr/tables/0/wmo/11/codetables/25123.table\
-	bufr/tables/0/wmo/11/codetables/25124.table\
-	bufr/tables/0/wmo/11/codetables/26010.table\
-	bufr/tables/0/wmo/11/codetables/29001.table\
-	bufr/tables/0/wmo/11/codetables/29002.table\
-	bufr/tables/0/wmo/11/codetables/30031.table\
-	bufr/tables/0/wmo/11/codetables/30032.table\
-	bufr/tables/0/wmo/11/codetables/31021.table\
-	bufr/tables/0/wmo/11/codetables/31031.table\
-	bufr/tables/0/wmo/11/codetables/33002.table\
-	bufr/tables/0/wmo/11/codetables/33003.table\
-	bufr/tables/0/wmo/11/codetables/33005.table\
-	bufr/tables/0/wmo/11/codetables/33006.table\
-	bufr/tables/0/wmo/11/codetables/33015.table\
-	bufr/tables/0/wmo/11/codetables/33020.table\
-	bufr/tables/0/wmo/11/codetables/33021.table\
-	bufr/tables/0/wmo/11/codetables/33022.table\
-	bufr/tables/0/wmo/11/codetables/33023.table\
-	bufr/tables/0/wmo/11/codetables/33024.table\
-	bufr/tables/0/wmo/11/codetables/33025.table\
-	bufr/tables/0/wmo/11/codetables/33026.table\
-	bufr/tables/0/wmo/11/codetables/33027.table\
-	bufr/tables/0/wmo/11/codetables/33028.table\
-	bufr/tables/0/wmo/11/codetables/33030.table\
-	bufr/tables/0/wmo/11/codetables/33031.table\
-	bufr/tables/0/wmo/11/codetables/33032.table\
-	bufr/tables/0/wmo/11/codetables/33033.table\
-	bufr/tables/0/wmo/11/codetables/33035.table\
-	bufr/tables/0/wmo/11/codetables/33037.table\
-	bufr/tables/0/wmo/11/codetables/33038.table\
-	bufr/tables/0/wmo/11/codetables/33039.table\
-	bufr/tables/0/wmo/11/codetables/33041.table\
-	bufr/tables/0/wmo/11/codetables/33042.table\
-	bufr/tables/0/wmo/11/codetables/33043.table\
-	bufr/tables/0/wmo/11/codetables/33044.table\
-	bufr/tables/0/wmo/11/codetables/33047.table\
-	bufr/tables/0/wmo/11/codetables/33048.table\
-	bufr/tables/0/wmo/11/codetables/33049.table\
-	bufr/tables/0/wmo/11/codetables/33050.table\
-	bufr/tables/0/wmo/11/codetables/33052.table\
-	bufr/tables/0/wmo/11/codetables/33053.table\
-	bufr/tables/0/wmo/11/codetables/33060.table\
-	bufr/tables/0/wmo/11/codetables/35000.table\
-	bufr/tables/0/wmo/11/codetables/35001.table\
-	bufr/tables/0/wmo/11/codetables/35030.table\
-	bufr/tables/0/wmo/11/codetables/35031.table\
-	bufr/tables/0/wmo/11/codetables/35032.table\
-	bufr/tables/0/wmo/11/codetables/35033.table\
-	bufr/tables/0/wmo/11/codetables/35034.table\
-	bufr/tables/0/wmo/11/codetables/40011.table\
-	bufr/tables/0/wmo/11/codetables/40012.table\
-	bufr/tables/0/wmo/11/codetables/40013.table\
-	bufr/tables/0/wmo/11/codetables/4059.table\
-	bufr/tables/0/wmo/11/codetables/8001.table\
-	bufr/tables/0/wmo/11/codetables/8002.table\
-	bufr/tables/0/wmo/11/codetables/8003.table\
-	bufr/tables/0/wmo/11/codetables/8004.table\
-	bufr/tables/0/wmo/11/codetables/8005.table\
-	bufr/tables/0/wmo/11/codetables/8006.table\
-	bufr/tables/0/wmo/11/codetables/8007.table\
-	bufr/tables/0/wmo/11/codetables/8008.table\
-	bufr/tables/0/wmo/11/codetables/8009.table\
-	bufr/tables/0/wmo/11/codetables/8010.table\
-	bufr/tables/0/wmo/11/codetables/8011.table\
-	bufr/tables/0/wmo/11/codetables/8012.table\
-	bufr/tables/0/wmo/11/codetables/8013.table\
-	bufr/tables/0/wmo/11/codetables/8014.table\
-	bufr/tables/0/wmo/11/codetables/8016.table\
-	bufr/tables/0/wmo/11/codetables/8017.table\
-	bufr/tables/0/wmo/11/codetables/8018.table\
-	bufr/tables/0/wmo/11/codetables/8021.table\
-	bufr/tables/0/wmo/11/codetables/8023.table\
-	bufr/tables/0/wmo/11/codetables/8024.table\
-	bufr/tables/0/wmo/11/codetables/8025.table\
-	bufr/tables/0/wmo/11/codetables/8026.table\
-	bufr/tables/0/wmo/11/codetables/8029.table\
-	bufr/tables/0/wmo/11/codetables/8033.table\
-	bufr/tables/0/wmo/11/codetables/8035.table\
-	bufr/tables/0/wmo/11/codetables/8036.table\
-	bufr/tables/0/wmo/11/codetables/8039.table\
-	bufr/tables/0/wmo/11/codetables/8040.table\
-	bufr/tables/0/wmo/11/codetables/8041.table\
-	bufr/tables/0/wmo/11/codetables/8042.table\
-	bufr/tables/0/wmo/11/codetables/8043.table\
-	bufr/tables/0/wmo/11/codetables/8050.table\
-	bufr/tables/0/wmo/11/codetables/8051.table\
-	bufr/tables/0/wmo/11/codetables/8052.table\
-	bufr/tables/0/wmo/11/codetables/8053.table\
-	bufr/tables/0/wmo/11/codetables/8054.table\
-	bufr/tables/0/wmo/11/codetables/8060.table\
-	bufr/tables/0/wmo/11/codetables/8065.table\
-	bufr/tables/0/wmo/11/codetables/8066.table\
-	bufr/tables/0/wmo/11/codetables/8070.table\
-	bufr/tables/0/wmo/11/codetables/8072.table\
-	bufr/tables/0/wmo/11/codetables/8074.table\
-	bufr/tables/0/wmo/11/codetables/8075.table\
-	bufr/tables/0/wmo/11/codetables/8076.table\
-	bufr/tables/0/wmo/11/codetables/8077.table\
-	bufr/tables/0/wmo/11/codetables/8079.table\
-	bufr/tables/0/wmo/11/codetables/8080.table\
-	bufr/tables/0/wmo/11/codetables/8081.table\
-	bufr/tables/0/wmo/11/codetables/8082.table\
-	bufr/tables/0/wmo/11/codetables/8083.table\
-	bufr/tables/0/wmo/11/codetables/8085.table
-
-definitionsbufr_tables_0_wmo_12dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/12
-dist_definitionsbufr_tables_0_wmo_12_DATA = \
-	bufr/tables/0/wmo/12/element.table\
-	bufr/tables/0/wmo/12/sequence.def
-
-definitionsbufr_tables_0_wmo_12_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/12/codetables
-dist_definitionsbufr_tables_0_wmo_12_codetables_DATA = \
-	bufr/tables/0/wmo/12/codetables/1003.table\
-	bufr/tables/0/wmo/12/codetables/10063.table\
-	bufr/tables/0/wmo/12/codetables/10064.table\
-	bufr/tables/0/wmo/12/codetables/1007.table\
-	bufr/tables/0/wmo/12/codetables/1031.table\
-	bufr/tables/0/wmo/12/codetables/1032.table\
-	bufr/tables/0/wmo/12/codetables/1033.table\
-	bufr/tables/0/wmo/12/codetables/1035.table\
-	bufr/tables/0/wmo/12/codetables/1090.table\
-	bufr/tables/0/wmo/12/codetables/1092.table\
-	bufr/tables/0/wmo/12/codetables/11031.table\
-	bufr/tables/0/wmo/12/codetables/11037.table\
-	bufr/tables/0/wmo/12/codetables/11038.table\
-	bufr/tables/0/wmo/12/codetables/11039.table\
-	bufr/tables/0/wmo/12/codetables/13038.table\
-	bufr/tables/0/wmo/12/codetables/13039.table\
-	bufr/tables/0/wmo/12/codetables/13040.table\
-	bufr/tables/0/wmo/12/codetables/13041.table\
-	bufr/tables/0/wmo/12/codetables/13051.table\
-	bufr/tables/0/wmo/12/codetables/13056.table\
-	bufr/tables/0/wmo/12/codetables/13057.table\
-	bufr/tables/0/wmo/12/codetables/15025.table\
-	bufr/tables/0/wmo/12/codetables/19001.table\
-	bufr/tables/0/wmo/12/codetables/19008.table\
-	bufr/tables/0/wmo/12/codetables/19010.table\
-	bufr/tables/0/wmo/12/codetables/20003.table\
-	bufr/tables/0/wmo/12/codetables/20004.table\
-	bufr/tables/0/wmo/12/codetables/20005.table\
-	bufr/tables/0/wmo/12/codetables/20008.table\
-	bufr/tables/0/wmo/12/codetables/20009.table\
-	bufr/tables/0/wmo/12/codetables/2001.table\
-	bufr/tables/0/wmo/12/codetables/20011.table\
-	bufr/tables/0/wmo/12/codetables/20012.table\
-	bufr/tables/0/wmo/12/codetables/20017.table\
-	bufr/tables/0/wmo/12/codetables/20018.table\
-	bufr/tables/0/wmo/12/codetables/2002.table\
-	bufr/tables/0/wmo/12/codetables/20021.table\
-	bufr/tables/0/wmo/12/codetables/20022.table\
-	bufr/tables/0/wmo/12/codetables/20023.table\
-	bufr/tables/0/wmo/12/codetables/20024.table\
-	bufr/tables/0/wmo/12/codetables/20025.table\
-	bufr/tables/0/wmo/12/codetables/20026.table\
-	bufr/tables/0/wmo/12/codetables/20027.table\
-	bufr/tables/0/wmo/12/codetables/20029.table\
-	bufr/tables/0/wmo/12/codetables/2003.table\
-	bufr/tables/0/wmo/12/codetables/20032.table\
-	bufr/tables/0/wmo/12/codetables/20033.table\
-	bufr/tables/0/wmo/12/codetables/20034.table\
-	bufr/tables/0/wmo/12/codetables/20035.table\
-	bufr/tables/0/wmo/12/codetables/20036.table\
-	bufr/tables/0/wmo/12/codetables/20037.table\
-	bufr/tables/0/wmo/12/codetables/2004.table\
-	bufr/tables/0/wmo/12/codetables/20040.table\
-	bufr/tables/0/wmo/12/codetables/20041.table\
-	bufr/tables/0/wmo/12/codetables/20042.table\
-	bufr/tables/0/wmo/12/codetables/20045.table\
-	bufr/tables/0/wmo/12/codetables/20050.table\
-	bufr/tables/0/wmo/12/codetables/20055.table\
-	bufr/tables/0/wmo/12/codetables/20056.table\
-	bufr/tables/0/wmo/12/codetables/20062.table\
-	bufr/tables/0/wmo/12/codetables/20063.table\
-	bufr/tables/0/wmo/12/codetables/20071.table\
-	bufr/tables/0/wmo/12/codetables/20086.table\
-	bufr/tables/0/wmo/12/codetables/20090.table\
-	bufr/tables/0/wmo/12/codetables/20101.table\
-	bufr/tables/0/wmo/12/codetables/20102.table\
-	bufr/tables/0/wmo/12/codetables/2011.table\
-	bufr/tables/0/wmo/12/codetables/2012.table\
-	bufr/tables/0/wmo/12/codetables/2013.table\
-	bufr/tables/0/wmo/12/codetables/2014.table\
-	bufr/tables/0/wmo/12/codetables/2015.table\
-	bufr/tables/0/wmo/12/codetables/2016.table\
-	bufr/tables/0/wmo/12/codetables/2019.table\
-	bufr/tables/0/wmo/12/codetables/2020.table\
-	bufr/tables/0/wmo/12/codetables/2021.table\
-	bufr/tables/0/wmo/12/codetables/2022.table\
-	bufr/tables/0/wmo/12/codetables/2023.table\
-	bufr/tables/0/wmo/12/codetables/2024.table\
-	bufr/tables/0/wmo/12/codetables/2025.table\
-	bufr/tables/0/wmo/12/codetables/2030.table\
-	bufr/tables/0/wmo/12/codetables/2031.table\
-	bufr/tables/0/wmo/12/codetables/2032.table\
-	bufr/tables/0/wmo/12/codetables/2033.table\
-	bufr/tables/0/wmo/12/codetables/2034.table\
-	bufr/tables/0/wmo/12/codetables/2036.table\
-	bufr/tables/0/wmo/12/codetables/2037.table\
-	bufr/tables/0/wmo/12/codetables/2038.table\
-	bufr/tables/0/wmo/12/codetables/2039.table\
-	bufr/tables/0/wmo/12/codetables/2040.table\
-	bufr/tables/0/wmo/12/codetables/2041.table\
-	bufr/tables/0/wmo/12/codetables/2044.table\
-	bufr/tables/0/wmo/12/codetables/2045.table\
-	bufr/tables/0/wmo/12/codetables/2046.table\
-	bufr/tables/0/wmo/12/codetables/2048.table\
-	bufr/tables/0/wmo/12/codetables/2049.table\
-	bufr/tables/0/wmo/12/codetables/2050.table\
-	bufr/tables/0/wmo/12/codetables/2051.table\
-	bufr/tables/0/wmo/12/codetables/2052.table\
-	bufr/tables/0/wmo/12/codetables/2053.table\
-	bufr/tables/0/wmo/12/codetables/2054.table\
-	bufr/tables/0/wmo/12/codetables/2055.table\
-	bufr/tables/0/wmo/12/codetables/2056.table\
-	bufr/tables/0/wmo/12/codetables/2057.table\
-	bufr/tables/0/wmo/12/codetables/2058.table\
-	bufr/tables/0/wmo/12/codetables/2059.table\
-	bufr/tables/0/wmo/12/codetables/2060.table\
-	bufr/tables/0/wmo/12/codetables/2061.table\
-	bufr/tables/0/wmo/12/codetables/2062.table\
-	bufr/tables/0/wmo/12/codetables/2064.table\
-	bufr/tables/0/wmo/12/codetables/2066.table\
-	bufr/tables/0/wmo/12/codetables/2070.table\
-	bufr/tables/0/wmo/12/codetables/2080.table\
-	bufr/tables/0/wmo/12/codetables/2081.table\
-	bufr/tables/0/wmo/12/codetables/2083.table\
-	bufr/tables/0/wmo/12/codetables/2084.table\
-	bufr/tables/0/wmo/12/codetables/2095.table\
-	bufr/tables/0/wmo/12/codetables/2096.table\
-	bufr/tables/0/wmo/12/codetables/2097.table\
-	bufr/tables/0/wmo/12/codetables/2098.table\
-	bufr/tables/0/wmo/12/codetables/2101.table\
-	bufr/tables/0/wmo/12/codetables/2103.table\
-	bufr/tables/0/wmo/12/codetables/2104.table\
-	bufr/tables/0/wmo/12/codetables/21066.table\
-	bufr/tables/0/wmo/12/codetables/21067.table\
-	bufr/tables/0/wmo/12/codetables/21068.table\
-	bufr/tables/0/wmo/12/codetables/21069.table\
-	bufr/tables/0/wmo/12/codetables/21070.table\
-	bufr/tables/0/wmo/12/codetables/21072.table\
-	bufr/tables/0/wmo/12/codetables/21073.table\
-	bufr/tables/0/wmo/12/codetables/21076.table\
-	bufr/tables/0/wmo/12/codetables/21109.table\
-	bufr/tables/0/wmo/12/codetables/21115.table\
-	bufr/tables/0/wmo/12/codetables/21116.table\
-	bufr/tables/0/wmo/12/codetables/21119.table\
-	bufr/tables/0/wmo/12/codetables/21144.table\
-	bufr/tables/0/wmo/12/codetables/2115.table\
-	bufr/tables/0/wmo/12/codetables/21150.table\
-	bufr/tables/0/wmo/12/codetables/21155.table\
-	bufr/tables/0/wmo/12/codetables/21158.table\
-	bufr/tables/0/wmo/12/codetables/21159.table\
-	bufr/tables/0/wmo/12/codetables/21169.table\
-	bufr/tables/0/wmo/12/codetables/2119.table\
-	bufr/tables/0/wmo/12/codetables/2131.table\
-	bufr/tables/0/wmo/12/codetables/2143.table\
-	bufr/tables/0/wmo/12/codetables/2144.table\
-	bufr/tables/0/wmo/12/codetables/2145.table\
-	bufr/tables/0/wmo/12/codetables/2146.table\
-	bufr/tables/0/wmo/12/codetables/2148.table\
-	bufr/tables/0/wmo/12/codetables/2149.table\
-	bufr/tables/0/wmo/12/codetables/2150.table\
-	bufr/tables/0/wmo/12/codetables/2151.table\
-	bufr/tables/0/wmo/12/codetables/2152.table\
-	bufr/tables/0/wmo/12/codetables/2158.table\
-	bufr/tables/0/wmo/12/codetables/2159.table\
-	bufr/tables/0/wmo/12/codetables/2163.table\
-	bufr/tables/0/wmo/12/codetables/2164.table\
-	bufr/tables/0/wmo/12/codetables/2166.table\
-	bufr/tables/0/wmo/12/codetables/2167.table\
-	bufr/tables/0/wmo/12/codetables/2169.table\
-	bufr/tables/0/wmo/12/codetables/2172.table\
-	bufr/tables/0/wmo/12/codetables/2175.table\
-	bufr/tables/0/wmo/12/codetables/2176.table\
-	bufr/tables/0/wmo/12/codetables/2177.table\
-	bufr/tables/0/wmo/12/codetables/2178.table\
-	bufr/tables/0/wmo/12/codetables/2179.table\
-	bufr/tables/0/wmo/12/codetables/2180.table\
-	bufr/tables/0/wmo/12/codetables/2181.table\
-	bufr/tables/0/wmo/12/codetables/2182.table\
-	bufr/tables/0/wmo/12/codetables/2183.table\
-	bufr/tables/0/wmo/12/codetables/2184.table\
-	bufr/tables/0/wmo/12/codetables/2185.table\
-	bufr/tables/0/wmo/12/codetables/2186.table\
-	bufr/tables/0/wmo/12/codetables/2187.table\
-	bufr/tables/0/wmo/12/codetables/2188.table\
-	bufr/tables/0/wmo/12/codetables/2189.table\
-	bufr/tables/0/wmo/12/codetables/22056.table\
-	bufr/tables/0/wmo/12/codetables/22060.table\
-	bufr/tables/0/wmo/12/codetables/22061.table\
-	bufr/tables/0/wmo/12/codetables/22067.table\
-	bufr/tables/0/wmo/12/codetables/22068.table\
-	bufr/tables/0/wmo/12/codetables/22120.table\
-	bufr/tables/0/wmo/12/codetables/22121.table\
-	bufr/tables/0/wmo/12/codetables/22122.table\
-	bufr/tables/0/wmo/12/codetables/22123.table\
-	bufr/tables/0/wmo/12/codetables/23001.table\
-	bufr/tables/0/wmo/12/codetables/23002.table\
-	bufr/tables/0/wmo/12/codetables/23003.table\
-	bufr/tables/0/wmo/12/codetables/23004.table\
-	bufr/tables/0/wmo/12/codetables/23005.table\
-	bufr/tables/0/wmo/12/codetables/23006.table\
-	bufr/tables/0/wmo/12/codetables/23007.table\
-	bufr/tables/0/wmo/12/codetables/23008.table\
-	bufr/tables/0/wmo/12/codetables/23009.table\
-	bufr/tables/0/wmo/12/codetables/23016.table\
-	bufr/tables/0/wmo/12/codetables/23018.table\
-	bufr/tables/0/wmo/12/codetables/23031.table\
-	bufr/tables/0/wmo/12/codetables/23032.table\
-	bufr/tables/0/wmo/12/codetables/24003.table\
-	bufr/tables/0/wmo/12/codetables/25004.table\
-	bufr/tables/0/wmo/12/codetables/25005.table\
-	bufr/tables/0/wmo/12/codetables/25006.table\
-	bufr/tables/0/wmo/12/codetables/25009.table\
-	bufr/tables/0/wmo/12/codetables/25010.table\
-	bufr/tables/0/wmo/12/codetables/25011.table\
-	bufr/tables/0/wmo/12/codetables/25012.table\
-	bufr/tables/0/wmo/12/codetables/25013.table\
-	bufr/tables/0/wmo/12/codetables/25015.table\
-	bufr/tables/0/wmo/12/codetables/25017.table\
-	bufr/tables/0/wmo/12/codetables/25020.table\
-	bufr/tables/0/wmo/12/codetables/25021.table\
-	bufr/tables/0/wmo/12/codetables/25030.table\
-	bufr/tables/0/wmo/12/codetables/25032.table\
-	bufr/tables/0/wmo/12/codetables/25033.table\
-	bufr/tables/0/wmo/12/codetables/25034.table\
-	bufr/tables/0/wmo/12/codetables/25036.table\
-	bufr/tables/0/wmo/12/codetables/25040.table\
-	bufr/tables/0/wmo/12/codetables/25041.table\
-	bufr/tables/0/wmo/12/codetables/25042.table\
-	bufr/tables/0/wmo/12/codetables/25045.table\
-	bufr/tables/0/wmo/12/codetables/25046.table\
-	bufr/tables/0/wmo/12/codetables/25047.table\
-	bufr/tables/0/wmo/12/codetables/25048.table\
-	bufr/tables/0/wmo/12/codetables/25049.table\
-	bufr/tables/0/wmo/12/codetables/25051.table\
-	bufr/tables/0/wmo/12/codetables/25053.table\
-	bufr/tables/0/wmo/12/codetables/25069.table\
-	bufr/tables/0/wmo/12/codetables/25086.table\
-	bufr/tables/0/wmo/12/codetables/25093.table\
-	bufr/tables/0/wmo/12/codetables/25095.table\
-	bufr/tables/0/wmo/12/codetables/25096.table\
-	bufr/tables/0/wmo/12/codetables/25097.table\
-	bufr/tables/0/wmo/12/codetables/25098.table\
-	bufr/tables/0/wmo/12/codetables/25099.table\
-	bufr/tables/0/wmo/12/codetables/25110.table\
-	bufr/tables/0/wmo/12/codetables/25120.table\
-	bufr/tables/0/wmo/12/codetables/25122.table\
-	bufr/tables/0/wmo/12/codetables/25123.table\
-	bufr/tables/0/wmo/12/codetables/25124.table\
-	bufr/tables/0/wmo/12/codetables/26010.table\
-	bufr/tables/0/wmo/12/codetables/29001.table\
-	bufr/tables/0/wmo/12/codetables/29002.table\
-	bufr/tables/0/wmo/12/codetables/30031.table\
-	bufr/tables/0/wmo/12/codetables/30032.table\
-	bufr/tables/0/wmo/12/codetables/31021.table\
-	bufr/tables/0/wmo/12/codetables/31031.table\
-	bufr/tables/0/wmo/12/codetables/33002.table\
-	bufr/tables/0/wmo/12/codetables/33003.table\
-	bufr/tables/0/wmo/12/codetables/33005.table\
-	bufr/tables/0/wmo/12/codetables/33006.table\
-	bufr/tables/0/wmo/12/codetables/33015.table\
-	bufr/tables/0/wmo/12/codetables/33020.table\
-	bufr/tables/0/wmo/12/codetables/33021.table\
-	bufr/tables/0/wmo/12/codetables/33022.table\
-	bufr/tables/0/wmo/12/codetables/33023.table\
-	bufr/tables/0/wmo/12/codetables/33024.table\
-	bufr/tables/0/wmo/12/codetables/33025.table\
-	bufr/tables/0/wmo/12/codetables/33026.table\
-	bufr/tables/0/wmo/12/codetables/33027.table\
-	bufr/tables/0/wmo/12/codetables/33028.table\
-	bufr/tables/0/wmo/12/codetables/33030.table\
-	bufr/tables/0/wmo/12/codetables/33031.table\
-	bufr/tables/0/wmo/12/codetables/33032.table\
-	bufr/tables/0/wmo/12/codetables/33033.table\
-	bufr/tables/0/wmo/12/codetables/33035.table\
-	bufr/tables/0/wmo/12/codetables/33037.table\
-	bufr/tables/0/wmo/12/codetables/33038.table\
-	bufr/tables/0/wmo/12/codetables/33039.table\
-	bufr/tables/0/wmo/12/codetables/33041.table\
-	bufr/tables/0/wmo/12/codetables/33042.table\
-	bufr/tables/0/wmo/12/codetables/33043.table\
-	bufr/tables/0/wmo/12/codetables/33044.table\
-	bufr/tables/0/wmo/12/codetables/33047.table\
-	bufr/tables/0/wmo/12/codetables/33048.table\
-	bufr/tables/0/wmo/12/codetables/33049.table\
-	bufr/tables/0/wmo/12/codetables/33050.table\
-	bufr/tables/0/wmo/12/codetables/33052.table\
-	bufr/tables/0/wmo/12/codetables/33053.table\
-	bufr/tables/0/wmo/12/codetables/33060.table\
-	bufr/tables/0/wmo/12/codetables/35000.table\
-	bufr/tables/0/wmo/12/codetables/35001.table\
-	bufr/tables/0/wmo/12/codetables/35030.table\
-	bufr/tables/0/wmo/12/codetables/35031.table\
-	bufr/tables/0/wmo/12/codetables/35032.table\
-	bufr/tables/0/wmo/12/codetables/35033.table\
-	bufr/tables/0/wmo/12/codetables/35034.table\
-	bufr/tables/0/wmo/12/codetables/40011.table\
-	bufr/tables/0/wmo/12/codetables/40012.table\
-	bufr/tables/0/wmo/12/codetables/40013.table\
-	bufr/tables/0/wmo/12/codetables/4059.table\
-	bufr/tables/0/wmo/12/codetables/8001.table\
-	bufr/tables/0/wmo/12/codetables/8002.table\
-	bufr/tables/0/wmo/12/codetables/8003.table\
-	bufr/tables/0/wmo/12/codetables/8004.table\
-	bufr/tables/0/wmo/12/codetables/8005.table\
-	bufr/tables/0/wmo/12/codetables/8006.table\
-	bufr/tables/0/wmo/12/codetables/8007.table\
-	bufr/tables/0/wmo/12/codetables/8008.table\
-	bufr/tables/0/wmo/12/codetables/8009.table\
-	bufr/tables/0/wmo/12/codetables/8010.table\
-	bufr/tables/0/wmo/12/codetables/8011.table\
-	bufr/tables/0/wmo/12/codetables/8012.table\
-	bufr/tables/0/wmo/12/codetables/8013.table\
-	bufr/tables/0/wmo/12/codetables/8014.table\
-	bufr/tables/0/wmo/12/codetables/8016.table\
-	bufr/tables/0/wmo/12/codetables/8017.table\
-	bufr/tables/0/wmo/12/codetables/8018.table\
-	bufr/tables/0/wmo/12/codetables/8021.table\
-	bufr/tables/0/wmo/12/codetables/8023.table\
-	bufr/tables/0/wmo/12/codetables/8024.table\
-	bufr/tables/0/wmo/12/codetables/8025.table\
-	bufr/tables/0/wmo/12/codetables/8026.table\
-	bufr/tables/0/wmo/12/codetables/8029.table\
-	bufr/tables/0/wmo/12/codetables/8033.table\
-	bufr/tables/0/wmo/12/codetables/8035.table\
-	bufr/tables/0/wmo/12/codetables/8036.table\
-	bufr/tables/0/wmo/12/codetables/8039.table\
-	bufr/tables/0/wmo/12/codetables/8040.table\
-	bufr/tables/0/wmo/12/codetables/8041.table\
-	bufr/tables/0/wmo/12/codetables/8042.table\
-	bufr/tables/0/wmo/12/codetables/8043.table\
-	bufr/tables/0/wmo/12/codetables/8050.table\
-	bufr/tables/0/wmo/12/codetables/8051.table\
-	bufr/tables/0/wmo/12/codetables/8052.table\
-	bufr/tables/0/wmo/12/codetables/8053.table\
-	bufr/tables/0/wmo/12/codetables/8054.table\
-	bufr/tables/0/wmo/12/codetables/8060.table\
-	bufr/tables/0/wmo/12/codetables/8065.table\
-	bufr/tables/0/wmo/12/codetables/8066.table\
-	bufr/tables/0/wmo/12/codetables/8070.table\
-	bufr/tables/0/wmo/12/codetables/8072.table\
-	bufr/tables/0/wmo/12/codetables/8074.table\
-	bufr/tables/0/wmo/12/codetables/8075.table\
-	bufr/tables/0/wmo/12/codetables/8076.table\
-	bufr/tables/0/wmo/12/codetables/8077.table\
-	bufr/tables/0/wmo/12/codetables/8079.table\
-	bufr/tables/0/wmo/12/codetables/8080.table\
-	bufr/tables/0/wmo/12/codetables/8081.table\
-	bufr/tables/0/wmo/12/codetables/8082.table\
-	bufr/tables/0/wmo/12/codetables/8083.table\
-	bufr/tables/0/wmo/12/codetables/8085.table
-
-definitionsbufr_tables_0_wmo_13dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/13
-dist_definitionsbufr_tables_0_wmo_13_DATA = \
-	bufr/tables/0/wmo/13/element.table\
-	bufr/tables/0/wmo/13/sequence.def
-
-definitionsbufr_tables_0_wmo_13_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/13/codetables
-dist_definitionsbufr_tables_0_wmo_13_codetables_DATA = \
-	bufr/tables/0/wmo/13/codetables/1003.table\
-	bufr/tables/0/wmo/13/codetables/10063.table\
-	bufr/tables/0/wmo/13/codetables/10064.table\
-	bufr/tables/0/wmo/13/codetables/1007.table\
-	bufr/tables/0/wmo/13/codetables/1031.table\
-	bufr/tables/0/wmo/13/codetables/1032.table\
-	bufr/tables/0/wmo/13/codetables/1033.table\
-	bufr/tables/0/wmo/13/codetables/1035.table\
-	bufr/tables/0/wmo/13/codetables/1090.table\
-	bufr/tables/0/wmo/13/codetables/1092.table\
-	bufr/tables/0/wmo/13/codetables/11031.table\
-	bufr/tables/0/wmo/13/codetables/11037.table\
-	bufr/tables/0/wmo/13/codetables/11038.table\
-	bufr/tables/0/wmo/13/codetables/11039.table\
-	bufr/tables/0/wmo/13/codetables/13038.table\
-	bufr/tables/0/wmo/13/codetables/13039.table\
-	bufr/tables/0/wmo/13/codetables/13040.table\
-	bufr/tables/0/wmo/13/codetables/13041.table\
-	bufr/tables/0/wmo/13/codetables/13051.table\
-	bufr/tables/0/wmo/13/codetables/13056.table\
-	bufr/tables/0/wmo/13/codetables/13057.table\
-	bufr/tables/0/wmo/13/codetables/15025.table\
-	bufr/tables/0/wmo/13/codetables/19001.table\
-	bufr/tables/0/wmo/13/codetables/19008.table\
-	bufr/tables/0/wmo/13/codetables/19010.table\
-	bufr/tables/0/wmo/13/codetables/20003.table\
-	bufr/tables/0/wmo/13/codetables/20004.table\
-	bufr/tables/0/wmo/13/codetables/20005.table\
-	bufr/tables/0/wmo/13/codetables/20008.table\
-	bufr/tables/0/wmo/13/codetables/20009.table\
-	bufr/tables/0/wmo/13/codetables/2001.table\
-	bufr/tables/0/wmo/13/codetables/20011.table\
-	bufr/tables/0/wmo/13/codetables/20012.table\
-	bufr/tables/0/wmo/13/codetables/20017.table\
-	bufr/tables/0/wmo/13/codetables/20018.table\
-	bufr/tables/0/wmo/13/codetables/2002.table\
-	bufr/tables/0/wmo/13/codetables/20021.table\
-	bufr/tables/0/wmo/13/codetables/20022.table\
-	bufr/tables/0/wmo/13/codetables/20023.table\
-	bufr/tables/0/wmo/13/codetables/20024.table\
-	bufr/tables/0/wmo/13/codetables/20025.table\
-	bufr/tables/0/wmo/13/codetables/20026.table\
-	bufr/tables/0/wmo/13/codetables/20027.table\
-	bufr/tables/0/wmo/13/codetables/20029.table\
-	bufr/tables/0/wmo/13/codetables/2003.table\
-	bufr/tables/0/wmo/13/codetables/20032.table\
-	bufr/tables/0/wmo/13/codetables/20033.table\
-	bufr/tables/0/wmo/13/codetables/20034.table\
-	bufr/tables/0/wmo/13/codetables/20035.table\
-	bufr/tables/0/wmo/13/codetables/20036.table\
-	bufr/tables/0/wmo/13/codetables/20037.table\
-	bufr/tables/0/wmo/13/codetables/2004.table\
-	bufr/tables/0/wmo/13/codetables/20040.table\
-	bufr/tables/0/wmo/13/codetables/20041.table\
-	bufr/tables/0/wmo/13/codetables/20042.table\
-	bufr/tables/0/wmo/13/codetables/20045.table\
-	bufr/tables/0/wmo/13/codetables/20050.table\
-	bufr/tables/0/wmo/13/codetables/20055.table\
-	bufr/tables/0/wmo/13/codetables/20056.table\
-	bufr/tables/0/wmo/13/codetables/20062.table\
-	bufr/tables/0/wmo/13/codetables/20063.table\
-	bufr/tables/0/wmo/13/codetables/20071.table\
-	bufr/tables/0/wmo/13/codetables/20086.table\
-	bufr/tables/0/wmo/13/codetables/20090.table\
-	bufr/tables/0/wmo/13/codetables/20101.table\
-	bufr/tables/0/wmo/13/codetables/20102.table\
-	bufr/tables/0/wmo/13/codetables/2011.table\
-	bufr/tables/0/wmo/13/codetables/2012.table\
-	bufr/tables/0/wmo/13/codetables/2013.table\
-	bufr/tables/0/wmo/13/codetables/2014.table\
-	bufr/tables/0/wmo/13/codetables/2015.table\
-	bufr/tables/0/wmo/13/codetables/2016.table\
-	bufr/tables/0/wmo/13/codetables/2019.table\
-	bufr/tables/0/wmo/13/codetables/2020.table\
-	bufr/tables/0/wmo/13/codetables/2021.table\
-	bufr/tables/0/wmo/13/codetables/2022.table\
-	bufr/tables/0/wmo/13/codetables/2023.table\
-	bufr/tables/0/wmo/13/codetables/2024.table\
-	bufr/tables/0/wmo/13/codetables/2025.table\
-	bufr/tables/0/wmo/13/codetables/2030.table\
-	bufr/tables/0/wmo/13/codetables/2031.table\
-	bufr/tables/0/wmo/13/codetables/2032.table\
-	bufr/tables/0/wmo/13/codetables/2033.table\
-	bufr/tables/0/wmo/13/codetables/2034.table\
-	bufr/tables/0/wmo/13/codetables/2036.table\
-	bufr/tables/0/wmo/13/codetables/2037.table\
-	bufr/tables/0/wmo/13/codetables/2038.table\
-	bufr/tables/0/wmo/13/codetables/2039.table\
-	bufr/tables/0/wmo/13/codetables/2040.table\
-	bufr/tables/0/wmo/13/codetables/2041.table\
-	bufr/tables/0/wmo/13/codetables/2044.table\
-	bufr/tables/0/wmo/13/codetables/2045.table\
-	bufr/tables/0/wmo/13/codetables/2046.table\
-	bufr/tables/0/wmo/13/codetables/2048.table\
-	bufr/tables/0/wmo/13/codetables/2049.table\
-	bufr/tables/0/wmo/13/codetables/2050.table\
-	bufr/tables/0/wmo/13/codetables/2051.table\
-	bufr/tables/0/wmo/13/codetables/2052.table\
-	bufr/tables/0/wmo/13/codetables/2053.table\
-	bufr/tables/0/wmo/13/codetables/2054.table\
-	bufr/tables/0/wmo/13/codetables/2055.table\
-	bufr/tables/0/wmo/13/codetables/2056.table\
-	bufr/tables/0/wmo/13/codetables/2057.table\
-	bufr/tables/0/wmo/13/codetables/2058.table\
-	bufr/tables/0/wmo/13/codetables/2059.table\
-	bufr/tables/0/wmo/13/codetables/2060.table\
-	bufr/tables/0/wmo/13/codetables/2061.table\
-	bufr/tables/0/wmo/13/codetables/2062.table\
-	bufr/tables/0/wmo/13/codetables/2064.table\
-	bufr/tables/0/wmo/13/codetables/2066.table\
-	bufr/tables/0/wmo/13/codetables/2070.table\
-	bufr/tables/0/wmo/13/codetables/2080.table\
-	bufr/tables/0/wmo/13/codetables/2081.table\
-	bufr/tables/0/wmo/13/codetables/2083.table\
-	bufr/tables/0/wmo/13/codetables/2084.table\
-	bufr/tables/0/wmo/13/codetables/2095.table\
-	bufr/tables/0/wmo/13/codetables/2096.table\
-	bufr/tables/0/wmo/13/codetables/2097.table\
-	bufr/tables/0/wmo/13/codetables/2098.table\
-	bufr/tables/0/wmo/13/codetables/2101.table\
-	bufr/tables/0/wmo/13/codetables/2103.table\
-	bufr/tables/0/wmo/13/codetables/2104.table\
-	bufr/tables/0/wmo/13/codetables/21066.table\
-	bufr/tables/0/wmo/13/codetables/21067.table\
-	bufr/tables/0/wmo/13/codetables/21068.table\
-	bufr/tables/0/wmo/13/codetables/21069.table\
-	bufr/tables/0/wmo/13/codetables/21070.table\
-	bufr/tables/0/wmo/13/codetables/21072.table\
-	bufr/tables/0/wmo/13/codetables/21073.table\
-	bufr/tables/0/wmo/13/codetables/21076.table\
-	bufr/tables/0/wmo/13/codetables/21109.table\
-	bufr/tables/0/wmo/13/codetables/21115.table\
-	bufr/tables/0/wmo/13/codetables/21116.table\
-	bufr/tables/0/wmo/13/codetables/21119.table\
-	bufr/tables/0/wmo/13/codetables/21144.table\
-	bufr/tables/0/wmo/13/codetables/2115.table\
-	bufr/tables/0/wmo/13/codetables/21150.table\
-	bufr/tables/0/wmo/13/codetables/21155.table\
-	bufr/tables/0/wmo/13/codetables/21158.table\
-	bufr/tables/0/wmo/13/codetables/21159.table\
-	bufr/tables/0/wmo/13/codetables/21169.table\
-	bufr/tables/0/wmo/13/codetables/2119.table\
-	bufr/tables/0/wmo/13/codetables/2131.table\
-	bufr/tables/0/wmo/13/codetables/2143.table\
-	bufr/tables/0/wmo/13/codetables/2144.table\
-	bufr/tables/0/wmo/13/codetables/2145.table\
-	bufr/tables/0/wmo/13/codetables/2146.table\
-	bufr/tables/0/wmo/13/codetables/2148.table\
-	bufr/tables/0/wmo/13/codetables/2149.table\
-	bufr/tables/0/wmo/13/codetables/2150.table\
-	bufr/tables/0/wmo/13/codetables/2151.table\
-	bufr/tables/0/wmo/13/codetables/2152.table\
-	bufr/tables/0/wmo/13/codetables/2158.table\
-	bufr/tables/0/wmo/13/codetables/2159.table\
-	bufr/tables/0/wmo/13/codetables/2163.table\
-	bufr/tables/0/wmo/13/codetables/2164.table\
-	bufr/tables/0/wmo/13/codetables/2166.table\
-	bufr/tables/0/wmo/13/codetables/2167.table\
-	bufr/tables/0/wmo/13/codetables/2169.table\
-	bufr/tables/0/wmo/13/codetables/2172.table\
-	bufr/tables/0/wmo/13/codetables/2175.table\
-	bufr/tables/0/wmo/13/codetables/2176.table\
-	bufr/tables/0/wmo/13/codetables/2177.table\
-	bufr/tables/0/wmo/13/codetables/2178.table\
-	bufr/tables/0/wmo/13/codetables/2179.table\
-	bufr/tables/0/wmo/13/codetables/2180.table\
-	bufr/tables/0/wmo/13/codetables/2181.table\
-	bufr/tables/0/wmo/13/codetables/2182.table\
-	bufr/tables/0/wmo/13/codetables/2183.table\
-	bufr/tables/0/wmo/13/codetables/2184.table\
-	bufr/tables/0/wmo/13/codetables/2185.table\
-	bufr/tables/0/wmo/13/codetables/2186.table\
-	bufr/tables/0/wmo/13/codetables/2187.table\
-	bufr/tables/0/wmo/13/codetables/2188.table\
-	bufr/tables/0/wmo/13/codetables/2189.table\
-	bufr/tables/0/wmo/13/codetables/22056.table\
-	bufr/tables/0/wmo/13/codetables/22060.table\
-	bufr/tables/0/wmo/13/codetables/22061.table\
-	bufr/tables/0/wmo/13/codetables/22067.table\
-	bufr/tables/0/wmo/13/codetables/22068.table\
-	bufr/tables/0/wmo/13/codetables/22120.table\
-	bufr/tables/0/wmo/13/codetables/22121.table\
-	bufr/tables/0/wmo/13/codetables/22122.table\
-	bufr/tables/0/wmo/13/codetables/22123.table\
-	bufr/tables/0/wmo/13/codetables/23001.table\
-	bufr/tables/0/wmo/13/codetables/23002.table\
-	bufr/tables/0/wmo/13/codetables/23003.table\
-	bufr/tables/0/wmo/13/codetables/23004.table\
-	bufr/tables/0/wmo/13/codetables/23005.table\
-	bufr/tables/0/wmo/13/codetables/23006.table\
-	bufr/tables/0/wmo/13/codetables/23007.table\
-	bufr/tables/0/wmo/13/codetables/23008.table\
-	bufr/tables/0/wmo/13/codetables/23009.table\
-	bufr/tables/0/wmo/13/codetables/23016.table\
-	bufr/tables/0/wmo/13/codetables/23018.table\
-	bufr/tables/0/wmo/13/codetables/23031.table\
-	bufr/tables/0/wmo/13/codetables/23032.table\
-	bufr/tables/0/wmo/13/codetables/24003.table\
-	bufr/tables/0/wmo/13/codetables/25004.table\
-	bufr/tables/0/wmo/13/codetables/25005.table\
-	bufr/tables/0/wmo/13/codetables/25006.table\
-	bufr/tables/0/wmo/13/codetables/25009.table\
-	bufr/tables/0/wmo/13/codetables/25010.table\
-	bufr/tables/0/wmo/13/codetables/25011.table\
-	bufr/tables/0/wmo/13/codetables/25012.table\
-	bufr/tables/0/wmo/13/codetables/25013.table\
-	bufr/tables/0/wmo/13/codetables/25015.table\
-	bufr/tables/0/wmo/13/codetables/25017.table\
-	bufr/tables/0/wmo/13/codetables/25020.table\
-	bufr/tables/0/wmo/13/codetables/25021.table\
-	bufr/tables/0/wmo/13/codetables/25030.table\
-	bufr/tables/0/wmo/13/codetables/25032.table\
-	bufr/tables/0/wmo/13/codetables/25033.table\
-	bufr/tables/0/wmo/13/codetables/25034.table\
-	bufr/tables/0/wmo/13/codetables/25036.table\
-	bufr/tables/0/wmo/13/codetables/25040.table\
-	bufr/tables/0/wmo/13/codetables/25041.table\
-	bufr/tables/0/wmo/13/codetables/25042.table\
-	bufr/tables/0/wmo/13/codetables/25045.table\
-	bufr/tables/0/wmo/13/codetables/25046.table\
-	bufr/tables/0/wmo/13/codetables/25047.table\
-	bufr/tables/0/wmo/13/codetables/25048.table\
-	bufr/tables/0/wmo/13/codetables/25049.table\
-	bufr/tables/0/wmo/13/codetables/25051.table\
-	bufr/tables/0/wmo/13/codetables/25053.table\
-	bufr/tables/0/wmo/13/codetables/25069.table\
-	bufr/tables/0/wmo/13/codetables/25086.table\
-	bufr/tables/0/wmo/13/codetables/25093.table\
-	bufr/tables/0/wmo/13/codetables/25095.table\
-	bufr/tables/0/wmo/13/codetables/25096.table\
-	bufr/tables/0/wmo/13/codetables/25097.table\
-	bufr/tables/0/wmo/13/codetables/25098.table\
-	bufr/tables/0/wmo/13/codetables/25099.table\
-	bufr/tables/0/wmo/13/codetables/25110.table\
-	bufr/tables/0/wmo/13/codetables/25120.table\
-	bufr/tables/0/wmo/13/codetables/25122.table\
-	bufr/tables/0/wmo/13/codetables/25123.table\
-	bufr/tables/0/wmo/13/codetables/25124.table\
-	bufr/tables/0/wmo/13/codetables/26010.table\
-	bufr/tables/0/wmo/13/codetables/29001.table\
-	bufr/tables/0/wmo/13/codetables/29002.table\
-	bufr/tables/0/wmo/13/codetables/30031.table\
-	bufr/tables/0/wmo/13/codetables/30032.table\
-	bufr/tables/0/wmo/13/codetables/31021.table\
-	bufr/tables/0/wmo/13/codetables/31031.table\
-	bufr/tables/0/wmo/13/codetables/33002.table\
-	bufr/tables/0/wmo/13/codetables/33003.table\
-	bufr/tables/0/wmo/13/codetables/33005.table\
-	bufr/tables/0/wmo/13/codetables/33006.table\
-	bufr/tables/0/wmo/13/codetables/33015.table\
-	bufr/tables/0/wmo/13/codetables/33020.table\
-	bufr/tables/0/wmo/13/codetables/33021.table\
-	bufr/tables/0/wmo/13/codetables/33022.table\
-	bufr/tables/0/wmo/13/codetables/33023.table\
-	bufr/tables/0/wmo/13/codetables/33024.table\
-	bufr/tables/0/wmo/13/codetables/33025.table\
-	bufr/tables/0/wmo/13/codetables/33026.table\
-	bufr/tables/0/wmo/13/codetables/33027.table\
-	bufr/tables/0/wmo/13/codetables/33028.table\
-	bufr/tables/0/wmo/13/codetables/33030.table\
-	bufr/tables/0/wmo/13/codetables/33031.table\
-	bufr/tables/0/wmo/13/codetables/33032.table\
-	bufr/tables/0/wmo/13/codetables/33033.table\
-	bufr/tables/0/wmo/13/codetables/33035.table\
-	bufr/tables/0/wmo/13/codetables/33037.table\
-	bufr/tables/0/wmo/13/codetables/33038.table\
-	bufr/tables/0/wmo/13/codetables/33039.table\
-	bufr/tables/0/wmo/13/codetables/33041.table\
-	bufr/tables/0/wmo/13/codetables/33042.table\
-	bufr/tables/0/wmo/13/codetables/33043.table\
-	bufr/tables/0/wmo/13/codetables/33044.table\
-	bufr/tables/0/wmo/13/codetables/33047.table\
-	bufr/tables/0/wmo/13/codetables/33048.table\
-	bufr/tables/0/wmo/13/codetables/33049.table\
-	bufr/tables/0/wmo/13/codetables/33050.table\
-	bufr/tables/0/wmo/13/codetables/33052.table\
-	bufr/tables/0/wmo/13/codetables/33053.table\
-	bufr/tables/0/wmo/13/codetables/33060.table\
-	bufr/tables/0/wmo/13/codetables/35000.table\
-	bufr/tables/0/wmo/13/codetables/35001.table\
-	bufr/tables/0/wmo/13/codetables/35030.table\
-	bufr/tables/0/wmo/13/codetables/35031.table\
-	bufr/tables/0/wmo/13/codetables/35032.table\
-	bufr/tables/0/wmo/13/codetables/35033.table\
-	bufr/tables/0/wmo/13/codetables/35034.table\
-	bufr/tables/0/wmo/13/codetables/40011.table\
-	bufr/tables/0/wmo/13/codetables/40012.table\
-	bufr/tables/0/wmo/13/codetables/40013.table\
-	bufr/tables/0/wmo/13/codetables/4059.table\
-	bufr/tables/0/wmo/13/codetables/8001.table\
-	bufr/tables/0/wmo/13/codetables/8002.table\
-	bufr/tables/0/wmo/13/codetables/8003.table\
-	bufr/tables/0/wmo/13/codetables/8004.table\
-	bufr/tables/0/wmo/13/codetables/8005.table\
-	bufr/tables/0/wmo/13/codetables/8006.table\
-	bufr/tables/0/wmo/13/codetables/8007.table\
-	bufr/tables/0/wmo/13/codetables/8008.table\
-	bufr/tables/0/wmo/13/codetables/8009.table\
-	bufr/tables/0/wmo/13/codetables/8010.table\
-	bufr/tables/0/wmo/13/codetables/8011.table\
-	bufr/tables/0/wmo/13/codetables/8012.table\
-	bufr/tables/0/wmo/13/codetables/8013.table\
-	bufr/tables/0/wmo/13/codetables/8014.table\
-	bufr/tables/0/wmo/13/codetables/8016.table\
-	bufr/tables/0/wmo/13/codetables/8017.table\
-	bufr/tables/0/wmo/13/codetables/8018.table\
-	bufr/tables/0/wmo/13/codetables/8021.table\
-	bufr/tables/0/wmo/13/codetables/8023.table\
-	bufr/tables/0/wmo/13/codetables/8024.table\
-	bufr/tables/0/wmo/13/codetables/8025.table\
-	bufr/tables/0/wmo/13/codetables/8026.table\
-	bufr/tables/0/wmo/13/codetables/8029.table\
-	bufr/tables/0/wmo/13/codetables/8033.table\
-	bufr/tables/0/wmo/13/codetables/8035.table\
-	bufr/tables/0/wmo/13/codetables/8036.table\
-	bufr/tables/0/wmo/13/codetables/8039.table\
-	bufr/tables/0/wmo/13/codetables/8040.table\
-	bufr/tables/0/wmo/13/codetables/8041.table\
-	bufr/tables/0/wmo/13/codetables/8042.table\
-	bufr/tables/0/wmo/13/codetables/8043.table\
-	bufr/tables/0/wmo/13/codetables/8050.table\
-	bufr/tables/0/wmo/13/codetables/8051.table\
-	bufr/tables/0/wmo/13/codetables/8052.table\
-	bufr/tables/0/wmo/13/codetables/8053.table\
-	bufr/tables/0/wmo/13/codetables/8054.table\
-	bufr/tables/0/wmo/13/codetables/8060.table\
-	bufr/tables/0/wmo/13/codetables/8065.table\
-	bufr/tables/0/wmo/13/codetables/8066.table\
-	bufr/tables/0/wmo/13/codetables/8070.table\
-	bufr/tables/0/wmo/13/codetables/8072.table\
-	bufr/tables/0/wmo/13/codetables/8074.table\
-	bufr/tables/0/wmo/13/codetables/8075.table\
-	bufr/tables/0/wmo/13/codetables/8076.table\
-	bufr/tables/0/wmo/13/codetables/8077.table\
-	bufr/tables/0/wmo/13/codetables/8079.table\
-	bufr/tables/0/wmo/13/codetables/8080.table\
-	bufr/tables/0/wmo/13/codetables/8081.table\
-	bufr/tables/0/wmo/13/codetables/8082.table\
-	bufr/tables/0/wmo/13/codetables/8083.table\
-	bufr/tables/0/wmo/13/codetables/8085.table
-
-definitionsbufr_tables_0_wmo_14dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/14
-dist_definitionsbufr_tables_0_wmo_14_DATA = \
-	bufr/tables/0/wmo/14/element.table\
-	bufr/tables/0/wmo/14/sequence.def
-
-definitionsbufr_tables_0_wmo_14_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/14/codetables
-dist_definitionsbufr_tables_0_wmo_14_codetables_DATA = \
-	bufr/tables/0/wmo/14/codetables/1003.table\
-	bufr/tables/0/wmo/14/codetables/10063.table\
-	bufr/tables/0/wmo/14/codetables/10064.table\
-	bufr/tables/0/wmo/14/codetables/1007.table\
-	bufr/tables/0/wmo/14/codetables/1031.table\
-	bufr/tables/0/wmo/14/codetables/1032.table\
-	bufr/tables/0/wmo/14/codetables/1033.table\
-	bufr/tables/0/wmo/14/codetables/1035.table\
-	bufr/tables/0/wmo/14/codetables/1090.table\
-	bufr/tables/0/wmo/14/codetables/1092.table\
-	bufr/tables/0/wmo/14/codetables/11031.table\
-	bufr/tables/0/wmo/14/codetables/11037.table\
-	bufr/tables/0/wmo/14/codetables/11038.table\
-	bufr/tables/0/wmo/14/codetables/11039.table\
-	bufr/tables/0/wmo/14/codetables/13038.table\
-	bufr/tables/0/wmo/14/codetables/13039.table\
-	bufr/tables/0/wmo/14/codetables/13040.table\
-	bufr/tables/0/wmo/14/codetables/13041.table\
-	bufr/tables/0/wmo/14/codetables/13051.table\
-	bufr/tables/0/wmo/14/codetables/13056.table\
-	bufr/tables/0/wmo/14/codetables/13057.table\
-	bufr/tables/0/wmo/14/codetables/15025.table\
-	bufr/tables/0/wmo/14/codetables/19001.table\
-	bufr/tables/0/wmo/14/codetables/19008.table\
-	bufr/tables/0/wmo/14/codetables/19010.table\
-	bufr/tables/0/wmo/14/codetables/20003.table\
-	bufr/tables/0/wmo/14/codetables/20004.table\
-	bufr/tables/0/wmo/14/codetables/20005.table\
-	bufr/tables/0/wmo/14/codetables/20008.table\
-	bufr/tables/0/wmo/14/codetables/20009.table\
-	bufr/tables/0/wmo/14/codetables/2001.table\
-	bufr/tables/0/wmo/14/codetables/20011.table\
-	bufr/tables/0/wmo/14/codetables/20012.table\
-	bufr/tables/0/wmo/14/codetables/20017.table\
-	bufr/tables/0/wmo/14/codetables/20018.table\
-	bufr/tables/0/wmo/14/codetables/2002.table\
-	bufr/tables/0/wmo/14/codetables/20021.table\
-	bufr/tables/0/wmo/14/codetables/20022.table\
-	bufr/tables/0/wmo/14/codetables/20023.table\
-	bufr/tables/0/wmo/14/codetables/20024.table\
-	bufr/tables/0/wmo/14/codetables/20025.table\
-	bufr/tables/0/wmo/14/codetables/20026.table\
-	bufr/tables/0/wmo/14/codetables/20027.table\
-	bufr/tables/0/wmo/14/codetables/20029.table\
-	bufr/tables/0/wmo/14/codetables/2003.table\
-	bufr/tables/0/wmo/14/codetables/20032.table\
-	bufr/tables/0/wmo/14/codetables/20033.table\
-	bufr/tables/0/wmo/14/codetables/20034.table\
-	bufr/tables/0/wmo/14/codetables/20035.table\
-	bufr/tables/0/wmo/14/codetables/20036.table\
-	bufr/tables/0/wmo/14/codetables/20037.table\
-	bufr/tables/0/wmo/14/codetables/2004.table\
-	bufr/tables/0/wmo/14/codetables/20040.table\
-	bufr/tables/0/wmo/14/codetables/20041.table\
-	bufr/tables/0/wmo/14/codetables/20042.table\
-	bufr/tables/0/wmo/14/codetables/20045.table\
-	bufr/tables/0/wmo/14/codetables/20050.table\
-	bufr/tables/0/wmo/14/codetables/20055.table\
-	bufr/tables/0/wmo/14/codetables/20056.table\
-	bufr/tables/0/wmo/14/codetables/20062.table\
-	bufr/tables/0/wmo/14/codetables/20063.table\
-	bufr/tables/0/wmo/14/codetables/20071.table\
-	bufr/tables/0/wmo/14/codetables/20086.table\
-	bufr/tables/0/wmo/14/codetables/20090.table\
-	bufr/tables/0/wmo/14/codetables/20101.table\
-	bufr/tables/0/wmo/14/codetables/20102.table\
-	bufr/tables/0/wmo/14/codetables/2011.table\
-	bufr/tables/0/wmo/14/codetables/2012.table\
-	bufr/tables/0/wmo/14/codetables/2013.table\
-	bufr/tables/0/wmo/14/codetables/2014.table\
-	bufr/tables/0/wmo/14/codetables/2015.table\
-	bufr/tables/0/wmo/14/codetables/2016.table\
-	bufr/tables/0/wmo/14/codetables/2019.table\
-	bufr/tables/0/wmo/14/codetables/2020.table\
-	bufr/tables/0/wmo/14/codetables/2021.table\
-	bufr/tables/0/wmo/14/codetables/2022.table\
-	bufr/tables/0/wmo/14/codetables/2023.table\
-	bufr/tables/0/wmo/14/codetables/2024.table\
-	bufr/tables/0/wmo/14/codetables/2025.table\
-	bufr/tables/0/wmo/14/codetables/2030.table\
-	bufr/tables/0/wmo/14/codetables/2031.table\
-	bufr/tables/0/wmo/14/codetables/2032.table\
-	bufr/tables/0/wmo/14/codetables/2033.table\
-	bufr/tables/0/wmo/14/codetables/2034.table\
-	bufr/tables/0/wmo/14/codetables/2036.table\
-	bufr/tables/0/wmo/14/codetables/2037.table\
-	bufr/tables/0/wmo/14/codetables/2038.table\
-	bufr/tables/0/wmo/14/codetables/2039.table\
-	bufr/tables/0/wmo/14/codetables/2040.table\
-	bufr/tables/0/wmo/14/codetables/2041.table\
-	bufr/tables/0/wmo/14/codetables/2044.table\
-	bufr/tables/0/wmo/14/codetables/2045.table\
-	bufr/tables/0/wmo/14/codetables/2046.table\
-	bufr/tables/0/wmo/14/codetables/2048.table\
-	bufr/tables/0/wmo/14/codetables/2049.table\
-	bufr/tables/0/wmo/14/codetables/2050.table\
-	bufr/tables/0/wmo/14/codetables/2051.table\
-	bufr/tables/0/wmo/14/codetables/2052.table\
-	bufr/tables/0/wmo/14/codetables/2053.table\
-	bufr/tables/0/wmo/14/codetables/2054.table\
-	bufr/tables/0/wmo/14/codetables/2055.table\
-	bufr/tables/0/wmo/14/codetables/2056.table\
-	bufr/tables/0/wmo/14/codetables/2057.table\
-	bufr/tables/0/wmo/14/codetables/2058.table\
-	bufr/tables/0/wmo/14/codetables/2059.table\
-	bufr/tables/0/wmo/14/codetables/2060.table\
-	bufr/tables/0/wmo/14/codetables/2061.table\
-	bufr/tables/0/wmo/14/codetables/2062.table\
-	bufr/tables/0/wmo/14/codetables/2064.table\
-	bufr/tables/0/wmo/14/codetables/2066.table\
-	bufr/tables/0/wmo/14/codetables/2070.table\
-	bufr/tables/0/wmo/14/codetables/2080.table\
-	bufr/tables/0/wmo/14/codetables/2081.table\
-	bufr/tables/0/wmo/14/codetables/2083.table\
-	bufr/tables/0/wmo/14/codetables/2084.table\
-	bufr/tables/0/wmo/14/codetables/2095.table\
-	bufr/tables/0/wmo/14/codetables/2096.table\
-	bufr/tables/0/wmo/14/codetables/2097.table\
-	bufr/tables/0/wmo/14/codetables/2101.table\
-	bufr/tables/0/wmo/14/codetables/2103.table\
-	bufr/tables/0/wmo/14/codetables/2104.table\
-	bufr/tables/0/wmo/14/codetables/21066.table\
-	bufr/tables/0/wmo/14/codetables/21067.table\
-	bufr/tables/0/wmo/14/codetables/21068.table\
-	bufr/tables/0/wmo/14/codetables/21069.table\
-	bufr/tables/0/wmo/14/codetables/21070.table\
-	bufr/tables/0/wmo/14/codetables/21072.table\
-	bufr/tables/0/wmo/14/codetables/21073.table\
-	bufr/tables/0/wmo/14/codetables/21076.table\
-	bufr/tables/0/wmo/14/codetables/21109.table\
-	bufr/tables/0/wmo/14/codetables/21115.table\
-	bufr/tables/0/wmo/14/codetables/21116.table\
-	bufr/tables/0/wmo/14/codetables/21119.table\
-	bufr/tables/0/wmo/14/codetables/21144.table\
-	bufr/tables/0/wmo/14/codetables/2115.table\
-	bufr/tables/0/wmo/14/codetables/21150.table\
-	bufr/tables/0/wmo/14/codetables/21155.table\
-	bufr/tables/0/wmo/14/codetables/21158.table\
-	bufr/tables/0/wmo/14/codetables/21159.table\
-	bufr/tables/0/wmo/14/codetables/21169.table\
-	bufr/tables/0/wmo/14/codetables/2119.table\
-	bufr/tables/0/wmo/14/codetables/2131.table\
-	bufr/tables/0/wmo/14/codetables/2143.table\
-	bufr/tables/0/wmo/14/codetables/2144.table\
-	bufr/tables/0/wmo/14/codetables/2145.table\
-	bufr/tables/0/wmo/14/codetables/2146.table\
-	bufr/tables/0/wmo/14/codetables/2148.table\
-	bufr/tables/0/wmo/14/codetables/2149.table\
-	bufr/tables/0/wmo/14/codetables/2150.table\
-	bufr/tables/0/wmo/14/codetables/2151.table\
-	bufr/tables/0/wmo/14/codetables/2152.table\
-	bufr/tables/0/wmo/14/codetables/2158.table\
-	bufr/tables/0/wmo/14/codetables/2159.table\
-	bufr/tables/0/wmo/14/codetables/2163.table\
-	bufr/tables/0/wmo/14/codetables/2164.table\
-	bufr/tables/0/wmo/14/codetables/2166.table\
-	bufr/tables/0/wmo/14/codetables/2167.table\
-	bufr/tables/0/wmo/14/codetables/2169.table\
-	bufr/tables/0/wmo/14/codetables/2172.table\
-	bufr/tables/0/wmo/14/codetables/2175.table\
-	bufr/tables/0/wmo/14/codetables/2176.table\
-	bufr/tables/0/wmo/14/codetables/2177.table\
-	bufr/tables/0/wmo/14/codetables/2178.table\
-	bufr/tables/0/wmo/14/codetables/2179.table\
-	bufr/tables/0/wmo/14/codetables/2180.table\
-	bufr/tables/0/wmo/14/codetables/2181.table\
-	bufr/tables/0/wmo/14/codetables/2182.table\
-	bufr/tables/0/wmo/14/codetables/2183.table\
-	bufr/tables/0/wmo/14/codetables/2184.table\
-	bufr/tables/0/wmo/14/codetables/2185.table\
-	bufr/tables/0/wmo/14/codetables/2186.table\
-	bufr/tables/0/wmo/14/codetables/2187.table\
-	bufr/tables/0/wmo/14/codetables/2188.table\
-	bufr/tables/0/wmo/14/codetables/2189.table\
-	bufr/tables/0/wmo/14/codetables/22056.table\
-	bufr/tables/0/wmo/14/codetables/22060.table\
-	bufr/tables/0/wmo/14/codetables/22061.table\
-	bufr/tables/0/wmo/14/codetables/22067.table\
-	bufr/tables/0/wmo/14/codetables/22068.table\
-	bufr/tables/0/wmo/14/codetables/22120.table\
-	bufr/tables/0/wmo/14/codetables/22121.table\
-	bufr/tables/0/wmo/14/codetables/22122.table\
-	bufr/tables/0/wmo/14/codetables/22123.table\
-	bufr/tables/0/wmo/14/codetables/23001.table\
-	bufr/tables/0/wmo/14/codetables/23002.table\
-	bufr/tables/0/wmo/14/codetables/23003.table\
-	bufr/tables/0/wmo/14/codetables/23004.table\
-	bufr/tables/0/wmo/14/codetables/23005.table\
-	bufr/tables/0/wmo/14/codetables/23006.table\
-	bufr/tables/0/wmo/14/codetables/23007.table\
-	bufr/tables/0/wmo/14/codetables/23008.table\
-	bufr/tables/0/wmo/14/codetables/23009.table\
-	bufr/tables/0/wmo/14/codetables/23016.table\
-	bufr/tables/0/wmo/14/codetables/23018.table\
-	bufr/tables/0/wmo/14/codetables/23031.table\
-	bufr/tables/0/wmo/14/codetables/23032.table\
-	bufr/tables/0/wmo/14/codetables/24003.table\
-	bufr/tables/0/wmo/14/codetables/25004.table\
-	bufr/tables/0/wmo/14/codetables/25005.table\
-	bufr/tables/0/wmo/14/codetables/25006.table\
-	bufr/tables/0/wmo/14/codetables/25009.table\
-	bufr/tables/0/wmo/14/codetables/25010.table\
-	bufr/tables/0/wmo/14/codetables/25011.table\
-	bufr/tables/0/wmo/14/codetables/25012.table\
-	bufr/tables/0/wmo/14/codetables/25013.table\
-	bufr/tables/0/wmo/14/codetables/25015.table\
-	bufr/tables/0/wmo/14/codetables/25017.table\
-	bufr/tables/0/wmo/14/codetables/25020.table\
-	bufr/tables/0/wmo/14/codetables/25021.table\
-	bufr/tables/0/wmo/14/codetables/25030.table\
-	bufr/tables/0/wmo/14/codetables/25032.table\
-	bufr/tables/0/wmo/14/codetables/25033.table\
-	bufr/tables/0/wmo/14/codetables/25034.table\
-	bufr/tables/0/wmo/14/codetables/25036.table\
-	bufr/tables/0/wmo/14/codetables/25040.table\
-	bufr/tables/0/wmo/14/codetables/25041.table\
-	bufr/tables/0/wmo/14/codetables/25042.table\
-	bufr/tables/0/wmo/14/codetables/25045.table\
-	bufr/tables/0/wmo/14/codetables/25046.table\
-	bufr/tables/0/wmo/14/codetables/25047.table\
-	bufr/tables/0/wmo/14/codetables/25048.table\
-	bufr/tables/0/wmo/14/codetables/25049.table\
-	bufr/tables/0/wmo/14/codetables/25051.table\
-	bufr/tables/0/wmo/14/codetables/25053.table\
-	bufr/tables/0/wmo/14/codetables/25069.table\
-	bufr/tables/0/wmo/14/codetables/25086.table\
-	bufr/tables/0/wmo/14/codetables/25093.table\
-	bufr/tables/0/wmo/14/codetables/25095.table\
-	bufr/tables/0/wmo/14/codetables/25096.table\
-	bufr/tables/0/wmo/14/codetables/25097.table\
-	bufr/tables/0/wmo/14/codetables/25098.table\
-	bufr/tables/0/wmo/14/codetables/25099.table\
-	bufr/tables/0/wmo/14/codetables/25110.table\
-	bufr/tables/0/wmo/14/codetables/25120.table\
-	bufr/tables/0/wmo/14/codetables/25122.table\
-	bufr/tables/0/wmo/14/codetables/25123.table\
-	bufr/tables/0/wmo/14/codetables/25124.table\
-	bufr/tables/0/wmo/14/codetables/26010.table\
-	bufr/tables/0/wmo/14/codetables/29001.table\
-	bufr/tables/0/wmo/14/codetables/29002.table\
-	bufr/tables/0/wmo/14/codetables/30031.table\
-	bufr/tables/0/wmo/14/codetables/30032.table\
-	bufr/tables/0/wmo/14/codetables/31021.table\
-	bufr/tables/0/wmo/14/codetables/31031.table\
-	bufr/tables/0/wmo/14/codetables/33002.table\
-	bufr/tables/0/wmo/14/codetables/33003.table\
-	bufr/tables/0/wmo/14/codetables/33005.table\
-	bufr/tables/0/wmo/14/codetables/33006.table\
-	bufr/tables/0/wmo/14/codetables/33015.table\
-	bufr/tables/0/wmo/14/codetables/33020.table\
-	bufr/tables/0/wmo/14/codetables/33021.table\
-	bufr/tables/0/wmo/14/codetables/33022.table\
-	bufr/tables/0/wmo/14/codetables/33023.table\
-	bufr/tables/0/wmo/14/codetables/33024.table\
-	bufr/tables/0/wmo/14/codetables/33025.table\
-	bufr/tables/0/wmo/14/codetables/33026.table\
-	bufr/tables/0/wmo/14/codetables/33027.table\
-	bufr/tables/0/wmo/14/codetables/33028.table\
-	bufr/tables/0/wmo/14/codetables/33030.table\
-	bufr/tables/0/wmo/14/codetables/33031.table\
-	bufr/tables/0/wmo/14/codetables/33032.table\
-	bufr/tables/0/wmo/14/codetables/33033.table\
-	bufr/tables/0/wmo/14/codetables/33035.table\
-	bufr/tables/0/wmo/14/codetables/33037.table\
-	bufr/tables/0/wmo/14/codetables/33038.table\
-	bufr/tables/0/wmo/14/codetables/33039.table\
-	bufr/tables/0/wmo/14/codetables/33041.table\
-	bufr/tables/0/wmo/14/codetables/33042.table\
-	bufr/tables/0/wmo/14/codetables/33043.table\
-	bufr/tables/0/wmo/14/codetables/33044.table\
-	bufr/tables/0/wmo/14/codetables/33047.table\
-	bufr/tables/0/wmo/14/codetables/33048.table\
-	bufr/tables/0/wmo/14/codetables/33049.table\
-	bufr/tables/0/wmo/14/codetables/33050.table\
-	bufr/tables/0/wmo/14/codetables/33052.table\
-	bufr/tables/0/wmo/14/codetables/33053.table\
-	bufr/tables/0/wmo/14/codetables/33060.table\
-	bufr/tables/0/wmo/14/codetables/33075.table\
-	bufr/tables/0/wmo/14/codetables/33076.table\
-	bufr/tables/0/wmo/14/codetables/33077.table\
-	bufr/tables/0/wmo/14/codetables/33078.table\
-	bufr/tables/0/wmo/14/codetables/35000.table\
-	bufr/tables/0/wmo/14/codetables/35001.table\
-	bufr/tables/0/wmo/14/codetables/35030.table\
-	bufr/tables/0/wmo/14/codetables/35031.table\
-	bufr/tables/0/wmo/14/codetables/35032.table\
-	bufr/tables/0/wmo/14/codetables/35033.table\
-	bufr/tables/0/wmo/14/codetables/35034.table\
-	bufr/tables/0/wmo/14/codetables/35035.table\
-	bufr/tables/0/wmo/14/codetables/40011.table\
-	bufr/tables/0/wmo/14/codetables/40012.table\
-	bufr/tables/0/wmo/14/codetables/40013.table\
-	bufr/tables/0/wmo/14/codetables/4059.table\
-	bufr/tables/0/wmo/14/codetables/8001.table\
-	bufr/tables/0/wmo/14/codetables/8002.table\
-	bufr/tables/0/wmo/14/codetables/8003.table\
-	bufr/tables/0/wmo/14/codetables/8004.table\
-	bufr/tables/0/wmo/14/codetables/8005.table\
-	bufr/tables/0/wmo/14/codetables/8006.table\
-	bufr/tables/0/wmo/14/codetables/8007.table\
-	bufr/tables/0/wmo/14/codetables/8008.table\
-	bufr/tables/0/wmo/14/codetables/8009.table\
-	bufr/tables/0/wmo/14/codetables/8010.table\
-	bufr/tables/0/wmo/14/codetables/8011.table\
-	bufr/tables/0/wmo/14/codetables/8012.table\
-	bufr/tables/0/wmo/14/codetables/8013.table\
-	bufr/tables/0/wmo/14/codetables/8014.table\
-	bufr/tables/0/wmo/14/codetables/8016.table\
-	bufr/tables/0/wmo/14/codetables/8017.table\
-	bufr/tables/0/wmo/14/codetables/8018.table\
-	bufr/tables/0/wmo/14/codetables/8021.table\
-	bufr/tables/0/wmo/14/codetables/8023.table\
-	bufr/tables/0/wmo/14/codetables/8024.table\
-	bufr/tables/0/wmo/14/codetables/8025.table\
-	bufr/tables/0/wmo/14/codetables/8026.table\
-	bufr/tables/0/wmo/14/codetables/8029.table\
-	bufr/tables/0/wmo/14/codetables/8033.table\
-	bufr/tables/0/wmo/14/codetables/8035.table\
-	bufr/tables/0/wmo/14/codetables/8036.table\
-	bufr/tables/0/wmo/14/codetables/8039.table\
-	bufr/tables/0/wmo/14/codetables/8040.table\
-	bufr/tables/0/wmo/14/codetables/8041.table\
-	bufr/tables/0/wmo/14/codetables/8042.table\
-	bufr/tables/0/wmo/14/codetables/8043.table\
-	bufr/tables/0/wmo/14/codetables/8050.table\
-	bufr/tables/0/wmo/14/codetables/8051.table\
-	bufr/tables/0/wmo/14/codetables/8052.table\
-	bufr/tables/0/wmo/14/codetables/8053.table\
-	bufr/tables/0/wmo/14/codetables/8054.table\
-	bufr/tables/0/wmo/14/codetables/8060.table\
-	bufr/tables/0/wmo/14/codetables/8065.table\
-	bufr/tables/0/wmo/14/codetables/8066.table\
-	bufr/tables/0/wmo/14/codetables/8070.table\
-	bufr/tables/0/wmo/14/codetables/8072.table\
-	bufr/tables/0/wmo/14/codetables/8074.table\
-	bufr/tables/0/wmo/14/codetables/8075.table\
-	bufr/tables/0/wmo/14/codetables/8076.table\
-	bufr/tables/0/wmo/14/codetables/8077.table\
-	bufr/tables/0/wmo/14/codetables/8079.table\
-	bufr/tables/0/wmo/14/codetables/8080.table\
-	bufr/tables/0/wmo/14/codetables/8081.table\
-	bufr/tables/0/wmo/14/codetables/8082.table\
-	bufr/tables/0/wmo/14/codetables/8083.table\
-	bufr/tables/0/wmo/14/codetables/8085.table
-
-definitionsbufr_tables_0_wmo_15dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/15
-dist_definitionsbufr_tables_0_wmo_15_DATA = \
-	bufr/tables/0/wmo/15/element.table\
-	bufr/tables/0/wmo/15/sequence.def
-
-definitionsbufr_tables_0_wmo_15_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/15/codetables
-dist_definitionsbufr_tables_0_wmo_15_codetables_DATA = \
-	bufr/tables/0/wmo/15/codetables/1003.table\
-	bufr/tables/0/wmo/15/codetables/10063.table\
-	bufr/tables/0/wmo/15/codetables/10064.table\
-	bufr/tables/0/wmo/15/codetables/1007.table\
-	bufr/tables/0/wmo/15/codetables/1024.table\
-	bufr/tables/0/wmo/15/codetables/1028.table\
-	bufr/tables/0/wmo/15/codetables/1029.table\
-	bufr/tables/0/wmo/15/codetables/1033.table\
-	bufr/tables/0/wmo/15/codetables/1034.table\
-	bufr/tables/0/wmo/15/codetables/1036.table\
-	bufr/tables/0/wmo/15/codetables/1038.table\
-	bufr/tables/0/wmo/15/codetables/1052.table\
-	bufr/tables/0/wmo/15/codetables/1090.table\
-	bufr/tables/0/wmo/15/codetables/1092.table\
-	bufr/tables/0/wmo/15/codetables/1101.table\
-	bufr/tables/0/wmo/15/codetables/11030.table\
-	bufr/tables/0/wmo/15/codetables/11031.table\
-	bufr/tables/0/wmo/15/codetables/11037.table\
-	bufr/tables/0/wmo/15/codetables/11038.table\
-	bufr/tables/0/wmo/15/codetables/11039.table\
-	bufr/tables/0/wmo/15/codetables/13038.table\
-	bufr/tables/0/wmo/15/codetables/13039.table\
-	bufr/tables/0/wmo/15/codetables/13040.table\
-	bufr/tables/0/wmo/15/codetables/13041.table\
-	bufr/tables/0/wmo/15/codetables/13051.table\
-	bufr/tables/0/wmo/15/codetables/13056.table\
-	bufr/tables/0/wmo/15/codetables/13057.table\
-	bufr/tables/0/wmo/15/codetables/15025.table\
-	bufr/tables/0/wmo/15/codetables/19001.table\
-	bufr/tables/0/wmo/15/codetables/19008.table\
-	bufr/tables/0/wmo/15/codetables/19010.table\
-	bufr/tables/0/wmo/15/codetables/19100.table\
-	bufr/tables/0/wmo/15/codetables/19101.table\
-	bufr/tables/0/wmo/15/codetables/19102.table\
-	bufr/tables/0/wmo/15/codetables/19103.table\
-	bufr/tables/0/wmo/15/codetables/19104.table\
-	bufr/tables/0/wmo/15/codetables/19105.table\
-	bufr/tables/0/wmo/15/codetables/19107.table\
-	bufr/tables/0/wmo/15/codetables/19108.table\
-	bufr/tables/0/wmo/15/codetables/19109.table\
-	bufr/tables/0/wmo/15/codetables/19110.table\
-	bufr/tables/0/wmo/15/codetables/19113.table\
-	bufr/tables/0/wmo/15/codetables/19117.table\
-	bufr/tables/0/wmo/15/codetables/19119.table\
-	bufr/tables/0/wmo/15/codetables/20003.table\
-	bufr/tables/0/wmo/15/codetables/20004.table\
-	bufr/tables/0/wmo/15/codetables/20005.table\
-	bufr/tables/0/wmo/15/codetables/20006.table\
-	bufr/tables/0/wmo/15/codetables/20008.table\
-	bufr/tables/0/wmo/15/codetables/20009.table\
-	bufr/tables/0/wmo/15/codetables/2001.table\
-	bufr/tables/0/wmo/15/codetables/20011.table\
-	bufr/tables/0/wmo/15/codetables/20012.table\
-	bufr/tables/0/wmo/15/codetables/20017.table\
-	bufr/tables/0/wmo/15/codetables/20018.table\
-	bufr/tables/0/wmo/15/codetables/2002.table\
-	bufr/tables/0/wmo/15/codetables/20021.table\
-	bufr/tables/0/wmo/15/codetables/20022.table\
-	bufr/tables/0/wmo/15/codetables/20023.table\
-	bufr/tables/0/wmo/15/codetables/20024.table\
-	bufr/tables/0/wmo/15/codetables/20025.table\
-	bufr/tables/0/wmo/15/codetables/20026.table\
-	bufr/tables/0/wmo/15/codetables/20027.table\
-	bufr/tables/0/wmo/15/codetables/20028.table\
-	bufr/tables/0/wmo/15/codetables/20029.table\
-	bufr/tables/0/wmo/15/codetables/2003.table\
-	bufr/tables/0/wmo/15/codetables/20032.table\
-	bufr/tables/0/wmo/15/codetables/20033.table\
-	bufr/tables/0/wmo/15/codetables/20034.table\
-	bufr/tables/0/wmo/15/codetables/20035.table\
-	bufr/tables/0/wmo/15/codetables/20036.table\
-	bufr/tables/0/wmo/15/codetables/20037.table\
-	bufr/tables/0/wmo/15/codetables/2004.table\
-	bufr/tables/0/wmo/15/codetables/20040.table\
-	bufr/tables/0/wmo/15/codetables/20041.table\
-	bufr/tables/0/wmo/15/codetables/20042.table\
-	bufr/tables/0/wmo/15/codetables/20045.table\
-	bufr/tables/0/wmo/15/codetables/20048.table\
-	bufr/tables/0/wmo/15/codetables/20050.table\
-	bufr/tables/0/wmo/15/codetables/20055.table\
-	bufr/tables/0/wmo/15/codetables/20056.table\
-	bufr/tables/0/wmo/15/codetables/20062.table\
-	bufr/tables/0/wmo/15/codetables/20063.table\
-	bufr/tables/0/wmo/15/codetables/20071.table\
-	bufr/tables/0/wmo/15/codetables/20085.table\
-	bufr/tables/0/wmo/15/codetables/20086.table\
-	bufr/tables/0/wmo/15/codetables/20087.table\
-	bufr/tables/0/wmo/15/codetables/20089.table\
-	bufr/tables/0/wmo/15/codetables/20090.table\
-	bufr/tables/0/wmo/15/codetables/20101.table\
-	bufr/tables/0/wmo/15/codetables/20102.table\
-	bufr/tables/0/wmo/15/codetables/20103.table\
-	bufr/tables/0/wmo/15/codetables/20104.table\
-	bufr/tables/0/wmo/15/codetables/20105.table\
-	bufr/tables/0/wmo/15/codetables/20106.table\
-	bufr/tables/0/wmo/15/codetables/20107.table\
-	bufr/tables/0/wmo/15/codetables/20108.table\
-	bufr/tables/0/wmo/15/codetables/2011.table\
-	bufr/tables/0/wmo/15/codetables/20119.table\
-	bufr/tables/0/wmo/15/codetables/20124.table\
-	bufr/tables/0/wmo/15/codetables/2013.table\
-	bufr/tables/0/wmo/15/codetables/20136.table\
-	bufr/tables/0/wmo/15/codetables/20137.table\
-	bufr/tables/0/wmo/15/codetables/2014.table\
-	bufr/tables/0/wmo/15/codetables/2015.table\
-	bufr/tables/0/wmo/15/codetables/2016.table\
-	bufr/tables/0/wmo/15/codetables/2019.table\
-	bufr/tables/0/wmo/15/codetables/2020.table\
-	bufr/tables/0/wmo/15/codetables/2021.table\
-	bufr/tables/0/wmo/15/codetables/2022.table\
-	bufr/tables/0/wmo/15/codetables/2023.table\
-	bufr/tables/0/wmo/15/codetables/2024.table\
-	bufr/tables/0/wmo/15/codetables/2025.table\
-	bufr/tables/0/wmo/15/codetables/2030.table\
-	bufr/tables/0/wmo/15/codetables/2031.table\
-	bufr/tables/0/wmo/15/codetables/2032.table\
-	bufr/tables/0/wmo/15/codetables/2033.table\
-	bufr/tables/0/wmo/15/codetables/2034.table\
-	bufr/tables/0/wmo/15/codetables/2036.table\
-	bufr/tables/0/wmo/15/codetables/2037.table\
-	bufr/tables/0/wmo/15/codetables/2038.table\
-	bufr/tables/0/wmo/15/codetables/2039.table\
-	bufr/tables/0/wmo/15/codetables/2040.table\
-	bufr/tables/0/wmo/15/codetables/2041.table\
-	bufr/tables/0/wmo/15/codetables/2042.table\
-	bufr/tables/0/wmo/15/codetables/2044.table\
-	bufr/tables/0/wmo/15/codetables/2045.table\
-	bufr/tables/0/wmo/15/codetables/2046.table\
-	bufr/tables/0/wmo/15/codetables/2047.table\
-	bufr/tables/0/wmo/15/codetables/2048.table\
-	bufr/tables/0/wmo/15/codetables/2049.table\
-	bufr/tables/0/wmo/15/codetables/2050.table\
-	bufr/tables/0/wmo/15/codetables/2051.table\
-	bufr/tables/0/wmo/15/codetables/2052.table\
-	bufr/tables/0/wmo/15/codetables/2053.table\
-	bufr/tables/0/wmo/15/codetables/2054.table\
-	bufr/tables/0/wmo/15/codetables/2055.table\
-	bufr/tables/0/wmo/15/codetables/2056.table\
-	bufr/tables/0/wmo/15/codetables/2057.table\
-	bufr/tables/0/wmo/15/codetables/2058.table\
-	bufr/tables/0/wmo/15/codetables/2059.table\
-	bufr/tables/0/wmo/15/codetables/2060.table\
-	bufr/tables/0/wmo/15/codetables/2061.table\
-	bufr/tables/0/wmo/15/codetables/2062.table\
-	bufr/tables/0/wmo/15/codetables/2064.table\
-	bufr/tables/0/wmo/15/codetables/2066.table\
-	bufr/tables/0/wmo/15/codetables/2070.table\
-	bufr/tables/0/wmo/15/codetables/2080.table\
-	bufr/tables/0/wmo/15/codetables/2081.table\
-	bufr/tables/0/wmo/15/codetables/2083.table\
-	bufr/tables/0/wmo/15/codetables/2084.table\
-	bufr/tables/0/wmo/15/codetables/2095.table\
-	bufr/tables/0/wmo/15/codetables/2096.table\
-	bufr/tables/0/wmo/15/codetables/2097.table\
-	bufr/tables/0/wmo/15/codetables/2099.table\
-	bufr/tables/0/wmo/15/codetables/2101.table\
-	bufr/tables/0/wmo/15/codetables/2103.table\
-	bufr/tables/0/wmo/15/codetables/2104.table\
-	bufr/tables/0/wmo/15/codetables/21066.table\
-	bufr/tables/0/wmo/15/codetables/21067.table\
-	bufr/tables/0/wmo/15/codetables/21068.table\
-	bufr/tables/0/wmo/15/codetables/21069.table\
-	bufr/tables/0/wmo/15/codetables/21070.table\
-	bufr/tables/0/wmo/15/codetables/21072.table\
-	bufr/tables/0/wmo/15/codetables/21073.table\
-	bufr/tables/0/wmo/15/codetables/21076.table\
-	bufr/tables/0/wmo/15/codetables/21109.table\
-	bufr/tables/0/wmo/15/codetables/21115.table\
-	bufr/tables/0/wmo/15/codetables/21116.table\
-	bufr/tables/0/wmo/15/codetables/21119.table\
-	bufr/tables/0/wmo/15/codetables/21144.table\
-	bufr/tables/0/wmo/15/codetables/2115.table\
-	bufr/tables/0/wmo/15/codetables/21150.table\
-	bufr/tables/0/wmo/15/codetables/21155.table\
-	bufr/tables/0/wmo/15/codetables/21158.table\
-	bufr/tables/0/wmo/15/codetables/21159.table\
-	bufr/tables/0/wmo/15/codetables/21169.table\
-	bufr/tables/0/wmo/15/codetables/2119.table\
-	bufr/tables/0/wmo/15/codetables/2131.table\
-	bufr/tables/0/wmo/15/codetables/2143.table\
-	bufr/tables/0/wmo/15/codetables/2144.table\
-	bufr/tables/0/wmo/15/codetables/2145.table\
-	bufr/tables/0/wmo/15/codetables/2146.table\
-	bufr/tables/0/wmo/15/codetables/2148.table\
-	bufr/tables/0/wmo/15/codetables/2149.table\
-	bufr/tables/0/wmo/15/codetables/2150.table\
-	bufr/tables/0/wmo/15/codetables/2151.table\
-	bufr/tables/0/wmo/15/codetables/2152.table\
-	bufr/tables/0/wmo/15/codetables/2158.table\
-	bufr/tables/0/wmo/15/codetables/2159.table\
-	bufr/tables/0/wmo/15/codetables/2160.table\
-	bufr/tables/0/wmo/15/codetables/2163.table\
-	bufr/tables/0/wmo/15/codetables/2164.table\
-	bufr/tables/0/wmo/15/codetables/2165.table\
-	bufr/tables/0/wmo/15/codetables/2166.table\
-	bufr/tables/0/wmo/15/codetables/2167.table\
-	bufr/tables/0/wmo/15/codetables/2169.table\
-	bufr/tables/0/wmo/15/codetables/2172.table\
-	bufr/tables/0/wmo/15/codetables/2175.table\
-	bufr/tables/0/wmo/15/codetables/2176.table\
-	bufr/tables/0/wmo/15/codetables/2177.table\
-	bufr/tables/0/wmo/15/codetables/2178.table\
-	bufr/tables/0/wmo/15/codetables/2179.table\
-	bufr/tables/0/wmo/15/codetables/2180.table\
-	bufr/tables/0/wmo/15/codetables/2181.table\
-	bufr/tables/0/wmo/15/codetables/2182.table\
-	bufr/tables/0/wmo/15/codetables/2183.table\
-	bufr/tables/0/wmo/15/codetables/2184.table\
-	bufr/tables/0/wmo/15/codetables/2185.table\
-	bufr/tables/0/wmo/15/codetables/2186.table\
-	bufr/tables/0/wmo/15/codetables/2187.table\
-	bufr/tables/0/wmo/15/codetables/2188.table\
-	bufr/tables/0/wmo/15/codetables/2189.table\
-	bufr/tables/0/wmo/15/codetables/2191.table\
-	bufr/tables/0/wmo/15/codetables/22056.table\
-	bufr/tables/0/wmo/15/codetables/22060.table\
-	bufr/tables/0/wmo/15/codetables/22061.table\
-	bufr/tables/0/wmo/15/codetables/22067.table\
-	bufr/tables/0/wmo/15/codetables/22068.table\
-	bufr/tables/0/wmo/15/codetables/22120.table\
-	bufr/tables/0/wmo/15/codetables/22121.table\
-	bufr/tables/0/wmo/15/codetables/22122.table\
-	bufr/tables/0/wmo/15/codetables/22123.table\
-	bufr/tables/0/wmo/15/codetables/22178.table\
-	bufr/tables/0/wmo/15/codetables/23001.table\
-	bufr/tables/0/wmo/15/codetables/23002.table\
-	bufr/tables/0/wmo/15/codetables/23003.table\
-	bufr/tables/0/wmo/15/codetables/23004.table\
-	bufr/tables/0/wmo/15/codetables/23005.table\
-	bufr/tables/0/wmo/15/codetables/23006.table\
-	bufr/tables/0/wmo/15/codetables/23007.table\
-	bufr/tables/0/wmo/15/codetables/23008.table\
-	bufr/tables/0/wmo/15/codetables/23009.table\
-	bufr/tables/0/wmo/15/codetables/23016.table\
-	bufr/tables/0/wmo/15/codetables/23018.table\
-	bufr/tables/0/wmo/15/codetables/23031.table\
-	bufr/tables/0/wmo/15/codetables/23032.table\
-	bufr/tables/0/wmo/15/codetables/24003.table\
-	bufr/tables/0/wmo/15/codetables/25004.table\
-	bufr/tables/0/wmo/15/codetables/25005.table\
-	bufr/tables/0/wmo/15/codetables/25006.table\
-	bufr/tables/0/wmo/15/codetables/25009.table\
-	bufr/tables/0/wmo/15/codetables/25010.table\
-	bufr/tables/0/wmo/15/codetables/25011.table\
-	bufr/tables/0/wmo/15/codetables/25012.table\
-	bufr/tables/0/wmo/15/codetables/25013.table\
-	bufr/tables/0/wmo/15/codetables/25015.table\
-	bufr/tables/0/wmo/15/codetables/25017.table\
-	bufr/tables/0/wmo/15/codetables/25020.table\
-	bufr/tables/0/wmo/15/codetables/25021.table\
-	bufr/tables/0/wmo/15/codetables/25022.table\
-	bufr/tables/0/wmo/15/codetables/25023.table\
-	bufr/tables/0/wmo/15/codetables/25024.table\
-	bufr/tables/0/wmo/15/codetables/25029.table\
-	bufr/tables/0/wmo/15/codetables/25030.table\
-	bufr/tables/0/wmo/15/codetables/25031.table\
-	bufr/tables/0/wmo/15/codetables/25032.table\
-	bufr/tables/0/wmo/15/codetables/25033.table\
-	bufr/tables/0/wmo/15/codetables/25034.table\
-	bufr/tables/0/wmo/15/codetables/25035.table\
-	bufr/tables/0/wmo/15/codetables/25036.table\
-	bufr/tables/0/wmo/15/codetables/25040.table\
-	bufr/tables/0/wmo/15/codetables/25041.table\
-	bufr/tables/0/wmo/15/codetables/25042.table\
-	bufr/tables/0/wmo/15/codetables/25053.table\
-	bufr/tables/0/wmo/15/codetables/25063.table\
-	bufr/tables/0/wmo/15/codetables/25069.table\
-	bufr/tables/0/wmo/15/codetables/25086.table\
-	bufr/tables/0/wmo/15/codetables/25090.table\
-	bufr/tables/0/wmo/15/codetables/25093.table\
-	bufr/tables/0/wmo/15/codetables/25095.table\
-	bufr/tables/0/wmo/15/codetables/25096.table\
-	bufr/tables/0/wmo/15/codetables/25097.table\
-	bufr/tables/0/wmo/15/codetables/25098.table\
-	bufr/tables/0/wmo/15/codetables/25099.table\
-	bufr/tables/0/wmo/15/codetables/25110.table\
-	bufr/tables/0/wmo/15/codetables/25120.table\
-	bufr/tables/0/wmo/15/codetables/25122.table\
-	bufr/tables/0/wmo/15/codetables/25123.table\
-	bufr/tables/0/wmo/15/codetables/25124.table\
-	bufr/tables/0/wmo/15/codetables/25150.table\
-	bufr/tables/0/wmo/15/codetables/25174.table\
-	bufr/tables/0/wmo/15/codetables/26010.table\
-	bufr/tables/0/wmo/15/codetables/29001.table\
-	bufr/tables/0/wmo/15/codetables/29002.table\
-	bufr/tables/0/wmo/15/codetables/30031.table\
-	bufr/tables/0/wmo/15/codetables/30032.table\
-	bufr/tables/0/wmo/15/codetables/31021.table\
-	bufr/tables/0/wmo/15/codetables/31031.table\
-	bufr/tables/0/wmo/15/codetables/33002.table\
-	bufr/tables/0/wmo/15/codetables/33003.table\
-	bufr/tables/0/wmo/15/codetables/33005.table\
-	bufr/tables/0/wmo/15/codetables/33006.table\
-	bufr/tables/0/wmo/15/codetables/33015.table\
-	bufr/tables/0/wmo/15/codetables/33020.table\
-	bufr/tables/0/wmo/15/codetables/33021.table\
-	bufr/tables/0/wmo/15/codetables/33022.table\
-	bufr/tables/0/wmo/15/codetables/33023.table\
-	bufr/tables/0/wmo/15/codetables/33024.table\
-	bufr/tables/0/wmo/15/codetables/33025.table\
-	bufr/tables/0/wmo/15/codetables/33026.table\
-	bufr/tables/0/wmo/15/codetables/33027.table\
-	bufr/tables/0/wmo/15/codetables/33028.table\
-	bufr/tables/0/wmo/15/codetables/33030.table\
-	bufr/tables/0/wmo/15/codetables/33031.table\
-	bufr/tables/0/wmo/15/codetables/33032.table\
-	bufr/tables/0/wmo/15/codetables/33033.table\
-	bufr/tables/0/wmo/15/codetables/33035.table\
-	bufr/tables/0/wmo/15/codetables/33037.table\
-	bufr/tables/0/wmo/15/codetables/33038.table\
-	bufr/tables/0/wmo/15/codetables/33039.table\
-	bufr/tables/0/wmo/15/codetables/33041.table\
-	bufr/tables/0/wmo/15/codetables/33042.table\
-	bufr/tables/0/wmo/15/codetables/33043.table\
-	bufr/tables/0/wmo/15/codetables/33044.table\
-	bufr/tables/0/wmo/15/codetables/33047.table\
-	bufr/tables/0/wmo/15/codetables/33048.table\
-	bufr/tables/0/wmo/15/codetables/33049.table\
-	bufr/tables/0/wmo/15/codetables/33050.table\
-	bufr/tables/0/wmo/15/codetables/33060.table\
-	bufr/tables/0/wmo/15/codetables/33070.table\
-	bufr/tables/0/wmo/15/codetables/33071.table\
-	bufr/tables/0/wmo/15/codetables/33072.table\
-	bufr/tables/0/wmo/15/codetables/33075.table\
-	bufr/tables/0/wmo/15/codetables/33076.table\
-	bufr/tables/0/wmo/15/codetables/33077.table\
-	bufr/tables/0/wmo/15/codetables/33078.table\
-	bufr/tables/0/wmo/15/codetables/33079.table\
-	bufr/tables/0/wmo/15/codetables/33080.table\
-	bufr/tables/0/wmo/15/codetables/33081.table\
-	bufr/tables/0/wmo/15/codetables/35000.table\
-	bufr/tables/0/wmo/15/codetables/35001.table\
-	bufr/tables/0/wmo/15/codetables/35030.table\
-	bufr/tables/0/wmo/15/codetables/35031.table\
-	bufr/tables/0/wmo/15/codetables/35032.table\
-	bufr/tables/0/wmo/15/codetables/35033.table\
-	bufr/tables/0/wmo/15/codetables/35034.table\
-	bufr/tables/0/wmo/15/codetables/35035.table\
-	bufr/tables/0/wmo/15/codetables/40005.table\
-	bufr/tables/0/wmo/15/codetables/40006.table\
-	bufr/tables/0/wmo/15/codetables/40011.table\
-	bufr/tables/0/wmo/15/codetables/40012.table\
-	bufr/tables/0/wmo/15/codetables/40013.table\
-	bufr/tables/0/wmo/15/codetables/40023.table\
-	bufr/tables/0/wmo/15/codetables/40024.table\
-	bufr/tables/0/wmo/15/codetables/40025.table\
-	bufr/tables/0/wmo/15/codetables/4059.table\
-	bufr/tables/0/wmo/15/codetables/4080.table\
-	bufr/tables/0/wmo/15/codetables/8001.table\
-	bufr/tables/0/wmo/15/codetables/8002.table\
-	bufr/tables/0/wmo/15/codetables/8003.table\
-	bufr/tables/0/wmo/15/codetables/8004.table\
-	bufr/tables/0/wmo/15/codetables/8005.table\
-	bufr/tables/0/wmo/15/codetables/8006.table\
-	bufr/tables/0/wmo/15/codetables/8007.table\
-	bufr/tables/0/wmo/15/codetables/8008.table\
-	bufr/tables/0/wmo/15/codetables/8009.table\
-	bufr/tables/0/wmo/15/codetables/8010.table\
-	bufr/tables/0/wmo/15/codetables/8011.table\
-	bufr/tables/0/wmo/15/codetables/8012.table\
-	bufr/tables/0/wmo/15/codetables/8013.table\
-	bufr/tables/0/wmo/15/codetables/8014.table\
-	bufr/tables/0/wmo/15/codetables/8016.table\
-	bufr/tables/0/wmo/15/codetables/8017.table\
-	bufr/tables/0/wmo/15/codetables/8018.table\
-	bufr/tables/0/wmo/15/codetables/8019.table\
-	bufr/tables/0/wmo/15/codetables/8021.table\
-	bufr/tables/0/wmo/15/codetables/8023.table\
-	bufr/tables/0/wmo/15/codetables/8024.table\
-	bufr/tables/0/wmo/15/codetables/8025.table\
-	bufr/tables/0/wmo/15/codetables/8026.table\
-	bufr/tables/0/wmo/15/codetables/8029.table\
-	bufr/tables/0/wmo/15/codetables/8033.table\
-	bufr/tables/0/wmo/15/codetables/8035.table\
-	bufr/tables/0/wmo/15/codetables/8036.table\
-	bufr/tables/0/wmo/15/codetables/8039.table\
-	bufr/tables/0/wmo/15/codetables/8040.table\
-	bufr/tables/0/wmo/15/codetables/8041.table\
-	bufr/tables/0/wmo/15/codetables/8042.table\
-	bufr/tables/0/wmo/15/codetables/8043.table\
-	bufr/tables/0/wmo/15/codetables/8050.table\
-	bufr/tables/0/wmo/15/codetables/8051.table\
-	bufr/tables/0/wmo/15/codetables/8052.table\
-	bufr/tables/0/wmo/15/codetables/8053.table\
-	bufr/tables/0/wmo/15/codetables/8054.table\
-	bufr/tables/0/wmo/15/codetables/8060.table\
-	bufr/tables/0/wmo/15/codetables/8065.table\
-	bufr/tables/0/wmo/15/codetables/8066.table\
-	bufr/tables/0/wmo/15/codetables/8070.table\
-	bufr/tables/0/wmo/15/codetables/8072.table\
-	bufr/tables/0/wmo/15/codetables/8074.table\
-	bufr/tables/0/wmo/15/codetables/8075.table\
-	bufr/tables/0/wmo/15/codetables/8076.table\
-	bufr/tables/0/wmo/15/codetables/8077.table\
-	bufr/tables/0/wmo/15/codetables/8079.table\
-	bufr/tables/0/wmo/15/codetables/8080.table\
-	bufr/tables/0/wmo/15/codetables/8081.table\
-	bufr/tables/0/wmo/15/codetables/8082.table\
-	bufr/tables/0/wmo/15/codetables/8083.table\
-	bufr/tables/0/wmo/15/codetables/8085.table\
-	bufr/tables/0/wmo/15/codetables/8086.table
-
-definitionsbufr_tables_0_wmo_16dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/16
-dist_definitionsbufr_tables_0_wmo_16_DATA = \
-	bufr/tables/0/wmo/16/element.table\
-	bufr/tables/0/wmo/16/sequence.def
-
-definitionsbufr_tables_0_wmo_16_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/16/codetables
-dist_definitionsbufr_tables_0_wmo_16_codetables_DATA = \
-	bufr/tables/0/wmo/16/codetables/1003.table\
-	bufr/tables/0/wmo/16/codetables/10063.table\
-	bufr/tables/0/wmo/16/codetables/10064.table\
-	bufr/tables/0/wmo/16/codetables/1007.table\
-	bufr/tables/0/wmo/16/codetables/1024.table\
-	bufr/tables/0/wmo/16/codetables/1028.table\
-	bufr/tables/0/wmo/16/codetables/1029.table\
-	bufr/tables/0/wmo/16/codetables/1033.table\
-	bufr/tables/0/wmo/16/codetables/1034.table\
-	bufr/tables/0/wmo/16/codetables/1036.table\
-	bufr/tables/0/wmo/16/codetables/1038.table\
-	bufr/tables/0/wmo/16/codetables/1052.table\
-	bufr/tables/0/wmo/16/codetables/1090.table\
-	bufr/tables/0/wmo/16/codetables/1092.table\
-	bufr/tables/0/wmo/16/codetables/1101.table\
-	bufr/tables/0/wmo/16/codetables/11030.table\
-	bufr/tables/0/wmo/16/codetables/11031.table\
-	bufr/tables/0/wmo/16/codetables/11037.table\
-	bufr/tables/0/wmo/16/codetables/11038.table\
-	bufr/tables/0/wmo/16/codetables/11039.table\
-	bufr/tables/0/wmo/16/codetables/13038.table\
-	bufr/tables/0/wmo/16/codetables/13039.table\
-	bufr/tables/0/wmo/16/codetables/13040.table\
-	bufr/tables/0/wmo/16/codetables/13041.table\
-	bufr/tables/0/wmo/16/codetables/13051.table\
-	bufr/tables/0/wmo/16/codetables/13056.table\
-	bufr/tables/0/wmo/16/codetables/13057.table\
-	bufr/tables/0/wmo/16/codetables/15025.table\
-	bufr/tables/0/wmo/16/codetables/19001.table\
-	bufr/tables/0/wmo/16/codetables/19008.table\
-	bufr/tables/0/wmo/16/codetables/19010.table\
-	bufr/tables/0/wmo/16/codetables/19100.table\
-	bufr/tables/0/wmo/16/codetables/19101.table\
-	bufr/tables/0/wmo/16/codetables/19102.table\
-	bufr/tables/0/wmo/16/codetables/19103.table\
-	bufr/tables/0/wmo/16/codetables/19104.table\
-	bufr/tables/0/wmo/16/codetables/19105.table\
-	bufr/tables/0/wmo/16/codetables/19107.table\
-	bufr/tables/0/wmo/16/codetables/19108.table\
-	bufr/tables/0/wmo/16/codetables/19109.table\
-	bufr/tables/0/wmo/16/codetables/19110.table\
-	bufr/tables/0/wmo/16/codetables/19113.table\
-	bufr/tables/0/wmo/16/codetables/19117.table\
-	bufr/tables/0/wmo/16/codetables/19119.table\
-	bufr/tables/0/wmo/16/codetables/20003.table\
-	bufr/tables/0/wmo/16/codetables/20004.table\
-	bufr/tables/0/wmo/16/codetables/20005.table\
-	bufr/tables/0/wmo/16/codetables/20006.table\
-	bufr/tables/0/wmo/16/codetables/20008.table\
-	bufr/tables/0/wmo/16/codetables/20009.table\
-	bufr/tables/0/wmo/16/codetables/2001.table\
-	bufr/tables/0/wmo/16/codetables/20011.table\
-	bufr/tables/0/wmo/16/codetables/20012.table\
-	bufr/tables/0/wmo/16/codetables/20017.table\
-	bufr/tables/0/wmo/16/codetables/20018.table\
-	bufr/tables/0/wmo/16/codetables/2002.table\
-	bufr/tables/0/wmo/16/codetables/20021.table\
-	bufr/tables/0/wmo/16/codetables/20022.table\
-	bufr/tables/0/wmo/16/codetables/20023.table\
-	bufr/tables/0/wmo/16/codetables/20024.table\
-	bufr/tables/0/wmo/16/codetables/20025.table\
-	bufr/tables/0/wmo/16/codetables/20026.table\
-	bufr/tables/0/wmo/16/codetables/20027.table\
-	bufr/tables/0/wmo/16/codetables/20028.table\
-	bufr/tables/0/wmo/16/codetables/20029.table\
-	bufr/tables/0/wmo/16/codetables/2003.table\
-	bufr/tables/0/wmo/16/codetables/20032.table\
-	bufr/tables/0/wmo/16/codetables/20033.table\
-	bufr/tables/0/wmo/16/codetables/20034.table\
-	bufr/tables/0/wmo/16/codetables/20035.table\
-	bufr/tables/0/wmo/16/codetables/20036.table\
-	bufr/tables/0/wmo/16/codetables/20037.table\
-	bufr/tables/0/wmo/16/codetables/2004.table\
-	bufr/tables/0/wmo/16/codetables/20040.table\
-	bufr/tables/0/wmo/16/codetables/20041.table\
-	bufr/tables/0/wmo/16/codetables/20042.table\
-	bufr/tables/0/wmo/16/codetables/20045.table\
-	bufr/tables/0/wmo/16/codetables/20048.table\
-	bufr/tables/0/wmo/16/codetables/20050.table\
-	bufr/tables/0/wmo/16/codetables/20055.table\
-	bufr/tables/0/wmo/16/codetables/20056.table\
-	bufr/tables/0/wmo/16/codetables/20062.table\
-	bufr/tables/0/wmo/16/codetables/20063.table\
-	bufr/tables/0/wmo/16/codetables/20071.table\
-	bufr/tables/0/wmo/16/codetables/20085.table\
-	bufr/tables/0/wmo/16/codetables/20086.table\
-	bufr/tables/0/wmo/16/codetables/20087.table\
-	bufr/tables/0/wmo/16/codetables/20089.table\
-	bufr/tables/0/wmo/16/codetables/20090.table\
-	bufr/tables/0/wmo/16/codetables/20101.table\
-	bufr/tables/0/wmo/16/codetables/20102.table\
-	bufr/tables/0/wmo/16/codetables/20103.table\
-	bufr/tables/0/wmo/16/codetables/20104.table\
-	bufr/tables/0/wmo/16/codetables/20105.table\
-	bufr/tables/0/wmo/16/codetables/20106.table\
-	bufr/tables/0/wmo/16/codetables/20107.table\
-	bufr/tables/0/wmo/16/codetables/20108.table\
-	bufr/tables/0/wmo/16/codetables/2011.table\
-	bufr/tables/0/wmo/16/codetables/20119.table\
-	bufr/tables/0/wmo/16/codetables/20124.table\
-	bufr/tables/0/wmo/16/codetables/2013.table\
-	bufr/tables/0/wmo/16/codetables/20136.table\
-	bufr/tables/0/wmo/16/codetables/20137.table\
-	bufr/tables/0/wmo/16/codetables/2014.table\
-	bufr/tables/0/wmo/16/codetables/2015.table\
-	bufr/tables/0/wmo/16/codetables/2016.table\
-	bufr/tables/0/wmo/16/codetables/2019.table\
-	bufr/tables/0/wmo/16/codetables/2020.table\
-	bufr/tables/0/wmo/16/codetables/2021.table\
-	bufr/tables/0/wmo/16/codetables/2022.table\
-	bufr/tables/0/wmo/16/codetables/2023.table\
-	bufr/tables/0/wmo/16/codetables/2024.table\
-	bufr/tables/0/wmo/16/codetables/2025.table\
-	bufr/tables/0/wmo/16/codetables/2030.table\
-	bufr/tables/0/wmo/16/codetables/2031.table\
-	bufr/tables/0/wmo/16/codetables/2032.table\
-	bufr/tables/0/wmo/16/codetables/2033.table\
-	bufr/tables/0/wmo/16/codetables/2034.table\
-	bufr/tables/0/wmo/16/codetables/2036.table\
-	bufr/tables/0/wmo/16/codetables/2037.table\
-	bufr/tables/0/wmo/16/codetables/2038.table\
-	bufr/tables/0/wmo/16/codetables/2039.table\
-	bufr/tables/0/wmo/16/codetables/2040.table\
-	bufr/tables/0/wmo/16/codetables/2041.table\
-	bufr/tables/0/wmo/16/codetables/2042.table\
-	bufr/tables/0/wmo/16/codetables/2044.table\
-	bufr/tables/0/wmo/16/codetables/2045.table\
-	bufr/tables/0/wmo/16/codetables/2046.table\
-	bufr/tables/0/wmo/16/codetables/2047.table\
-	bufr/tables/0/wmo/16/codetables/2048.table\
-	bufr/tables/0/wmo/16/codetables/2049.table\
-	bufr/tables/0/wmo/16/codetables/2050.table\
-	bufr/tables/0/wmo/16/codetables/2051.table\
-	bufr/tables/0/wmo/16/codetables/2052.table\
-	bufr/tables/0/wmo/16/codetables/2053.table\
-	bufr/tables/0/wmo/16/codetables/2054.table\
-	bufr/tables/0/wmo/16/codetables/2055.table\
-	bufr/tables/0/wmo/16/codetables/2056.table\
-	bufr/tables/0/wmo/16/codetables/2057.table\
-	bufr/tables/0/wmo/16/codetables/2058.table\
-	bufr/tables/0/wmo/16/codetables/2059.table\
-	bufr/tables/0/wmo/16/codetables/2060.table\
-	bufr/tables/0/wmo/16/codetables/2061.table\
-	bufr/tables/0/wmo/16/codetables/2062.table\
-	bufr/tables/0/wmo/16/codetables/2064.table\
-	bufr/tables/0/wmo/16/codetables/2066.table\
-	bufr/tables/0/wmo/16/codetables/2070.table\
-	bufr/tables/0/wmo/16/codetables/2080.table\
-	bufr/tables/0/wmo/16/codetables/2081.table\
-	bufr/tables/0/wmo/16/codetables/2083.table\
-	bufr/tables/0/wmo/16/codetables/2084.table\
-	bufr/tables/0/wmo/16/codetables/2095.table\
-	bufr/tables/0/wmo/16/codetables/2096.table\
-	bufr/tables/0/wmo/16/codetables/2097.table\
-	bufr/tables/0/wmo/16/codetables/2099.table\
-	bufr/tables/0/wmo/16/codetables/2101.table\
-	bufr/tables/0/wmo/16/codetables/2103.table\
-	bufr/tables/0/wmo/16/codetables/2104.table\
-	bufr/tables/0/wmo/16/codetables/21066.table\
-	bufr/tables/0/wmo/16/codetables/21067.table\
-	bufr/tables/0/wmo/16/codetables/21068.table\
-	bufr/tables/0/wmo/16/codetables/21069.table\
-	bufr/tables/0/wmo/16/codetables/21070.table\
-	bufr/tables/0/wmo/16/codetables/21072.table\
-	bufr/tables/0/wmo/16/codetables/21073.table\
-	bufr/tables/0/wmo/16/codetables/21076.table\
-	bufr/tables/0/wmo/16/codetables/21109.table\
-	bufr/tables/0/wmo/16/codetables/21115.table\
-	bufr/tables/0/wmo/16/codetables/21116.table\
-	bufr/tables/0/wmo/16/codetables/21119.table\
-	bufr/tables/0/wmo/16/codetables/21144.table\
-	bufr/tables/0/wmo/16/codetables/2115.table\
-	bufr/tables/0/wmo/16/codetables/21150.table\
-	bufr/tables/0/wmo/16/codetables/21155.table\
-	bufr/tables/0/wmo/16/codetables/21158.table\
-	bufr/tables/0/wmo/16/codetables/21159.table\
-	bufr/tables/0/wmo/16/codetables/21169.table\
-	bufr/tables/0/wmo/16/codetables/2119.table\
-	bufr/tables/0/wmo/16/codetables/2131.table\
-	bufr/tables/0/wmo/16/codetables/2137.table\
-	bufr/tables/0/wmo/16/codetables/2138.table\
-	bufr/tables/0/wmo/16/codetables/2143.table\
-	bufr/tables/0/wmo/16/codetables/2144.table\
-	bufr/tables/0/wmo/16/codetables/2145.table\
-	bufr/tables/0/wmo/16/codetables/2146.table\
-	bufr/tables/0/wmo/16/codetables/2148.table\
-	bufr/tables/0/wmo/16/codetables/2149.table\
-	bufr/tables/0/wmo/16/codetables/2150.table\
-	bufr/tables/0/wmo/16/codetables/2151.table\
-	bufr/tables/0/wmo/16/codetables/2152.table\
-	bufr/tables/0/wmo/16/codetables/2158.table\
-	bufr/tables/0/wmo/16/codetables/2159.table\
-	bufr/tables/0/wmo/16/codetables/2160.table\
-	bufr/tables/0/wmo/16/codetables/2163.table\
-	bufr/tables/0/wmo/16/codetables/2164.table\
-	bufr/tables/0/wmo/16/codetables/2165.table\
-	bufr/tables/0/wmo/16/codetables/2166.table\
-	bufr/tables/0/wmo/16/codetables/2167.table\
-	bufr/tables/0/wmo/16/codetables/2169.table\
-	bufr/tables/0/wmo/16/codetables/2172.table\
-	bufr/tables/0/wmo/16/codetables/2175.table\
-	bufr/tables/0/wmo/16/codetables/2176.table\
-	bufr/tables/0/wmo/16/codetables/2177.table\
-	bufr/tables/0/wmo/16/codetables/2178.table\
-	bufr/tables/0/wmo/16/codetables/2179.table\
-	bufr/tables/0/wmo/16/codetables/2180.table\
-	bufr/tables/0/wmo/16/codetables/2181.table\
-	bufr/tables/0/wmo/16/codetables/2182.table\
-	bufr/tables/0/wmo/16/codetables/2183.table\
-	bufr/tables/0/wmo/16/codetables/2184.table\
-	bufr/tables/0/wmo/16/codetables/2185.table\
-	bufr/tables/0/wmo/16/codetables/2186.table\
-	bufr/tables/0/wmo/16/codetables/2187.table\
-	bufr/tables/0/wmo/16/codetables/2188.table\
-	bufr/tables/0/wmo/16/codetables/2189.table\
-	bufr/tables/0/wmo/16/codetables/2191.table\
-	bufr/tables/0/wmo/16/codetables/22056.table\
-	bufr/tables/0/wmo/16/codetables/22060.table\
-	bufr/tables/0/wmo/16/codetables/22061.table\
-	bufr/tables/0/wmo/16/codetables/22067.table\
-	bufr/tables/0/wmo/16/codetables/22068.table\
-	bufr/tables/0/wmo/16/codetables/22120.table\
-	bufr/tables/0/wmo/16/codetables/22121.table\
-	bufr/tables/0/wmo/16/codetables/22122.table\
-	bufr/tables/0/wmo/16/codetables/22123.table\
-	bufr/tables/0/wmo/16/codetables/22178.table\
-	bufr/tables/0/wmo/16/codetables/23001.table\
-	bufr/tables/0/wmo/16/codetables/23002.table\
-	bufr/tables/0/wmo/16/codetables/23003.table\
-	bufr/tables/0/wmo/16/codetables/23004.table\
-	bufr/tables/0/wmo/16/codetables/23005.table\
-	bufr/tables/0/wmo/16/codetables/23006.table\
-	bufr/tables/0/wmo/16/codetables/23007.table\
-	bufr/tables/0/wmo/16/codetables/23008.table\
-	bufr/tables/0/wmo/16/codetables/23009.table\
-	bufr/tables/0/wmo/16/codetables/23016.table\
-	bufr/tables/0/wmo/16/codetables/23018.table\
-	bufr/tables/0/wmo/16/codetables/23031.table\
-	bufr/tables/0/wmo/16/codetables/23032.table\
-	bufr/tables/0/wmo/16/codetables/24003.table\
-	bufr/tables/0/wmo/16/codetables/25004.table\
-	bufr/tables/0/wmo/16/codetables/25005.table\
-	bufr/tables/0/wmo/16/codetables/25006.table\
-	bufr/tables/0/wmo/16/codetables/25009.table\
-	bufr/tables/0/wmo/16/codetables/25010.table\
-	bufr/tables/0/wmo/16/codetables/25011.table\
-	bufr/tables/0/wmo/16/codetables/25012.table\
-	bufr/tables/0/wmo/16/codetables/25013.table\
-	bufr/tables/0/wmo/16/codetables/25015.table\
-	bufr/tables/0/wmo/16/codetables/25017.table\
-	bufr/tables/0/wmo/16/codetables/25020.table\
-	bufr/tables/0/wmo/16/codetables/25021.table\
-	bufr/tables/0/wmo/16/codetables/25022.table\
-	bufr/tables/0/wmo/16/codetables/25023.table\
-	bufr/tables/0/wmo/16/codetables/25024.table\
-	bufr/tables/0/wmo/16/codetables/25029.table\
-	bufr/tables/0/wmo/16/codetables/25030.table\
-	bufr/tables/0/wmo/16/codetables/25031.table\
-	bufr/tables/0/wmo/16/codetables/25032.table\
-	bufr/tables/0/wmo/16/codetables/25033.table\
-	bufr/tables/0/wmo/16/codetables/25034.table\
-	bufr/tables/0/wmo/16/codetables/25035.table\
-	bufr/tables/0/wmo/16/codetables/25036.table\
-	bufr/tables/0/wmo/16/codetables/25040.table\
-	bufr/tables/0/wmo/16/codetables/25041.table\
-	bufr/tables/0/wmo/16/codetables/25042.table\
-	bufr/tables/0/wmo/16/codetables/25053.table\
-	bufr/tables/0/wmo/16/codetables/25063.table\
-	bufr/tables/0/wmo/16/codetables/25069.table\
-	bufr/tables/0/wmo/16/codetables/25086.table\
-	bufr/tables/0/wmo/16/codetables/25090.table\
-	bufr/tables/0/wmo/16/codetables/25093.table\
-	bufr/tables/0/wmo/16/codetables/25095.table\
-	bufr/tables/0/wmo/16/codetables/25096.table\
-	bufr/tables/0/wmo/16/codetables/25097.table\
-	bufr/tables/0/wmo/16/codetables/25098.table\
-	bufr/tables/0/wmo/16/codetables/25099.table\
-	bufr/tables/0/wmo/16/codetables/25110.table\
-	bufr/tables/0/wmo/16/codetables/25120.table\
-	bufr/tables/0/wmo/16/codetables/25122.table\
-	bufr/tables/0/wmo/16/codetables/25123.table\
-	bufr/tables/0/wmo/16/codetables/25124.table\
-	bufr/tables/0/wmo/16/codetables/25150.table\
-	bufr/tables/0/wmo/16/codetables/25174.table\
-	bufr/tables/0/wmo/16/codetables/26010.table\
-	bufr/tables/0/wmo/16/codetables/29001.table\
-	bufr/tables/0/wmo/16/codetables/29002.table\
-	bufr/tables/0/wmo/16/codetables/30031.table\
-	bufr/tables/0/wmo/16/codetables/30032.table\
-	bufr/tables/0/wmo/16/codetables/31021.table\
-	bufr/tables/0/wmo/16/codetables/31031.table\
-	bufr/tables/0/wmo/16/codetables/33002.table\
-	bufr/tables/0/wmo/16/codetables/33003.table\
-	bufr/tables/0/wmo/16/codetables/33005.table\
-	bufr/tables/0/wmo/16/codetables/33006.table\
-	bufr/tables/0/wmo/16/codetables/33015.table\
-	bufr/tables/0/wmo/16/codetables/33020.table\
-	bufr/tables/0/wmo/16/codetables/33021.table\
-	bufr/tables/0/wmo/16/codetables/33022.table\
-	bufr/tables/0/wmo/16/codetables/33023.table\
-	bufr/tables/0/wmo/16/codetables/33024.table\
-	bufr/tables/0/wmo/16/codetables/33025.table\
-	bufr/tables/0/wmo/16/codetables/33026.table\
-	bufr/tables/0/wmo/16/codetables/33027.table\
-	bufr/tables/0/wmo/16/codetables/33028.table\
-	bufr/tables/0/wmo/16/codetables/33030.table\
-	bufr/tables/0/wmo/16/codetables/33031.table\
-	bufr/tables/0/wmo/16/codetables/33032.table\
-	bufr/tables/0/wmo/16/codetables/33033.table\
-	bufr/tables/0/wmo/16/codetables/33035.table\
-	bufr/tables/0/wmo/16/codetables/33037.table\
-	bufr/tables/0/wmo/16/codetables/33038.table\
-	bufr/tables/0/wmo/16/codetables/33039.table\
-	bufr/tables/0/wmo/16/codetables/33041.table\
-	bufr/tables/0/wmo/16/codetables/33042.table\
-	bufr/tables/0/wmo/16/codetables/33043.table\
-	bufr/tables/0/wmo/16/codetables/33044.table\
-	bufr/tables/0/wmo/16/codetables/33047.table\
-	bufr/tables/0/wmo/16/codetables/33048.table\
-	bufr/tables/0/wmo/16/codetables/33049.table\
-	bufr/tables/0/wmo/16/codetables/33050.table\
-	bufr/tables/0/wmo/16/codetables/33060.table\
-	bufr/tables/0/wmo/16/codetables/33070.table\
-	bufr/tables/0/wmo/16/codetables/33071.table\
-	bufr/tables/0/wmo/16/codetables/33072.table\
-	bufr/tables/0/wmo/16/codetables/33075.table\
-	bufr/tables/0/wmo/16/codetables/33076.table\
-	bufr/tables/0/wmo/16/codetables/33077.table\
-	bufr/tables/0/wmo/16/codetables/33078.table\
-	bufr/tables/0/wmo/16/codetables/33079.table\
-	bufr/tables/0/wmo/16/codetables/33080.table\
-	bufr/tables/0/wmo/16/codetables/33081.table\
-	bufr/tables/0/wmo/16/codetables/33082.table\
-	bufr/tables/0/wmo/16/codetables/33083.table\
-	bufr/tables/0/wmo/16/codetables/35000.table\
-	bufr/tables/0/wmo/16/codetables/35001.table\
-	bufr/tables/0/wmo/16/codetables/35030.table\
-	bufr/tables/0/wmo/16/codetables/35031.table\
-	bufr/tables/0/wmo/16/codetables/35032.table\
-	bufr/tables/0/wmo/16/codetables/35033.table\
-	bufr/tables/0/wmo/16/codetables/35034.table\
-	bufr/tables/0/wmo/16/codetables/35035.table\
-	bufr/tables/0/wmo/16/codetables/40005.table\
-	bufr/tables/0/wmo/16/codetables/40006.table\
-	bufr/tables/0/wmo/16/codetables/40011.table\
-	bufr/tables/0/wmo/16/codetables/40012.table\
-	bufr/tables/0/wmo/16/codetables/40013.table\
-	bufr/tables/0/wmo/16/codetables/40020.table\
-	bufr/tables/0/wmo/16/codetables/40023.table\
-	bufr/tables/0/wmo/16/codetables/40024.table\
-	bufr/tables/0/wmo/16/codetables/40025.table\
-	bufr/tables/0/wmo/16/codetables/4059.table\
-	bufr/tables/0/wmo/16/codetables/4080.table\
-	bufr/tables/0/wmo/16/codetables/8001.table\
-	bufr/tables/0/wmo/16/codetables/8002.table\
-	bufr/tables/0/wmo/16/codetables/8003.table\
-	bufr/tables/0/wmo/16/codetables/8004.table\
-	bufr/tables/0/wmo/16/codetables/8005.table\
-	bufr/tables/0/wmo/16/codetables/8006.table\
-	bufr/tables/0/wmo/16/codetables/8007.table\
-	bufr/tables/0/wmo/16/codetables/8008.table\
-	bufr/tables/0/wmo/16/codetables/8009.table\
-	bufr/tables/0/wmo/16/codetables/8010.table\
-	bufr/tables/0/wmo/16/codetables/8011.table\
-	bufr/tables/0/wmo/16/codetables/8012.table\
-	bufr/tables/0/wmo/16/codetables/8013.table\
-	bufr/tables/0/wmo/16/codetables/8014.table\
-	bufr/tables/0/wmo/16/codetables/8016.table\
-	bufr/tables/0/wmo/16/codetables/8017.table\
-	bufr/tables/0/wmo/16/codetables/8018.table\
-	bufr/tables/0/wmo/16/codetables/8019.table\
-	bufr/tables/0/wmo/16/codetables/8021.table\
-	bufr/tables/0/wmo/16/codetables/8023.table\
-	bufr/tables/0/wmo/16/codetables/8024.table\
-	bufr/tables/0/wmo/16/codetables/8025.table\
-	bufr/tables/0/wmo/16/codetables/8026.table\
-	bufr/tables/0/wmo/16/codetables/8029.table\
-	bufr/tables/0/wmo/16/codetables/8033.table\
-	bufr/tables/0/wmo/16/codetables/8035.table\
-	bufr/tables/0/wmo/16/codetables/8036.table\
-	bufr/tables/0/wmo/16/codetables/8039.table\
-	bufr/tables/0/wmo/16/codetables/8040.table\
-	bufr/tables/0/wmo/16/codetables/8041.table\
-	bufr/tables/0/wmo/16/codetables/8042.table\
-	bufr/tables/0/wmo/16/codetables/8043.table\
-	bufr/tables/0/wmo/16/codetables/8050.table\
-	bufr/tables/0/wmo/16/codetables/8051.table\
-	bufr/tables/0/wmo/16/codetables/8052.table\
-	bufr/tables/0/wmo/16/codetables/8053.table\
-	bufr/tables/0/wmo/16/codetables/8054.table\
-	bufr/tables/0/wmo/16/codetables/8060.table\
-	bufr/tables/0/wmo/16/codetables/8065.table\
-	bufr/tables/0/wmo/16/codetables/8066.table\
-	bufr/tables/0/wmo/16/codetables/8070.table\
-	bufr/tables/0/wmo/16/codetables/8072.table\
-	bufr/tables/0/wmo/16/codetables/8074.table\
-	bufr/tables/0/wmo/16/codetables/8075.table\
-	bufr/tables/0/wmo/16/codetables/8076.table\
-	bufr/tables/0/wmo/16/codetables/8077.table\
-	bufr/tables/0/wmo/16/codetables/8079.table\
-	bufr/tables/0/wmo/16/codetables/8080.table\
-	bufr/tables/0/wmo/16/codetables/8081.table\
-	bufr/tables/0/wmo/16/codetables/8082.table\
-	bufr/tables/0/wmo/16/codetables/8083.table\
-	bufr/tables/0/wmo/16/codetables/8085.table\
-	bufr/tables/0/wmo/16/codetables/8086.table
-
-definitionsbufr_tables_0_wmo_17dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/17
-dist_definitionsbufr_tables_0_wmo_17_DATA = \
-	bufr/tables/0/wmo/17/element.table\
-	bufr/tables/0/wmo/17/sequence.def
-
-definitionsbufr_tables_0_wmo_17_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/17/codetables
-dist_definitionsbufr_tables_0_wmo_17_codetables_DATA = \
-	bufr/tables/0/wmo/17/codetables/1003.table\
-	bufr/tables/0/wmo/17/codetables/10063.table\
-	bufr/tables/0/wmo/17/codetables/10064.table\
-	bufr/tables/0/wmo/17/codetables/1007.table\
-	bufr/tables/0/wmo/17/codetables/1024.table\
-	bufr/tables/0/wmo/17/codetables/1028.table\
-	bufr/tables/0/wmo/17/codetables/1029.table\
-	bufr/tables/0/wmo/17/codetables/1033.table\
-	bufr/tables/0/wmo/17/codetables/1034.table\
-	bufr/tables/0/wmo/17/codetables/1036.table\
-	bufr/tables/0/wmo/17/codetables/1038.table\
-	bufr/tables/0/wmo/17/codetables/1052.table\
-	bufr/tables/0/wmo/17/codetables/1090.table\
-	bufr/tables/0/wmo/17/codetables/1092.table\
-	bufr/tables/0/wmo/17/codetables/1101.table\
-	bufr/tables/0/wmo/17/codetables/11030.table\
-	bufr/tables/0/wmo/17/codetables/11031.table\
-	bufr/tables/0/wmo/17/codetables/11037.table\
-	bufr/tables/0/wmo/17/codetables/11038.table\
-	bufr/tables/0/wmo/17/codetables/11039.table\
-	bufr/tables/0/wmo/17/codetables/13038.table\
-	bufr/tables/0/wmo/17/codetables/13039.table\
-	bufr/tables/0/wmo/17/codetables/13040.table\
-	bufr/tables/0/wmo/17/codetables/13041.table\
-	bufr/tables/0/wmo/17/codetables/13051.table\
-	bufr/tables/0/wmo/17/codetables/13056.table\
-	bufr/tables/0/wmo/17/codetables/13057.table\
-	bufr/tables/0/wmo/17/codetables/15025.table\
-	bufr/tables/0/wmo/17/codetables/19001.table\
-	bufr/tables/0/wmo/17/codetables/19008.table\
-	bufr/tables/0/wmo/17/codetables/19010.table\
-	bufr/tables/0/wmo/17/codetables/19100.table\
-	bufr/tables/0/wmo/17/codetables/19101.table\
-	bufr/tables/0/wmo/17/codetables/19102.table\
-	bufr/tables/0/wmo/17/codetables/19103.table\
-	bufr/tables/0/wmo/17/codetables/19104.table\
-	bufr/tables/0/wmo/17/codetables/19105.table\
-	bufr/tables/0/wmo/17/codetables/19107.table\
-	bufr/tables/0/wmo/17/codetables/19108.table\
-	bufr/tables/0/wmo/17/codetables/19109.table\
-	bufr/tables/0/wmo/17/codetables/19110.table\
-	bufr/tables/0/wmo/17/codetables/19113.table\
-	bufr/tables/0/wmo/17/codetables/19117.table\
-	bufr/tables/0/wmo/17/codetables/19119.table\
-	bufr/tables/0/wmo/17/codetables/20003.table\
-	bufr/tables/0/wmo/17/codetables/20004.table\
-	bufr/tables/0/wmo/17/codetables/20005.table\
-	bufr/tables/0/wmo/17/codetables/20006.table\
-	bufr/tables/0/wmo/17/codetables/20008.table\
-	bufr/tables/0/wmo/17/codetables/20009.table\
-	bufr/tables/0/wmo/17/codetables/2001.table\
-	bufr/tables/0/wmo/17/codetables/20011.table\
-	bufr/tables/0/wmo/17/codetables/20012.table\
-	bufr/tables/0/wmo/17/codetables/20017.table\
-	bufr/tables/0/wmo/17/codetables/20018.table\
-	bufr/tables/0/wmo/17/codetables/2002.table\
-	bufr/tables/0/wmo/17/codetables/20021.table\
-	bufr/tables/0/wmo/17/codetables/20022.table\
-	bufr/tables/0/wmo/17/codetables/20023.table\
-	bufr/tables/0/wmo/17/codetables/20024.table\
-	bufr/tables/0/wmo/17/codetables/20025.table\
-	bufr/tables/0/wmo/17/codetables/20026.table\
-	bufr/tables/0/wmo/17/codetables/20027.table\
-	bufr/tables/0/wmo/17/codetables/20028.table\
-	bufr/tables/0/wmo/17/codetables/20029.table\
-	bufr/tables/0/wmo/17/codetables/2003.table\
-	bufr/tables/0/wmo/17/codetables/20032.table\
-	bufr/tables/0/wmo/17/codetables/20033.table\
-	bufr/tables/0/wmo/17/codetables/20034.table\
-	bufr/tables/0/wmo/17/codetables/20035.table\
-	bufr/tables/0/wmo/17/codetables/20036.table\
-	bufr/tables/0/wmo/17/codetables/20037.table\
-	bufr/tables/0/wmo/17/codetables/2004.table\
-	bufr/tables/0/wmo/17/codetables/20040.table\
-	bufr/tables/0/wmo/17/codetables/20041.table\
-	bufr/tables/0/wmo/17/codetables/20042.table\
-	bufr/tables/0/wmo/17/codetables/20045.table\
-	bufr/tables/0/wmo/17/codetables/20048.table\
-	bufr/tables/0/wmo/17/codetables/20050.table\
-	bufr/tables/0/wmo/17/codetables/20055.table\
-	bufr/tables/0/wmo/17/codetables/20056.table\
-	bufr/tables/0/wmo/17/codetables/20062.table\
-	bufr/tables/0/wmo/17/codetables/20063.table\
-	bufr/tables/0/wmo/17/codetables/20071.table\
-	bufr/tables/0/wmo/17/codetables/20085.table\
-	bufr/tables/0/wmo/17/codetables/20086.table\
-	bufr/tables/0/wmo/17/codetables/20087.table\
-	bufr/tables/0/wmo/17/codetables/20089.table\
-	bufr/tables/0/wmo/17/codetables/20090.table\
-	bufr/tables/0/wmo/17/codetables/20101.table\
-	bufr/tables/0/wmo/17/codetables/20102.table\
-	bufr/tables/0/wmo/17/codetables/20103.table\
-	bufr/tables/0/wmo/17/codetables/20104.table\
-	bufr/tables/0/wmo/17/codetables/20105.table\
-	bufr/tables/0/wmo/17/codetables/20106.table\
-	bufr/tables/0/wmo/17/codetables/20107.table\
-	bufr/tables/0/wmo/17/codetables/20108.table\
-	bufr/tables/0/wmo/17/codetables/2011.table\
-	bufr/tables/0/wmo/17/codetables/20119.table\
-	bufr/tables/0/wmo/17/codetables/20124.table\
-	bufr/tables/0/wmo/17/codetables/2013.table\
-	bufr/tables/0/wmo/17/codetables/20136.table\
-	bufr/tables/0/wmo/17/codetables/20137.table\
-	bufr/tables/0/wmo/17/codetables/2014.table\
-	bufr/tables/0/wmo/17/codetables/2015.table\
-	bufr/tables/0/wmo/17/codetables/2016.table\
-	bufr/tables/0/wmo/17/codetables/2019.table\
-	bufr/tables/0/wmo/17/codetables/2020.table\
-	bufr/tables/0/wmo/17/codetables/2021.table\
-	bufr/tables/0/wmo/17/codetables/2022.table\
-	bufr/tables/0/wmo/17/codetables/2023.table\
-	bufr/tables/0/wmo/17/codetables/2024.table\
-	bufr/tables/0/wmo/17/codetables/2025.table\
-	bufr/tables/0/wmo/17/codetables/2030.table\
-	bufr/tables/0/wmo/17/codetables/2031.table\
-	bufr/tables/0/wmo/17/codetables/2032.table\
-	bufr/tables/0/wmo/17/codetables/2033.table\
-	bufr/tables/0/wmo/17/codetables/2034.table\
-	bufr/tables/0/wmo/17/codetables/2036.table\
-	bufr/tables/0/wmo/17/codetables/2037.table\
-	bufr/tables/0/wmo/17/codetables/2038.table\
-	bufr/tables/0/wmo/17/codetables/2039.table\
-	bufr/tables/0/wmo/17/codetables/2040.table\
-	bufr/tables/0/wmo/17/codetables/2041.table\
-	bufr/tables/0/wmo/17/codetables/2042.table\
-	bufr/tables/0/wmo/17/codetables/2044.table\
-	bufr/tables/0/wmo/17/codetables/2045.table\
-	bufr/tables/0/wmo/17/codetables/2046.table\
-	bufr/tables/0/wmo/17/codetables/2047.table\
-	bufr/tables/0/wmo/17/codetables/2048.table\
-	bufr/tables/0/wmo/17/codetables/2049.table\
-	bufr/tables/0/wmo/17/codetables/2050.table\
-	bufr/tables/0/wmo/17/codetables/2051.table\
-	bufr/tables/0/wmo/17/codetables/2052.table\
-	bufr/tables/0/wmo/17/codetables/2053.table\
-	bufr/tables/0/wmo/17/codetables/2054.table\
-	bufr/tables/0/wmo/17/codetables/2055.table\
-	bufr/tables/0/wmo/17/codetables/2056.table\
-	bufr/tables/0/wmo/17/codetables/2057.table\
-	bufr/tables/0/wmo/17/codetables/2058.table\
-	bufr/tables/0/wmo/17/codetables/2059.table\
-	bufr/tables/0/wmo/17/codetables/2060.table\
-	bufr/tables/0/wmo/17/codetables/2061.table\
-	bufr/tables/0/wmo/17/codetables/2062.table\
-	bufr/tables/0/wmo/17/codetables/2064.table\
-	bufr/tables/0/wmo/17/codetables/2066.table\
-	bufr/tables/0/wmo/17/codetables/2070.table\
-	bufr/tables/0/wmo/17/codetables/2080.table\
-	bufr/tables/0/wmo/17/codetables/2081.table\
-	bufr/tables/0/wmo/17/codetables/2083.table\
-	bufr/tables/0/wmo/17/codetables/2084.table\
-	bufr/tables/0/wmo/17/codetables/2095.table\
-	bufr/tables/0/wmo/17/codetables/2096.table\
-	bufr/tables/0/wmo/17/codetables/2097.table\
-	bufr/tables/0/wmo/17/codetables/2099.table\
-	bufr/tables/0/wmo/17/codetables/2101.table\
-	bufr/tables/0/wmo/17/codetables/2103.table\
-	bufr/tables/0/wmo/17/codetables/2104.table\
-	bufr/tables/0/wmo/17/codetables/21066.table\
-	bufr/tables/0/wmo/17/codetables/21067.table\
-	bufr/tables/0/wmo/17/codetables/21068.table\
-	bufr/tables/0/wmo/17/codetables/21069.table\
-	bufr/tables/0/wmo/17/codetables/21070.table\
-	bufr/tables/0/wmo/17/codetables/21072.table\
-	bufr/tables/0/wmo/17/codetables/21073.table\
-	bufr/tables/0/wmo/17/codetables/21076.table\
-	bufr/tables/0/wmo/17/codetables/21109.table\
-	bufr/tables/0/wmo/17/codetables/21115.table\
-	bufr/tables/0/wmo/17/codetables/21116.table\
-	bufr/tables/0/wmo/17/codetables/21119.table\
-	bufr/tables/0/wmo/17/codetables/21144.table\
-	bufr/tables/0/wmo/17/codetables/2115.table\
-	bufr/tables/0/wmo/17/codetables/21150.table\
-	bufr/tables/0/wmo/17/codetables/21155.table\
-	bufr/tables/0/wmo/17/codetables/21158.table\
-	bufr/tables/0/wmo/17/codetables/21159.table\
-	bufr/tables/0/wmo/17/codetables/21169.table\
-	bufr/tables/0/wmo/17/codetables/2119.table\
-	bufr/tables/0/wmo/17/codetables/2131.table\
-	bufr/tables/0/wmo/17/codetables/2137.table\
-	bufr/tables/0/wmo/17/codetables/2138.table\
-	bufr/tables/0/wmo/17/codetables/2143.table\
-	bufr/tables/0/wmo/17/codetables/2144.table\
-	bufr/tables/0/wmo/17/codetables/2145.table\
-	bufr/tables/0/wmo/17/codetables/2146.table\
-	bufr/tables/0/wmo/17/codetables/2148.table\
-	bufr/tables/0/wmo/17/codetables/2149.table\
-	bufr/tables/0/wmo/17/codetables/2150.table\
-	bufr/tables/0/wmo/17/codetables/2151.table\
-	bufr/tables/0/wmo/17/codetables/2152.table\
-	bufr/tables/0/wmo/17/codetables/2158.table\
-	bufr/tables/0/wmo/17/codetables/2159.table\
-	bufr/tables/0/wmo/17/codetables/2160.table\
-	bufr/tables/0/wmo/17/codetables/2163.table\
-	bufr/tables/0/wmo/17/codetables/2164.table\
-	bufr/tables/0/wmo/17/codetables/2165.table\
-	bufr/tables/0/wmo/17/codetables/2166.table\
-	bufr/tables/0/wmo/17/codetables/2167.table\
-	bufr/tables/0/wmo/17/codetables/2169.table\
-	bufr/tables/0/wmo/17/codetables/2172.table\
-	bufr/tables/0/wmo/17/codetables/2175.table\
-	bufr/tables/0/wmo/17/codetables/2176.table\
-	bufr/tables/0/wmo/17/codetables/2177.table\
-	bufr/tables/0/wmo/17/codetables/2178.table\
-	bufr/tables/0/wmo/17/codetables/2179.table\
-	bufr/tables/0/wmo/17/codetables/2180.table\
-	bufr/tables/0/wmo/17/codetables/2181.table\
-	bufr/tables/0/wmo/17/codetables/2182.table\
-	bufr/tables/0/wmo/17/codetables/2183.table\
-	bufr/tables/0/wmo/17/codetables/2184.table\
-	bufr/tables/0/wmo/17/codetables/2185.table\
-	bufr/tables/0/wmo/17/codetables/2186.table\
-	bufr/tables/0/wmo/17/codetables/2187.table\
-	bufr/tables/0/wmo/17/codetables/2188.table\
-	bufr/tables/0/wmo/17/codetables/2189.table\
-	bufr/tables/0/wmo/17/codetables/2191.table\
-	bufr/tables/0/wmo/17/codetables/22056.table\
-	bufr/tables/0/wmo/17/codetables/22060.table\
-	bufr/tables/0/wmo/17/codetables/22061.table\
-	bufr/tables/0/wmo/17/codetables/22067.table\
-	bufr/tables/0/wmo/17/codetables/22068.table\
-	bufr/tables/0/wmo/17/codetables/22120.table\
-	bufr/tables/0/wmo/17/codetables/22121.table\
-	bufr/tables/0/wmo/17/codetables/22122.table\
-	bufr/tables/0/wmo/17/codetables/22123.table\
-	bufr/tables/0/wmo/17/codetables/22178.table\
-	bufr/tables/0/wmo/17/codetables/23001.table\
-	bufr/tables/0/wmo/17/codetables/23002.table\
-	bufr/tables/0/wmo/17/codetables/23003.table\
-	bufr/tables/0/wmo/17/codetables/23004.table\
-	bufr/tables/0/wmo/17/codetables/23005.table\
-	bufr/tables/0/wmo/17/codetables/23006.table\
-	bufr/tables/0/wmo/17/codetables/23007.table\
-	bufr/tables/0/wmo/17/codetables/23008.table\
-	bufr/tables/0/wmo/17/codetables/23009.table\
-	bufr/tables/0/wmo/17/codetables/23016.table\
-	bufr/tables/0/wmo/17/codetables/23018.table\
-	bufr/tables/0/wmo/17/codetables/23031.table\
-	bufr/tables/0/wmo/17/codetables/23032.table\
-	bufr/tables/0/wmo/17/codetables/24003.table\
-	bufr/tables/0/wmo/17/codetables/25004.table\
-	bufr/tables/0/wmo/17/codetables/25005.table\
-	bufr/tables/0/wmo/17/codetables/25006.table\
-	bufr/tables/0/wmo/17/codetables/25009.table\
-	bufr/tables/0/wmo/17/codetables/25010.table\
-	bufr/tables/0/wmo/17/codetables/25011.table\
-	bufr/tables/0/wmo/17/codetables/25012.table\
-	bufr/tables/0/wmo/17/codetables/25013.table\
-	bufr/tables/0/wmo/17/codetables/25015.table\
-	bufr/tables/0/wmo/17/codetables/25017.table\
-	bufr/tables/0/wmo/17/codetables/25020.table\
-	bufr/tables/0/wmo/17/codetables/25021.table\
-	bufr/tables/0/wmo/17/codetables/25022.table\
-	bufr/tables/0/wmo/17/codetables/25023.table\
-	bufr/tables/0/wmo/17/codetables/25024.table\
-	bufr/tables/0/wmo/17/codetables/25029.table\
-	bufr/tables/0/wmo/17/codetables/25030.table\
-	bufr/tables/0/wmo/17/codetables/25031.table\
-	bufr/tables/0/wmo/17/codetables/25032.table\
-	bufr/tables/0/wmo/17/codetables/25033.table\
-	bufr/tables/0/wmo/17/codetables/25034.table\
-	bufr/tables/0/wmo/17/codetables/25035.table\
-	bufr/tables/0/wmo/17/codetables/25036.table\
-	bufr/tables/0/wmo/17/codetables/25040.table\
-	bufr/tables/0/wmo/17/codetables/25041.table\
-	bufr/tables/0/wmo/17/codetables/25042.table\
-	bufr/tables/0/wmo/17/codetables/25053.table\
-	bufr/tables/0/wmo/17/codetables/25063.table\
-	bufr/tables/0/wmo/17/codetables/25069.table\
-	bufr/tables/0/wmo/17/codetables/25086.table\
-	bufr/tables/0/wmo/17/codetables/25090.table\
-	bufr/tables/0/wmo/17/codetables/25093.table\
-	bufr/tables/0/wmo/17/codetables/25095.table\
-	bufr/tables/0/wmo/17/codetables/25096.table\
-	bufr/tables/0/wmo/17/codetables/25097.table\
-	bufr/tables/0/wmo/17/codetables/25098.table\
-	bufr/tables/0/wmo/17/codetables/25099.table\
-	bufr/tables/0/wmo/17/codetables/25110.table\
-	bufr/tables/0/wmo/17/codetables/25120.table\
-	bufr/tables/0/wmo/17/codetables/25122.table\
-	bufr/tables/0/wmo/17/codetables/25123.table\
-	bufr/tables/0/wmo/17/codetables/25124.table\
-	bufr/tables/0/wmo/17/codetables/25150.table\
-	bufr/tables/0/wmo/17/codetables/25174.table\
-	bufr/tables/0/wmo/17/codetables/26010.table\
-	bufr/tables/0/wmo/17/codetables/29001.table\
-	bufr/tables/0/wmo/17/codetables/29002.table\
-	bufr/tables/0/wmo/17/codetables/30031.table\
-	bufr/tables/0/wmo/17/codetables/30032.table\
-	bufr/tables/0/wmo/17/codetables/31021.table\
-	bufr/tables/0/wmo/17/codetables/31031.table\
-	bufr/tables/0/wmo/17/codetables/33002.table\
-	bufr/tables/0/wmo/17/codetables/33003.table\
-	bufr/tables/0/wmo/17/codetables/33005.table\
-	bufr/tables/0/wmo/17/codetables/33006.table\
-	bufr/tables/0/wmo/17/codetables/33015.table\
-	bufr/tables/0/wmo/17/codetables/33020.table\
-	bufr/tables/0/wmo/17/codetables/33021.table\
-	bufr/tables/0/wmo/17/codetables/33022.table\
-	bufr/tables/0/wmo/17/codetables/33023.table\
-	bufr/tables/0/wmo/17/codetables/33024.table\
-	bufr/tables/0/wmo/17/codetables/33025.table\
-	bufr/tables/0/wmo/17/codetables/33026.table\
-	bufr/tables/0/wmo/17/codetables/33027.table\
-	bufr/tables/0/wmo/17/codetables/33028.table\
-	bufr/tables/0/wmo/17/codetables/33030.table\
-	bufr/tables/0/wmo/17/codetables/33031.table\
-	bufr/tables/0/wmo/17/codetables/33032.table\
-	bufr/tables/0/wmo/17/codetables/33033.table\
-	bufr/tables/0/wmo/17/codetables/33035.table\
-	bufr/tables/0/wmo/17/codetables/33037.table\
-	bufr/tables/0/wmo/17/codetables/33038.table\
-	bufr/tables/0/wmo/17/codetables/33039.table\
-	bufr/tables/0/wmo/17/codetables/33041.table\
-	bufr/tables/0/wmo/17/codetables/33042.table\
-	bufr/tables/0/wmo/17/codetables/33043.table\
-	bufr/tables/0/wmo/17/codetables/33044.table\
-	bufr/tables/0/wmo/17/codetables/33047.table\
-	bufr/tables/0/wmo/17/codetables/33048.table\
-	bufr/tables/0/wmo/17/codetables/33049.table\
-	bufr/tables/0/wmo/17/codetables/33050.table\
-	bufr/tables/0/wmo/17/codetables/33060.table\
-	bufr/tables/0/wmo/17/codetables/33070.table\
-	bufr/tables/0/wmo/17/codetables/33071.table\
-	bufr/tables/0/wmo/17/codetables/33072.table\
-	bufr/tables/0/wmo/17/codetables/33075.table\
-	bufr/tables/0/wmo/17/codetables/33076.table\
-	bufr/tables/0/wmo/17/codetables/33077.table\
-	bufr/tables/0/wmo/17/codetables/33078.table\
-	bufr/tables/0/wmo/17/codetables/33079.table\
-	bufr/tables/0/wmo/17/codetables/33080.table\
-	bufr/tables/0/wmo/17/codetables/33081.table\
-	bufr/tables/0/wmo/17/codetables/33082.table\
-	bufr/tables/0/wmo/17/codetables/33083.table\
-	bufr/tables/0/wmo/17/codetables/35000.table\
-	bufr/tables/0/wmo/17/codetables/35001.table\
-	bufr/tables/0/wmo/17/codetables/35030.table\
-	bufr/tables/0/wmo/17/codetables/35031.table\
-	bufr/tables/0/wmo/17/codetables/35032.table\
-	bufr/tables/0/wmo/17/codetables/35033.table\
-	bufr/tables/0/wmo/17/codetables/35034.table\
-	bufr/tables/0/wmo/17/codetables/35035.table\
-	bufr/tables/0/wmo/17/codetables/40005.table\
-	bufr/tables/0/wmo/17/codetables/40006.table\
-	bufr/tables/0/wmo/17/codetables/40011.table\
-	bufr/tables/0/wmo/17/codetables/40012.table\
-	bufr/tables/0/wmo/17/codetables/40013.table\
-	bufr/tables/0/wmo/17/codetables/40020.table\
-	bufr/tables/0/wmo/17/codetables/40023.table\
-	bufr/tables/0/wmo/17/codetables/40024.table\
-	bufr/tables/0/wmo/17/codetables/40025.table\
-	bufr/tables/0/wmo/17/codetables/4059.table\
-	bufr/tables/0/wmo/17/codetables/4080.table\
-	bufr/tables/0/wmo/17/codetables/8001.table\
-	bufr/tables/0/wmo/17/codetables/8002.table\
-	bufr/tables/0/wmo/17/codetables/8003.table\
-	bufr/tables/0/wmo/17/codetables/8004.table\
-	bufr/tables/0/wmo/17/codetables/8005.table\
-	bufr/tables/0/wmo/17/codetables/8006.table\
-	bufr/tables/0/wmo/17/codetables/8007.table\
-	bufr/tables/0/wmo/17/codetables/8008.table\
-	bufr/tables/0/wmo/17/codetables/8009.table\
-	bufr/tables/0/wmo/17/codetables/8010.table\
-	bufr/tables/0/wmo/17/codetables/8011.table\
-	bufr/tables/0/wmo/17/codetables/8012.table\
-	bufr/tables/0/wmo/17/codetables/8013.table\
-	bufr/tables/0/wmo/17/codetables/8014.table\
-	bufr/tables/0/wmo/17/codetables/8016.table\
-	bufr/tables/0/wmo/17/codetables/8017.table\
-	bufr/tables/0/wmo/17/codetables/8018.table\
-	bufr/tables/0/wmo/17/codetables/8019.table\
-	bufr/tables/0/wmo/17/codetables/8021.table\
-	bufr/tables/0/wmo/17/codetables/8023.table\
-	bufr/tables/0/wmo/17/codetables/8024.table\
-	bufr/tables/0/wmo/17/codetables/8025.table\
-	bufr/tables/0/wmo/17/codetables/8026.table\
-	bufr/tables/0/wmo/17/codetables/8029.table\
-	bufr/tables/0/wmo/17/codetables/8033.table\
-	bufr/tables/0/wmo/17/codetables/8035.table\
-	bufr/tables/0/wmo/17/codetables/8036.table\
-	bufr/tables/0/wmo/17/codetables/8039.table\
-	bufr/tables/0/wmo/17/codetables/8040.table\
-	bufr/tables/0/wmo/17/codetables/8041.table\
-	bufr/tables/0/wmo/17/codetables/8042.table\
-	bufr/tables/0/wmo/17/codetables/8043.table\
-	bufr/tables/0/wmo/17/codetables/8050.table\
-	bufr/tables/0/wmo/17/codetables/8051.table\
-	bufr/tables/0/wmo/17/codetables/8052.table\
-	bufr/tables/0/wmo/17/codetables/8053.table\
-	bufr/tables/0/wmo/17/codetables/8054.table\
-	bufr/tables/0/wmo/17/codetables/8060.table\
-	bufr/tables/0/wmo/17/codetables/8065.table\
-	bufr/tables/0/wmo/17/codetables/8066.table\
-	bufr/tables/0/wmo/17/codetables/8070.table\
-	bufr/tables/0/wmo/17/codetables/8072.table\
-	bufr/tables/0/wmo/17/codetables/8074.table\
-	bufr/tables/0/wmo/17/codetables/8075.table\
-	bufr/tables/0/wmo/17/codetables/8076.table\
-	bufr/tables/0/wmo/17/codetables/8077.table\
-	bufr/tables/0/wmo/17/codetables/8079.table\
-	bufr/tables/0/wmo/17/codetables/8080.table\
-	bufr/tables/0/wmo/17/codetables/8081.table\
-	bufr/tables/0/wmo/17/codetables/8082.table\
-	bufr/tables/0/wmo/17/codetables/8083.table\
-	bufr/tables/0/wmo/17/codetables/8085.table\
-	bufr/tables/0/wmo/17/codetables/8086.table
-
-definitionsbufr_tables_0_wmo_18dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/18
-dist_definitionsbufr_tables_0_wmo_18_DATA = \
-	bufr/tables/0/wmo/18/element.table\
-	bufr/tables/0/wmo/18/sequence.def
-
-definitionsbufr_tables_0_wmo_18_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/18/codetables
-dist_definitionsbufr_tables_0_wmo_18_codetables_DATA = \
-	bufr/tables/0/wmo/18/codetables/1003.table\
-	bufr/tables/0/wmo/18/codetables/10063.table\
-	bufr/tables/0/wmo/18/codetables/10064.table\
-	bufr/tables/0/wmo/18/codetables/1007.table\
-	bufr/tables/0/wmo/18/codetables/1024.table\
-	bufr/tables/0/wmo/18/codetables/1028.table\
-	bufr/tables/0/wmo/18/codetables/1029.table\
-	bufr/tables/0/wmo/18/codetables/1033.table\
-	bufr/tables/0/wmo/18/codetables/1034.table\
-	bufr/tables/0/wmo/18/codetables/1036.table\
-	bufr/tables/0/wmo/18/codetables/1038.table\
-	bufr/tables/0/wmo/18/codetables/1052.table\
-	bufr/tables/0/wmo/18/codetables/1090.table\
-	bufr/tables/0/wmo/18/codetables/1092.table\
-	bufr/tables/0/wmo/18/codetables/1101.table\
-	bufr/tables/0/wmo/18/codetables/11030.table\
-	bufr/tables/0/wmo/18/codetables/11031.table\
-	bufr/tables/0/wmo/18/codetables/11037.table\
-	bufr/tables/0/wmo/18/codetables/11038.table\
-	bufr/tables/0/wmo/18/codetables/11039.table\
-	bufr/tables/0/wmo/18/codetables/13038.table\
-	bufr/tables/0/wmo/18/codetables/13039.table\
-	bufr/tables/0/wmo/18/codetables/13040.table\
-	bufr/tables/0/wmo/18/codetables/13041.table\
-	bufr/tables/0/wmo/18/codetables/13051.table\
-	bufr/tables/0/wmo/18/codetables/13056.table\
-	bufr/tables/0/wmo/18/codetables/13057.table\
-	bufr/tables/0/wmo/18/codetables/15025.table\
-	bufr/tables/0/wmo/18/codetables/19001.table\
-	bufr/tables/0/wmo/18/codetables/19008.table\
-	bufr/tables/0/wmo/18/codetables/19010.table\
-	bufr/tables/0/wmo/18/codetables/19100.table\
-	bufr/tables/0/wmo/18/codetables/19101.table\
-	bufr/tables/0/wmo/18/codetables/19102.table\
-	bufr/tables/0/wmo/18/codetables/19103.table\
-	bufr/tables/0/wmo/18/codetables/19104.table\
-	bufr/tables/0/wmo/18/codetables/19105.table\
-	bufr/tables/0/wmo/18/codetables/19107.table\
-	bufr/tables/0/wmo/18/codetables/19108.table\
-	bufr/tables/0/wmo/18/codetables/19109.table\
-	bufr/tables/0/wmo/18/codetables/19110.table\
-	bufr/tables/0/wmo/18/codetables/19113.table\
-	bufr/tables/0/wmo/18/codetables/19117.table\
-	bufr/tables/0/wmo/18/codetables/19119.table\
-	bufr/tables/0/wmo/18/codetables/20003.table\
-	bufr/tables/0/wmo/18/codetables/20004.table\
-	bufr/tables/0/wmo/18/codetables/20005.table\
-	bufr/tables/0/wmo/18/codetables/20006.table\
-	bufr/tables/0/wmo/18/codetables/20008.table\
-	bufr/tables/0/wmo/18/codetables/20009.table\
-	bufr/tables/0/wmo/18/codetables/2001.table\
-	bufr/tables/0/wmo/18/codetables/20011.table\
-	bufr/tables/0/wmo/18/codetables/20012.table\
-	bufr/tables/0/wmo/18/codetables/20017.table\
-	bufr/tables/0/wmo/18/codetables/20018.table\
-	bufr/tables/0/wmo/18/codetables/2002.table\
-	bufr/tables/0/wmo/18/codetables/20021.table\
-	bufr/tables/0/wmo/18/codetables/20022.table\
-	bufr/tables/0/wmo/18/codetables/20023.table\
-	bufr/tables/0/wmo/18/codetables/20024.table\
-	bufr/tables/0/wmo/18/codetables/20025.table\
-	bufr/tables/0/wmo/18/codetables/20026.table\
-	bufr/tables/0/wmo/18/codetables/20027.table\
-	bufr/tables/0/wmo/18/codetables/20028.table\
-	bufr/tables/0/wmo/18/codetables/20029.table\
-	bufr/tables/0/wmo/18/codetables/2003.table\
-	bufr/tables/0/wmo/18/codetables/20032.table\
-	bufr/tables/0/wmo/18/codetables/20033.table\
-	bufr/tables/0/wmo/18/codetables/20034.table\
-	bufr/tables/0/wmo/18/codetables/20035.table\
-	bufr/tables/0/wmo/18/codetables/20036.table\
-	bufr/tables/0/wmo/18/codetables/20037.table\
-	bufr/tables/0/wmo/18/codetables/2004.table\
-	bufr/tables/0/wmo/18/codetables/20040.table\
-	bufr/tables/0/wmo/18/codetables/20041.table\
-	bufr/tables/0/wmo/18/codetables/20042.table\
-	bufr/tables/0/wmo/18/codetables/20045.table\
-	bufr/tables/0/wmo/18/codetables/20048.table\
-	bufr/tables/0/wmo/18/codetables/20050.table\
-	bufr/tables/0/wmo/18/codetables/20055.table\
-	bufr/tables/0/wmo/18/codetables/20056.table\
-	bufr/tables/0/wmo/18/codetables/20062.table\
-	bufr/tables/0/wmo/18/codetables/20063.table\
-	bufr/tables/0/wmo/18/codetables/20071.table\
-	bufr/tables/0/wmo/18/codetables/20085.table\
-	bufr/tables/0/wmo/18/codetables/20086.table\
-	bufr/tables/0/wmo/18/codetables/20087.table\
-	bufr/tables/0/wmo/18/codetables/20089.table\
-	bufr/tables/0/wmo/18/codetables/20090.table\
-	bufr/tables/0/wmo/18/codetables/20101.table\
-	bufr/tables/0/wmo/18/codetables/20102.table\
-	bufr/tables/0/wmo/18/codetables/20103.table\
-	bufr/tables/0/wmo/18/codetables/20104.table\
-	bufr/tables/0/wmo/18/codetables/20105.table\
-	bufr/tables/0/wmo/18/codetables/20106.table\
-	bufr/tables/0/wmo/18/codetables/20107.table\
-	bufr/tables/0/wmo/18/codetables/20108.table\
-	bufr/tables/0/wmo/18/codetables/2011.table\
-	bufr/tables/0/wmo/18/codetables/20119.table\
-	bufr/tables/0/wmo/18/codetables/20124.table\
-	bufr/tables/0/wmo/18/codetables/2013.table\
-	bufr/tables/0/wmo/18/codetables/20136.table\
-	bufr/tables/0/wmo/18/codetables/2014.table\
-	bufr/tables/0/wmo/18/codetables/2015.table\
-	bufr/tables/0/wmo/18/codetables/2016.table\
-	bufr/tables/0/wmo/18/codetables/2017.table\
-	bufr/tables/0/wmo/18/codetables/2019.table\
-	bufr/tables/0/wmo/18/codetables/2020.table\
-	bufr/tables/0/wmo/18/codetables/2021.table\
-	bufr/tables/0/wmo/18/codetables/2022.table\
-	bufr/tables/0/wmo/18/codetables/2023.table\
-	bufr/tables/0/wmo/18/codetables/2024.table\
-	bufr/tables/0/wmo/18/codetables/2025.table\
-	bufr/tables/0/wmo/18/codetables/2030.table\
-	bufr/tables/0/wmo/18/codetables/2031.table\
-	bufr/tables/0/wmo/18/codetables/2032.table\
-	bufr/tables/0/wmo/18/codetables/2033.table\
-	bufr/tables/0/wmo/18/codetables/2034.table\
-	bufr/tables/0/wmo/18/codetables/2036.table\
-	bufr/tables/0/wmo/18/codetables/2037.table\
-	bufr/tables/0/wmo/18/codetables/2038.table\
-	bufr/tables/0/wmo/18/codetables/2039.table\
-	bufr/tables/0/wmo/18/codetables/2040.table\
-	bufr/tables/0/wmo/18/codetables/2041.table\
-	bufr/tables/0/wmo/18/codetables/2042.table\
-	bufr/tables/0/wmo/18/codetables/2044.table\
-	bufr/tables/0/wmo/18/codetables/2045.table\
-	bufr/tables/0/wmo/18/codetables/2046.table\
-	bufr/tables/0/wmo/18/codetables/2047.table\
-	bufr/tables/0/wmo/18/codetables/2048.table\
-	bufr/tables/0/wmo/18/codetables/2049.table\
-	bufr/tables/0/wmo/18/codetables/2050.table\
-	bufr/tables/0/wmo/18/codetables/2051.table\
-	bufr/tables/0/wmo/18/codetables/2052.table\
-	bufr/tables/0/wmo/18/codetables/2053.table\
-	bufr/tables/0/wmo/18/codetables/2054.table\
-	bufr/tables/0/wmo/18/codetables/2055.table\
-	bufr/tables/0/wmo/18/codetables/2056.table\
-	bufr/tables/0/wmo/18/codetables/2057.table\
-	bufr/tables/0/wmo/18/codetables/2058.table\
-	bufr/tables/0/wmo/18/codetables/2059.table\
-	bufr/tables/0/wmo/18/codetables/2060.table\
-	bufr/tables/0/wmo/18/codetables/2061.table\
-	bufr/tables/0/wmo/18/codetables/2062.table\
-	bufr/tables/0/wmo/18/codetables/2064.table\
-	bufr/tables/0/wmo/18/codetables/2066.table\
-	bufr/tables/0/wmo/18/codetables/2070.table\
-	bufr/tables/0/wmo/18/codetables/2080.table\
-	bufr/tables/0/wmo/18/codetables/2081.table\
-	bufr/tables/0/wmo/18/codetables/2083.table\
-	bufr/tables/0/wmo/18/codetables/2084.table\
-	bufr/tables/0/wmo/18/codetables/2095.table\
-	bufr/tables/0/wmo/18/codetables/2096.table\
-	bufr/tables/0/wmo/18/codetables/2097.table\
-	bufr/tables/0/wmo/18/codetables/2099.table\
-	bufr/tables/0/wmo/18/codetables/2101.table\
-	bufr/tables/0/wmo/18/codetables/2103.table\
-	bufr/tables/0/wmo/18/codetables/2104.table\
-	bufr/tables/0/wmo/18/codetables/21066.table\
-	bufr/tables/0/wmo/18/codetables/21067.table\
-	bufr/tables/0/wmo/18/codetables/21068.table\
-	bufr/tables/0/wmo/18/codetables/21069.table\
-	bufr/tables/0/wmo/18/codetables/21070.table\
-	bufr/tables/0/wmo/18/codetables/21072.table\
-	bufr/tables/0/wmo/18/codetables/21073.table\
-	bufr/tables/0/wmo/18/codetables/21076.table\
-	bufr/tables/0/wmo/18/codetables/21109.table\
-	bufr/tables/0/wmo/18/codetables/21115.table\
-	bufr/tables/0/wmo/18/codetables/21116.table\
-	bufr/tables/0/wmo/18/codetables/21119.table\
-	bufr/tables/0/wmo/18/codetables/21144.table\
-	bufr/tables/0/wmo/18/codetables/2115.table\
-	bufr/tables/0/wmo/18/codetables/21150.table\
-	bufr/tables/0/wmo/18/codetables/21155.table\
-	bufr/tables/0/wmo/18/codetables/21158.table\
-	bufr/tables/0/wmo/18/codetables/21159.table\
-	bufr/tables/0/wmo/18/codetables/21169.table\
-	bufr/tables/0/wmo/18/codetables/2119.table\
-	bufr/tables/0/wmo/18/codetables/2131.table\
-	bufr/tables/0/wmo/18/codetables/2137.table\
-	bufr/tables/0/wmo/18/codetables/2138.table\
-	bufr/tables/0/wmo/18/codetables/2143.table\
-	bufr/tables/0/wmo/18/codetables/2144.table\
-	bufr/tables/0/wmo/18/codetables/2145.table\
-	bufr/tables/0/wmo/18/codetables/2146.table\
-	bufr/tables/0/wmo/18/codetables/2148.table\
-	bufr/tables/0/wmo/18/codetables/2149.table\
-	bufr/tables/0/wmo/18/codetables/2150.table\
-	bufr/tables/0/wmo/18/codetables/2151.table\
-	bufr/tables/0/wmo/18/codetables/2152.table\
-	bufr/tables/0/wmo/18/codetables/2158.table\
-	bufr/tables/0/wmo/18/codetables/2159.table\
-	bufr/tables/0/wmo/18/codetables/2160.table\
-	bufr/tables/0/wmo/18/codetables/2163.table\
-	bufr/tables/0/wmo/18/codetables/2164.table\
-	bufr/tables/0/wmo/18/codetables/2165.table\
-	bufr/tables/0/wmo/18/codetables/2166.table\
-	bufr/tables/0/wmo/18/codetables/2167.table\
-	bufr/tables/0/wmo/18/codetables/2169.table\
-	bufr/tables/0/wmo/18/codetables/2170.table\
-	bufr/tables/0/wmo/18/codetables/2172.table\
-	bufr/tables/0/wmo/18/codetables/2175.table\
-	bufr/tables/0/wmo/18/codetables/2176.table\
-	bufr/tables/0/wmo/18/codetables/2177.table\
-	bufr/tables/0/wmo/18/codetables/2178.table\
-	bufr/tables/0/wmo/18/codetables/2179.table\
-	bufr/tables/0/wmo/18/codetables/2180.table\
-	bufr/tables/0/wmo/18/codetables/2181.table\
-	bufr/tables/0/wmo/18/codetables/2182.table\
-	bufr/tables/0/wmo/18/codetables/2183.table\
-	bufr/tables/0/wmo/18/codetables/2184.table\
-	bufr/tables/0/wmo/18/codetables/2185.table\
-	bufr/tables/0/wmo/18/codetables/2186.table\
-	bufr/tables/0/wmo/18/codetables/2187.table\
-	bufr/tables/0/wmo/18/codetables/2188.table\
-	bufr/tables/0/wmo/18/codetables/2189.table\
-	bufr/tables/0/wmo/18/codetables/2191.table\
-	bufr/tables/0/wmo/18/codetables/22056.table\
-	bufr/tables/0/wmo/18/codetables/22060.table\
-	bufr/tables/0/wmo/18/codetables/22061.table\
-	bufr/tables/0/wmo/18/codetables/22067.table\
-	bufr/tables/0/wmo/18/codetables/22068.table\
-	bufr/tables/0/wmo/18/codetables/22120.table\
-	bufr/tables/0/wmo/18/codetables/22121.table\
-	bufr/tables/0/wmo/18/codetables/22122.table\
-	bufr/tables/0/wmo/18/codetables/22123.table\
-	bufr/tables/0/wmo/18/codetables/23001.table\
-	bufr/tables/0/wmo/18/codetables/23002.table\
-	bufr/tables/0/wmo/18/codetables/23003.table\
-	bufr/tables/0/wmo/18/codetables/23004.table\
-	bufr/tables/0/wmo/18/codetables/23005.table\
-	bufr/tables/0/wmo/18/codetables/23006.table\
-	bufr/tables/0/wmo/18/codetables/23007.table\
-	bufr/tables/0/wmo/18/codetables/23008.table\
-	bufr/tables/0/wmo/18/codetables/23009.table\
-	bufr/tables/0/wmo/18/codetables/23016.table\
-	bufr/tables/0/wmo/18/codetables/23018.table\
-	bufr/tables/0/wmo/18/codetables/23031.table\
-	bufr/tables/0/wmo/18/codetables/23032.table\
-	bufr/tables/0/wmo/18/codetables/24003.table\
-	bufr/tables/0/wmo/18/codetables/25004.table\
-	bufr/tables/0/wmo/18/codetables/25005.table\
-	bufr/tables/0/wmo/18/codetables/25006.table\
-	bufr/tables/0/wmo/18/codetables/25009.table\
-	bufr/tables/0/wmo/18/codetables/25010.table\
-	bufr/tables/0/wmo/18/codetables/25011.table\
-	bufr/tables/0/wmo/18/codetables/25012.table\
-	bufr/tables/0/wmo/18/codetables/25013.table\
-	bufr/tables/0/wmo/18/codetables/25015.table\
-	bufr/tables/0/wmo/18/codetables/25017.table\
-	bufr/tables/0/wmo/18/codetables/25020.table\
-	bufr/tables/0/wmo/18/codetables/25021.table\
-	bufr/tables/0/wmo/18/codetables/25022.table\
-	bufr/tables/0/wmo/18/codetables/25023.table\
-	bufr/tables/0/wmo/18/codetables/25024.table\
-	bufr/tables/0/wmo/18/codetables/25029.table\
-	bufr/tables/0/wmo/18/codetables/25030.table\
-	bufr/tables/0/wmo/18/codetables/25031.table\
-	bufr/tables/0/wmo/18/codetables/25032.table\
-	bufr/tables/0/wmo/18/codetables/25033.table\
-	bufr/tables/0/wmo/18/codetables/25034.table\
-	bufr/tables/0/wmo/18/codetables/25035.table\
-	bufr/tables/0/wmo/18/codetables/25036.table\
-	bufr/tables/0/wmo/18/codetables/25040.table\
-	bufr/tables/0/wmo/18/codetables/25041.table\
-	bufr/tables/0/wmo/18/codetables/25042.table\
-	bufr/tables/0/wmo/18/codetables/25053.table\
-	bufr/tables/0/wmo/18/codetables/25063.table\
-	bufr/tables/0/wmo/18/codetables/25069.table\
-	bufr/tables/0/wmo/18/codetables/25086.table\
-	bufr/tables/0/wmo/18/codetables/25090.table\
-	bufr/tables/0/wmo/18/codetables/25093.table\
-	bufr/tables/0/wmo/18/codetables/25095.table\
-	bufr/tables/0/wmo/18/codetables/25096.table\
-	bufr/tables/0/wmo/18/codetables/25097.table\
-	bufr/tables/0/wmo/18/codetables/25098.table\
-	bufr/tables/0/wmo/18/codetables/25099.table\
-	bufr/tables/0/wmo/18/codetables/25110.table\
-	bufr/tables/0/wmo/18/codetables/25120.table\
-	bufr/tables/0/wmo/18/codetables/25122.table\
-	bufr/tables/0/wmo/18/codetables/25123.table\
-	bufr/tables/0/wmo/18/codetables/25124.table\
-	bufr/tables/0/wmo/18/codetables/25150.table\
-	bufr/tables/0/wmo/18/codetables/25174.table\
-	bufr/tables/0/wmo/18/codetables/26010.table\
-	bufr/tables/0/wmo/18/codetables/29001.table\
-	bufr/tables/0/wmo/18/codetables/29002.table\
-	bufr/tables/0/wmo/18/codetables/30031.table\
-	bufr/tables/0/wmo/18/codetables/30032.table\
-	bufr/tables/0/wmo/18/codetables/31021.table\
-	bufr/tables/0/wmo/18/codetables/31031.table\
-	bufr/tables/0/wmo/18/codetables/33002.table\
-	bufr/tables/0/wmo/18/codetables/33003.table\
-	bufr/tables/0/wmo/18/codetables/33005.table\
-	bufr/tables/0/wmo/18/codetables/33006.table\
-	bufr/tables/0/wmo/18/codetables/33015.table\
-	bufr/tables/0/wmo/18/codetables/33020.table\
-	bufr/tables/0/wmo/18/codetables/33021.table\
-	bufr/tables/0/wmo/18/codetables/33022.table\
-	bufr/tables/0/wmo/18/codetables/33023.table\
-	bufr/tables/0/wmo/18/codetables/33024.table\
-	bufr/tables/0/wmo/18/codetables/33025.table\
-	bufr/tables/0/wmo/18/codetables/33026.table\
-	bufr/tables/0/wmo/18/codetables/33027.table\
-	bufr/tables/0/wmo/18/codetables/33028.table\
-	bufr/tables/0/wmo/18/codetables/33030.table\
-	bufr/tables/0/wmo/18/codetables/33031.table\
-	bufr/tables/0/wmo/18/codetables/33032.table\
-	bufr/tables/0/wmo/18/codetables/33033.table\
-	bufr/tables/0/wmo/18/codetables/33035.table\
-	bufr/tables/0/wmo/18/codetables/33037.table\
-	bufr/tables/0/wmo/18/codetables/33038.table\
-	bufr/tables/0/wmo/18/codetables/33039.table\
-	bufr/tables/0/wmo/18/codetables/33041.table\
-	bufr/tables/0/wmo/18/codetables/33042.table\
-	bufr/tables/0/wmo/18/codetables/33043.table\
-	bufr/tables/0/wmo/18/codetables/33044.table\
-	bufr/tables/0/wmo/18/codetables/33047.table\
-	bufr/tables/0/wmo/18/codetables/33048.table\
-	bufr/tables/0/wmo/18/codetables/33049.table\
-	bufr/tables/0/wmo/18/codetables/33050.table\
-	bufr/tables/0/wmo/18/codetables/33060.table\
-	bufr/tables/0/wmo/18/codetables/33070.table\
-	bufr/tables/0/wmo/18/codetables/33071.table\
-	bufr/tables/0/wmo/18/codetables/33072.table\
-	bufr/tables/0/wmo/18/codetables/33075.table\
-	bufr/tables/0/wmo/18/codetables/33076.table\
-	bufr/tables/0/wmo/18/codetables/33077.table\
-	bufr/tables/0/wmo/18/codetables/33078.table\
-	bufr/tables/0/wmo/18/codetables/33079.table\
-	bufr/tables/0/wmo/18/codetables/33080.table\
-	bufr/tables/0/wmo/18/codetables/33081.table\
-	bufr/tables/0/wmo/18/codetables/33082.table\
-	bufr/tables/0/wmo/18/codetables/33083.table\
-	bufr/tables/0/wmo/18/codetables/35000.table\
-	bufr/tables/0/wmo/18/codetables/35001.table\
-	bufr/tables/0/wmo/18/codetables/35030.table\
-	bufr/tables/0/wmo/18/codetables/35031.table\
-	bufr/tables/0/wmo/18/codetables/35032.table\
-	bufr/tables/0/wmo/18/codetables/35033.table\
-	bufr/tables/0/wmo/18/codetables/35034.table\
-	bufr/tables/0/wmo/18/codetables/35035.table\
-	bufr/tables/0/wmo/18/codetables/40005.table\
-	bufr/tables/0/wmo/18/codetables/40006.table\
-	bufr/tables/0/wmo/18/codetables/40011.table\
-	bufr/tables/0/wmo/18/codetables/40012.table\
-	bufr/tables/0/wmo/18/codetables/40013.table\
-	bufr/tables/0/wmo/18/codetables/40020.table\
-	bufr/tables/0/wmo/18/codetables/40023.table\
-	bufr/tables/0/wmo/18/codetables/40024.table\
-	bufr/tables/0/wmo/18/codetables/40025.table\
-	bufr/tables/0/wmo/18/codetables/4059.table\
-	bufr/tables/0/wmo/18/codetables/4080.table\
-	bufr/tables/0/wmo/18/codetables/8001.table\
-	bufr/tables/0/wmo/18/codetables/8002.table\
-	bufr/tables/0/wmo/18/codetables/8003.table\
-	bufr/tables/0/wmo/18/codetables/8004.table\
-	bufr/tables/0/wmo/18/codetables/8005.table\
-	bufr/tables/0/wmo/18/codetables/8006.table\
-	bufr/tables/0/wmo/18/codetables/8007.table\
-	bufr/tables/0/wmo/18/codetables/8008.table\
-	bufr/tables/0/wmo/18/codetables/8009.table\
-	bufr/tables/0/wmo/18/codetables/8010.table\
-	bufr/tables/0/wmo/18/codetables/8011.table\
-	bufr/tables/0/wmo/18/codetables/8012.table\
-	bufr/tables/0/wmo/18/codetables/8013.table\
-	bufr/tables/0/wmo/18/codetables/8014.table\
-	bufr/tables/0/wmo/18/codetables/8016.table\
-	bufr/tables/0/wmo/18/codetables/8017.table\
-	bufr/tables/0/wmo/18/codetables/8018.table\
-	bufr/tables/0/wmo/18/codetables/8019.table\
-	bufr/tables/0/wmo/18/codetables/8021.table\
-	bufr/tables/0/wmo/18/codetables/8023.table\
-	bufr/tables/0/wmo/18/codetables/8024.table\
-	bufr/tables/0/wmo/18/codetables/8025.table\
-	bufr/tables/0/wmo/18/codetables/8026.table\
-	bufr/tables/0/wmo/18/codetables/8029.table\
-	bufr/tables/0/wmo/18/codetables/8033.table\
-	bufr/tables/0/wmo/18/codetables/8035.table\
-	bufr/tables/0/wmo/18/codetables/8036.table\
-	bufr/tables/0/wmo/18/codetables/8039.table\
-	bufr/tables/0/wmo/18/codetables/8040.table\
-	bufr/tables/0/wmo/18/codetables/8041.table\
-	bufr/tables/0/wmo/18/codetables/8042.table\
-	bufr/tables/0/wmo/18/codetables/8043.table\
-	bufr/tables/0/wmo/18/codetables/8050.table\
-	bufr/tables/0/wmo/18/codetables/8051.table\
-	bufr/tables/0/wmo/18/codetables/8052.table\
-	bufr/tables/0/wmo/18/codetables/8053.table\
-	bufr/tables/0/wmo/18/codetables/8054.table\
-	bufr/tables/0/wmo/18/codetables/8060.table\
-	bufr/tables/0/wmo/18/codetables/8065.table\
-	bufr/tables/0/wmo/18/codetables/8066.table\
-	bufr/tables/0/wmo/18/codetables/8070.table\
-	bufr/tables/0/wmo/18/codetables/8072.table\
-	bufr/tables/0/wmo/18/codetables/8074.table\
-	bufr/tables/0/wmo/18/codetables/8075.table\
-	bufr/tables/0/wmo/18/codetables/8076.table\
-	bufr/tables/0/wmo/18/codetables/8077.table\
-	bufr/tables/0/wmo/18/codetables/8079.table\
-	bufr/tables/0/wmo/18/codetables/8080.table\
-	bufr/tables/0/wmo/18/codetables/8081.table\
-	bufr/tables/0/wmo/18/codetables/8082.table\
-	bufr/tables/0/wmo/18/codetables/8083.table\
-	bufr/tables/0/wmo/18/codetables/8085.table\
-	bufr/tables/0/wmo/18/codetables/8086.table
-
-definitionsbufr_tables_0_wmo_19dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/19
-dist_definitionsbufr_tables_0_wmo_19_DATA = \
-	bufr/tables/0/wmo/19/element.table\
-	bufr/tables/0/wmo/19/sequence.def
-
-definitionsbufr_tables_0_wmo_19_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/19/codetables
-dist_definitionsbufr_tables_0_wmo_19_codetables_DATA = \
-	bufr/tables/0/wmo/19/codetables/1003.table\
-	bufr/tables/0/wmo/19/codetables/10063.table\
-	bufr/tables/0/wmo/19/codetables/10064.table\
-	bufr/tables/0/wmo/19/codetables/1007.table\
-	bufr/tables/0/wmo/19/codetables/1024.table\
-	bufr/tables/0/wmo/19/codetables/1028.table\
-	bufr/tables/0/wmo/19/codetables/1029.table\
-	bufr/tables/0/wmo/19/codetables/1033.table\
-	bufr/tables/0/wmo/19/codetables/1034.table\
-	bufr/tables/0/wmo/19/codetables/1036.table\
-	bufr/tables/0/wmo/19/codetables/1038.table\
-	bufr/tables/0/wmo/19/codetables/1052.table\
-	bufr/tables/0/wmo/19/codetables/1090.table\
-	bufr/tables/0/wmo/19/codetables/1092.table\
-	bufr/tables/0/wmo/19/codetables/1101.table\
-	bufr/tables/0/wmo/19/codetables/11030.table\
-	bufr/tables/0/wmo/19/codetables/11031.table\
-	bufr/tables/0/wmo/19/codetables/11037.table\
-	bufr/tables/0/wmo/19/codetables/11038.table\
-	bufr/tables/0/wmo/19/codetables/11039.table\
-	bufr/tables/0/wmo/19/codetables/13038.table\
-	bufr/tables/0/wmo/19/codetables/13039.table\
-	bufr/tables/0/wmo/19/codetables/13040.table\
-	bufr/tables/0/wmo/19/codetables/13041.table\
-	bufr/tables/0/wmo/19/codetables/13051.table\
-	bufr/tables/0/wmo/19/codetables/13056.table\
-	bufr/tables/0/wmo/19/codetables/13057.table\
-	bufr/tables/0/wmo/19/codetables/15025.table\
-	bufr/tables/0/wmo/19/codetables/19001.table\
-	bufr/tables/0/wmo/19/codetables/19008.table\
-	bufr/tables/0/wmo/19/codetables/19010.table\
-	bufr/tables/0/wmo/19/codetables/19100.table\
-	bufr/tables/0/wmo/19/codetables/19101.table\
-	bufr/tables/0/wmo/19/codetables/19102.table\
-	bufr/tables/0/wmo/19/codetables/19103.table\
-	bufr/tables/0/wmo/19/codetables/19104.table\
-	bufr/tables/0/wmo/19/codetables/19105.table\
-	bufr/tables/0/wmo/19/codetables/19107.table\
-	bufr/tables/0/wmo/19/codetables/19108.table\
-	bufr/tables/0/wmo/19/codetables/19109.table\
-	bufr/tables/0/wmo/19/codetables/19110.table\
-	bufr/tables/0/wmo/19/codetables/19113.table\
-	bufr/tables/0/wmo/19/codetables/19117.table\
-	bufr/tables/0/wmo/19/codetables/19119.table\
-	bufr/tables/0/wmo/19/codetables/20003.table\
-	bufr/tables/0/wmo/19/codetables/20004.table\
-	bufr/tables/0/wmo/19/codetables/20005.table\
-	bufr/tables/0/wmo/19/codetables/20006.table\
-	bufr/tables/0/wmo/19/codetables/20008.table\
-	bufr/tables/0/wmo/19/codetables/20009.table\
-	bufr/tables/0/wmo/19/codetables/2001.table\
-	bufr/tables/0/wmo/19/codetables/20011.table\
-	bufr/tables/0/wmo/19/codetables/20012.table\
-	bufr/tables/0/wmo/19/codetables/20017.table\
-	bufr/tables/0/wmo/19/codetables/20018.table\
-	bufr/tables/0/wmo/19/codetables/2002.table\
-	bufr/tables/0/wmo/19/codetables/20021.table\
-	bufr/tables/0/wmo/19/codetables/20022.table\
-	bufr/tables/0/wmo/19/codetables/20023.table\
-	bufr/tables/0/wmo/19/codetables/20024.table\
-	bufr/tables/0/wmo/19/codetables/20025.table\
-	bufr/tables/0/wmo/19/codetables/20026.table\
-	bufr/tables/0/wmo/19/codetables/20027.table\
-	bufr/tables/0/wmo/19/codetables/20028.table\
-	bufr/tables/0/wmo/19/codetables/20029.table\
-	bufr/tables/0/wmo/19/codetables/2003.table\
-	bufr/tables/0/wmo/19/codetables/20032.table\
-	bufr/tables/0/wmo/19/codetables/20033.table\
-	bufr/tables/0/wmo/19/codetables/20034.table\
-	bufr/tables/0/wmo/19/codetables/20035.table\
-	bufr/tables/0/wmo/19/codetables/20036.table\
-	bufr/tables/0/wmo/19/codetables/20037.table\
-	bufr/tables/0/wmo/19/codetables/2004.table\
-	bufr/tables/0/wmo/19/codetables/20040.table\
-	bufr/tables/0/wmo/19/codetables/20041.table\
-	bufr/tables/0/wmo/19/codetables/20042.table\
-	bufr/tables/0/wmo/19/codetables/20045.table\
-	bufr/tables/0/wmo/19/codetables/20048.table\
-	bufr/tables/0/wmo/19/codetables/20050.table\
-	bufr/tables/0/wmo/19/codetables/20055.table\
-	bufr/tables/0/wmo/19/codetables/20056.table\
-	bufr/tables/0/wmo/19/codetables/20062.table\
-	bufr/tables/0/wmo/19/codetables/20063.table\
-	bufr/tables/0/wmo/19/codetables/20071.table\
-	bufr/tables/0/wmo/19/codetables/20085.table\
-	bufr/tables/0/wmo/19/codetables/20086.table\
-	bufr/tables/0/wmo/19/codetables/20087.table\
-	bufr/tables/0/wmo/19/codetables/20089.table\
-	bufr/tables/0/wmo/19/codetables/20090.table\
-	bufr/tables/0/wmo/19/codetables/20101.table\
-	bufr/tables/0/wmo/19/codetables/20102.table\
-	bufr/tables/0/wmo/19/codetables/20103.table\
-	bufr/tables/0/wmo/19/codetables/20104.table\
-	bufr/tables/0/wmo/19/codetables/20105.table\
-	bufr/tables/0/wmo/19/codetables/20106.table\
-	bufr/tables/0/wmo/19/codetables/20107.table\
-	bufr/tables/0/wmo/19/codetables/20108.table\
-	bufr/tables/0/wmo/19/codetables/2011.table\
-	bufr/tables/0/wmo/19/codetables/20119.table\
-	bufr/tables/0/wmo/19/codetables/20124.table\
-	bufr/tables/0/wmo/19/codetables/2013.table\
-	bufr/tables/0/wmo/19/codetables/20136.table\
-	bufr/tables/0/wmo/19/codetables/2014.table\
-	bufr/tables/0/wmo/19/codetables/2015.table\
-	bufr/tables/0/wmo/19/codetables/2016.table\
-	bufr/tables/0/wmo/19/codetables/2017.table\
-	bufr/tables/0/wmo/19/codetables/2019.table\
-	bufr/tables/0/wmo/19/codetables/2020.table\
-	bufr/tables/0/wmo/19/codetables/2021.table\
-	bufr/tables/0/wmo/19/codetables/2022.table\
-	bufr/tables/0/wmo/19/codetables/2023.table\
-	bufr/tables/0/wmo/19/codetables/2024.table\
-	bufr/tables/0/wmo/19/codetables/2025.table\
-	bufr/tables/0/wmo/19/codetables/2030.table\
-	bufr/tables/0/wmo/19/codetables/2031.table\
-	bufr/tables/0/wmo/19/codetables/2032.table\
-	bufr/tables/0/wmo/19/codetables/2033.table\
-	bufr/tables/0/wmo/19/codetables/2034.table\
-	bufr/tables/0/wmo/19/codetables/2036.table\
-	bufr/tables/0/wmo/19/codetables/2037.table\
-	bufr/tables/0/wmo/19/codetables/2038.table\
-	bufr/tables/0/wmo/19/codetables/2039.table\
-	bufr/tables/0/wmo/19/codetables/2040.table\
-	bufr/tables/0/wmo/19/codetables/2041.table\
-	bufr/tables/0/wmo/19/codetables/2042.table\
-	bufr/tables/0/wmo/19/codetables/2044.table\
-	bufr/tables/0/wmo/19/codetables/2045.table\
-	bufr/tables/0/wmo/19/codetables/2046.table\
-	bufr/tables/0/wmo/19/codetables/2047.table\
-	bufr/tables/0/wmo/19/codetables/2048.table\
-	bufr/tables/0/wmo/19/codetables/2049.table\
-	bufr/tables/0/wmo/19/codetables/2050.table\
-	bufr/tables/0/wmo/19/codetables/2051.table\
-	bufr/tables/0/wmo/19/codetables/2052.table\
-	bufr/tables/0/wmo/19/codetables/2053.table\
-	bufr/tables/0/wmo/19/codetables/2054.table\
-	bufr/tables/0/wmo/19/codetables/2055.table\
-	bufr/tables/0/wmo/19/codetables/2056.table\
-	bufr/tables/0/wmo/19/codetables/2057.table\
-	bufr/tables/0/wmo/19/codetables/2058.table\
-	bufr/tables/0/wmo/19/codetables/2059.table\
-	bufr/tables/0/wmo/19/codetables/2060.table\
-	bufr/tables/0/wmo/19/codetables/2061.table\
-	bufr/tables/0/wmo/19/codetables/2062.table\
-	bufr/tables/0/wmo/19/codetables/2064.table\
-	bufr/tables/0/wmo/19/codetables/2066.table\
-	bufr/tables/0/wmo/19/codetables/2070.table\
-	bufr/tables/0/wmo/19/codetables/2080.table\
-	bufr/tables/0/wmo/19/codetables/2081.table\
-	bufr/tables/0/wmo/19/codetables/2083.table\
-	bufr/tables/0/wmo/19/codetables/2084.table\
-	bufr/tables/0/wmo/19/codetables/2095.table\
-	bufr/tables/0/wmo/19/codetables/2096.table\
-	bufr/tables/0/wmo/19/codetables/2097.table\
-	bufr/tables/0/wmo/19/codetables/2099.table\
-	bufr/tables/0/wmo/19/codetables/2101.table\
-	bufr/tables/0/wmo/19/codetables/2103.table\
-	bufr/tables/0/wmo/19/codetables/2104.table\
-	bufr/tables/0/wmo/19/codetables/21066.table\
-	bufr/tables/0/wmo/19/codetables/21067.table\
-	bufr/tables/0/wmo/19/codetables/21068.table\
-	bufr/tables/0/wmo/19/codetables/21069.table\
-	bufr/tables/0/wmo/19/codetables/21070.table\
-	bufr/tables/0/wmo/19/codetables/21072.table\
-	bufr/tables/0/wmo/19/codetables/21073.table\
-	bufr/tables/0/wmo/19/codetables/21076.table\
-	bufr/tables/0/wmo/19/codetables/21109.table\
-	bufr/tables/0/wmo/19/codetables/21115.table\
-	bufr/tables/0/wmo/19/codetables/21116.table\
-	bufr/tables/0/wmo/19/codetables/21119.table\
-	bufr/tables/0/wmo/19/codetables/21144.table\
-	bufr/tables/0/wmo/19/codetables/2115.table\
-	bufr/tables/0/wmo/19/codetables/21150.table\
-	bufr/tables/0/wmo/19/codetables/21155.table\
-	bufr/tables/0/wmo/19/codetables/21158.table\
-	bufr/tables/0/wmo/19/codetables/21159.table\
-	bufr/tables/0/wmo/19/codetables/21169.table\
-	bufr/tables/0/wmo/19/codetables/2119.table\
-	bufr/tables/0/wmo/19/codetables/2131.table\
-	bufr/tables/0/wmo/19/codetables/2137.table\
-	bufr/tables/0/wmo/19/codetables/2138.table\
-	bufr/tables/0/wmo/19/codetables/2139.table\
-	bufr/tables/0/wmo/19/codetables/2143.table\
-	bufr/tables/0/wmo/19/codetables/2144.table\
-	bufr/tables/0/wmo/19/codetables/2145.table\
-	bufr/tables/0/wmo/19/codetables/2146.table\
-	bufr/tables/0/wmo/19/codetables/2148.table\
-	bufr/tables/0/wmo/19/codetables/2149.table\
-	bufr/tables/0/wmo/19/codetables/2150.table\
-	bufr/tables/0/wmo/19/codetables/2151.table\
-	bufr/tables/0/wmo/19/codetables/2152.table\
-	bufr/tables/0/wmo/19/codetables/2158.table\
-	bufr/tables/0/wmo/19/codetables/2159.table\
-	bufr/tables/0/wmo/19/codetables/2160.table\
-	bufr/tables/0/wmo/19/codetables/2163.table\
-	bufr/tables/0/wmo/19/codetables/2164.table\
-	bufr/tables/0/wmo/19/codetables/2165.table\
-	bufr/tables/0/wmo/19/codetables/2166.table\
-	bufr/tables/0/wmo/19/codetables/2167.table\
-	bufr/tables/0/wmo/19/codetables/2169.table\
-	bufr/tables/0/wmo/19/codetables/2170.table\
-	bufr/tables/0/wmo/19/codetables/2172.table\
-	bufr/tables/0/wmo/19/codetables/2175.table\
-	bufr/tables/0/wmo/19/codetables/2176.table\
-	bufr/tables/0/wmo/19/codetables/2177.table\
-	bufr/tables/0/wmo/19/codetables/2178.table\
-	bufr/tables/0/wmo/19/codetables/2179.table\
-	bufr/tables/0/wmo/19/codetables/2180.table\
-	bufr/tables/0/wmo/19/codetables/2181.table\
-	bufr/tables/0/wmo/19/codetables/2182.table\
-	bufr/tables/0/wmo/19/codetables/2183.table\
-	bufr/tables/0/wmo/19/codetables/2184.table\
-	bufr/tables/0/wmo/19/codetables/2185.table\
-	bufr/tables/0/wmo/19/codetables/2186.table\
-	bufr/tables/0/wmo/19/codetables/2187.table\
-	bufr/tables/0/wmo/19/codetables/2188.table\
-	bufr/tables/0/wmo/19/codetables/2189.table\
-	bufr/tables/0/wmo/19/codetables/2191.table\
-	bufr/tables/0/wmo/19/codetables/22056.table\
-	bufr/tables/0/wmo/19/codetables/22060.table\
-	bufr/tables/0/wmo/19/codetables/22061.table\
-	bufr/tables/0/wmo/19/codetables/22067.table\
-	bufr/tables/0/wmo/19/codetables/22068.table\
-	bufr/tables/0/wmo/19/codetables/22120.table\
-	bufr/tables/0/wmo/19/codetables/22121.table\
-	bufr/tables/0/wmo/19/codetables/22122.table\
-	bufr/tables/0/wmo/19/codetables/22123.table\
-	bufr/tables/0/wmo/19/codetables/22178.table\
-	bufr/tables/0/wmo/19/codetables/23001.table\
-	bufr/tables/0/wmo/19/codetables/23002.table\
-	bufr/tables/0/wmo/19/codetables/23003.table\
-	bufr/tables/0/wmo/19/codetables/23004.table\
-	bufr/tables/0/wmo/19/codetables/23005.table\
-	bufr/tables/0/wmo/19/codetables/23006.table\
-	bufr/tables/0/wmo/19/codetables/23007.table\
-	bufr/tables/0/wmo/19/codetables/23008.table\
-	bufr/tables/0/wmo/19/codetables/23009.table\
-	bufr/tables/0/wmo/19/codetables/23016.table\
-	bufr/tables/0/wmo/19/codetables/23018.table\
-	bufr/tables/0/wmo/19/codetables/23031.table\
-	bufr/tables/0/wmo/19/codetables/23032.table\
-	bufr/tables/0/wmo/19/codetables/24003.table\
-	bufr/tables/0/wmo/19/codetables/25004.table\
-	bufr/tables/0/wmo/19/codetables/25005.table\
-	bufr/tables/0/wmo/19/codetables/25006.table\
-	bufr/tables/0/wmo/19/codetables/25009.table\
-	bufr/tables/0/wmo/19/codetables/25010.table\
-	bufr/tables/0/wmo/19/codetables/25011.table\
-	bufr/tables/0/wmo/19/codetables/25012.table\
-	bufr/tables/0/wmo/19/codetables/25013.table\
-	bufr/tables/0/wmo/19/codetables/25015.table\
-	bufr/tables/0/wmo/19/codetables/25017.table\
-	bufr/tables/0/wmo/19/codetables/25020.table\
-	bufr/tables/0/wmo/19/codetables/25021.table\
-	bufr/tables/0/wmo/19/codetables/25022.table\
-	bufr/tables/0/wmo/19/codetables/25023.table\
-	bufr/tables/0/wmo/19/codetables/25024.table\
-	bufr/tables/0/wmo/19/codetables/25029.table\
-	bufr/tables/0/wmo/19/codetables/25030.table\
-	bufr/tables/0/wmo/19/codetables/25031.table\
-	bufr/tables/0/wmo/19/codetables/25032.table\
-	bufr/tables/0/wmo/19/codetables/25033.table\
-	bufr/tables/0/wmo/19/codetables/25034.table\
-	bufr/tables/0/wmo/19/codetables/25035.table\
-	bufr/tables/0/wmo/19/codetables/25036.table\
-	bufr/tables/0/wmo/19/codetables/25040.table\
-	bufr/tables/0/wmo/19/codetables/25041.table\
-	bufr/tables/0/wmo/19/codetables/25042.table\
-	bufr/tables/0/wmo/19/codetables/25053.table\
-	bufr/tables/0/wmo/19/codetables/25063.table\
-	bufr/tables/0/wmo/19/codetables/25069.table\
-	bufr/tables/0/wmo/19/codetables/25086.table\
-	bufr/tables/0/wmo/19/codetables/25090.table\
-	bufr/tables/0/wmo/19/codetables/25093.table\
-	bufr/tables/0/wmo/19/codetables/25095.table\
-	bufr/tables/0/wmo/19/codetables/25096.table\
-	bufr/tables/0/wmo/19/codetables/25097.table\
-	bufr/tables/0/wmo/19/codetables/25098.table\
-	bufr/tables/0/wmo/19/codetables/25099.table\
-	bufr/tables/0/wmo/19/codetables/25110.table\
-	bufr/tables/0/wmo/19/codetables/25120.table\
-	bufr/tables/0/wmo/19/codetables/25122.table\
-	bufr/tables/0/wmo/19/codetables/25123.table\
-	bufr/tables/0/wmo/19/codetables/25124.table\
-	bufr/tables/0/wmo/19/codetables/25150.table\
-	bufr/tables/0/wmo/19/codetables/25174.table\
-	bufr/tables/0/wmo/19/codetables/25181.table\
-	bufr/tables/0/wmo/19/codetables/25182.table\
-	bufr/tables/0/wmo/19/codetables/25184.table\
-	bufr/tables/0/wmo/19/codetables/26010.table\
-	bufr/tables/0/wmo/19/codetables/29001.table\
-	bufr/tables/0/wmo/19/codetables/29002.table\
-	bufr/tables/0/wmo/19/codetables/30031.table\
-	bufr/tables/0/wmo/19/codetables/30032.table\
-	bufr/tables/0/wmo/19/codetables/31021.table\
-	bufr/tables/0/wmo/19/codetables/31031.table\
-	bufr/tables/0/wmo/19/codetables/33002.table\
-	bufr/tables/0/wmo/19/codetables/33003.table\
-	bufr/tables/0/wmo/19/codetables/33005.table\
-	bufr/tables/0/wmo/19/codetables/33006.table\
-	bufr/tables/0/wmo/19/codetables/33015.table\
-	bufr/tables/0/wmo/19/codetables/33020.table\
-	bufr/tables/0/wmo/19/codetables/33021.table\
-	bufr/tables/0/wmo/19/codetables/33022.table\
-	bufr/tables/0/wmo/19/codetables/33023.table\
-	bufr/tables/0/wmo/19/codetables/33024.table\
-	bufr/tables/0/wmo/19/codetables/33025.table\
-	bufr/tables/0/wmo/19/codetables/33026.table\
-	bufr/tables/0/wmo/19/codetables/33027.table\
-	bufr/tables/0/wmo/19/codetables/33028.table\
-	bufr/tables/0/wmo/19/codetables/33030.table\
-	bufr/tables/0/wmo/19/codetables/33031.table\
-	bufr/tables/0/wmo/19/codetables/33032.table\
-	bufr/tables/0/wmo/19/codetables/33033.table\
-	bufr/tables/0/wmo/19/codetables/33035.table\
-	bufr/tables/0/wmo/19/codetables/33037.table\
-	bufr/tables/0/wmo/19/codetables/33038.table\
-	bufr/tables/0/wmo/19/codetables/33039.table\
-	bufr/tables/0/wmo/19/codetables/33041.table\
-	bufr/tables/0/wmo/19/codetables/33042.table\
-	bufr/tables/0/wmo/19/codetables/33043.table\
-	bufr/tables/0/wmo/19/codetables/33044.table\
-	bufr/tables/0/wmo/19/codetables/33047.table\
-	bufr/tables/0/wmo/19/codetables/33048.table\
-	bufr/tables/0/wmo/19/codetables/33049.table\
-	bufr/tables/0/wmo/19/codetables/33050.table\
-	bufr/tables/0/wmo/19/codetables/33060.table\
-	bufr/tables/0/wmo/19/codetables/33070.table\
-	bufr/tables/0/wmo/19/codetables/33071.table\
-	bufr/tables/0/wmo/19/codetables/33072.table\
-	bufr/tables/0/wmo/19/codetables/33075.table\
-	bufr/tables/0/wmo/19/codetables/33076.table\
-	bufr/tables/0/wmo/19/codetables/33077.table\
-	bufr/tables/0/wmo/19/codetables/33078.table\
-	bufr/tables/0/wmo/19/codetables/33079.table\
-	bufr/tables/0/wmo/19/codetables/33080.table\
-	bufr/tables/0/wmo/19/codetables/33081.table\
-	bufr/tables/0/wmo/19/codetables/33082.table\
-	bufr/tables/0/wmo/19/codetables/33083.table\
-	bufr/tables/0/wmo/19/codetables/33084.table\
-	bufr/tables/0/wmo/19/codetables/33086.table\
-	bufr/tables/0/wmo/19/codetables/35000.table\
-	bufr/tables/0/wmo/19/codetables/35001.table\
-	bufr/tables/0/wmo/19/codetables/35030.table\
-	bufr/tables/0/wmo/19/codetables/35031.table\
-	bufr/tables/0/wmo/19/codetables/35032.table\
-	bufr/tables/0/wmo/19/codetables/35033.table\
-	bufr/tables/0/wmo/19/codetables/35034.table\
-	bufr/tables/0/wmo/19/codetables/35035.table\
-	bufr/tables/0/wmo/19/codetables/40005.table\
-	bufr/tables/0/wmo/19/codetables/40006.table\
-	bufr/tables/0/wmo/19/codetables/40011.table\
-	bufr/tables/0/wmo/19/codetables/40012.table\
-	bufr/tables/0/wmo/19/codetables/40013.table\
-	bufr/tables/0/wmo/19/codetables/40020.table\
-	bufr/tables/0/wmo/19/codetables/40023.table\
-	bufr/tables/0/wmo/19/codetables/40024.table\
-	bufr/tables/0/wmo/19/codetables/40025.table\
-	bufr/tables/0/wmo/19/codetables/4059.table\
-	bufr/tables/0/wmo/19/codetables/4080.table\
-	bufr/tables/0/wmo/19/codetables/8001.table\
-	bufr/tables/0/wmo/19/codetables/8002.table\
-	bufr/tables/0/wmo/19/codetables/8003.table\
-	bufr/tables/0/wmo/19/codetables/8004.table\
-	bufr/tables/0/wmo/19/codetables/8005.table\
-	bufr/tables/0/wmo/19/codetables/8006.table\
-	bufr/tables/0/wmo/19/codetables/8007.table\
-	bufr/tables/0/wmo/19/codetables/8008.table\
-	bufr/tables/0/wmo/19/codetables/8009.table\
-	bufr/tables/0/wmo/19/codetables/8010.table\
-	bufr/tables/0/wmo/19/codetables/8011.table\
-	bufr/tables/0/wmo/19/codetables/8012.table\
-	bufr/tables/0/wmo/19/codetables/8013.table\
-	bufr/tables/0/wmo/19/codetables/8014.table\
-	bufr/tables/0/wmo/19/codetables/8016.table\
-	bufr/tables/0/wmo/19/codetables/8017.table\
-	bufr/tables/0/wmo/19/codetables/8018.table\
-	bufr/tables/0/wmo/19/codetables/8019.table\
-	bufr/tables/0/wmo/19/codetables/8021.table\
-	bufr/tables/0/wmo/19/codetables/8023.table\
-	bufr/tables/0/wmo/19/codetables/8024.table\
-	bufr/tables/0/wmo/19/codetables/8025.table\
-	bufr/tables/0/wmo/19/codetables/8026.table\
-	bufr/tables/0/wmo/19/codetables/8029.table\
-	bufr/tables/0/wmo/19/codetables/8033.table\
-	bufr/tables/0/wmo/19/codetables/8035.table\
-	bufr/tables/0/wmo/19/codetables/8036.table\
-	bufr/tables/0/wmo/19/codetables/8039.table\
-	bufr/tables/0/wmo/19/codetables/8040.table\
-	bufr/tables/0/wmo/19/codetables/8041.table\
-	bufr/tables/0/wmo/19/codetables/8042.table\
-	bufr/tables/0/wmo/19/codetables/8043.table\
-	bufr/tables/0/wmo/19/codetables/8050.table\
-	bufr/tables/0/wmo/19/codetables/8051.table\
-	bufr/tables/0/wmo/19/codetables/8052.table\
-	bufr/tables/0/wmo/19/codetables/8053.table\
-	bufr/tables/0/wmo/19/codetables/8054.table\
-	bufr/tables/0/wmo/19/codetables/8060.table\
-	bufr/tables/0/wmo/19/codetables/8065.table\
-	bufr/tables/0/wmo/19/codetables/8066.table\
-	bufr/tables/0/wmo/19/codetables/8070.table\
-	bufr/tables/0/wmo/19/codetables/8072.table\
-	bufr/tables/0/wmo/19/codetables/8074.table\
-	bufr/tables/0/wmo/19/codetables/8075.table\
-	bufr/tables/0/wmo/19/codetables/8076.table\
-	bufr/tables/0/wmo/19/codetables/8077.table\
-	bufr/tables/0/wmo/19/codetables/8079.table\
-	bufr/tables/0/wmo/19/codetables/8080.table\
-	bufr/tables/0/wmo/19/codetables/8081.table\
-	bufr/tables/0/wmo/19/codetables/8082.table\
-	bufr/tables/0/wmo/19/codetables/8083.table\
-	bufr/tables/0/wmo/19/codetables/8085.table\
-	bufr/tables/0/wmo/19/codetables/8086.table
-
-definitionsbufr_tables_0_wmo_20dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/20
-dist_definitionsbufr_tables_0_wmo_20_DATA = \
-	bufr/tables/0/wmo/20/element.table\
-	bufr/tables/0/wmo/20/sequence.def
-
-definitionsbufr_tables_0_wmo_20_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/20/codetables
-dist_definitionsbufr_tables_0_wmo_20_codetables_DATA = \
-	bufr/tables/0/wmo/20/codetables/1003.table\
-	bufr/tables/0/wmo/20/codetables/10063.table\
-	bufr/tables/0/wmo/20/codetables/10064.table\
-	bufr/tables/0/wmo/20/codetables/1007.table\
-	bufr/tables/0/wmo/20/codetables/1024.table\
-	bufr/tables/0/wmo/20/codetables/1028.table\
-	bufr/tables/0/wmo/20/codetables/1029.table\
-	bufr/tables/0/wmo/20/codetables/1033.table\
-	bufr/tables/0/wmo/20/codetables/1034.table\
-	bufr/tables/0/wmo/20/codetables/1036.table\
-	bufr/tables/0/wmo/20/codetables/1038.table\
-	bufr/tables/0/wmo/20/codetables/1052.table\
-	bufr/tables/0/wmo/20/codetables/1090.table\
-	bufr/tables/0/wmo/20/codetables/1092.table\
-	bufr/tables/0/wmo/20/codetables/1101.table\
-	bufr/tables/0/wmo/20/codetables/11030.table\
-	bufr/tables/0/wmo/20/codetables/11031.table\
-	bufr/tables/0/wmo/20/codetables/11037.table\
-	bufr/tables/0/wmo/20/codetables/11038.table\
-	bufr/tables/0/wmo/20/codetables/11039.table\
-	bufr/tables/0/wmo/20/codetables/13038.table\
-	bufr/tables/0/wmo/20/codetables/13039.table\
-	bufr/tables/0/wmo/20/codetables/13040.table\
-	bufr/tables/0/wmo/20/codetables/13041.table\
-	bufr/tables/0/wmo/20/codetables/13051.table\
-	bufr/tables/0/wmo/20/codetables/13056.table\
-	bufr/tables/0/wmo/20/codetables/13057.table\
-	bufr/tables/0/wmo/20/codetables/15025.table\
-	bufr/tables/0/wmo/20/codetables/19001.table\
-	bufr/tables/0/wmo/20/codetables/19008.table\
-	bufr/tables/0/wmo/20/codetables/19010.table\
-	bufr/tables/0/wmo/20/codetables/19100.table\
-	bufr/tables/0/wmo/20/codetables/19101.table\
-	bufr/tables/0/wmo/20/codetables/19102.table\
-	bufr/tables/0/wmo/20/codetables/19103.table\
-	bufr/tables/0/wmo/20/codetables/19104.table\
-	bufr/tables/0/wmo/20/codetables/19105.table\
-	bufr/tables/0/wmo/20/codetables/19107.table\
-	bufr/tables/0/wmo/20/codetables/19108.table\
-	bufr/tables/0/wmo/20/codetables/19109.table\
-	bufr/tables/0/wmo/20/codetables/19110.table\
-	bufr/tables/0/wmo/20/codetables/19113.table\
-	bufr/tables/0/wmo/20/codetables/19117.table\
-	bufr/tables/0/wmo/20/codetables/19119.table\
-	bufr/tables/0/wmo/20/codetables/20003.table\
-	bufr/tables/0/wmo/20/codetables/20004.table\
-	bufr/tables/0/wmo/20/codetables/20005.table\
-	bufr/tables/0/wmo/20/codetables/20006.table\
-	bufr/tables/0/wmo/20/codetables/20008.table\
-	bufr/tables/0/wmo/20/codetables/20009.table\
-	bufr/tables/0/wmo/20/codetables/2001.table\
-	bufr/tables/0/wmo/20/codetables/20011.table\
-	bufr/tables/0/wmo/20/codetables/20012.table\
-	bufr/tables/0/wmo/20/codetables/20017.table\
-	bufr/tables/0/wmo/20/codetables/20018.table\
-	bufr/tables/0/wmo/20/codetables/2002.table\
-	bufr/tables/0/wmo/20/codetables/20021.table\
-	bufr/tables/0/wmo/20/codetables/20022.table\
-	bufr/tables/0/wmo/20/codetables/20023.table\
-	bufr/tables/0/wmo/20/codetables/20024.table\
-	bufr/tables/0/wmo/20/codetables/20025.table\
-	bufr/tables/0/wmo/20/codetables/20026.table\
-	bufr/tables/0/wmo/20/codetables/20027.table\
-	bufr/tables/0/wmo/20/codetables/20028.table\
-	bufr/tables/0/wmo/20/codetables/20029.table\
-	bufr/tables/0/wmo/20/codetables/2003.table\
-	bufr/tables/0/wmo/20/codetables/20032.table\
-	bufr/tables/0/wmo/20/codetables/20033.table\
-	bufr/tables/0/wmo/20/codetables/20034.table\
-	bufr/tables/0/wmo/20/codetables/20035.table\
-	bufr/tables/0/wmo/20/codetables/20036.table\
-	bufr/tables/0/wmo/20/codetables/20037.table\
-	bufr/tables/0/wmo/20/codetables/2004.table\
-	bufr/tables/0/wmo/20/codetables/20040.table\
-	bufr/tables/0/wmo/20/codetables/20041.table\
-	bufr/tables/0/wmo/20/codetables/20042.table\
-	bufr/tables/0/wmo/20/codetables/20045.table\
-	bufr/tables/0/wmo/20/codetables/20048.table\
-	bufr/tables/0/wmo/20/codetables/20050.table\
-	bufr/tables/0/wmo/20/codetables/20055.table\
-	bufr/tables/0/wmo/20/codetables/20056.table\
-	bufr/tables/0/wmo/20/codetables/20062.table\
-	bufr/tables/0/wmo/20/codetables/20063.table\
-	bufr/tables/0/wmo/20/codetables/20071.table\
-	bufr/tables/0/wmo/20/codetables/20085.table\
-	bufr/tables/0/wmo/20/codetables/20086.table\
-	bufr/tables/0/wmo/20/codetables/20087.table\
-	bufr/tables/0/wmo/20/codetables/20089.table\
-	bufr/tables/0/wmo/20/codetables/20090.table\
-	bufr/tables/0/wmo/20/codetables/20101.table\
-	bufr/tables/0/wmo/20/codetables/20102.table\
-	bufr/tables/0/wmo/20/codetables/20103.table\
-	bufr/tables/0/wmo/20/codetables/20104.table\
-	bufr/tables/0/wmo/20/codetables/20105.table\
-	bufr/tables/0/wmo/20/codetables/20106.table\
-	bufr/tables/0/wmo/20/codetables/20107.table\
-	bufr/tables/0/wmo/20/codetables/20108.table\
-	bufr/tables/0/wmo/20/codetables/2011.table\
-	bufr/tables/0/wmo/20/codetables/20119.table\
-	bufr/tables/0/wmo/20/codetables/20124.table\
-	bufr/tables/0/wmo/20/codetables/2013.table\
-	bufr/tables/0/wmo/20/codetables/20136.table\
-	bufr/tables/0/wmo/20/codetables/2014.table\
-	bufr/tables/0/wmo/20/codetables/2015.table\
-	bufr/tables/0/wmo/20/codetables/2016.table\
-	bufr/tables/0/wmo/20/codetables/2017.table\
-	bufr/tables/0/wmo/20/codetables/2019.table\
-	bufr/tables/0/wmo/20/codetables/2020.table\
-	bufr/tables/0/wmo/20/codetables/2021.table\
-	bufr/tables/0/wmo/20/codetables/2022.table\
-	bufr/tables/0/wmo/20/codetables/2023.table\
-	bufr/tables/0/wmo/20/codetables/2024.table\
-	bufr/tables/0/wmo/20/codetables/2025.table\
-	bufr/tables/0/wmo/20/codetables/2030.table\
-	bufr/tables/0/wmo/20/codetables/2031.table\
-	bufr/tables/0/wmo/20/codetables/2032.table\
-	bufr/tables/0/wmo/20/codetables/2033.table\
-	bufr/tables/0/wmo/20/codetables/2034.table\
-	bufr/tables/0/wmo/20/codetables/2036.table\
-	bufr/tables/0/wmo/20/codetables/2037.table\
-	bufr/tables/0/wmo/20/codetables/2038.table\
-	bufr/tables/0/wmo/20/codetables/2039.table\
-	bufr/tables/0/wmo/20/codetables/2040.table\
-	bufr/tables/0/wmo/20/codetables/2041.table\
-	bufr/tables/0/wmo/20/codetables/2042.table\
-	bufr/tables/0/wmo/20/codetables/2044.table\
-	bufr/tables/0/wmo/20/codetables/2045.table\
-	bufr/tables/0/wmo/20/codetables/2046.table\
-	bufr/tables/0/wmo/20/codetables/2047.table\
-	bufr/tables/0/wmo/20/codetables/2048.table\
-	bufr/tables/0/wmo/20/codetables/2049.table\
-	bufr/tables/0/wmo/20/codetables/2050.table\
-	bufr/tables/0/wmo/20/codetables/2051.table\
-	bufr/tables/0/wmo/20/codetables/2052.table\
-	bufr/tables/0/wmo/20/codetables/2053.table\
-	bufr/tables/0/wmo/20/codetables/2054.table\
-	bufr/tables/0/wmo/20/codetables/2055.table\
-	bufr/tables/0/wmo/20/codetables/2056.table\
-	bufr/tables/0/wmo/20/codetables/2057.table\
-	bufr/tables/0/wmo/20/codetables/2058.table\
-	bufr/tables/0/wmo/20/codetables/2059.table\
-	bufr/tables/0/wmo/20/codetables/2060.table\
-	bufr/tables/0/wmo/20/codetables/2061.table\
-	bufr/tables/0/wmo/20/codetables/2062.table\
-	bufr/tables/0/wmo/20/codetables/2064.table\
-	bufr/tables/0/wmo/20/codetables/2066.table\
-	bufr/tables/0/wmo/20/codetables/2070.table\
-	bufr/tables/0/wmo/20/codetables/2080.table\
-	bufr/tables/0/wmo/20/codetables/2081.table\
-	bufr/tables/0/wmo/20/codetables/2083.table\
-	bufr/tables/0/wmo/20/codetables/2084.table\
-	bufr/tables/0/wmo/20/codetables/2095.table\
-	bufr/tables/0/wmo/20/codetables/2096.table\
-	bufr/tables/0/wmo/20/codetables/2097.table\
-	bufr/tables/0/wmo/20/codetables/2099.table\
-	bufr/tables/0/wmo/20/codetables/2101.table\
-	bufr/tables/0/wmo/20/codetables/2103.table\
-	bufr/tables/0/wmo/20/codetables/2104.table\
-	bufr/tables/0/wmo/20/codetables/21066.table\
-	bufr/tables/0/wmo/20/codetables/21067.table\
-	bufr/tables/0/wmo/20/codetables/21068.table\
-	bufr/tables/0/wmo/20/codetables/21069.table\
-	bufr/tables/0/wmo/20/codetables/21070.table\
-	bufr/tables/0/wmo/20/codetables/21072.table\
-	bufr/tables/0/wmo/20/codetables/21073.table\
-	bufr/tables/0/wmo/20/codetables/21076.table\
-	bufr/tables/0/wmo/20/codetables/21109.table\
-	bufr/tables/0/wmo/20/codetables/21115.table\
-	bufr/tables/0/wmo/20/codetables/21116.table\
-	bufr/tables/0/wmo/20/codetables/21119.table\
-	bufr/tables/0/wmo/20/codetables/21144.table\
-	bufr/tables/0/wmo/20/codetables/2115.table\
-	bufr/tables/0/wmo/20/codetables/21150.table\
-	bufr/tables/0/wmo/20/codetables/21155.table\
-	bufr/tables/0/wmo/20/codetables/21158.table\
-	bufr/tables/0/wmo/20/codetables/21159.table\
-	bufr/tables/0/wmo/20/codetables/21169.table\
-	bufr/tables/0/wmo/20/codetables/2119.table\
-	bufr/tables/0/wmo/20/codetables/2131.table\
-	bufr/tables/0/wmo/20/codetables/2137.table\
-	bufr/tables/0/wmo/20/codetables/2138.table\
-	bufr/tables/0/wmo/20/codetables/2139.table\
-	bufr/tables/0/wmo/20/codetables/2143.table\
-	bufr/tables/0/wmo/20/codetables/2144.table\
-	bufr/tables/0/wmo/20/codetables/2145.table\
-	bufr/tables/0/wmo/20/codetables/2146.table\
-	bufr/tables/0/wmo/20/codetables/2148.table\
-	bufr/tables/0/wmo/20/codetables/2149.table\
-	bufr/tables/0/wmo/20/codetables/2150.table\
-	bufr/tables/0/wmo/20/codetables/2151.table\
-	bufr/tables/0/wmo/20/codetables/2152.table\
-	bufr/tables/0/wmo/20/codetables/2158.table\
-	bufr/tables/0/wmo/20/codetables/2159.table\
-	bufr/tables/0/wmo/20/codetables/2160.table\
-	bufr/tables/0/wmo/20/codetables/2163.table\
-	bufr/tables/0/wmo/20/codetables/2164.table\
-	bufr/tables/0/wmo/20/codetables/2165.table\
-	bufr/tables/0/wmo/20/codetables/2166.table\
-	bufr/tables/0/wmo/20/codetables/2167.table\
-	bufr/tables/0/wmo/20/codetables/2169.table\
-	bufr/tables/0/wmo/20/codetables/2170.table\
-	bufr/tables/0/wmo/20/codetables/2172.table\
-	bufr/tables/0/wmo/20/codetables/2175.table\
-	bufr/tables/0/wmo/20/codetables/2176.table\
-	bufr/tables/0/wmo/20/codetables/2177.table\
-	bufr/tables/0/wmo/20/codetables/2178.table\
-	bufr/tables/0/wmo/20/codetables/2179.table\
-	bufr/tables/0/wmo/20/codetables/2180.table\
-	bufr/tables/0/wmo/20/codetables/2181.table\
-	bufr/tables/0/wmo/20/codetables/2182.table\
-	bufr/tables/0/wmo/20/codetables/2183.table\
-	bufr/tables/0/wmo/20/codetables/2184.table\
-	bufr/tables/0/wmo/20/codetables/2185.table\
-	bufr/tables/0/wmo/20/codetables/2186.table\
-	bufr/tables/0/wmo/20/codetables/2187.table\
-	bufr/tables/0/wmo/20/codetables/2188.table\
-	bufr/tables/0/wmo/20/codetables/2189.table\
-	bufr/tables/0/wmo/20/codetables/2191.table\
-	bufr/tables/0/wmo/20/codetables/22056.table\
-	bufr/tables/0/wmo/20/codetables/22060.table\
-	bufr/tables/0/wmo/20/codetables/22061.table\
-	bufr/tables/0/wmo/20/codetables/22067.table\
-	bufr/tables/0/wmo/20/codetables/22068.table\
-	bufr/tables/0/wmo/20/codetables/22120.table\
-	bufr/tables/0/wmo/20/codetables/22121.table\
-	bufr/tables/0/wmo/20/codetables/22122.table\
-	bufr/tables/0/wmo/20/codetables/22123.table\
-	bufr/tables/0/wmo/20/codetables/22178.table\
-	bufr/tables/0/wmo/20/codetables/23001.table\
-	bufr/tables/0/wmo/20/codetables/23002.table\
-	bufr/tables/0/wmo/20/codetables/23003.table\
-	bufr/tables/0/wmo/20/codetables/23004.table\
-	bufr/tables/0/wmo/20/codetables/23005.table\
-	bufr/tables/0/wmo/20/codetables/23006.table\
-	bufr/tables/0/wmo/20/codetables/23007.table\
-	bufr/tables/0/wmo/20/codetables/23008.table\
-	bufr/tables/0/wmo/20/codetables/23009.table\
-	bufr/tables/0/wmo/20/codetables/23016.table\
-	bufr/tables/0/wmo/20/codetables/23018.table\
-	bufr/tables/0/wmo/20/codetables/23031.table\
-	bufr/tables/0/wmo/20/codetables/23032.table\
-	bufr/tables/0/wmo/20/codetables/24003.table\
-	bufr/tables/0/wmo/20/codetables/25004.table\
-	bufr/tables/0/wmo/20/codetables/25005.table\
-	bufr/tables/0/wmo/20/codetables/25006.table\
-	bufr/tables/0/wmo/20/codetables/25009.table\
-	bufr/tables/0/wmo/20/codetables/25010.table\
-	bufr/tables/0/wmo/20/codetables/25011.table\
-	bufr/tables/0/wmo/20/codetables/25012.table\
-	bufr/tables/0/wmo/20/codetables/25013.table\
-	bufr/tables/0/wmo/20/codetables/25015.table\
-	bufr/tables/0/wmo/20/codetables/25017.table\
-	bufr/tables/0/wmo/20/codetables/25020.table\
-	bufr/tables/0/wmo/20/codetables/25021.table\
-	bufr/tables/0/wmo/20/codetables/25022.table\
-	bufr/tables/0/wmo/20/codetables/25023.table\
-	bufr/tables/0/wmo/20/codetables/25024.table\
-	bufr/tables/0/wmo/20/codetables/25029.table\
-	bufr/tables/0/wmo/20/codetables/25030.table\
-	bufr/tables/0/wmo/20/codetables/25031.table\
-	bufr/tables/0/wmo/20/codetables/25032.table\
-	bufr/tables/0/wmo/20/codetables/25033.table\
-	bufr/tables/0/wmo/20/codetables/25034.table\
-	bufr/tables/0/wmo/20/codetables/25035.table\
-	bufr/tables/0/wmo/20/codetables/25036.table\
-	bufr/tables/0/wmo/20/codetables/25040.table\
-	bufr/tables/0/wmo/20/codetables/25041.table\
-	bufr/tables/0/wmo/20/codetables/25042.table\
-	bufr/tables/0/wmo/20/codetables/25053.table\
-	bufr/tables/0/wmo/20/codetables/25063.table\
-	bufr/tables/0/wmo/20/codetables/25069.table\
-	bufr/tables/0/wmo/20/codetables/25086.table\
-	bufr/tables/0/wmo/20/codetables/25090.table\
-	bufr/tables/0/wmo/20/codetables/25093.table\
-	bufr/tables/0/wmo/20/codetables/25095.table\
-	bufr/tables/0/wmo/20/codetables/25096.table\
-	bufr/tables/0/wmo/20/codetables/25097.table\
-	bufr/tables/0/wmo/20/codetables/25098.table\
-	bufr/tables/0/wmo/20/codetables/25099.table\
-	bufr/tables/0/wmo/20/codetables/25110.table\
-	bufr/tables/0/wmo/20/codetables/25120.table\
-	bufr/tables/0/wmo/20/codetables/25122.table\
-	bufr/tables/0/wmo/20/codetables/25123.table\
-	bufr/tables/0/wmo/20/codetables/25124.table\
-	bufr/tables/0/wmo/20/codetables/25150.table\
-	bufr/tables/0/wmo/20/codetables/25174.table\
-	bufr/tables/0/wmo/20/codetables/25181.table\
-	bufr/tables/0/wmo/20/codetables/25182.table\
-	bufr/tables/0/wmo/20/codetables/25184.table\
-	bufr/tables/0/wmo/20/codetables/26010.table\
-	bufr/tables/0/wmo/20/codetables/29001.table\
-	bufr/tables/0/wmo/20/codetables/29002.table\
-	bufr/tables/0/wmo/20/codetables/30031.table\
-	bufr/tables/0/wmo/20/codetables/30032.table\
-	bufr/tables/0/wmo/20/codetables/31021.table\
-	bufr/tables/0/wmo/20/codetables/31031.table\
-	bufr/tables/0/wmo/20/codetables/33002.table\
-	bufr/tables/0/wmo/20/codetables/33003.table\
-	bufr/tables/0/wmo/20/codetables/33005.table\
-	bufr/tables/0/wmo/20/codetables/33006.table\
-	bufr/tables/0/wmo/20/codetables/33015.table\
-	bufr/tables/0/wmo/20/codetables/33020.table\
-	bufr/tables/0/wmo/20/codetables/33021.table\
-	bufr/tables/0/wmo/20/codetables/33022.table\
-	bufr/tables/0/wmo/20/codetables/33023.table\
-	bufr/tables/0/wmo/20/codetables/33024.table\
-	bufr/tables/0/wmo/20/codetables/33025.table\
-	bufr/tables/0/wmo/20/codetables/33026.table\
-	bufr/tables/0/wmo/20/codetables/33027.table\
-	bufr/tables/0/wmo/20/codetables/33028.table\
-	bufr/tables/0/wmo/20/codetables/33030.table\
-	bufr/tables/0/wmo/20/codetables/33031.table\
-	bufr/tables/0/wmo/20/codetables/33032.table\
-	bufr/tables/0/wmo/20/codetables/33033.table\
-	bufr/tables/0/wmo/20/codetables/33035.table\
-	bufr/tables/0/wmo/20/codetables/33037.table\
-	bufr/tables/0/wmo/20/codetables/33038.table\
-	bufr/tables/0/wmo/20/codetables/33039.table\
-	bufr/tables/0/wmo/20/codetables/33041.table\
-	bufr/tables/0/wmo/20/codetables/33042.table\
-	bufr/tables/0/wmo/20/codetables/33043.table\
-	bufr/tables/0/wmo/20/codetables/33044.table\
-	bufr/tables/0/wmo/20/codetables/33047.table\
-	bufr/tables/0/wmo/20/codetables/33048.table\
-	bufr/tables/0/wmo/20/codetables/33049.table\
-	bufr/tables/0/wmo/20/codetables/33050.table\
-	bufr/tables/0/wmo/20/codetables/33060.table\
-	bufr/tables/0/wmo/20/codetables/33070.table\
-	bufr/tables/0/wmo/20/codetables/33071.table\
-	bufr/tables/0/wmo/20/codetables/33072.table\
-	bufr/tables/0/wmo/20/codetables/33075.table\
-	bufr/tables/0/wmo/20/codetables/33076.table\
-	bufr/tables/0/wmo/20/codetables/33077.table\
-	bufr/tables/0/wmo/20/codetables/33078.table\
-	bufr/tables/0/wmo/20/codetables/33079.table\
-	bufr/tables/0/wmo/20/codetables/33080.table\
-	bufr/tables/0/wmo/20/codetables/33081.table\
-	bufr/tables/0/wmo/20/codetables/33082.table\
-	bufr/tables/0/wmo/20/codetables/33083.table\
-	bufr/tables/0/wmo/20/codetables/33084.table\
-	bufr/tables/0/wmo/20/codetables/33086.table\
-	bufr/tables/0/wmo/20/codetables/35000.table\
-	bufr/tables/0/wmo/20/codetables/35001.table\
-	bufr/tables/0/wmo/20/codetables/35030.table\
-	bufr/tables/0/wmo/20/codetables/35031.table\
-	bufr/tables/0/wmo/20/codetables/35032.table\
-	bufr/tables/0/wmo/20/codetables/35033.table\
-	bufr/tables/0/wmo/20/codetables/35034.table\
-	bufr/tables/0/wmo/20/codetables/35035.table\
-	bufr/tables/0/wmo/20/codetables/40005.table\
-	bufr/tables/0/wmo/20/codetables/40006.table\
-	bufr/tables/0/wmo/20/codetables/40011.table\
-	bufr/tables/0/wmo/20/codetables/40012.table\
-	bufr/tables/0/wmo/20/codetables/40013.table\
-	bufr/tables/0/wmo/20/codetables/40020.table\
-	bufr/tables/0/wmo/20/codetables/40023.table\
-	bufr/tables/0/wmo/20/codetables/40024.table\
-	bufr/tables/0/wmo/20/codetables/40025.table\
-	bufr/tables/0/wmo/20/codetables/4059.table\
-	bufr/tables/0/wmo/20/codetables/4080.table\
-	bufr/tables/0/wmo/20/codetables/8001.table\
-	bufr/tables/0/wmo/20/codetables/8002.table\
-	bufr/tables/0/wmo/20/codetables/8003.table\
-	bufr/tables/0/wmo/20/codetables/8004.table\
-	bufr/tables/0/wmo/20/codetables/8005.table\
-	bufr/tables/0/wmo/20/codetables/8006.table\
-	bufr/tables/0/wmo/20/codetables/8007.table\
-	bufr/tables/0/wmo/20/codetables/8008.table\
-	bufr/tables/0/wmo/20/codetables/8009.table\
-	bufr/tables/0/wmo/20/codetables/8010.table\
-	bufr/tables/0/wmo/20/codetables/8011.table\
-	bufr/tables/0/wmo/20/codetables/8012.table\
-	bufr/tables/0/wmo/20/codetables/8013.table\
-	bufr/tables/0/wmo/20/codetables/8014.table\
-	bufr/tables/0/wmo/20/codetables/8016.table\
-	bufr/tables/0/wmo/20/codetables/8017.table\
-	bufr/tables/0/wmo/20/codetables/8018.table\
-	bufr/tables/0/wmo/20/codetables/8019.table\
-	bufr/tables/0/wmo/20/codetables/8021.table\
-	bufr/tables/0/wmo/20/codetables/8023.table\
-	bufr/tables/0/wmo/20/codetables/8024.table\
-	bufr/tables/0/wmo/20/codetables/8025.table\
-	bufr/tables/0/wmo/20/codetables/8026.table\
-	bufr/tables/0/wmo/20/codetables/8029.table\
-	bufr/tables/0/wmo/20/codetables/8033.table\
-	bufr/tables/0/wmo/20/codetables/8035.table\
-	bufr/tables/0/wmo/20/codetables/8036.table\
-	bufr/tables/0/wmo/20/codetables/8039.table\
-	bufr/tables/0/wmo/20/codetables/8040.table\
-	bufr/tables/0/wmo/20/codetables/8041.table\
-	bufr/tables/0/wmo/20/codetables/8042.table\
-	bufr/tables/0/wmo/20/codetables/8043.table\
-	bufr/tables/0/wmo/20/codetables/8050.table\
-	bufr/tables/0/wmo/20/codetables/8051.table\
-	bufr/tables/0/wmo/20/codetables/8052.table\
-	bufr/tables/0/wmo/20/codetables/8053.table\
-	bufr/tables/0/wmo/20/codetables/8054.table\
-	bufr/tables/0/wmo/20/codetables/8060.table\
-	bufr/tables/0/wmo/20/codetables/8065.table\
-	bufr/tables/0/wmo/20/codetables/8066.table\
-	bufr/tables/0/wmo/20/codetables/8070.table\
-	bufr/tables/0/wmo/20/codetables/8072.table\
-	bufr/tables/0/wmo/20/codetables/8074.table\
-	bufr/tables/0/wmo/20/codetables/8075.table\
-	bufr/tables/0/wmo/20/codetables/8076.table\
-	bufr/tables/0/wmo/20/codetables/8077.table\
-	bufr/tables/0/wmo/20/codetables/8079.table\
-	bufr/tables/0/wmo/20/codetables/8080.table\
-	bufr/tables/0/wmo/20/codetables/8081.table\
-	bufr/tables/0/wmo/20/codetables/8082.table\
-	bufr/tables/0/wmo/20/codetables/8083.table\
-	bufr/tables/0/wmo/20/codetables/8085.table\
-	bufr/tables/0/wmo/20/codetables/8086.table
-
-definitionsbufr_tables_0_wmo_21dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/21
-dist_definitionsbufr_tables_0_wmo_21_DATA = \
-	bufr/tables/0/wmo/21/element.table\
-	bufr/tables/0/wmo/21/sequence.def
-
-definitionsbufr_tables_0_wmo_21_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/21/codetables
-dist_definitionsbufr_tables_0_wmo_21_codetables_DATA = \
-	bufr/tables/0/wmo/21/codetables/1003.table\
-	bufr/tables/0/wmo/21/codetables/10063.table\
-	bufr/tables/0/wmo/21/codetables/10064.table\
-	bufr/tables/0/wmo/21/codetables/1007.table\
-	bufr/tables/0/wmo/21/codetables/1024.table\
-	bufr/tables/0/wmo/21/codetables/1028.table\
-	bufr/tables/0/wmo/21/codetables/1029.table\
-	bufr/tables/0/wmo/21/codetables/1033.table\
-	bufr/tables/0/wmo/21/codetables/1034.table\
-	bufr/tables/0/wmo/21/codetables/1036.table\
-	bufr/tables/0/wmo/21/codetables/1038.table\
-	bufr/tables/0/wmo/21/codetables/1052.table\
-	bufr/tables/0/wmo/21/codetables/1090.table\
-	bufr/tables/0/wmo/21/codetables/1092.table\
-	bufr/tables/0/wmo/21/codetables/1101.table\
-	bufr/tables/0/wmo/21/codetables/11030.table\
-	bufr/tables/0/wmo/21/codetables/11031.table\
-	bufr/tables/0/wmo/21/codetables/11037.table\
-	bufr/tables/0/wmo/21/codetables/11038.table\
-	bufr/tables/0/wmo/21/codetables/11039.table\
-	bufr/tables/0/wmo/21/codetables/13038.table\
-	bufr/tables/0/wmo/21/codetables/13039.table\
-	bufr/tables/0/wmo/21/codetables/13040.table\
-	bufr/tables/0/wmo/21/codetables/13041.table\
-	bufr/tables/0/wmo/21/codetables/13051.table\
-	bufr/tables/0/wmo/21/codetables/13056.table\
-	bufr/tables/0/wmo/21/codetables/13057.table\
-	bufr/tables/0/wmo/21/codetables/15025.table\
-	bufr/tables/0/wmo/21/codetables/19001.table\
-	bufr/tables/0/wmo/21/codetables/19008.table\
-	bufr/tables/0/wmo/21/codetables/19010.table\
-	bufr/tables/0/wmo/21/codetables/19100.table\
-	bufr/tables/0/wmo/21/codetables/19101.table\
-	bufr/tables/0/wmo/21/codetables/19102.table\
-	bufr/tables/0/wmo/21/codetables/19103.table\
-	bufr/tables/0/wmo/21/codetables/19104.table\
-	bufr/tables/0/wmo/21/codetables/19105.table\
-	bufr/tables/0/wmo/21/codetables/19107.table\
-	bufr/tables/0/wmo/21/codetables/19108.table\
-	bufr/tables/0/wmo/21/codetables/19109.table\
-	bufr/tables/0/wmo/21/codetables/19110.table\
-	bufr/tables/0/wmo/21/codetables/19113.table\
-	bufr/tables/0/wmo/21/codetables/19117.table\
-	bufr/tables/0/wmo/21/codetables/19119.table\
-	bufr/tables/0/wmo/21/codetables/20003.table\
-	bufr/tables/0/wmo/21/codetables/20004.table\
-	bufr/tables/0/wmo/21/codetables/20005.table\
-	bufr/tables/0/wmo/21/codetables/20006.table\
-	bufr/tables/0/wmo/21/codetables/20008.table\
-	bufr/tables/0/wmo/21/codetables/20009.table\
-	bufr/tables/0/wmo/21/codetables/2001.table\
-	bufr/tables/0/wmo/21/codetables/20011.table\
-	bufr/tables/0/wmo/21/codetables/20012.table\
-	bufr/tables/0/wmo/21/codetables/20017.table\
-	bufr/tables/0/wmo/21/codetables/20018.table\
-	bufr/tables/0/wmo/21/codetables/2002.table\
-	bufr/tables/0/wmo/21/codetables/20021.table\
-	bufr/tables/0/wmo/21/codetables/20022.table\
-	bufr/tables/0/wmo/21/codetables/20023.table\
-	bufr/tables/0/wmo/21/codetables/20024.table\
-	bufr/tables/0/wmo/21/codetables/20025.table\
-	bufr/tables/0/wmo/21/codetables/20026.table\
-	bufr/tables/0/wmo/21/codetables/20027.table\
-	bufr/tables/0/wmo/21/codetables/20028.table\
-	bufr/tables/0/wmo/21/codetables/20029.table\
-	bufr/tables/0/wmo/21/codetables/2003.table\
-	bufr/tables/0/wmo/21/codetables/20032.table\
-	bufr/tables/0/wmo/21/codetables/20033.table\
-	bufr/tables/0/wmo/21/codetables/20034.table\
-	bufr/tables/0/wmo/21/codetables/20035.table\
-	bufr/tables/0/wmo/21/codetables/20036.table\
-	bufr/tables/0/wmo/21/codetables/20037.table\
-	bufr/tables/0/wmo/21/codetables/2004.table\
-	bufr/tables/0/wmo/21/codetables/20040.table\
-	bufr/tables/0/wmo/21/codetables/20041.table\
-	bufr/tables/0/wmo/21/codetables/20042.table\
-	bufr/tables/0/wmo/21/codetables/20045.table\
-	bufr/tables/0/wmo/21/codetables/20048.table\
-	bufr/tables/0/wmo/21/codetables/20050.table\
-	bufr/tables/0/wmo/21/codetables/20055.table\
-	bufr/tables/0/wmo/21/codetables/20056.table\
-	bufr/tables/0/wmo/21/codetables/20062.table\
-	bufr/tables/0/wmo/21/codetables/20063.table\
-	bufr/tables/0/wmo/21/codetables/20071.table\
-	bufr/tables/0/wmo/21/codetables/20085.table\
-	bufr/tables/0/wmo/21/codetables/20086.table\
-	bufr/tables/0/wmo/21/codetables/20087.table\
-	bufr/tables/0/wmo/21/codetables/20089.table\
-	bufr/tables/0/wmo/21/codetables/20090.table\
-	bufr/tables/0/wmo/21/codetables/20101.table\
-	bufr/tables/0/wmo/21/codetables/20102.table\
-	bufr/tables/0/wmo/21/codetables/20103.table\
-	bufr/tables/0/wmo/21/codetables/20104.table\
-	bufr/tables/0/wmo/21/codetables/20105.table\
-	bufr/tables/0/wmo/21/codetables/20106.table\
-	bufr/tables/0/wmo/21/codetables/20107.table\
-	bufr/tables/0/wmo/21/codetables/20108.table\
-	bufr/tables/0/wmo/21/codetables/2011.table\
-	bufr/tables/0/wmo/21/codetables/20119.table\
-	bufr/tables/0/wmo/21/codetables/20124.table\
-	bufr/tables/0/wmo/21/codetables/2013.table\
-	bufr/tables/0/wmo/21/codetables/20136.table\
-	bufr/tables/0/wmo/21/codetables/20137.table\
-	bufr/tables/0/wmo/21/codetables/2014.table\
-	bufr/tables/0/wmo/21/codetables/2015.table\
-	bufr/tables/0/wmo/21/codetables/2016.table\
-	bufr/tables/0/wmo/21/codetables/2017.table\
-	bufr/tables/0/wmo/21/codetables/2019.table\
-	bufr/tables/0/wmo/21/codetables/2020.table\
-	bufr/tables/0/wmo/21/codetables/2021.table\
-	bufr/tables/0/wmo/21/codetables/2022.table\
-	bufr/tables/0/wmo/21/codetables/2023.table\
-	bufr/tables/0/wmo/21/codetables/2024.table\
-	bufr/tables/0/wmo/21/codetables/2025.table\
-	bufr/tables/0/wmo/21/codetables/2030.table\
-	bufr/tables/0/wmo/21/codetables/2031.table\
-	bufr/tables/0/wmo/21/codetables/2032.table\
-	bufr/tables/0/wmo/21/codetables/2033.table\
-	bufr/tables/0/wmo/21/codetables/2034.table\
-	bufr/tables/0/wmo/21/codetables/2036.table\
-	bufr/tables/0/wmo/21/codetables/2037.table\
-	bufr/tables/0/wmo/21/codetables/2038.table\
-	bufr/tables/0/wmo/21/codetables/2039.table\
-	bufr/tables/0/wmo/21/codetables/2040.table\
-	bufr/tables/0/wmo/21/codetables/2041.table\
-	bufr/tables/0/wmo/21/codetables/2042.table\
-	bufr/tables/0/wmo/21/codetables/2044.table\
-	bufr/tables/0/wmo/21/codetables/2045.table\
-	bufr/tables/0/wmo/21/codetables/2046.table\
-	bufr/tables/0/wmo/21/codetables/2047.table\
-	bufr/tables/0/wmo/21/codetables/2048.table\
-	bufr/tables/0/wmo/21/codetables/2049.table\
-	bufr/tables/0/wmo/21/codetables/2050.table\
-	bufr/tables/0/wmo/21/codetables/2051.table\
-	bufr/tables/0/wmo/21/codetables/2052.table\
-	bufr/tables/0/wmo/21/codetables/2053.table\
-	bufr/tables/0/wmo/21/codetables/2054.table\
-	bufr/tables/0/wmo/21/codetables/2055.table\
-	bufr/tables/0/wmo/21/codetables/2056.table\
-	bufr/tables/0/wmo/21/codetables/2057.table\
-	bufr/tables/0/wmo/21/codetables/2058.table\
-	bufr/tables/0/wmo/21/codetables/2059.table\
-	bufr/tables/0/wmo/21/codetables/2060.table\
-	bufr/tables/0/wmo/21/codetables/2061.table\
-	bufr/tables/0/wmo/21/codetables/2062.table\
-	bufr/tables/0/wmo/21/codetables/2064.table\
-	bufr/tables/0/wmo/21/codetables/2066.table\
-	bufr/tables/0/wmo/21/codetables/2070.table\
-	bufr/tables/0/wmo/21/codetables/2080.table\
-	bufr/tables/0/wmo/21/codetables/2081.table\
-	bufr/tables/0/wmo/21/codetables/2083.table\
-	bufr/tables/0/wmo/21/codetables/2084.table\
-	bufr/tables/0/wmo/21/codetables/2095.table\
-	bufr/tables/0/wmo/21/codetables/2096.table\
-	bufr/tables/0/wmo/21/codetables/2097.table\
-	bufr/tables/0/wmo/21/codetables/2099.table\
-	bufr/tables/0/wmo/21/codetables/2101.table\
-	bufr/tables/0/wmo/21/codetables/2103.table\
-	bufr/tables/0/wmo/21/codetables/2104.table\
-	bufr/tables/0/wmo/21/codetables/21066.table\
-	bufr/tables/0/wmo/21/codetables/21067.table\
-	bufr/tables/0/wmo/21/codetables/21068.table\
-	bufr/tables/0/wmo/21/codetables/21069.table\
-	bufr/tables/0/wmo/21/codetables/21070.table\
-	bufr/tables/0/wmo/21/codetables/21072.table\
-	bufr/tables/0/wmo/21/codetables/21073.table\
-	bufr/tables/0/wmo/21/codetables/21076.table\
-	bufr/tables/0/wmo/21/codetables/21109.table\
-	bufr/tables/0/wmo/21/codetables/21115.table\
-	bufr/tables/0/wmo/21/codetables/21116.table\
-	bufr/tables/0/wmo/21/codetables/21119.table\
-	bufr/tables/0/wmo/21/codetables/21144.table\
-	bufr/tables/0/wmo/21/codetables/2115.table\
-	bufr/tables/0/wmo/21/codetables/21150.table\
-	bufr/tables/0/wmo/21/codetables/21155.table\
-	bufr/tables/0/wmo/21/codetables/21158.table\
-	bufr/tables/0/wmo/21/codetables/21159.table\
-	bufr/tables/0/wmo/21/codetables/21169.table\
-	bufr/tables/0/wmo/21/codetables/2119.table\
-	bufr/tables/0/wmo/21/codetables/2131.table\
-	bufr/tables/0/wmo/21/codetables/2137.table\
-	bufr/tables/0/wmo/21/codetables/2138.table\
-	bufr/tables/0/wmo/21/codetables/2139.table\
-	bufr/tables/0/wmo/21/codetables/2143.table\
-	bufr/tables/0/wmo/21/codetables/2144.table\
-	bufr/tables/0/wmo/21/codetables/2145.table\
-	bufr/tables/0/wmo/21/codetables/2146.table\
-	bufr/tables/0/wmo/21/codetables/2148.table\
-	bufr/tables/0/wmo/21/codetables/2149.table\
-	bufr/tables/0/wmo/21/codetables/2150.table\
-	bufr/tables/0/wmo/21/codetables/2151.table\
-	bufr/tables/0/wmo/21/codetables/2152.table\
-	bufr/tables/0/wmo/21/codetables/2158.table\
-	bufr/tables/0/wmo/21/codetables/2159.table\
-	bufr/tables/0/wmo/21/codetables/2160.table\
-	bufr/tables/0/wmo/21/codetables/2163.table\
-	bufr/tables/0/wmo/21/codetables/2164.table\
-	bufr/tables/0/wmo/21/codetables/2165.table\
-	bufr/tables/0/wmo/21/codetables/2166.table\
-	bufr/tables/0/wmo/21/codetables/2167.table\
-	bufr/tables/0/wmo/21/codetables/2169.table\
-	bufr/tables/0/wmo/21/codetables/2170.table\
-	bufr/tables/0/wmo/21/codetables/2172.table\
-	bufr/tables/0/wmo/21/codetables/2175.table\
-	bufr/tables/0/wmo/21/codetables/2176.table\
-	bufr/tables/0/wmo/21/codetables/2177.table\
-	bufr/tables/0/wmo/21/codetables/2178.table\
-	bufr/tables/0/wmo/21/codetables/2179.table\
-	bufr/tables/0/wmo/21/codetables/2180.table\
-	bufr/tables/0/wmo/21/codetables/2181.table\
-	bufr/tables/0/wmo/21/codetables/2182.table\
-	bufr/tables/0/wmo/21/codetables/2183.table\
-	bufr/tables/0/wmo/21/codetables/2184.table\
-	bufr/tables/0/wmo/21/codetables/2185.table\
-	bufr/tables/0/wmo/21/codetables/2186.table\
-	bufr/tables/0/wmo/21/codetables/2187.table\
-	bufr/tables/0/wmo/21/codetables/2188.table\
-	bufr/tables/0/wmo/21/codetables/2189.table\
-	bufr/tables/0/wmo/21/codetables/2191.table\
-	bufr/tables/0/wmo/21/codetables/22056.table\
-	bufr/tables/0/wmo/21/codetables/22060.table\
-	bufr/tables/0/wmo/21/codetables/22061.table\
-	bufr/tables/0/wmo/21/codetables/22067.table\
-	bufr/tables/0/wmo/21/codetables/22068.table\
-	bufr/tables/0/wmo/21/codetables/22120.table\
-	bufr/tables/0/wmo/21/codetables/22121.table\
-	bufr/tables/0/wmo/21/codetables/22122.table\
-	bufr/tables/0/wmo/21/codetables/22123.table\
-	bufr/tables/0/wmo/21/codetables/22178.table\
-	bufr/tables/0/wmo/21/codetables/23001.table\
-	bufr/tables/0/wmo/21/codetables/23002.table\
-	bufr/tables/0/wmo/21/codetables/23003.table\
-	bufr/tables/0/wmo/21/codetables/23004.table\
-	bufr/tables/0/wmo/21/codetables/23005.table\
-	bufr/tables/0/wmo/21/codetables/23006.table\
-	bufr/tables/0/wmo/21/codetables/23007.table\
-	bufr/tables/0/wmo/21/codetables/23008.table\
-	bufr/tables/0/wmo/21/codetables/23009.table\
-	bufr/tables/0/wmo/21/codetables/23016.table\
-	bufr/tables/0/wmo/21/codetables/23018.table\
-	bufr/tables/0/wmo/21/codetables/23031.table\
-	bufr/tables/0/wmo/21/codetables/23032.table\
-	bufr/tables/0/wmo/21/codetables/24003.table\
-	bufr/tables/0/wmo/21/codetables/25004.table\
-	bufr/tables/0/wmo/21/codetables/25005.table\
-	bufr/tables/0/wmo/21/codetables/25006.table\
-	bufr/tables/0/wmo/21/codetables/25009.table\
-	bufr/tables/0/wmo/21/codetables/25010.table\
-	bufr/tables/0/wmo/21/codetables/25011.table\
-	bufr/tables/0/wmo/21/codetables/25012.table\
-	bufr/tables/0/wmo/21/codetables/25013.table\
-	bufr/tables/0/wmo/21/codetables/25015.table\
-	bufr/tables/0/wmo/21/codetables/25017.table\
-	bufr/tables/0/wmo/21/codetables/25020.table\
-	bufr/tables/0/wmo/21/codetables/25021.table\
-	bufr/tables/0/wmo/21/codetables/25022.table\
-	bufr/tables/0/wmo/21/codetables/25023.table\
-	bufr/tables/0/wmo/21/codetables/25024.table\
-	bufr/tables/0/wmo/21/codetables/25029.table\
-	bufr/tables/0/wmo/21/codetables/25030.table\
-	bufr/tables/0/wmo/21/codetables/25031.table\
-	bufr/tables/0/wmo/21/codetables/25032.table\
-	bufr/tables/0/wmo/21/codetables/25033.table\
-	bufr/tables/0/wmo/21/codetables/25034.table\
-	bufr/tables/0/wmo/21/codetables/25035.table\
-	bufr/tables/0/wmo/21/codetables/25036.table\
-	bufr/tables/0/wmo/21/codetables/25040.table\
-	bufr/tables/0/wmo/21/codetables/25041.table\
-	bufr/tables/0/wmo/21/codetables/25042.table\
-	bufr/tables/0/wmo/21/codetables/25053.table\
-	bufr/tables/0/wmo/21/codetables/25063.table\
-	bufr/tables/0/wmo/21/codetables/25069.table\
-	bufr/tables/0/wmo/21/codetables/25086.table\
-	bufr/tables/0/wmo/21/codetables/25090.table\
-	bufr/tables/0/wmo/21/codetables/25093.table\
-	bufr/tables/0/wmo/21/codetables/25095.table\
-	bufr/tables/0/wmo/21/codetables/25096.table\
-	bufr/tables/0/wmo/21/codetables/25097.table\
-	bufr/tables/0/wmo/21/codetables/25098.table\
-	bufr/tables/0/wmo/21/codetables/25099.table\
-	bufr/tables/0/wmo/21/codetables/25110.table\
-	bufr/tables/0/wmo/21/codetables/25120.table\
-	bufr/tables/0/wmo/21/codetables/25122.table\
-	bufr/tables/0/wmo/21/codetables/25123.table\
-	bufr/tables/0/wmo/21/codetables/25124.table\
-	bufr/tables/0/wmo/21/codetables/25150.table\
-	bufr/tables/0/wmo/21/codetables/25174.table\
-	bufr/tables/0/wmo/21/codetables/25181.table\
-	bufr/tables/0/wmo/21/codetables/25182.table\
-	bufr/tables/0/wmo/21/codetables/25184.table\
-	bufr/tables/0/wmo/21/codetables/26010.table\
-	bufr/tables/0/wmo/21/codetables/29001.table\
-	bufr/tables/0/wmo/21/codetables/29002.table\
-	bufr/tables/0/wmo/21/codetables/30031.table\
-	bufr/tables/0/wmo/21/codetables/30032.table\
-	bufr/tables/0/wmo/21/codetables/31021.table\
-	bufr/tables/0/wmo/21/codetables/31031.table\
-	bufr/tables/0/wmo/21/codetables/33002.table\
-	bufr/tables/0/wmo/21/codetables/33003.table\
-	bufr/tables/0/wmo/21/codetables/33005.table\
-	bufr/tables/0/wmo/21/codetables/33006.table\
-	bufr/tables/0/wmo/21/codetables/33015.table\
-	bufr/tables/0/wmo/21/codetables/33020.table\
-	bufr/tables/0/wmo/21/codetables/33021.table\
-	bufr/tables/0/wmo/21/codetables/33022.table\
-	bufr/tables/0/wmo/21/codetables/33023.table\
-	bufr/tables/0/wmo/21/codetables/33024.table\
-	bufr/tables/0/wmo/21/codetables/33025.table\
-	bufr/tables/0/wmo/21/codetables/33026.table\
-	bufr/tables/0/wmo/21/codetables/33027.table\
-	bufr/tables/0/wmo/21/codetables/33028.table\
-	bufr/tables/0/wmo/21/codetables/33030.table\
-	bufr/tables/0/wmo/21/codetables/33031.table\
-	bufr/tables/0/wmo/21/codetables/33032.table\
-	bufr/tables/0/wmo/21/codetables/33033.table\
-	bufr/tables/0/wmo/21/codetables/33035.table\
-	bufr/tables/0/wmo/21/codetables/33037.table\
-	bufr/tables/0/wmo/21/codetables/33038.table\
-	bufr/tables/0/wmo/21/codetables/33039.table\
-	bufr/tables/0/wmo/21/codetables/33041.table\
-	bufr/tables/0/wmo/21/codetables/33042.table\
-	bufr/tables/0/wmo/21/codetables/33043.table\
-	bufr/tables/0/wmo/21/codetables/33044.table\
-	bufr/tables/0/wmo/21/codetables/33047.table\
-	bufr/tables/0/wmo/21/codetables/33048.table\
-	bufr/tables/0/wmo/21/codetables/33049.table\
-	bufr/tables/0/wmo/21/codetables/33050.table\
-	bufr/tables/0/wmo/21/codetables/33060.table\
-	bufr/tables/0/wmo/21/codetables/33070.table\
-	bufr/tables/0/wmo/21/codetables/33071.table\
-	bufr/tables/0/wmo/21/codetables/33072.table\
-	bufr/tables/0/wmo/21/codetables/33075.table\
-	bufr/tables/0/wmo/21/codetables/33076.table\
-	bufr/tables/0/wmo/21/codetables/33077.table\
-	bufr/tables/0/wmo/21/codetables/33078.table\
-	bufr/tables/0/wmo/21/codetables/33079.table\
-	bufr/tables/0/wmo/21/codetables/33080.table\
-	bufr/tables/0/wmo/21/codetables/33081.table\
-	bufr/tables/0/wmo/21/codetables/33082.table\
-	bufr/tables/0/wmo/21/codetables/33083.table\
-	bufr/tables/0/wmo/21/codetables/33084.table\
-	bufr/tables/0/wmo/21/codetables/33085.table\
-	bufr/tables/0/wmo/21/codetables/33086.table\
-	bufr/tables/0/wmo/21/codetables/33087.table\
-	bufr/tables/0/wmo/21/codetables/33088.table\
-	bufr/tables/0/wmo/21/codetables/35000.table\
-	bufr/tables/0/wmo/21/codetables/35001.table\
-	bufr/tables/0/wmo/21/codetables/35030.table\
-	bufr/tables/0/wmo/21/codetables/35031.table\
-	bufr/tables/0/wmo/21/codetables/35032.table\
-	bufr/tables/0/wmo/21/codetables/35033.table\
-	bufr/tables/0/wmo/21/codetables/35034.table\
-	bufr/tables/0/wmo/21/codetables/35035.table\
-	bufr/tables/0/wmo/21/codetables/40005.table\
-	bufr/tables/0/wmo/21/codetables/40006.table\
-	bufr/tables/0/wmo/21/codetables/40011.table\
-	bufr/tables/0/wmo/21/codetables/40012.table\
-	bufr/tables/0/wmo/21/codetables/40013.table\
-	bufr/tables/0/wmo/21/codetables/40020.table\
-	bufr/tables/0/wmo/21/codetables/40023.table\
-	bufr/tables/0/wmo/21/codetables/40024.table\
-	bufr/tables/0/wmo/21/codetables/40025.table\
-	bufr/tables/0/wmo/21/codetables/4059.table\
-	bufr/tables/0/wmo/21/codetables/4080.table\
-	bufr/tables/0/wmo/21/codetables/8001.table\
-	bufr/tables/0/wmo/21/codetables/8002.table\
-	bufr/tables/0/wmo/21/codetables/8003.table\
-	bufr/tables/0/wmo/21/codetables/8004.table\
-	bufr/tables/0/wmo/21/codetables/8005.table\
-	bufr/tables/0/wmo/21/codetables/8006.table\
-	bufr/tables/0/wmo/21/codetables/8007.table\
-	bufr/tables/0/wmo/21/codetables/8008.table\
-	bufr/tables/0/wmo/21/codetables/8009.table\
-	bufr/tables/0/wmo/21/codetables/8010.table\
-	bufr/tables/0/wmo/21/codetables/8011.table\
-	bufr/tables/0/wmo/21/codetables/8012.table\
-	bufr/tables/0/wmo/21/codetables/8013.table\
-	bufr/tables/0/wmo/21/codetables/8014.table\
-	bufr/tables/0/wmo/21/codetables/8016.table\
-	bufr/tables/0/wmo/21/codetables/8017.table\
-	bufr/tables/0/wmo/21/codetables/8018.table\
-	bufr/tables/0/wmo/21/codetables/8019.table\
-	bufr/tables/0/wmo/21/codetables/8021.table\
-	bufr/tables/0/wmo/21/codetables/8023.table\
-	bufr/tables/0/wmo/21/codetables/8024.table\
-	bufr/tables/0/wmo/21/codetables/8025.table\
-	bufr/tables/0/wmo/21/codetables/8026.table\
-	bufr/tables/0/wmo/21/codetables/8029.table\
-	bufr/tables/0/wmo/21/codetables/8033.table\
-	bufr/tables/0/wmo/21/codetables/8035.table\
-	bufr/tables/0/wmo/21/codetables/8036.table\
-	bufr/tables/0/wmo/21/codetables/8039.table\
-	bufr/tables/0/wmo/21/codetables/8040.table\
-	bufr/tables/0/wmo/21/codetables/8041.table\
-	bufr/tables/0/wmo/21/codetables/8042.table\
-	bufr/tables/0/wmo/21/codetables/8043.table\
-	bufr/tables/0/wmo/21/codetables/8050.table\
-	bufr/tables/0/wmo/21/codetables/8051.table\
-	bufr/tables/0/wmo/21/codetables/8052.table\
-	bufr/tables/0/wmo/21/codetables/8053.table\
-	bufr/tables/0/wmo/21/codetables/8054.table\
-	bufr/tables/0/wmo/21/codetables/8060.table\
-	bufr/tables/0/wmo/21/codetables/8065.table\
-	bufr/tables/0/wmo/21/codetables/8066.table\
-	bufr/tables/0/wmo/21/codetables/8070.table\
-	bufr/tables/0/wmo/21/codetables/8072.table\
-	bufr/tables/0/wmo/21/codetables/8074.table\
-	bufr/tables/0/wmo/21/codetables/8075.table\
-	bufr/tables/0/wmo/21/codetables/8076.table\
-	bufr/tables/0/wmo/21/codetables/8077.table\
-	bufr/tables/0/wmo/21/codetables/8079.table\
-	bufr/tables/0/wmo/21/codetables/8080.table\
-	bufr/tables/0/wmo/21/codetables/8081.table\
-	bufr/tables/0/wmo/21/codetables/8082.table\
-	bufr/tables/0/wmo/21/codetables/8083.table\
-	bufr/tables/0/wmo/21/codetables/8085.table\
-	bufr/tables/0/wmo/21/codetables/8086.table
-
-definitionsbufr_tables_0_wmo_22dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/22
-dist_definitionsbufr_tables_0_wmo_22_DATA = \
-	bufr/tables/0/wmo/22/element.table\
-	bufr/tables/0/wmo/22/sequence.def
-
-definitionsbufr_tables_0_wmo_22_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/22/codetables
-dist_definitionsbufr_tables_0_wmo_22_codetables_DATA = \
-	bufr/tables/0/wmo/22/codetables/1003.table\
-	bufr/tables/0/wmo/22/codetables/10063.table\
-	bufr/tables/0/wmo/22/codetables/10064.table\
-	bufr/tables/0/wmo/22/codetables/1007.table\
-	bufr/tables/0/wmo/22/codetables/1024.table\
-	bufr/tables/0/wmo/22/codetables/1028.table\
-	bufr/tables/0/wmo/22/codetables/1029.table\
-	bufr/tables/0/wmo/22/codetables/1033.table\
-	bufr/tables/0/wmo/22/codetables/1034.table\
-	bufr/tables/0/wmo/22/codetables/1036.table\
-	bufr/tables/0/wmo/22/codetables/1038.table\
-	bufr/tables/0/wmo/22/codetables/1052.table\
-	bufr/tables/0/wmo/22/codetables/1090.table\
-	bufr/tables/0/wmo/22/codetables/1092.table\
-	bufr/tables/0/wmo/22/codetables/1101.table\
-	bufr/tables/0/wmo/22/codetables/11030.table\
-	bufr/tables/0/wmo/22/codetables/11031.table\
-	bufr/tables/0/wmo/22/codetables/11037.table\
-	bufr/tables/0/wmo/22/codetables/11038.table\
-	bufr/tables/0/wmo/22/codetables/11039.table\
-	bufr/tables/0/wmo/22/codetables/13038.table\
-	bufr/tables/0/wmo/22/codetables/13039.table\
-	bufr/tables/0/wmo/22/codetables/13040.table\
-	bufr/tables/0/wmo/22/codetables/13041.table\
-	bufr/tables/0/wmo/22/codetables/13051.table\
-	bufr/tables/0/wmo/22/codetables/13056.table\
-	bufr/tables/0/wmo/22/codetables/13057.table\
-	bufr/tables/0/wmo/22/codetables/15025.table\
-	bufr/tables/0/wmo/22/codetables/19001.table\
-	bufr/tables/0/wmo/22/codetables/19008.table\
-	bufr/tables/0/wmo/22/codetables/19010.table\
-	bufr/tables/0/wmo/22/codetables/19100.table\
-	bufr/tables/0/wmo/22/codetables/19101.table\
-	bufr/tables/0/wmo/22/codetables/19102.table\
-	bufr/tables/0/wmo/22/codetables/19103.table\
-	bufr/tables/0/wmo/22/codetables/19104.table\
-	bufr/tables/0/wmo/22/codetables/19105.table\
-	bufr/tables/0/wmo/22/codetables/19107.table\
-	bufr/tables/0/wmo/22/codetables/19108.table\
-	bufr/tables/0/wmo/22/codetables/19109.table\
-	bufr/tables/0/wmo/22/codetables/19110.table\
-	bufr/tables/0/wmo/22/codetables/19113.table\
-	bufr/tables/0/wmo/22/codetables/19117.table\
-	bufr/tables/0/wmo/22/codetables/19119.table\
-	bufr/tables/0/wmo/22/codetables/20003.table\
-	bufr/tables/0/wmo/22/codetables/20004.table\
-	bufr/tables/0/wmo/22/codetables/20005.table\
-	bufr/tables/0/wmo/22/codetables/20006.table\
-	bufr/tables/0/wmo/22/codetables/20008.table\
-	bufr/tables/0/wmo/22/codetables/20009.table\
-	bufr/tables/0/wmo/22/codetables/2001.table\
-	bufr/tables/0/wmo/22/codetables/20011.table\
-	bufr/tables/0/wmo/22/codetables/20012.table\
-	bufr/tables/0/wmo/22/codetables/20017.table\
-	bufr/tables/0/wmo/22/codetables/20018.table\
-	bufr/tables/0/wmo/22/codetables/2002.table\
-	bufr/tables/0/wmo/22/codetables/20021.table\
-	bufr/tables/0/wmo/22/codetables/20022.table\
-	bufr/tables/0/wmo/22/codetables/20023.table\
-	bufr/tables/0/wmo/22/codetables/20024.table\
-	bufr/tables/0/wmo/22/codetables/20025.table\
-	bufr/tables/0/wmo/22/codetables/20026.table\
-	bufr/tables/0/wmo/22/codetables/20027.table\
-	bufr/tables/0/wmo/22/codetables/20028.table\
-	bufr/tables/0/wmo/22/codetables/20029.table\
-	bufr/tables/0/wmo/22/codetables/2003.table\
-	bufr/tables/0/wmo/22/codetables/20032.table\
-	bufr/tables/0/wmo/22/codetables/20033.table\
-	bufr/tables/0/wmo/22/codetables/20034.table\
-	bufr/tables/0/wmo/22/codetables/20035.table\
-	bufr/tables/0/wmo/22/codetables/20036.table\
-	bufr/tables/0/wmo/22/codetables/20037.table\
-	bufr/tables/0/wmo/22/codetables/2004.table\
-	bufr/tables/0/wmo/22/codetables/20040.table\
-	bufr/tables/0/wmo/22/codetables/20041.table\
-	bufr/tables/0/wmo/22/codetables/20042.table\
-	bufr/tables/0/wmo/22/codetables/20045.table\
-	bufr/tables/0/wmo/22/codetables/20048.table\
-	bufr/tables/0/wmo/22/codetables/20050.table\
-	bufr/tables/0/wmo/22/codetables/20055.table\
-	bufr/tables/0/wmo/22/codetables/20056.table\
-	bufr/tables/0/wmo/22/codetables/20062.table\
-	bufr/tables/0/wmo/22/codetables/20063.table\
-	bufr/tables/0/wmo/22/codetables/2007.table\
-	bufr/tables/0/wmo/22/codetables/20071.table\
-	bufr/tables/0/wmo/22/codetables/20085.table\
-	bufr/tables/0/wmo/22/codetables/20086.table\
-	bufr/tables/0/wmo/22/codetables/20087.table\
-	bufr/tables/0/wmo/22/codetables/20089.table\
-	bufr/tables/0/wmo/22/codetables/20090.table\
-	bufr/tables/0/wmo/22/codetables/20101.table\
-	bufr/tables/0/wmo/22/codetables/20102.table\
-	bufr/tables/0/wmo/22/codetables/20103.table\
-	bufr/tables/0/wmo/22/codetables/20104.table\
-	bufr/tables/0/wmo/22/codetables/20105.table\
-	bufr/tables/0/wmo/22/codetables/20106.table\
-	bufr/tables/0/wmo/22/codetables/20107.table\
-	bufr/tables/0/wmo/22/codetables/20108.table\
-	bufr/tables/0/wmo/22/codetables/2011.table\
-	bufr/tables/0/wmo/22/codetables/20119.table\
-	bufr/tables/0/wmo/22/codetables/20124.table\
-	bufr/tables/0/wmo/22/codetables/2013.table\
-	bufr/tables/0/wmo/22/codetables/20136.table\
-	bufr/tables/0/wmo/22/codetables/20137.table\
-	bufr/tables/0/wmo/22/codetables/2014.table\
-	bufr/tables/0/wmo/22/codetables/2015.table\
-	bufr/tables/0/wmo/22/codetables/2016.table\
-	bufr/tables/0/wmo/22/codetables/2017.table\
-	bufr/tables/0/wmo/22/codetables/2019.table\
-	bufr/tables/0/wmo/22/codetables/2020.table\
-	bufr/tables/0/wmo/22/codetables/2021.table\
-	bufr/tables/0/wmo/22/codetables/2022.table\
-	bufr/tables/0/wmo/22/codetables/2023.table\
-	bufr/tables/0/wmo/22/codetables/2024.table\
-	bufr/tables/0/wmo/22/codetables/2025.table\
-	bufr/tables/0/wmo/22/codetables/2030.table\
-	bufr/tables/0/wmo/22/codetables/2031.table\
-	bufr/tables/0/wmo/22/codetables/2032.table\
-	bufr/tables/0/wmo/22/codetables/2033.table\
-	bufr/tables/0/wmo/22/codetables/2034.table\
-	bufr/tables/0/wmo/22/codetables/2036.table\
-	bufr/tables/0/wmo/22/codetables/2037.table\
-	bufr/tables/0/wmo/22/codetables/2038.table\
-	bufr/tables/0/wmo/22/codetables/2039.table\
-	bufr/tables/0/wmo/22/codetables/2040.table\
-	bufr/tables/0/wmo/22/codetables/2041.table\
-	bufr/tables/0/wmo/22/codetables/2042.table\
-	bufr/tables/0/wmo/22/codetables/2044.table\
-	bufr/tables/0/wmo/22/codetables/2045.table\
-	bufr/tables/0/wmo/22/codetables/2046.table\
-	bufr/tables/0/wmo/22/codetables/2047.table\
-	bufr/tables/0/wmo/22/codetables/2048.table\
-	bufr/tables/0/wmo/22/codetables/2049.table\
-	bufr/tables/0/wmo/22/codetables/2050.table\
-	bufr/tables/0/wmo/22/codetables/2051.table\
-	bufr/tables/0/wmo/22/codetables/2052.table\
-	bufr/tables/0/wmo/22/codetables/2053.table\
-	bufr/tables/0/wmo/22/codetables/2054.table\
-	bufr/tables/0/wmo/22/codetables/2055.table\
-	bufr/tables/0/wmo/22/codetables/2056.table\
-	bufr/tables/0/wmo/22/codetables/2057.table\
-	bufr/tables/0/wmo/22/codetables/2058.table\
-	bufr/tables/0/wmo/22/codetables/2059.table\
-	bufr/tables/0/wmo/22/codetables/2060.table\
-	bufr/tables/0/wmo/22/codetables/2061.table\
-	bufr/tables/0/wmo/22/codetables/2062.table\
-	bufr/tables/0/wmo/22/codetables/2064.table\
-	bufr/tables/0/wmo/22/codetables/2066.table\
-	bufr/tables/0/wmo/22/codetables/2070.table\
-	bufr/tables/0/wmo/22/codetables/2080.table\
-	bufr/tables/0/wmo/22/codetables/2081.table\
-	bufr/tables/0/wmo/22/codetables/2083.table\
-	bufr/tables/0/wmo/22/codetables/2084.table\
-	bufr/tables/0/wmo/22/codetables/2095.table\
-	bufr/tables/0/wmo/22/codetables/2096.table\
-	bufr/tables/0/wmo/22/codetables/2097.table\
-	bufr/tables/0/wmo/22/codetables/2099.table\
-	bufr/tables/0/wmo/22/codetables/2101.table\
-	bufr/tables/0/wmo/22/codetables/2103.table\
-	bufr/tables/0/wmo/22/codetables/2104.table\
-	bufr/tables/0/wmo/22/codetables/21066.table\
-	bufr/tables/0/wmo/22/codetables/21067.table\
-	bufr/tables/0/wmo/22/codetables/21068.table\
-	bufr/tables/0/wmo/22/codetables/21069.table\
-	bufr/tables/0/wmo/22/codetables/21070.table\
-	bufr/tables/0/wmo/22/codetables/21072.table\
-	bufr/tables/0/wmo/22/codetables/21073.table\
-	bufr/tables/0/wmo/22/codetables/21076.table\
-	bufr/tables/0/wmo/22/codetables/21109.table\
-	bufr/tables/0/wmo/22/codetables/21115.table\
-	bufr/tables/0/wmo/22/codetables/21116.table\
-	bufr/tables/0/wmo/22/codetables/21119.table\
-	bufr/tables/0/wmo/22/codetables/21144.table\
-	bufr/tables/0/wmo/22/codetables/2115.table\
-	bufr/tables/0/wmo/22/codetables/21150.table\
-	bufr/tables/0/wmo/22/codetables/21155.table\
-	bufr/tables/0/wmo/22/codetables/21158.table\
-	bufr/tables/0/wmo/22/codetables/21159.table\
-	bufr/tables/0/wmo/22/codetables/21169.table\
-	bufr/tables/0/wmo/22/codetables/2119.table\
-	bufr/tables/0/wmo/22/codetables/2131.table\
-	bufr/tables/0/wmo/22/codetables/2137.table\
-	bufr/tables/0/wmo/22/codetables/2138.table\
-	bufr/tables/0/wmo/22/codetables/2139.table\
-	bufr/tables/0/wmo/22/codetables/2143.table\
-	bufr/tables/0/wmo/22/codetables/2144.table\
-	bufr/tables/0/wmo/22/codetables/2145.table\
-	bufr/tables/0/wmo/22/codetables/2146.table\
-	bufr/tables/0/wmo/22/codetables/2147.table\
-	bufr/tables/0/wmo/22/codetables/2148.table\
-	bufr/tables/0/wmo/22/codetables/2149.table\
-	bufr/tables/0/wmo/22/codetables/2150.table\
-	bufr/tables/0/wmo/22/codetables/2151.table\
-	bufr/tables/0/wmo/22/codetables/2152.table\
-	bufr/tables/0/wmo/22/codetables/2158.table\
-	bufr/tables/0/wmo/22/codetables/2159.table\
-	bufr/tables/0/wmo/22/codetables/2160.table\
-	bufr/tables/0/wmo/22/codetables/2163.table\
-	bufr/tables/0/wmo/22/codetables/2164.table\
-	bufr/tables/0/wmo/22/codetables/2165.table\
-	bufr/tables/0/wmo/22/codetables/2166.table\
-	bufr/tables/0/wmo/22/codetables/2167.table\
-	bufr/tables/0/wmo/22/codetables/2169.table\
-	bufr/tables/0/wmo/22/codetables/2170.table\
-	bufr/tables/0/wmo/22/codetables/2172.table\
-	bufr/tables/0/wmo/22/codetables/2175.table\
-	bufr/tables/0/wmo/22/codetables/2176.table\
-	bufr/tables/0/wmo/22/codetables/2177.table\
-	bufr/tables/0/wmo/22/codetables/2178.table\
-	bufr/tables/0/wmo/22/codetables/2179.table\
-	bufr/tables/0/wmo/22/codetables/2180.table\
-	bufr/tables/0/wmo/22/codetables/2181.table\
-	bufr/tables/0/wmo/22/codetables/2182.table\
-	bufr/tables/0/wmo/22/codetables/2183.table\
-	bufr/tables/0/wmo/22/codetables/2184.table\
-	bufr/tables/0/wmo/22/codetables/2185.table\
-	bufr/tables/0/wmo/22/codetables/2186.table\
-	bufr/tables/0/wmo/22/codetables/2187.table\
-	bufr/tables/0/wmo/22/codetables/2188.table\
-	bufr/tables/0/wmo/22/codetables/2189.table\
-	bufr/tables/0/wmo/22/codetables/2191.table\
-	bufr/tables/0/wmo/22/codetables/22056.table\
-	bufr/tables/0/wmo/22/codetables/22060.table\
-	bufr/tables/0/wmo/22/codetables/22061.table\
-	bufr/tables/0/wmo/22/codetables/22067.table\
-	bufr/tables/0/wmo/22/codetables/22068.table\
-	bufr/tables/0/wmo/22/codetables/22120.table\
-	bufr/tables/0/wmo/22/codetables/22121.table\
-	bufr/tables/0/wmo/22/codetables/22122.table\
-	bufr/tables/0/wmo/22/codetables/22123.table\
-	bufr/tables/0/wmo/22/codetables/22178.table\
-	bufr/tables/0/wmo/22/codetables/23001.table\
-	bufr/tables/0/wmo/22/codetables/23002.table\
-	bufr/tables/0/wmo/22/codetables/23003.table\
-	bufr/tables/0/wmo/22/codetables/23004.table\
-	bufr/tables/0/wmo/22/codetables/23005.table\
-	bufr/tables/0/wmo/22/codetables/23006.table\
-	bufr/tables/0/wmo/22/codetables/23007.table\
-	bufr/tables/0/wmo/22/codetables/23008.table\
-	bufr/tables/0/wmo/22/codetables/23009.table\
-	bufr/tables/0/wmo/22/codetables/23016.table\
-	bufr/tables/0/wmo/22/codetables/23018.table\
-	bufr/tables/0/wmo/22/codetables/23031.table\
-	bufr/tables/0/wmo/22/codetables/23032.table\
-	bufr/tables/0/wmo/22/codetables/24003.table\
-	bufr/tables/0/wmo/22/codetables/25004.table\
-	bufr/tables/0/wmo/22/codetables/25005.table\
-	bufr/tables/0/wmo/22/codetables/25006.table\
-	bufr/tables/0/wmo/22/codetables/25009.table\
-	bufr/tables/0/wmo/22/codetables/25010.table\
-	bufr/tables/0/wmo/22/codetables/25011.table\
-	bufr/tables/0/wmo/22/codetables/25012.table\
-	bufr/tables/0/wmo/22/codetables/25013.table\
-	bufr/tables/0/wmo/22/codetables/25015.table\
-	bufr/tables/0/wmo/22/codetables/25017.table\
-	bufr/tables/0/wmo/22/codetables/25020.table\
-	bufr/tables/0/wmo/22/codetables/25021.table\
-	bufr/tables/0/wmo/22/codetables/25022.table\
-	bufr/tables/0/wmo/22/codetables/25023.table\
-	bufr/tables/0/wmo/22/codetables/25024.table\
-	bufr/tables/0/wmo/22/codetables/25029.table\
-	bufr/tables/0/wmo/22/codetables/25030.table\
-	bufr/tables/0/wmo/22/codetables/25031.table\
-	bufr/tables/0/wmo/22/codetables/25032.table\
-	bufr/tables/0/wmo/22/codetables/25033.table\
-	bufr/tables/0/wmo/22/codetables/25034.table\
-	bufr/tables/0/wmo/22/codetables/25035.table\
-	bufr/tables/0/wmo/22/codetables/25036.table\
-	bufr/tables/0/wmo/22/codetables/25040.table\
-	bufr/tables/0/wmo/22/codetables/25041.table\
-	bufr/tables/0/wmo/22/codetables/25042.table\
-	bufr/tables/0/wmo/22/codetables/25053.table\
-	bufr/tables/0/wmo/22/codetables/25063.table\
-	bufr/tables/0/wmo/22/codetables/25069.table\
-	bufr/tables/0/wmo/22/codetables/25086.table\
-	bufr/tables/0/wmo/22/codetables/25090.table\
-	bufr/tables/0/wmo/22/codetables/25093.table\
-	bufr/tables/0/wmo/22/codetables/25095.table\
-	bufr/tables/0/wmo/22/codetables/25096.table\
-	bufr/tables/0/wmo/22/codetables/25097.table\
-	bufr/tables/0/wmo/22/codetables/25098.table\
-	bufr/tables/0/wmo/22/codetables/25099.table\
-	bufr/tables/0/wmo/22/codetables/25110.table\
-	bufr/tables/0/wmo/22/codetables/25120.table\
-	bufr/tables/0/wmo/22/codetables/25122.table\
-	bufr/tables/0/wmo/22/codetables/25123.table\
-	bufr/tables/0/wmo/22/codetables/25124.table\
-	bufr/tables/0/wmo/22/codetables/25150.table\
-	bufr/tables/0/wmo/22/codetables/25174.table\
-	bufr/tables/0/wmo/22/codetables/25181.table\
-	bufr/tables/0/wmo/22/codetables/25182.table\
-	bufr/tables/0/wmo/22/codetables/25184.table\
-	bufr/tables/0/wmo/22/codetables/26010.table\
-	bufr/tables/0/wmo/22/codetables/29001.table\
-	bufr/tables/0/wmo/22/codetables/29002.table\
-	bufr/tables/0/wmo/22/codetables/30031.table\
-	bufr/tables/0/wmo/22/codetables/30032.table\
-	bufr/tables/0/wmo/22/codetables/3010.table\
-	bufr/tables/0/wmo/22/codetables/3011.table\
-	bufr/tables/0/wmo/22/codetables/3012.table\
-	bufr/tables/0/wmo/22/codetables/31021.table\
-	bufr/tables/0/wmo/22/codetables/31031.table\
-	bufr/tables/0/wmo/22/codetables/33002.table\
-	bufr/tables/0/wmo/22/codetables/33003.table\
-	bufr/tables/0/wmo/22/codetables/33005.table\
-	bufr/tables/0/wmo/22/codetables/33006.table\
-	bufr/tables/0/wmo/22/codetables/33015.table\
-	bufr/tables/0/wmo/22/codetables/33020.table\
-	bufr/tables/0/wmo/22/codetables/33021.table\
-	bufr/tables/0/wmo/22/codetables/33022.table\
-	bufr/tables/0/wmo/22/codetables/33023.table\
-	bufr/tables/0/wmo/22/codetables/33024.table\
-	bufr/tables/0/wmo/22/codetables/33025.table\
-	bufr/tables/0/wmo/22/codetables/33026.table\
-	bufr/tables/0/wmo/22/codetables/33027.table\
-	bufr/tables/0/wmo/22/codetables/33028.table\
-	bufr/tables/0/wmo/22/codetables/33030.table\
-	bufr/tables/0/wmo/22/codetables/33031.table\
-	bufr/tables/0/wmo/22/codetables/33032.table\
-	bufr/tables/0/wmo/22/codetables/33033.table\
-	bufr/tables/0/wmo/22/codetables/33035.table\
-	bufr/tables/0/wmo/22/codetables/33037.table\
-	bufr/tables/0/wmo/22/codetables/33038.table\
-	bufr/tables/0/wmo/22/codetables/33039.table\
-	bufr/tables/0/wmo/22/codetables/33041.table\
-	bufr/tables/0/wmo/22/codetables/33042.table\
-	bufr/tables/0/wmo/22/codetables/33043.table\
-	bufr/tables/0/wmo/22/codetables/33044.table\
-	bufr/tables/0/wmo/22/codetables/33047.table\
-	bufr/tables/0/wmo/22/codetables/33048.table\
-	bufr/tables/0/wmo/22/codetables/33049.table\
-	bufr/tables/0/wmo/22/codetables/33050.table\
-	bufr/tables/0/wmo/22/codetables/33060.table\
-	bufr/tables/0/wmo/22/codetables/33070.table\
-	bufr/tables/0/wmo/22/codetables/33071.table\
-	bufr/tables/0/wmo/22/codetables/33072.table\
-	bufr/tables/0/wmo/22/codetables/33075.table\
-	bufr/tables/0/wmo/22/codetables/33076.table\
-	bufr/tables/0/wmo/22/codetables/33077.table\
-	bufr/tables/0/wmo/22/codetables/33078.table\
-	bufr/tables/0/wmo/22/codetables/33079.table\
-	bufr/tables/0/wmo/22/codetables/33080.table\
-	bufr/tables/0/wmo/22/codetables/33081.table\
-	bufr/tables/0/wmo/22/codetables/33082.table\
-	bufr/tables/0/wmo/22/codetables/33083.table\
-	bufr/tables/0/wmo/22/codetables/33084.table\
-	bufr/tables/0/wmo/22/codetables/33085.table\
-	bufr/tables/0/wmo/22/codetables/33086.table\
-	bufr/tables/0/wmo/22/codetables/33087.table\
-	bufr/tables/0/wmo/22/codetables/33088.table\
-	bufr/tables/0/wmo/22/codetables/35000.table\
-	bufr/tables/0/wmo/22/codetables/35001.table\
-	bufr/tables/0/wmo/22/codetables/35030.table\
-	bufr/tables/0/wmo/22/codetables/35031.table\
-	bufr/tables/0/wmo/22/codetables/35032.table\
-	bufr/tables/0/wmo/22/codetables/35033.table\
-	bufr/tables/0/wmo/22/codetables/35034.table\
-	bufr/tables/0/wmo/22/codetables/35035.table\
-	bufr/tables/0/wmo/22/codetables/40005.table\
-	bufr/tables/0/wmo/22/codetables/40006.table\
-	bufr/tables/0/wmo/22/codetables/40011.table\
-	bufr/tables/0/wmo/22/codetables/40012.table\
-	bufr/tables/0/wmo/22/codetables/40013.table\
-	bufr/tables/0/wmo/22/codetables/40020.table\
-	bufr/tables/0/wmo/22/codetables/40023.table\
-	bufr/tables/0/wmo/22/codetables/40024.table\
-	bufr/tables/0/wmo/22/codetables/40025.table\
-	bufr/tables/0/wmo/22/codetables/4059.table\
-	bufr/tables/0/wmo/22/codetables/4080.table\
-	bufr/tables/0/wmo/22/codetables/8001.table\
-	bufr/tables/0/wmo/22/codetables/8002.table\
-	bufr/tables/0/wmo/22/codetables/8003.table\
-	bufr/tables/0/wmo/22/codetables/8004.table\
-	bufr/tables/0/wmo/22/codetables/8005.table\
-	bufr/tables/0/wmo/22/codetables/8006.table\
-	bufr/tables/0/wmo/22/codetables/8007.table\
-	bufr/tables/0/wmo/22/codetables/8008.table\
-	bufr/tables/0/wmo/22/codetables/8009.table\
-	bufr/tables/0/wmo/22/codetables/8010.table\
-	bufr/tables/0/wmo/22/codetables/8011.table\
-	bufr/tables/0/wmo/22/codetables/8012.table\
-	bufr/tables/0/wmo/22/codetables/8013.table\
-	bufr/tables/0/wmo/22/codetables/8014.table\
-	bufr/tables/0/wmo/22/codetables/8015.table\
-	bufr/tables/0/wmo/22/codetables/8016.table\
-	bufr/tables/0/wmo/22/codetables/8017.table\
-	bufr/tables/0/wmo/22/codetables/8018.table\
-	bufr/tables/0/wmo/22/codetables/8019.table\
-	bufr/tables/0/wmo/22/codetables/8021.table\
-	bufr/tables/0/wmo/22/codetables/8023.table\
-	bufr/tables/0/wmo/22/codetables/8024.table\
-	bufr/tables/0/wmo/22/codetables/8025.table\
-	bufr/tables/0/wmo/22/codetables/8026.table\
-	bufr/tables/0/wmo/22/codetables/8029.table\
-	bufr/tables/0/wmo/22/codetables/8032.table\
-	bufr/tables/0/wmo/22/codetables/8033.table\
-	bufr/tables/0/wmo/22/codetables/8035.table\
-	bufr/tables/0/wmo/22/codetables/8036.table\
-	bufr/tables/0/wmo/22/codetables/8039.table\
-	bufr/tables/0/wmo/22/codetables/8040.table\
-	bufr/tables/0/wmo/22/codetables/8041.table\
-	bufr/tables/0/wmo/22/codetables/8042.table\
-	bufr/tables/0/wmo/22/codetables/8043.table\
-	bufr/tables/0/wmo/22/codetables/8050.table\
-	bufr/tables/0/wmo/22/codetables/8051.table\
-	bufr/tables/0/wmo/22/codetables/8052.table\
-	bufr/tables/0/wmo/22/codetables/8053.table\
-	bufr/tables/0/wmo/22/codetables/8054.table\
-	bufr/tables/0/wmo/22/codetables/8060.table\
-	bufr/tables/0/wmo/22/codetables/8065.table\
-	bufr/tables/0/wmo/22/codetables/8066.table\
-	bufr/tables/0/wmo/22/codetables/8070.table\
-	bufr/tables/0/wmo/22/codetables/8072.table\
-	bufr/tables/0/wmo/22/codetables/8074.table\
-	bufr/tables/0/wmo/22/codetables/8075.table\
-	bufr/tables/0/wmo/22/codetables/8076.table\
-	bufr/tables/0/wmo/22/codetables/8077.table\
-	bufr/tables/0/wmo/22/codetables/8079.table\
-	bufr/tables/0/wmo/22/codetables/8080.table\
-	bufr/tables/0/wmo/22/codetables/8081.table\
-	bufr/tables/0/wmo/22/codetables/8082.table\
-	bufr/tables/0/wmo/22/codetables/8083.table\
-	bufr/tables/0/wmo/22/codetables/8085.table\
-	bufr/tables/0/wmo/22/codetables/8086.table
-
-definitionsbufr_tables_0_wmo_23dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/23
-dist_definitionsbufr_tables_0_wmo_23_DATA = \
-	bufr/tables/0/wmo/23/element.table\
-	bufr/tables/0/wmo/23/sequence.def
-
-definitionsbufr_tables_0_wmo_23_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/23/codetables
-dist_definitionsbufr_tables_0_wmo_23_codetables_DATA = \
-	bufr/tables/0/wmo/23/codetables/1003.table\
-	bufr/tables/0/wmo/23/codetables/10063.table\
-	bufr/tables/0/wmo/23/codetables/10064.table\
-	bufr/tables/0/wmo/23/codetables/1007.table\
-	bufr/tables/0/wmo/23/codetables/1024.table\
-	bufr/tables/0/wmo/23/codetables/1028.table\
-	bufr/tables/0/wmo/23/codetables/1029.table\
-	bufr/tables/0/wmo/23/codetables/1033.table\
-	bufr/tables/0/wmo/23/codetables/1034.table\
-	bufr/tables/0/wmo/23/codetables/1036.table\
-	bufr/tables/0/wmo/23/codetables/1038.table\
-	bufr/tables/0/wmo/23/codetables/1052.table\
-	bufr/tables/0/wmo/23/codetables/1090.table\
-	bufr/tables/0/wmo/23/codetables/1092.table\
-	bufr/tables/0/wmo/23/codetables/1101.table\
-	bufr/tables/0/wmo/23/codetables/11030.table\
-	bufr/tables/0/wmo/23/codetables/11031.table\
-	bufr/tables/0/wmo/23/codetables/11037.table\
-	bufr/tables/0/wmo/23/codetables/11038.table\
-	bufr/tables/0/wmo/23/codetables/11039.table\
-	bufr/tables/0/wmo/23/codetables/13038.table\
-	bufr/tables/0/wmo/23/codetables/13039.table\
-	bufr/tables/0/wmo/23/codetables/13040.table\
-	bufr/tables/0/wmo/23/codetables/13041.table\
-	bufr/tables/0/wmo/23/codetables/13051.table\
-	bufr/tables/0/wmo/23/codetables/13056.table\
-	bufr/tables/0/wmo/23/codetables/13057.table\
-	bufr/tables/0/wmo/23/codetables/15025.table\
-	bufr/tables/0/wmo/23/codetables/19001.table\
-	bufr/tables/0/wmo/23/codetables/19008.table\
-	bufr/tables/0/wmo/23/codetables/19010.table\
-	bufr/tables/0/wmo/23/codetables/19100.table\
-	bufr/tables/0/wmo/23/codetables/19101.table\
-	bufr/tables/0/wmo/23/codetables/19102.table\
-	bufr/tables/0/wmo/23/codetables/19103.table\
-	bufr/tables/0/wmo/23/codetables/19104.table\
-	bufr/tables/0/wmo/23/codetables/19105.table\
-	bufr/tables/0/wmo/23/codetables/19107.table\
-	bufr/tables/0/wmo/23/codetables/19108.table\
-	bufr/tables/0/wmo/23/codetables/19109.table\
-	bufr/tables/0/wmo/23/codetables/19110.table\
-	bufr/tables/0/wmo/23/codetables/19113.table\
-	bufr/tables/0/wmo/23/codetables/19117.table\
-	bufr/tables/0/wmo/23/codetables/19119.table\
-	bufr/tables/0/wmo/23/codetables/20003.table\
-	bufr/tables/0/wmo/23/codetables/20004.table\
-	bufr/tables/0/wmo/23/codetables/20005.table\
-	bufr/tables/0/wmo/23/codetables/20006.table\
-	bufr/tables/0/wmo/23/codetables/20008.table\
-	bufr/tables/0/wmo/23/codetables/20009.table\
-	bufr/tables/0/wmo/23/codetables/2001.table\
-	bufr/tables/0/wmo/23/codetables/20011.table\
-	bufr/tables/0/wmo/23/codetables/20012.table\
-	bufr/tables/0/wmo/23/codetables/20017.table\
-	bufr/tables/0/wmo/23/codetables/20018.table\
-	bufr/tables/0/wmo/23/codetables/2002.table\
-	bufr/tables/0/wmo/23/codetables/20021.table\
-	bufr/tables/0/wmo/23/codetables/20022.table\
-	bufr/tables/0/wmo/23/codetables/20023.table\
-	bufr/tables/0/wmo/23/codetables/20024.table\
-	bufr/tables/0/wmo/23/codetables/20025.table\
-	bufr/tables/0/wmo/23/codetables/20026.table\
-	bufr/tables/0/wmo/23/codetables/20027.table\
-	bufr/tables/0/wmo/23/codetables/20028.table\
-	bufr/tables/0/wmo/23/codetables/20029.table\
-	bufr/tables/0/wmo/23/codetables/2003.table\
-	bufr/tables/0/wmo/23/codetables/20032.table\
-	bufr/tables/0/wmo/23/codetables/20033.table\
-	bufr/tables/0/wmo/23/codetables/20034.table\
-	bufr/tables/0/wmo/23/codetables/20035.table\
-	bufr/tables/0/wmo/23/codetables/20036.table\
-	bufr/tables/0/wmo/23/codetables/20037.table\
-	bufr/tables/0/wmo/23/codetables/2004.table\
-	bufr/tables/0/wmo/23/codetables/20040.table\
-	bufr/tables/0/wmo/23/codetables/20041.table\
-	bufr/tables/0/wmo/23/codetables/20042.table\
-	bufr/tables/0/wmo/23/codetables/20045.table\
-	bufr/tables/0/wmo/23/codetables/20048.table\
-	bufr/tables/0/wmo/23/codetables/20050.table\
-	bufr/tables/0/wmo/23/codetables/20055.table\
-	bufr/tables/0/wmo/23/codetables/20056.table\
-	bufr/tables/0/wmo/23/codetables/20062.table\
-	bufr/tables/0/wmo/23/codetables/20063.table\
-	bufr/tables/0/wmo/23/codetables/2007.table\
-	bufr/tables/0/wmo/23/codetables/20071.table\
-	bufr/tables/0/wmo/23/codetables/20085.table\
-	bufr/tables/0/wmo/23/codetables/20086.table\
-	bufr/tables/0/wmo/23/codetables/20087.table\
-	bufr/tables/0/wmo/23/codetables/20089.table\
-	bufr/tables/0/wmo/23/codetables/20090.table\
-	bufr/tables/0/wmo/23/codetables/20101.table\
-	bufr/tables/0/wmo/23/codetables/20102.table\
-	bufr/tables/0/wmo/23/codetables/20103.table\
-	bufr/tables/0/wmo/23/codetables/20104.table\
-	bufr/tables/0/wmo/23/codetables/20105.table\
-	bufr/tables/0/wmo/23/codetables/20106.table\
-	bufr/tables/0/wmo/23/codetables/20107.table\
-	bufr/tables/0/wmo/23/codetables/20108.table\
-	bufr/tables/0/wmo/23/codetables/2011.table\
-	bufr/tables/0/wmo/23/codetables/20119.table\
-	bufr/tables/0/wmo/23/codetables/20124.table\
-	bufr/tables/0/wmo/23/codetables/2013.table\
-	bufr/tables/0/wmo/23/codetables/20136.table\
-	bufr/tables/0/wmo/23/codetables/20137.table\
-	bufr/tables/0/wmo/23/codetables/2014.table\
-	bufr/tables/0/wmo/23/codetables/2015.table\
-	bufr/tables/0/wmo/23/codetables/2016.table\
-	bufr/tables/0/wmo/23/codetables/2017.table\
-	bufr/tables/0/wmo/23/codetables/2019.table\
-	bufr/tables/0/wmo/23/codetables/2020.table\
-	bufr/tables/0/wmo/23/codetables/2021.table\
-	bufr/tables/0/wmo/23/codetables/2022.table\
-	bufr/tables/0/wmo/23/codetables/2023.table\
-	bufr/tables/0/wmo/23/codetables/2024.table\
-	bufr/tables/0/wmo/23/codetables/2025.table\
-	bufr/tables/0/wmo/23/codetables/2030.table\
-	bufr/tables/0/wmo/23/codetables/2031.table\
-	bufr/tables/0/wmo/23/codetables/2032.table\
-	bufr/tables/0/wmo/23/codetables/2033.table\
-	bufr/tables/0/wmo/23/codetables/2034.table\
-	bufr/tables/0/wmo/23/codetables/2036.table\
-	bufr/tables/0/wmo/23/codetables/2037.table\
-	bufr/tables/0/wmo/23/codetables/2038.table\
-	bufr/tables/0/wmo/23/codetables/2039.table\
-	bufr/tables/0/wmo/23/codetables/2040.table\
-	bufr/tables/0/wmo/23/codetables/2041.table\
-	bufr/tables/0/wmo/23/codetables/2042.table\
-	bufr/tables/0/wmo/23/codetables/2044.table\
-	bufr/tables/0/wmo/23/codetables/2045.table\
-	bufr/tables/0/wmo/23/codetables/2046.table\
-	bufr/tables/0/wmo/23/codetables/2047.table\
-	bufr/tables/0/wmo/23/codetables/2048.table\
-	bufr/tables/0/wmo/23/codetables/2049.table\
-	bufr/tables/0/wmo/23/codetables/2050.table\
-	bufr/tables/0/wmo/23/codetables/2051.table\
-	bufr/tables/0/wmo/23/codetables/2052.table\
-	bufr/tables/0/wmo/23/codetables/2053.table\
-	bufr/tables/0/wmo/23/codetables/2054.table\
-	bufr/tables/0/wmo/23/codetables/2055.table\
-	bufr/tables/0/wmo/23/codetables/2056.table\
-	bufr/tables/0/wmo/23/codetables/2057.table\
-	bufr/tables/0/wmo/23/codetables/2058.table\
-	bufr/tables/0/wmo/23/codetables/2059.table\
-	bufr/tables/0/wmo/23/codetables/2060.table\
-	bufr/tables/0/wmo/23/codetables/2061.table\
-	bufr/tables/0/wmo/23/codetables/2062.table\
-	bufr/tables/0/wmo/23/codetables/2064.table\
-	bufr/tables/0/wmo/23/codetables/2066.table\
-	bufr/tables/0/wmo/23/codetables/2070.table\
-	bufr/tables/0/wmo/23/codetables/2080.table\
-	bufr/tables/0/wmo/23/codetables/2081.table\
-	bufr/tables/0/wmo/23/codetables/2083.table\
-	bufr/tables/0/wmo/23/codetables/2084.table\
-	bufr/tables/0/wmo/23/codetables/2095.table\
-	bufr/tables/0/wmo/23/codetables/2096.table\
-	bufr/tables/0/wmo/23/codetables/2097.table\
-	bufr/tables/0/wmo/23/codetables/2099.table\
-	bufr/tables/0/wmo/23/codetables/2101.table\
-	bufr/tables/0/wmo/23/codetables/2103.table\
-	bufr/tables/0/wmo/23/codetables/2104.table\
-	bufr/tables/0/wmo/23/codetables/21066.table\
-	bufr/tables/0/wmo/23/codetables/21067.table\
-	bufr/tables/0/wmo/23/codetables/21068.table\
-	bufr/tables/0/wmo/23/codetables/21069.table\
-	bufr/tables/0/wmo/23/codetables/21070.table\
-	bufr/tables/0/wmo/23/codetables/21072.table\
-	bufr/tables/0/wmo/23/codetables/21073.table\
-	bufr/tables/0/wmo/23/codetables/21076.table\
-	bufr/tables/0/wmo/23/codetables/21109.table\
-	bufr/tables/0/wmo/23/codetables/21115.table\
-	bufr/tables/0/wmo/23/codetables/21116.table\
-	bufr/tables/0/wmo/23/codetables/21119.table\
-	bufr/tables/0/wmo/23/codetables/21144.table\
-	bufr/tables/0/wmo/23/codetables/21148.table\
-	bufr/tables/0/wmo/23/codetables/2115.table\
-	bufr/tables/0/wmo/23/codetables/21150.table\
-	bufr/tables/0/wmo/23/codetables/21155.table\
-	bufr/tables/0/wmo/23/codetables/21158.table\
-	bufr/tables/0/wmo/23/codetables/21159.table\
-	bufr/tables/0/wmo/23/codetables/21169.table\
-	bufr/tables/0/wmo/23/codetables/2119.table\
-	bufr/tables/0/wmo/23/codetables/2131.table\
-	bufr/tables/0/wmo/23/codetables/2137.table\
-	bufr/tables/0/wmo/23/codetables/2138.table\
-	bufr/tables/0/wmo/23/codetables/2139.table\
-	bufr/tables/0/wmo/23/codetables/2143.table\
-	bufr/tables/0/wmo/23/codetables/2144.table\
-	bufr/tables/0/wmo/23/codetables/2145.table\
-	bufr/tables/0/wmo/23/codetables/2146.table\
-	bufr/tables/0/wmo/23/codetables/2147.table\
-	bufr/tables/0/wmo/23/codetables/2148.table\
-	bufr/tables/0/wmo/23/codetables/2149.table\
-	bufr/tables/0/wmo/23/codetables/2150.table\
-	bufr/tables/0/wmo/23/codetables/2151.table\
-	bufr/tables/0/wmo/23/codetables/2152.table\
-	bufr/tables/0/wmo/23/codetables/2158.table\
-	bufr/tables/0/wmo/23/codetables/2159.table\
-	bufr/tables/0/wmo/23/codetables/2160.table\
-	bufr/tables/0/wmo/23/codetables/2163.table\
-	bufr/tables/0/wmo/23/codetables/2164.table\
-	bufr/tables/0/wmo/23/codetables/2165.table\
-	bufr/tables/0/wmo/23/codetables/2166.table\
-	bufr/tables/0/wmo/23/codetables/2167.table\
-	bufr/tables/0/wmo/23/codetables/2169.table\
-	bufr/tables/0/wmo/23/codetables/2170.table\
-	bufr/tables/0/wmo/23/codetables/2172.table\
-	bufr/tables/0/wmo/23/codetables/2175.table\
-	bufr/tables/0/wmo/23/codetables/2176.table\
-	bufr/tables/0/wmo/23/codetables/2177.table\
-	bufr/tables/0/wmo/23/codetables/2178.table\
-	bufr/tables/0/wmo/23/codetables/2179.table\
-	bufr/tables/0/wmo/23/codetables/2180.table\
-	bufr/tables/0/wmo/23/codetables/2181.table\
-	bufr/tables/0/wmo/23/codetables/2182.table\
-	bufr/tables/0/wmo/23/codetables/2183.table\
-	bufr/tables/0/wmo/23/codetables/2184.table\
-	bufr/tables/0/wmo/23/codetables/2185.table\
-	bufr/tables/0/wmo/23/codetables/2186.table\
-	bufr/tables/0/wmo/23/codetables/2187.table\
-	bufr/tables/0/wmo/23/codetables/2188.table\
-	bufr/tables/0/wmo/23/codetables/2189.table\
-	bufr/tables/0/wmo/23/codetables/2191.table\
-	bufr/tables/0/wmo/23/codetables/22056.table\
-	bufr/tables/0/wmo/23/codetables/22060.table\
-	bufr/tables/0/wmo/23/codetables/22061.table\
-	bufr/tables/0/wmo/23/codetables/22067.table\
-	bufr/tables/0/wmo/23/codetables/22068.table\
-	bufr/tables/0/wmo/23/codetables/22120.table\
-	bufr/tables/0/wmo/23/codetables/22121.table\
-	bufr/tables/0/wmo/23/codetables/22122.table\
-	bufr/tables/0/wmo/23/codetables/22123.table\
-	bufr/tables/0/wmo/23/codetables/22178.table\
-	bufr/tables/0/wmo/23/codetables/23001.table\
-	bufr/tables/0/wmo/23/codetables/23002.table\
-	bufr/tables/0/wmo/23/codetables/23003.table\
-	bufr/tables/0/wmo/23/codetables/23004.table\
-	bufr/tables/0/wmo/23/codetables/23005.table\
-	bufr/tables/0/wmo/23/codetables/23006.table\
-	bufr/tables/0/wmo/23/codetables/23007.table\
-	bufr/tables/0/wmo/23/codetables/23008.table\
-	bufr/tables/0/wmo/23/codetables/23009.table\
-	bufr/tables/0/wmo/23/codetables/23016.table\
-	bufr/tables/0/wmo/23/codetables/23018.table\
-	bufr/tables/0/wmo/23/codetables/23031.table\
-	bufr/tables/0/wmo/23/codetables/23032.table\
-	bufr/tables/0/wmo/23/codetables/24003.table\
-	bufr/tables/0/wmo/23/codetables/25004.table\
-	bufr/tables/0/wmo/23/codetables/25005.table\
-	bufr/tables/0/wmo/23/codetables/25006.table\
-	bufr/tables/0/wmo/23/codetables/25009.table\
-	bufr/tables/0/wmo/23/codetables/25010.table\
-	bufr/tables/0/wmo/23/codetables/25011.table\
-	bufr/tables/0/wmo/23/codetables/25012.table\
-	bufr/tables/0/wmo/23/codetables/25013.table\
-	bufr/tables/0/wmo/23/codetables/25015.table\
-	bufr/tables/0/wmo/23/codetables/25017.table\
-	bufr/tables/0/wmo/23/codetables/25020.table\
-	bufr/tables/0/wmo/23/codetables/25021.table\
-	bufr/tables/0/wmo/23/codetables/25022.table\
-	bufr/tables/0/wmo/23/codetables/25023.table\
-	bufr/tables/0/wmo/23/codetables/25024.table\
-	bufr/tables/0/wmo/23/codetables/25029.table\
-	bufr/tables/0/wmo/23/codetables/25030.table\
-	bufr/tables/0/wmo/23/codetables/25031.table\
-	bufr/tables/0/wmo/23/codetables/25032.table\
-	bufr/tables/0/wmo/23/codetables/25033.table\
-	bufr/tables/0/wmo/23/codetables/25034.table\
-	bufr/tables/0/wmo/23/codetables/25035.table\
-	bufr/tables/0/wmo/23/codetables/25036.table\
-	bufr/tables/0/wmo/23/codetables/25040.table\
-	bufr/tables/0/wmo/23/codetables/25041.table\
-	bufr/tables/0/wmo/23/codetables/25042.table\
-	bufr/tables/0/wmo/23/codetables/25053.table\
-	bufr/tables/0/wmo/23/codetables/25063.table\
-	bufr/tables/0/wmo/23/codetables/25069.table\
-	bufr/tables/0/wmo/23/codetables/25086.table\
-	bufr/tables/0/wmo/23/codetables/25090.table\
-	bufr/tables/0/wmo/23/codetables/25093.table\
-	bufr/tables/0/wmo/23/codetables/25095.table\
-	bufr/tables/0/wmo/23/codetables/25096.table\
-	bufr/tables/0/wmo/23/codetables/25097.table\
-	bufr/tables/0/wmo/23/codetables/25098.table\
-	bufr/tables/0/wmo/23/codetables/25099.table\
-	bufr/tables/0/wmo/23/codetables/25110.table\
-	bufr/tables/0/wmo/23/codetables/25112.table\
-	bufr/tables/0/wmo/23/codetables/25113.table\
-	bufr/tables/0/wmo/23/codetables/25120.table\
-	bufr/tables/0/wmo/23/codetables/25122.table\
-	bufr/tables/0/wmo/23/codetables/25123.table\
-	bufr/tables/0/wmo/23/codetables/25124.table\
-	bufr/tables/0/wmo/23/codetables/25150.table\
-	bufr/tables/0/wmo/23/codetables/25174.table\
-	bufr/tables/0/wmo/23/codetables/25181.table\
-	bufr/tables/0/wmo/23/codetables/25182.table\
-	bufr/tables/0/wmo/23/codetables/25184.table\
-	bufr/tables/0/wmo/23/codetables/26010.table\
-	bufr/tables/0/wmo/23/codetables/29001.table\
-	bufr/tables/0/wmo/23/codetables/29002.table\
-	bufr/tables/0/wmo/23/codetables/30031.table\
-	bufr/tables/0/wmo/23/codetables/30032.table\
-	bufr/tables/0/wmo/23/codetables/3010.table\
-	bufr/tables/0/wmo/23/codetables/3011.table\
-	bufr/tables/0/wmo/23/codetables/3012.table\
-	bufr/tables/0/wmo/23/codetables/31021.table\
-	bufr/tables/0/wmo/23/codetables/31031.table\
-	bufr/tables/0/wmo/23/codetables/33002.table\
-	bufr/tables/0/wmo/23/codetables/33003.table\
-	bufr/tables/0/wmo/23/codetables/33005.table\
-	bufr/tables/0/wmo/23/codetables/33006.table\
-	bufr/tables/0/wmo/23/codetables/33015.table\
-	bufr/tables/0/wmo/23/codetables/33020.table\
-	bufr/tables/0/wmo/23/codetables/33021.table\
-	bufr/tables/0/wmo/23/codetables/33022.table\
-	bufr/tables/0/wmo/23/codetables/33023.table\
-	bufr/tables/0/wmo/23/codetables/33024.table\
-	bufr/tables/0/wmo/23/codetables/33025.table\
-	bufr/tables/0/wmo/23/codetables/33026.table\
-	bufr/tables/0/wmo/23/codetables/33027.table\
-	bufr/tables/0/wmo/23/codetables/33028.table\
-	bufr/tables/0/wmo/23/codetables/33030.table\
-	bufr/tables/0/wmo/23/codetables/33031.table\
-	bufr/tables/0/wmo/23/codetables/33032.table\
-	bufr/tables/0/wmo/23/codetables/33033.table\
-	bufr/tables/0/wmo/23/codetables/33035.table\
-	bufr/tables/0/wmo/23/codetables/33037.table\
-	bufr/tables/0/wmo/23/codetables/33038.table\
-	bufr/tables/0/wmo/23/codetables/33039.table\
-	bufr/tables/0/wmo/23/codetables/33041.table\
-	bufr/tables/0/wmo/23/codetables/33042.table\
-	bufr/tables/0/wmo/23/codetables/33043.table\
-	bufr/tables/0/wmo/23/codetables/33044.table\
-	bufr/tables/0/wmo/23/codetables/33047.table\
-	bufr/tables/0/wmo/23/codetables/33048.table\
-	bufr/tables/0/wmo/23/codetables/33049.table\
-	bufr/tables/0/wmo/23/codetables/33050.table\
-	bufr/tables/0/wmo/23/codetables/33060.table\
-	bufr/tables/0/wmo/23/codetables/33070.table\
-	bufr/tables/0/wmo/23/codetables/33071.table\
-	bufr/tables/0/wmo/23/codetables/33072.table\
-	bufr/tables/0/wmo/23/codetables/33075.table\
-	bufr/tables/0/wmo/23/codetables/33076.table\
-	bufr/tables/0/wmo/23/codetables/33077.table\
-	bufr/tables/0/wmo/23/codetables/33078.table\
-	bufr/tables/0/wmo/23/codetables/33079.table\
-	bufr/tables/0/wmo/23/codetables/33080.table\
-	bufr/tables/0/wmo/23/codetables/33081.table\
-	bufr/tables/0/wmo/23/codetables/33082.table\
-	bufr/tables/0/wmo/23/codetables/33083.table\
-	bufr/tables/0/wmo/23/codetables/33084.table\
-	bufr/tables/0/wmo/23/codetables/33085.table\
-	bufr/tables/0/wmo/23/codetables/33086.table\
-	bufr/tables/0/wmo/23/codetables/33087.table\
-	bufr/tables/0/wmo/23/codetables/33088.table\
-	bufr/tables/0/wmo/23/codetables/35000.table\
-	bufr/tables/0/wmo/23/codetables/35001.table\
-	bufr/tables/0/wmo/23/codetables/35030.table\
-	bufr/tables/0/wmo/23/codetables/35031.table\
-	bufr/tables/0/wmo/23/codetables/35032.table\
-	bufr/tables/0/wmo/23/codetables/35033.table\
-	bufr/tables/0/wmo/23/codetables/35034.table\
-	bufr/tables/0/wmo/23/codetables/35035.table\
-	bufr/tables/0/wmo/23/codetables/40005.table\
-	bufr/tables/0/wmo/23/codetables/40006.table\
-	bufr/tables/0/wmo/23/codetables/40011.table\
-	bufr/tables/0/wmo/23/codetables/40012.table\
-	bufr/tables/0/wmo/23/codetables/40013.table\
-	bufr/tables/0/wmo/23/codetables/40020.table\
-	bufr/tables/0/wmo/23/codetables/40023.table\
-	bufr/tables/0/wmo/23/codetables/40024.table\
-	bufr/tables/0/wmo/23/codetables/40025.table\
-	bufr/tables/0/wmo/23/codetables/4059.table\
-	bufr/tables/0/wmo/23/codetables/4080.table\
-	bufr/tables/0/wmo/23/codetables/8001.table\
-	bufr/tables/0/wmo/23/codetables/8002.table\
-	bufr/tables/0/wmo/23/codetables/8003.table\
-	bufr/tables/0/wmo/23/codetables/8004.table\
-	bufr/tables/0/wmo/23/codetables/8005.table\
-	bufr/tables/0/wmo/23/codetables/8006.table\
-	bufr/tables/0/wmo/23/codetables/8007.table\
-	bufr/tables/0/wmo/23/codetables/8008.table\
-	bufr/tables/0/wmo/23/codetables/8009.table\
-	bufr/tables/0/wmo/23/codetables/8010.table\
-	bufr/tables/0/wmo/23/codetables/8011.table\
-	bufr/tables/0/wmo/23/codetables/8012.table\
-	bufr/tables/0/wmo/23/codetables/8013.table\
-	bufr/tables/0/wmo/23/codetables/8014.table\
-	bufr/tables/0/wmo/23/codetables/8015.table\
-	bufr/tables/0/wmo/23/codetables/8016.table\
-	bufr/tables/0/wmo/23/codetables/8017.table\
-	bufr/tables/0/wmo/23/codetables/8018.table\
-	bufr/tables/0/wmo/23/codetables/8019.table\
-	bufr/tables/0/wmo/23/codetables/8021.table\
-	bufr/tables/0/wmo/23/codetables/8023.table\
-	bufr/tables/0/wmo/23/codetables/8024.table\
-	bufr/tables/0/wmo/23/codetables/8025.table\
-	bufr/tables/0/wmo/23/codetables/8026.table\
-	bufr/tables/0/wmo/23/codetables/8029.table\
-	bufr/tables/0/wmo/23/codetables/8032.table\
-	bufr/tables/0/wmo/23/codetables/8033.table\
-	bufr/tables/0/wmo/23/codetables/8035.table\
-	bufr/tables/0/wmo/23/codetables/8036.table\
-	bufr/tables/0/wmo/23/codetables/8039.table\
-	bufr/tables/0/wmo/23/codetables/8040.table\
-	bufr/tables/0/wmo/23/codetables/8041.table\
-	bufr/tables/0/wmo/23/codetables/8042.table\
-	bufr/tables/0/wmo/23/codetables/8043.table\
-	bufr/tables/0/wmo/23/codetables/8050.table\
-	bufr/tables/0/wmo/23/codetables/8051.table\
-	bufr/tables/0/wmo/23/codetables/8052.table\
-	bufr/tables/0/wmo/23/codetables/8053.table\
-	bufr/tables/0/wmo/23/codetables/8054.table\
-	bufr/tables/0/wmo/23/codetables/8060.table\
-	bufr/tables/0/wmo/23/codetables/8065.table\
-	bufr/tables/0/wmo/23/codetables/8066.table\
-	bufr/tables/0/wmo/23/codetables/8070.table\
-	bufr/tables/0/wmo/23/codetables/8072.table\
-	bufr/tables/0/wmo/23/codetables/8074.table\
-	bufr/tables/0/wmo/23/codetables/8075.table\
-	bufr/tables/0/wmo/23/codetables/8076.table\
-	bufr/tables/0/wmo/23/codetables/8077.table\
-	bufr/tables/0/wmo/23/codetables/8079.table\
-	bufr/tables/0/wmo/23/codetables/8080.table\
-	bufr/tables/0/wmo/23/codetables/8081.table\
-	bufr/tables/0/wmo/23/codetables/8082.table\
-	bufr/tables/0/wmo/23/codetables/8083.table\
-	bufr/tables/0/wmo/23/codetables/8085.table\
-	bufr/tables/0/wmo/23/codetables/8086.table\
-	bufr/tables/0/wmo/23/codetables/8087.table
-
-definitionsbufr_tables_0_wmo_24dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/24
-dist_definitionsbufr_tables_0_wmo_24_DATA = \
-	bufr/tables/0/wmo/24/element.table\
-	bufr/tables/0/wmo/24/sequence.def
-
-definitionsbufr_tables_0_wmo_24_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/24/codetables
-dist_definitionsbufr_tables_0_wmo_24_codetables_DATA = \
-	bufr/tables/0/wmo/24/codetables/1003.table\
-	bufr/tables/0/wmo/24/codetables/10063.table\
-	bufr/tables/0/wmo/24/codetables/10064.table\
-	bufr/tables/0/wmo/24/codetables/1007.table\
-	bufr/tables/0/wmo/24/codetables/1024.table\
-	bufr/tables/0/wmo/24/codetables/1028.table\
-	bufr/tables/0/wmo/24/codetables/1029.table\
-	bufr/tables/0/wmo/24/codetables/1033.table\
-	bufr/tables/0/wmo/24/codetables/1034.table\
-	bufr/tables/0/wmo/24/codetables/1036.table\
-	bufr/tables/0/wmo/24/codetables/1038.table\
-	bufr/tables/0/wmo/24/codetables/1052.table\
-	bufr/tables/0/wmo/24/codetables/1090.table\
-	bufr/tables/0/wmo/24/codetables/1092.table\
-	bufr/tables/0/wmo/24/codetables/1101.table\
-	bufr/tables/0/wmo/24/codetables/11030.table\
-	bufr/tables/0/wmo/24/codetables/11031.table\
-	bufr/tables/0/wmo/24/codetables/11037.table\
-	bufr/tables/0/wmo/24/codetables/11038.table\
-	bufr/tables/0/wmo/24/codetables/11039.table\
-	bufr/tables/0/wmo/24/codetables/13038.table\
-	bufr/tables/0/wmo/24/codetables/13039.table\
-	bufr/tables/0/wmo/24/codetables/13040.table\
-	bufr/tables/0/wmo/24/codetables/13041.table\
-	bufr/tables/0/wmo/24/codetables/13051.table\
-	bufr/tables/0/wmo/24/codetables/13056.table\
-	bufr/tables/0/wmo/24/codetables/13057.table\
-	bufr/tables/0/wmo/24/codetables/15025.table\
-	bufr/tables/0/wmo/24/codetables/19001.table\
-	bufr/tables/0/wmo/24/codetables/19008.table\
-	bufr/tables/0/wmo/24/codetables/19010.table\
-	bufr/tables/0/wmo/24/codetables/19100.table\
-	bufr/tables/0/wmo/24/codetables/19101.table\
-	bufr/tables/0/wmo/24/codetables/19102.table\
-	bufr/tables/0/wmo/24/codetables/19103.table\
-	bufr/tables/0/wmo/24/codetables/19104.table\
-	bufr/tables/0/wmo/24/codetables/19105.table\
-	bufr/tables/0/wmo/24/codetables/19107.table\
-	bufr/tables/0/wmo/24/codetables/19108.table\
-	bufr/tables/0/wmo/24/codetables/19109.table\
-	bufr/tables/0/wmo/24/codetables/19110.table\
-	bufr/tables/0/wmo/24/codetables/19113.table\
-	bufr/tables/0/wmo/24/codetables/19117.table\
-	bufr/tables/0/wmo/24/codetables/19119.table\
-	bufr/tables/0/wmo/24/codetables/20003.table\
-	bufr/tables/0/wmo/24/codetables/20004.table\
-	bufr/tables/0/wmo/24/codetables/20005.table\
-	bufr/tables/0/wmo/24/codetables/20006.table\
-	bufr/tables/0/wmo/24/codetables/20008.table\
-	bufr/tables/0/wmo/24/codetables/20009.table\
-	bufr/tables/0/wmo/24/codetables/2001.table\
-	bufr/tables/0/wmo/24/codetables/20011.table\
-	bufr/tables/0/wmo/24/codetables/20012.table\
-	bufr/tables/0/wmo/24/codetables/20017.table\
-	bufr/tables/0/wmo/24/codetables/20018.table\
-	bufr/tables/0/wmo/24/codetables/2002.table\
-	bufr/tables/0/wmo/24/codetables/20021.table\
-	bufr/tables/0/wmo/24/codetables/20022.table\
-	bufr/tables/0/wmo/24/codetables/20023.table\
-	bufr/tables/0/wmo/24/codetables/20024.table\
-	bufr/tables/0/wmo/24/codetables/20025.table\
-	bufr/tables/0/wmo/24/codetables/20026.table\
-	bufr/tables/0/wmo/24/codetables/20027.table\
-	bufr/tables/0/wmo/24/codetables/20028.table\
-	bufr/tables/0/wmo/24/codetables/20029.table\
-	bufr/tables/0/wmo/24/codetables/2003.table\
-	bufr/tables/0/wmo/24/codetables/20032.table\
-	bufr/tables/0/wmo/24/codetables/20033.table\
-	bufr/tables/0/wmo/24/codetables/20034.table\
-	bufr/tables/0/wmo/24/codetables/20035.table\
-	bufr/tables/0/wmo/24/codetables/20036.table\
-	bufr/tables/0/wmo/24/codetables/20037.table\
-	bufr/tables/0/wmo/24/codetables/2004.table\
-	bufr/tables/0/wmo/24/codetables/20040.table\
-	bufr/tables/0/wmo/24/codetables/20041.table\
-	bufr/tables/0/wmo/24/codetables/20042.table\
-	bufr/tables/0/wmo/24/codetables/20045.table\
-	bufr/tables/0/wmo/24/codetables/20048.table\
-	bufr/tables/0/wmo/24/codetables/20050.table\
-	bufr/tables/0/wmo/24/codetables/20055.table\
-	bufr/tables/0/wmo/24/codetables/20056.table\
-	bufr/tables/0/wmo/24/codetables/20062.table\
-	bufr/tables/0/wmo/24/codetables/20063.table\
-	bufr/tables/0/wmo/24/codetables/2007.table\
-	bufr/tables/0/wmo/24/codetables/20071.table\
-	bufr/tables/0/wmo/24/codetables/20085.table\
-	bufr/tables/0/wmo/24/codetables/20086.table\
-	bufr/tables/0/wmo/24/codetables/20087.table\
-	bufr/tables/0/wmo/24/codetables/20089.table\
-	bufr/tables/0/wmo/24/codetables/20090.table\
-	bufr/tables/0/wmo/24/codetables/20101.table\
-	bufr/tables/0/wmo/24/codetables/20102.table\
-	bufr/tables/0/wmo/24/codetables/20103.table\
-	bufr/tables/0/wmo/24/codetables/20104.table\
-	bufr/tables/0/wmo/24/codetables/20105.table\
-	bufr/tables/0/wmo/24/codetables/20106.table\
-	bufr/tables/0/wmo/24/codetables/20107.table\
-	bufr/tables/0/wmo/24/codetables/20108.table\
-	bufr/tables/0/wmo/24/codetables/2011.table\
-	bufr/tables/0/wmo/24/codetables/20119.table\
-	bufr/tables/0/wmo/24/codetables/20124.table\
-	bufr/tables/0/wmo/24/codetables/2013.table\
-	bufr/tables/0/wmo/24/codetables/20136.table\
-	bufr/tables/0/wmo/24/codetables/20137.table\
-	bufr/tables/0/wmo/24/codetables/2014.table\
-	bufr/tables/0/wmo/24/codetables/2015.table\
-	bufr/tables/0/wmo/24/codetables/2016.table\
-	bufr/tables/0/wmo/24/codetables/2017.table\
-	bufr/tables/0/wmo/24/codetables/2019.table\
-	bufr/tables/0/wmo/24/codetables/2020.table\
-	bufr/tables/0/wmo/24/codetables/2021.table\
-	bufr/tables/0/wmo/24/codetables/2022.table\
-	bufr/tables/0/wmo/24/codetables/2023.table\
-	bufr/tables/0/wmo/24/codetables/2024.table\
-	bufr/tables/0/wmo/24/codetables/2025.table\
-	bufr/tables/0/wmo/24/codetables/2030.table\
-	bufr/tables/0/wmo/24/codetables/2031.table\
-	bufr/tables/0/wmo/24/codetables/2032.table\
-	bufr/tables/0/wmo/24/codetables/2033.table\
-	bufr/tables/0/wmo/24/codetables/2034.table\
-	bufr/tables/0/wmo/24/codetables/2036.table\
-	bufr/tables/0/wmo/24/codetables/2037.table\
-	bufr/tables/0/wmo/24/codetables/2038.table\
-	bufr/tables/0/wmo/24/codetables/2039.table\
-	bufr/tables/0/wmo/24/codetables/2040.table\
-	bufr/tables/0/wmo/24/codetables/2041.table\
-	bufr/tables/0/wmo/24/codetables/2042.table\
-	bufr/tables/0/wmo/24/codetables/2044.table\
-	bufr/tables/0/wmo/24/codetables/2045.table\
-	bufr/tables/0/wmo/24/codetables/2046.table\
-	bufr/tables/0/wmo/24/codetables/2047.table\
-	bufr/tables/0/wmo/24/codetables/2048.table\
-	bufr/tables/0/wmo/24/codetables/2049.table\
-	bufr/tables/0/wmo/24/codetables/2050.table\
-	bufr/tables/0/wmo/24/codetables/2051.table\
-	bufr/tables/0/wmo/24/codetables/2052.table\
-	bufr/tables/0/wmo/24/codetables/2053.table\
-	bufr/tables/0/wmo/24/codetables/2054.table\
-	bufr/tables/0/wmo/24/codetables/2055.table\
-	bufr/tables/0/wmo/24/codetables/2056.table\
-	bufr/tables/0/wmo/24/codetables/2057.table\
-	bufr/tables/0/wmo/24/codetables/2058.table\
-	bufr/tables/0/wmo/24/codetables/2059.table\
-	bufr/tables/0/wmo/24/codetables/2060.table\
-	bufr/tables/0/wmo/24/codetables/2061.table\
-	bufr/tables/0/wmo/24/codetables/2062.table\
-	bufr/tables/0/wmo/24/codetables/2064.table\
-	bufr/tables/0/wmo/24/codetables/2066.table\
-	bufr/tables/0/wmo/24/codetables/2070.table\
-	bufr/tables/0/wmo/24/codetables/2080.table\
-	bufr/tables/0/wmo/24/codetables/2081.table\
-	bufr/tables/0/wmo/24/codetables/2083.table\
-	bufr/tables/0/wmo/24/codetables/2084.table\
-	bufr/tables/0/wmo/24/codetables/2095.table\
-	bufr/tables/0/wmo/24/codetables/2096.table\
-	bufr/tables/0/wmo/24/codetables/2097.table\
-	bufr/tables/0/wmo/24/codetables/2099.table\
-	bufr/tables/0/wmo/24/codetables/2101.table\
-	bufr/tables/0/wmo/24/codetables/2103.table\
-	bufr/tables/0/wmo/24/codetables/2104.table\
-	bufr/tables/0/wmo/24/codetables/21066.table\
-	bufr/tables/0/wmo/24/codetables/21067.table\
-	bufr/tables/0/wmo/24/codetables/21068.table\
-	bufr/tables/0/wmo/24/codetables/21069.table\
-	bufr/tables/0/wmo/24/codetables/21070.table\
-	bufr/tables/0/wmo/24/codetables/21072.table\
-	bufr/tables/0/wmo/24/codetables/21073.table\
-	bufr/tables/0/wmo/24/codetables/21076.table\
-	bufr/tables/0/wmo/24/codetables/21109.table\
-	bufr/tables/0/wmo/24/codetables/21115.table\
-	bufr/tables/0/wmo/24/codetables/21116.table\
-	bufr/tables/0/wmo/24/codetables/21119.table\
-	bufr/tables/0/wmo/24/codetables/21144.table\
-	bufr/tables/0/wmo/24/codetables/21148.table\
-	bufr/tables/0/wmo/24/codetables/2115.table\
-	bufr/tables/0/wmo/24/codetables/21150.table\
-	bufr/tables/0/wmo/24/codetables/21155.table\
-	bufr/tables/0/wmo/24/codetables/21158.table\
-	bufr/tables/0/wmo/24/codetables/21159.table\
-	bufr/tables/0/wmo/24/codetables/21169.table\
-	bufr/tables/0/wmo/24/codetables/2119.table\
-	bufr/tables/0/wmo/24/codetables/2131.table\
-	bufr/tables/0/wmo/24/codetables/2137.table\
-	bufr/tables/0/wmo/24/codetables/2138.table\
-	bufr/tables/0/wmo/24/codetables/2139.table\
-	bufr/tables/0/wmo/24/codetables/2143.table\
-	bufr/tables/0/wmo/24/codetables/2144.table\
-	bufr/tables/0/wmo/24/codetables/2145.table\
-	bufr/tables/0/wmo/24/codetables/2146.table\
-	bufr/tables/0/wmo/24/codetables/2147.table\
-	bufr/tables/0/wmo/24/codetables/2148.table\
-	bufr/tables/0/wmo/24/codetables/2149.table\
-	bufr/tables/0/wmo/24/codetables/2150.table\
-	bufr/tables/0/wmo/24/codetables/2151.table\
-	bufr/tables/0/wmo/24/codetables/2152.table\
-	bufr/tables/0/wmo/24/codetables/2158.table\
-	bufr/tables/0/wmo/24/codetables/2159.table\
-	bufr/tables/0/wmo/24/codetables/2160.table\
-	bufr/tables/0/wmo/24/codetables/2163.table\
-	bufr/tables/0/wmo/24/codetables/2164.table\
-	bufr/tables/0/wmo/24/codetables/2165.table\
-	bufr/tables/0/wmo/24/codetables/2166.table\
-	bufr/tables/0/wmo/24/codetables/2167.table\
-	bufr/tables/0/wmo/24/codetables/2169.table\
-	bufr/tables/0/wmo/24/codetables/2170.table\
-	bufr/tables/0/wmo/24/codetables/2172.table\
-	bufr/tables/0/wmo/24/codetables/2175.table\
-	bufr/tables/0/wmo/24/codetables/2176.table\
-	bufr/tables/0/wmo/24/codetables/2177.table\
-	bufr/tables/0/wmo/24/codetables/2178.table\
-	bufr/tables/0/wmo/24/codetables/2179.table\
-	bufr/tables/0/wmo/24/codetables/2180.table\
-	bufr/tables/0/wmo/24/codetables/2181.table\
-	bufr/tables/0/wmo/24/codetables/2182.table\
-	bufr/tables/0/wmo/24/codetables/2183.table\
-	bufr/tables/0/wmo/24/codetables/2184.table\
-	bufr/tables/0/wmo/24/codetables/2185.table\
-	bufr/tables/0/wmo/24/codetables/2186.table\
-	bufr/tables/0/wmo/24/codetables/2187.table\
-	bufr/tables/0/wmo/24/codetables/2188.table\
-	bufr/tables/0/wmo/24/codetables/2189.table\
-	bufr/tables/0/wmo/24/codetables/2191.table\
-	bufr/tables/0/wmo/24/codetables/22056.table\
-	bufr/tables/0/wmo/24/codetables/22060.table\
-	bufr/tables/0/wmo/24/codetables/22061.table\
-	bufr/tables/0/wmo/24/codetables/22067.table\
-	bufr/tables/0/wmo/24/codetables/22068.table\
-	bufr/tables/0/wmo/24/codetables/22120.table\
-	bufr/tables/0/wmo/24/codetables/22121.table\
-	bufr/tables/0/wmo/24/codetables/22122.table\
-	bufr/tables/0/wmo/24/codetables/22123.table\
-	bufr/tables/0/wmo/24/codetables/22178.table\
-	bufr/tables/0/wmo/24/codetables/23001.table\
-	bufr/tables/0/wmo/24/codetables/23002.table\
-	bufr/tables/0/wmo/24/codetables/23003.table\
-	bufr/tables/0/wmo/24/codetables/23004.table\
-	bufr/tables/0/wmo/24/codetables/23005.table\
-	bufr/tables/0/wmo/24/codetables/23006.table\
-	bufr/tables/0/wmo/24/codetables/23007.table\
-	bufr/tables/0/wmo/24/codetables/23008.table\
-	bufr/tables/0/wmo/24/codetables/23009.table\
-	bufr/tables/0/wmo/24/codetables/23016.table\
-	bufr/tables/0/wmo/24/codetables/23018.table\
-	bufr/tables/0/wmo/24/codetables/23031.table\
-	bufr/tables/0/wmo/24/codetables/23032.table\
-	bufr/tables/0/wmo/24/codetables/24003.table\
-	bufr/tables/0/wmo/24/codetables/25004.table\
-	bufr/tables/0/wmo/24/codetables/25005.table\
-	bufr/tables/0/wmo/24/codetables/25006.table\
-	bufr/tables/0/wmo/24/codetables/25009.table\
-	bufr/tables/0/wmo/24/codetables/25010.table\
-	bufr/tables/0/wmo/24/codetables/25011.table\
-	bufr/tables/0/wmo/24/codetables/25012.table\
-	bufr/tables/0/wmo/24/codetables/25013.table\
-	bufr/tables/0/wmo/24/codetables/25015.table\
-	bufr/tables/0/wmo/24/codetables/25017.table\
-	bufr/tables/0/wmo/24/codetables/25020.table\
-	bufr/tables/0/wmo/24/codetables/25021.table\
-	bufr/tables/0/wmo/24/codetables/25022.table\
-	bufr/tables/0/wmo/24/codetables/25023.table\
-	bufr/tables/0/wmo/24/codetables/25024.table\
-	bufr/tables/0/wmo/24/codetables/25029.table\
-	bufr/tables/0/wmo/24/codetables/25030.table\
-	bufr/tables/0/wmo/24/codetables/25031.table\
-	bufr/tables/0/wmo/24/codetables/25032.table\
-	bufr/tables/0/wmo/24/codetables/25033.table\
-	bufr/tables/0/wmo/24/codetables/25034.table\
-	bufr/tables/0/wmo/24/codetables/25035.table\
-	bufr/tables/0/wmo/24/codetables/25036.table\
-	bufr/tables/0/wmo/24/codetables/25040.table\
-	bufr/tables/0/wmo/24/codetables/25041.table\
-	bufr/tables/0/wmo/24/codetables/25042.table\
-	bufr/tables/0/wmo/24/codetables/25053.table\
-	bufr/tables/0/wmo/24/codetables/25063.table\
-	bufr/tables/0/wmo/24/codetables/25069.table\
-	bufr/tables/0/wmo/24/codetables/25086.table\
-	bufr/tables/0/wmo/24/codetables/25090.table\
-	bufr/tables/0/wmo/24/codetables/25093.table\
-	bufr/tables/0/wmo/24/codetables/25095.table\
-	bufr/tables/0/wmo/24/codetables/25096.table\
-	bufr/tables/0/wmo/24/codetables/25097.table\
-	bufr/tables/0/wmo/24/codetables/25098.table\
-	bufr/tables/0/wmo/24/codetables/25099.table\
-	bufr/tables/0/wmo/24/codetables/25110.table\
-	bufr/tables/0/wmo/24/codetables/25112.table\
-	bufr/tables/0/wmo/24/codetables/25113.table\
-	bufr/tables/0/wmo/24/codetables/25120.table\
-	bufr/tables/0/wmo/24/codetables/25122.table\
-	bufr/tables/0/wmo/24/codetables/25123.table\
-	bufr/tables/0/wmo/24/codetables/25124.table\
-	bufr/tables/0/wmo/24/codetables/25150.table\
-	bufr/tables/0/wmo/24/codetables/25174.table\
-	bufr/tables/0/wmo/24/codetables/25181.table\
-	bufr/tables/0/wmo/24/codetables/25182.table\
-	bufr/tables/0/wmo/24/codetables/25184.table\
-	bufr/tables/0/wmo/24/codetables/26010.table\
-	bufr/tables/0/wmo/24/codetables/29001.table\
-	bufr/tables/0/wmo/24/codetables/29002.table\
-	bufr/tables/0/wmo/24/codetables/30031.table\
-	bufr/tables/0/wmo/24/codetables/30032.table\
-	bufr/tables/0/wmo/24/codetables/3010.table\
-	bufr/tables/0/wmo/24/codetables/3011.table\
-	bufr/tables/0/wmo/24/codetables/3012.table\
-	bufr/tables/0/wmo/24/codetables/31021.table\
-	bufr/tables/0/wmo/24/codetables/31031.table\
-	bufr/tables/0/wmo/24/codetables/33002.table\
-	bufr/tables/0/wmo/24/codetables/33003.table\
-	bufr/tables/0/wmo/24/codetables/33005.table\
-	bufr/tables/0/wmo/24/codetables/33006.table\
-	bufr/tables/0/wmo/24/codetables/33015.table\
-	bufr/tables/0/wmo/24/codetables/33020.table\
-	bufr/tables/0/wmo/24/codetables/33021.table\
-	bufr/tables/0/wmo/24/codetables/33022.table\
-	bufr/tables/0/wmo/24/codetables/33023.table\
-	bufr/tables/0/wmo/24/codetables/33024.table\
-	bufr/tables/0/wmo/24/codetables/33025.table\
-	bufr/tables/0/wmo/24/codetables/33026.table\
-	bufr/tables/0/wmo/24/codetables/33027.table\
-	bufr/tables/0/wmo/24/codetables/33028.table\
-	bufr/tables/0/wmo/24/codetables/33030.table\
-	bufr/tables/0/wmo/24/codetables/33031.table\
-	bufr/tables/0/wmo/24/codetables/33032.table\
-	bufr/tables/0/wmo/24/codetables/33033.table\
-	bufr/tables/0/wmo/24/codetables/33035.table\
-	bufr/tables/0/wmo/24/codetables/33037.table\
-	bufr/tables/0/wmo/24/codetables/33038.table\
-	bufr/tables/0/wmo/24/codetables/33039.table\
-	bufr/tables/0/wmo/24/codetables/33041.table\
-	bufr/tables/0/wmo/24/codetables/33042.table\
-	bufr/tables/0/wmo/24/codetables/33043.table\
-	bufr/tables/0/wmo/24/codetables/33044.table\
-	bufr/tables/0/wmo/24/codetables/33047.table\
-	bufr/tables/0/wmo/24/codetables/33048.table\
-	bufr/tables/0/wmo/24/codetables/33049.table\
-	bufr/tables/0/wmo/24/codetables/33050.table\
-	bufr/tables/0/wmo/24/codetables/33060.table\
-	bufr/tables/0/wmo/24/codetables/33070.table\
-	bufr/tables/0/wmo/24/codetables/33071.table\
-	bufr/tables/0/wmo/24/codetables/33072.table\
-	bufr/tables/0/wmo/24/codetables/33075.table\
-	bufr/tables/0/wmo/24/codetables/33076.table\
-	bufr/tables/0/wmo/24/codetables/33077.table\
-	bufr/tables/0/wmo/24/codetables/33078.table\
-	bufr/tables/0/wmo/24/codetables/33079.table\
-	bufr/tables/0/wmo/24/codetables/33080.table\
-	bufr/tables/0/wmo/24/codetables/33081.table\
-	bufr/tables/0/wmo/24/codetables/33082.table\
-	bufr/tables/0/wmo/24/codetables/33083.table\
-	bufr/tables/0/wmo/24/codetables/33084.table\
-	bufr/tables/0/wmo/24/codetables/33085.table\
-	bufr/tables/0/wmo/24/codetables/33086.table\
-	bufr/tables/0/wmo/24/codetables/33087.table\
-	bufr/tables/0/wmo/24/codetables/33088.table\
-	bufr/tables/0/wmo/24/codetables/35000.table\
-	bufr/tables/0/wmo/24/codetables/35001.table\
-	bufr/tables/0/wmo/24/codetables/35030.table\
-	bufr/tables/0/wmo/24/codetables/35031.table\
-	bufr/tables/0/wmo/24/codetables/35032.table\
-	bufr/tables/0/wmo/24/codetables/35033.table\
-	bufr/tables/0/wmo/24/codetables/35034.table\
-	bufr/tables/0/wmo/24/codetables/35035.table\
-	bufr/tables/0/wmo/24/codetables/40005.table\
-	bufr/tables/0/wmo/24/codetables/40006.table\
-	bufr/tables/0/wmo/24/codetables/40011.table\
-	bufr/tables/0/wmo/24/codetables/40012.table\
-	bufr/tables/0/wmo/24/codetables/40013.table\
-	bufr/tables/0/wmo/24/codetables/40020.table\
-	bufr/tables/0/wmo/24/codetables/40023.table\
-	bufr/tables/0/wmo/24/codetables/40024.table\
-	bufr/tables/0/wmo/24/codetables/40025.table\
-	bufr/tables/0/wmo/24/codetables/4059.table\
-	bufr/tables/0/wmo/24/codetables/4080.table\
-	bufr/tables/0/wmo/24/codetables/8001.table\
-	bufr/tables/0/wmo/24/codetables/8002.table\
-	bufr/tables/0/wmo/24/codetables/8003.table\
-	bufr/tables/0/wmo/24/codetables/8004.table\
-	bufr/tables/0/wmo/24/codetables/8005.table\
-	bufr/tables/0/wmo/24/codetables/8006.table\
-	bufr/tables/0/wmo/24/codetables/8007.table\
-	bufr/tables/0/wmo/24/codetables/8008.table\
-	bufr/tables/0/wmo/24/codetables/8009.table\
-	bufr/tables/0/wmo/24/codetables/8010.table\
-	bufr/tables/0/wmo/24/codetables/8011.table\
-	bufr/tables/0/wmo/24/codetables/8012.table\
-	bufr/tables/0/wmo/24/codetables/8013.table\
-	bufr/tables/0/wmo/24/codetables/8014.table\
-	bufr/tables/0/wmo/24/codetables/8015.table\
-	bufr/tables/0/wmo/24/codetables/8016.table\
-	bufr/tables/0/wmo/24/codetables/8017.table\
-	bufr/tables/0/wmo/24/codetables/8018.table\
-	bufr/tables/0/wmo/24/codetables/8019.table\
-	bufr/tables/0/wmo/24/codetables/8021.table\
-	bufr/tables/0/wmo/24/codetables/8023.table\
-	bufr/tables/0/wmo/24/codetables/8024.table\
-	bufr/tables/0/wmo/24/codetables/8025.table\
-	bufr/tables/0/wmo/24/codetables/8026.table\
-	bufr/tables/0/wmo/24/codetables/8029.table\
-	bufr/tables/0/wmo/24/codetables/8032.table\
-	bufr/tables/0/wmo/24/codetables/8033.table\
-	bufr/tables/0/wmo/24/codetables/8035.table\
-	bufr/tables/0/wmo/24/codetables/8036.table\
-	bufr/tables/0/wmo/24/codetables/8039.table\
-	bufr/tables/0/wmo/24/codetables/8040.table\
-	bufr/tables/0/wmo/24/codetables/8041.table\
-	bufr/tables/0/wmo/24/codetables/8042.table\
-	bufr/tables/0/wmo/24/codetables/8043.table\
-	bufr/tables/0/wmo/24/codetables/8050.table\
-	bufr/tables/0/wmo/24/codetables/8051.table\
-	bufr/tables/0/wmo/24/codetables/8052.table\
-	bufr/tables/0/wmo/24/codetables/8053.table\
-	bufr/tables/0/wmo/24/codetables/8054.table\
-	bufr/tables/0/wmo/24/codetables/8060.table\
-	bufr/tables/0/wmo/24/codetables/8065.table\
-	bufr/tables/0/wmo/24/codetables/8066.table\
-	bufr/tables/0/wmo/24/codetables/8070.table\
-	bufr/tables/0/wmo/24/codetables/8072.table\
-	bufr/tables/0/wmo/24/codetables/8074.table\
-	bufr/tables/0/wmo/24/codetables/8075.table\
-	bufr/tables/0/wmo/24/codetables/8076.table\
-	bufr/tables/0/wmo/24/codetables/8077.table\
-	bufr/tables/0/wmo/24/codetables/8079.table\
-	bufr/tables/0/wmo/24/codetables/8080.table\
-	bufr/tables/0/wmo/24/codetables/8081.table\
-	bufr/tables/0/wmo/24/codetables/8082.table\
-	bufr/tables/0/wmo/24/codetables/8083.table\
-	bufr/tables/0/wmo/24/codetables/8085.table\
-	bufr/tables/0/wmo/24/codetables/8086.table\
-	bufr/tables/0/wmo/24/codetables/8087.table
-
-definitionsbufr_tables_0_wmo_25dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/25
-dist_definitionsbufr_tables_0_wmo_25_DATA = \
-	bufr/tables/0/wmo/25/element.table\
-	bufr/tables/0/wmo/25/sequence.def
-
-definitionsbufr_tables_0_wmo_25_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/25/codetables
-dist_definitionsbufr_tables_0_wmo_25_codetables_DATA = \
-	bufr/tables/0/wmo/25/codetables/1003.table\
-	bufr/tables/0/wmo/25/codetables/10063.table\
-	bufr/tables/0/wmo/25/codetables/10064.table\
-	bufr/tables/0/wmo/25/codetables/1007.table\
-	bufr/tables/0/wmo/25/codetables/1024.table\
-	bufr/tables/0/wmo/25/codetables/1028.table\
-	bufr/tables/0/wmo/25/codetables/1029.table\
-	bufr/tables/0/wmo/25/codetables/1033.table\
-	bufr/tables/0/wmo/25/codetables/1034.table\
-	bufr/tables/0/wmo/25/codetables/1036.table\
-	bufr/tables/0/wmo/25/codetables/1038.table\
-	bufr/tables/0/wmo/25/codetables/1052.table\
-	bufr/tables/0/wmo/25/codetables/1090.table\
-	bufr/tables/0/wmo/25/codetables/1092.table\
-	bufr/tables/0/wmo/25/codetables/1101.table\
-	bufr/tables/0/wmo/25/codetables/11030.table\
-	bufr/tables/0/wmo/25/codetables/11031.table\
-	bufr/tables/0/wmo/25/codetables/11037.table\
-	bufr/tables/0/wmo/25/codetables/11038.table\
-	bufr/tables/0/wmo/25/codetables/11039.table\
-	bufr/tables/0/wmo/25/codetables/13038.table\
-	bufr/tables/0/wmo/25/codetables/13039.table\
-	bufr/tables/0/wmo/25/codetables/13040.table\
-	bufr/tables/0/wmo/25/codetables/13041.table\
-	bufr/tables/0/wmo/25/codetables/13051.table\
-	bufr/tables/0/wmo/25/codetables/13056.table\
-	bufr/tables/0/wmo/25/codetables/13057.table\
-	bufr/tables/0/wmo/25/codetables/15025.table\
-	bufr/tables/0/wmo/25/codetables/19001.table\
-	bufr/tables/0/wmo/25/codetables/19008.table\
-	bufr/tables/0/wmo/25/codetables/19010.table\
-	bufr/tables/0/wmo/25/codetables/19100.table\
-	bufr/tables/0/wmo/25/codetables/19101.table\
-	bufr/tables/0/wmo/25/codetables/19102.table\
-	bufr/tables/0/wmo/25/codetables/19103.table\
-	bufr/tables/0/wmo/25/codetables/19104.table\
-	bufr/tables/0/wmo/25/codetables/19105.table\
-	bufr/tables/0/wmo/25/codetables/19107.table\
-	bufr/tables/0/wmo/25/codetables/19108.table\
-	bufr/tables/0/wmo/25/codetables/19109.table\
-	bufr/tables/0/wmo/25/codetables/19110.table\
-	bufr/tables/0/wmo/25/codetables/19113.table\
-	bufr/tables/0/wmo/25/codetables/19117.table\
-	bufr/tables/0/wmo/25/codetables/19119.table\
-	bufr/tables/0/wmo/25/codetables/20003.table\
-	bufr/tables/0/wmo/25/codetables/20004.table\
-	bufr/tables/0/wmo/25/codetables/20005.table\
-	bufr/tables/0/wmo/25/codetables/20006.table\
-	bufr/tables/0/wmo/25/codetables/20008.table\
-	bufr/tables/0/wmo/25/codetables/20009.table\
-	bufr/tables/0/wmo/25/codetables/2001.table\
-	bufr/tables/0/wmo/25/codetables/20011.table\
-	bufr/tables/0/wmo/25/codetables/20012.table\
-	bufr/tables/0/wmo/25/codetables/20017.table\
-	bufr/tables/0/wmo/25/codetables/20018.table\
-	bufr/tables/0/wmo/25/codetables/2002.table\
-	bufr/tables/0/wmo/25/codetables/20021.table\
-	bufr/tables/0/wmo/25/codetables/20022.table\
-	bufr/tables/0/wmo/25/codetables/20023.table\
-	bufr/tables/0/wmo/25/codetables/20024.table\
-	bufr/tables/0/wmo/25/codetables/20025.table\
-	bufr/tables/0/wmo/25/codetables/20026.table\
-	bufr/tables/0/wmo/25/codetables/20027.table\
-	bufr/tables/0/wmo/25/codetables/20028.table\
-	bufr/tables/0/wmo/25/codetables/20029.table\
-	bufr/tables/0/wmo/25/codetables/2003.table\
-	bufr/tables/0/wmo/25/codetables/20032.table\
-	bufr/tables/0/wmo/25/codetables/20033.table\
-	bufr/tables/0/wmo/25/codetables/20034.table\
-	bufr/tables/0/wmo/25/codetables/20035.table\
-	bufr/tables/0/wmo/25/codetables/20036.table\
-	bufr/tables/0/wmo/25/codetables/20037.table\
-	bufr/tables/0/wmo/25/codetables/2004.table\
-	bufr/tables/0/wmo/25/codetables/20040.table\
-	bufr/tables/0/wmo/25/codetables/20041.table\
-	bufr/tables/0/wmo/25/codetables/20042.table\
-	bufr/tables/0/wmo/25/codetables/20045.table\
-	bufr/tables/0/wmo/25/codetables/20048.table\
-	bufr/tables/0/wmo/25/codetables/20050.table\
-	bufr/tables/0/wmo/25/codetables/20055.table\
-	bufr/tables/0/wmo/25/codetables/20056.table\
-	bufr/tables/0/wmo/25/codetables/20062.table\
-	bufr/tables/0/wmo/25/codetables/20063.table\
-	bufr/tables/0/wmo/25/codetables/2007.table\
-	bufr/tables/0/wmo/25/codetables/20071.table\
-	bufr/tables/0/wmo/25/codetables/20085.table\
-	bufr/tables/0/wmo/25/codetables/20086.table\
-	bufr/tables/0/wmo/25/codetables/20087.table\
-	bufr/tables/0/wmo/25/codetables/20089.table\
-	bufr/tables/0/wmo/25/codetables/20090.table\
-	bufr/tables/0/wmo/25/codetables/20101.table\
-	bufr/tables/0/wmo/25/codetables/20102.table\
-	bufr/tables/0/wmo/25/codetables/20103.table\
-	bufr/tables/0/wmo/25/codetables/20104.table\
-	bufr/tables/0/wmo/25/codetables/20105.table\
-	bufr/tables/0/wmo/25/codetables/20106.table\
-	bufr/tables/0/wmo/25/codetables/20107.table\
-	bufr/tables/0/wmo/25/codetables/20108.table\
-	bufr/tables/0/wmo/25/codetables/2011.table\
-	bufr/tables/0/wmo/25/codetables/20119.table\
-	bufr/tables/0/wmo/25/codetables/20124.table\
-	bufr/tables/0/wmo/25/codetables/2013.table\
-	bufr/tables/0/wmo/25/codetables/20136.table\
-	bufr/tables/0/wmo/25/codetables/20137.table\
-	bufr/tables/0/wmo/25/codetables/2014.table\
-	bufr/tables/0/wmo/25/codetables/2015.table\
-	bufr/tables/0/wmo/25/codetables/2016.table\
-	bufr/tables/0/wmo/25/codetables/2017.table\
-	bufr/tables/0/wmo/25/codetables/2019.table\
-	bufr/tables/0/wmo/25/codetables/2020.table\
-	bufr/tables/0/wmo/25/codetables/2021.table\
-	bufr/tables/0/wmo/25/codetables/2022.table\
-	bufr/tables/0/wmo/25/codetables/2023.table\
-	bufr/tables/0/wmo/25/codetables/2024.table\
-	bufr/tables/0/wmo/25/codetables/2025.table\
-	bufr/tables/0/wmo/25/codetables/2030.table\
-	bufr/tables/0/wmo/25/codetables/2031.table\
-	bufr/tables/0/wmo/25/codetables/2032.table\
-	bufr/tables/0/wmo/25/codetables/2033.table\
-	bufr/tables/0/wmo/25/codetables/2034.table\
-	bufr/tables/0/wmo/25/codetables/2036.table\
-	bufr/tables/0/wmo/25/codetables/2037.table\
-	bufr/tables/0/wmo/25/codetables/2038.table\
-	bufr/tables/0/wmo/25/codetables/2039.table\
-	bufr/tables/0/wmo/25/codetables/2040.table\
-	bufr/tables/0/wmo/25/codetables/2041.table\
-	bufr/tables/0/wmo/25/codetables/2042.table\
-	bufr/tables/0/wmo/25/codetables/2044.table\
-	bufr/tables/0/wmo/25/codetables/2045.table\
-	bufr/tables/0/wmo/25/codetables/2046.table\
-	bufr/tables/0/wmo/25/codetables/2047.table\
-	bufr/tables/0/wmo/25/codetables/2048.table\
-	bufr/tables/0/wmo/25/codetables/2049.table\
-	bufr/tables/0/wmo/25/codetables/2050.table\
-	bufr/tables/0/wmo/25/codetables/2051.table\
-	bufr/tables/0/wmo/25/codetables/2052.table\
-	bufr/tables/0/wmo/25/codetables/2053.table\
-	bufr/tables/0/wmo/25/codetables/2054.table\
-	bufr/tables/0/wmo/25/codetables/2055.table\
-	bufr/tables/0/wmo/25/codetables/2056.table\
-	bufr/tables/0/wmo/25/codetables/2057.table\
-	bufr/tables/0/wmo/25/codetables/2058.table\
-	bufr/tables/0/wmo/25/codetables/2059.table\
-	bufr/tables/0/wmo/25/codetables/2060.table\
-	bufr/tables/0/wmo/25/codetables/2061.table\
-	bufr/tables/0/wmo/25/codetables/2062.table\
-	bufr/tables/0/wmo/25/codetables/2064.table\
-	bufr/tables/0/wmo/25/codetables/2066.table\
-	bufr/tables/0/wmo/25/codetables/2070.table\
-	bufr/tables/0/wmo/25/codetables/2080.table\
-	bufr/tables/0/wmo/25/codetables/2081.table\
-	bufr/tables/0/wmo/25/codetables/2083.table\
-	bufr/tables/0/wmo/25/codetables/2084.table\
-	bufr/tables/0/wmo/25/codetables/2095.table\
-	bufr/tables/0/wmo/25/codetables/2096.table\
-	bufr/tables/0/wmo/25/codetables/2097.table\
-	bufr/tables/0/wmo/25/codetables/2099.table\
-	bufr/tables/0/wmo/25/codetables/2101.table\
-	bufr/tables/0/wmo/25/codetables/2103.table\
-	bufr/tables/0/wmo/25/codetables/2104.table\
-	bufr/tables/0/wmo/25/codetables/21066.table\
-	bufr/tables/0/wmo/25/codetables/21067.table\
-	bufr/tables/0/wmo/25/codetables/21068.table\
-	bufr/tables/0/wmo/25/codetables/21069.table\
-	bufr/tables/0/wmo/25/codetables/21070.table\
-	bufr/tables/0/wmo/25/codetables/21072.table\
-	bufr/tables/0/wmo/25/codetables/21073.table\
-	bufr/tables/0/wmo/25/codetables/21076.table\
-	bufr/tables/0/wmo/25/codetables/21109.table\
-	bufr/tables/0/wmo/25/codetables/21115.table\
-	bufr/tables/0/wmo/25/codetables/21116.table\
-	bufr/tables/0/wmo/25/codetables/21119.table\
-	bufr/tables/0/wmo/25/codetables/21144.table\
-	bufr/tables/0/wmo/25/codetables/21148.table\
-	bufr/tables/0/wmo/25/codetables/2115.table\
-	bufr/tables/0/wmo/25/codetables/21150.table\
-	bufr/tables/0/wmo/25/codetables/21155.table\
-	bufr/tables/0/wmo/25/codetables/21158.table\
-	bufr/tables/0/wmo/25/codetables/21159.table\
-	bufr/tables/0/wmo/25/codetables/21169.table\
-	bufr/tables/0/wmo/25/codetables/2119.table\
-	bufr/tables/0/wmo/25/codetables/2131.table\
-	bufr/tables/0/wmo/25/codetables/2137.table\
-	bufr/tables/0/wmo/25/codetables/2138.table\
-	bufr/tables/0/wmo/25/codetables/2139.table\
-	bufr/tables/0/wmo/25/codetables/2143.table\
-	bufr/tables/0/wmo/25/codetables/2144.table\
-	bufr/tables/0/wmo/25/codetables/2145.table\
-	bufr/tables/0/wmo/25/codetables/2146.table\
-	bufr/tables/0/wmo/25/codetables/2147.table\
-	bufr/tables/0/wmo/25/codetables/2148.table\
-	bufr/tables/0/wmo/25/codetables/2149.table\
-	bufr/tables/0/wmo/25/codetables/2150.table\
-	bufr/tables/0/wmo/25/codetables/2151.table\
-	bufr/tables/0/wmo/25/codetables/2152.table\
-	bufr/tables/0/wmo/25/codetables/2158.table\
-	bufr/tables/0/wmo/25/codetables/2159.table\
-	bufr/tables/0/wmo/25/codetables/2160.table\
-	bufr/tables/0/wmo/25/codetables/2163.table\
-	bufr/tables/0/wmo/25/codetables/2164.table\
-	bufr/tables/0/wmo/25/codetables/2165.table\
-	bufr/tables/0/wmo/25/codetables/2166.table\
-	bufr/tables/0/wmo/25/codetables/2167.table\
-	bufr/tables/0/wmo/25/codetables/2169.table\
-	bufr/tables/0/wmo/25/codetables/2170.table\
-	bufr/tables/0/wmo/25/codetables/2172.table\
-	bufr/tables/0/wmo/25/codetables/2175.table\
-	bufr/tables/0/wmo/25/codetables/2176.table\
-	bufr/tables/0/wmo/25/codetables/2177.table\
-	bufr/tables/0/wmo/25/codetables/2178.table\
-	bufr/tables/0/wmo/25/codetables/2179.table\
-	bufr/tables/0/wmo/25/codetables/2180.table\
-	bufr/tables/0/wmo/25/codetables/2181.table\
-	bufr/tables/0/wmo/25/codetables/2182.table\
-	bufr/tables/0/wmo/25/codetables/2183.table\
-	bufr/tables/0/wmo/25/codetables/2184.table\
-	bufr/tables/0/wmo/25/codetables/2185.table\
-	bufr/tables/0/wmo/25/codetables/2186.table\
-	bufr/tables/0/wmo/25/codetables/2187.table\
-	bufr/tables/0/wmo/25/codetables/2188.table\
-	bufr/tables/0/wmo/25/codetables/2189.table\
-	bufr/tables/0/wmo/25/codetables/2191.table\
-	bufr/tables/0/wmo/25/codetables/22056.table\
-	bufr/tables/0/wmo/25/codetables/22060.table\
-	bufr/tables/0/wmo/25/codetables/22061.table\
-	bufr/tables/0/wmo/25/codetables/22067.table\
-	bufr/tables/0/wmo/25/codetables/22068.table\
-	bufr/tables/0/wmo/25/codetables/22120.table\
-	bufr/tables/0/wmo/25/codetables/22121.table\
-	bufr/tables/0/wmo/25/codetables/22122.table\
-	bufr/tables/0/wmo/25/codetables/22123.table\
-	bufr/tables/0/wmo/25/codetables/22178.table\
-	bufr/tables/0/wmo/25/codetables/23001.table\
-	bufr/tables/0/wmo/25/codetables/23002.table\
-	bufr/tables/0/wmo/25/codetables/23003.table\
-	bufr/tables/0/wmo/25/codetables/23004.table\
-	bufr/tables/0/wmo/25/codetables/23005.table\
-	bufr/tables/0/wmo/25/codetables/23006.table\
-	bufr/tables/0/wmo/25/codetables/23007.table\
-	bufr/tables/0/wmo/25/codetables/23008.table\
-	bufr/tables/0/wmo/25/codetables/23009.table\
-	bufr/tables/0/wmo/25/codetables/23016.table\
-	bufr/tables/0/wmo/25/codetables/23018.table\
-	bufr/tables/0/wmo/25/codetables/23031.table\
-	bufr/tables/0/wmo/25/codetables/23032.table\
-	bufr/tables/0/wmo/25/codetables/24003.table\
-	bufr/tables/0/wmo/25/codetables/25004.table\
-	bufr/tables/0/wmo/25/codetables/25005.table\
-	bufr/tables/0/wmo/25/codetables/25006.table\
-	bufr/tables/0/wmo/25/codetables/25009.table\
-	bufr/tables/0/wmo/25/codetables/25010.table\
-	bufr/tables/0/wmo/25/codetables/25011.table\
-	bufr/tables/0/wmo/25/codetables/25012.table\
-	bufr/tables/0/wmo/25/codetables/25013.table\
-	bufr/tables/0/wmo/25/codetables/25015.table\
-	bufr/tables/0/wmo/25/codetables/25017.table\
-	bufr/tables/0/wmo/25/codetables/25020.table\
-	bufr/tables/0/wmo/25/codetables/25021.table\
-	bufr/tables/0/wmo/25/codetables/25022.table\
-	bufr/tables/0/wmo/25/codetables/25023.table\
-	bufr/tables/0/wmo/25/codetables/25024.table\
-	bufr/tables/0/wmo/25/codetables/25029.table\
-	bufr/tables/0/wmo/25/codetables/25030.table\
-	bufr/tables/0/wmo/25/codetables/25031.table\
-	bufr/tables/0/wmo/25/codetables/25032.table\
-	bufr/tables/0/wmo/25/codetables/25033.table\
-	bufr/tables/0/wmo/25/codetables/25034.table\
-	bufr/tables/0/wmo/25/codetables/25035.table\
-	bufr/tables/0/wmo/25/codetables/25036.table\
-	bufr/tables/0/wmo/25/codetables/25040.table\
-	bufr/tables/0/wmo/25/codetables/25041.table\
-	bufr/tables/0/wmo/25/codetables/25042.table\
-	bufr/tables/0/wmo/25/codetables/25053.table\
-	bufr/tables/0/wmo/25/codetables/25063.table\
-	bufr/tables/0/wmo/25/codetables/25069.table\
-	bufr/tables/0/wmo/25/codetables/25086.table\
-	bufr/tables/0/wmo/25/codetables/25090.table\
-	bufr/tables/0/wmo/25/codetables/25093.table\
-	bufr/tables/0/wmo/25/codetables/25095.table\
-	bufr/tables/0/wmo/25/codetables/25096.table\
-	bufr/tables/0/wmo/25/codetables/25097.table\
-	bufr/tables/0/wmo/25/codetables/25098.table\
-	bufr/tables/0/wmo/25/codetables/25099.table\
-	bufr/tables/0/wmo/25/codetables/25110.table\
-	bufr/tables/0/wmo/25/codetables/25112.table\
-	bufr/tables/0/wmo/25/codetables/25113.table\
-	bufr/tables/0/wmo/25/codetables/25120.table\
-	bufr/tables/0/wmo/25/codetables/25122.table\
-	bufr/tables/0/wmo/25/codetables/25123.table\
-	bufr/tables/0/wmo/25/codetables/25124.table\
-	bufr/tables/0/wmo/25/codetables/25150.table\
-	bufr/tables/0/wmo/25/codetables/25174.table\
-	bufr/tables/0/wmo/25/codetables/25181.table\
-	bufr/tables/0/wmo/25/codetables/25182.table\
-	bufr/tables/0/wmo/25/codetables/25184.table\
-	bufr/tables/0/wmo/25/codetables/26010.table\
-	bufr/tables/0/wmo/25/codetables/29001.table\
-	bufr/tables/0/wmo/25/codetables/29002.table\
-	bufr/tables/0/wmo/25/codetables/30031.table\
-	bufr/tables/0/wmo/25/codetables/30032.table\
-	bufr/tables/0/wmo/25/codetables/3010.table\
-	bufr/tables/0/wmo/25/codetables/3011.table\
-	bufr/tables/0/wmo/25/codetables/3012.table\
-	bufr/tables/0/wmo/25/codetables/31021.table\
-	bufr/tables/0/wmo/25/codetables/31031.table\
-	bufr/tables/0/wmo/25/codetables/33002.table\
-	bufr/tables/0/wmo/25/codetables/33003.table\
-	bufr/tables/0/wmo/25/codetables/33005.table\
-	bufr/tables/0/wmo/25/codetables/33006.table\
-	bufr/tables/0/wmo/25/codetables/33015.table\
-	bufr/tables/0/wmo/25/codetables/33020.table\
-	bufr/tables/0/wmo/25/codetables/33021.table\
-	bufr/tables/0/wmo/25/codetables/33022.table\
-	bufr/tables/0/wmo/25/codetables/33023.table\
-	bufr/tables/0/wmo/25/codetables/33024.table\
-	bufr/tables/0/wmo/25/codetables/33025.table\
-	bufr/tables/0/wmo/25/codetables/33026.table\
-	bufr/tables/0/wmo/25/codetables/33027.table\
-	bufr/tables/0/wmo/25/codetables/33028.table\
-	bufr/tables/0/wmo/25/codetables/33030.table\
-	bufr/tables/0/wmo/25/codetables/33031.table\
-	bufr/tables/0/wmo/25/codetables/33032.table\
-	bufr/tables/0/wmo/25/codetables/33033.table\
-	bufr/tables/0/wmo/25/codetables/33035.table\
-	bufr/tables/0/wmo/25/codetables/33037.table\
-	bufr/tables/0/wmo/25/codetables/33038.table\
-	bufr/tables/0/wmo/25/codetables/33039.table\
-	bufr/tables/0/wmo/25/codetables/33041.table\
-	bufr/tables/0/wmo/25/codetables/33042.table\
-	bufr/tables/0/wmo/25/codetables/33043.table\
-	bufr/tables/0/wmo/25/codetables/33044.table\
-	bufr/tables/0/wmo/25/codetables/33047.table\
-	bufr/tables/0/wmo/25/codetables/33048.table\
-	bufr/tables/0/wmo/25/codetables/33049.table\
-	bufr/tables/0/wmo/25/codetables/33050.table\
-	bufr/tables/0/wmo/25/codetables/33060.table\
-	bufr/tables/0/wmo/25/codetables/33070.table\
-	bufr/tables/0/wmo/25/codetables/33071.table\
-	bufr/tables/0/wmo/25/codetables/33072.table\
-	bufr/tables/0/wmo/25/codetables/33075.table\
-	bufr/tables/0/wmo/25/codetables/33076.table\
-	bufr/tables/0/wmo/25/codetables/33077.table\
-	bufr/tables/0/wmo/25/codetables/33078.table\
-	bufr/tables/0/wmo/25/codetables/33079.table\
-	bufr/tables/0/wmo/25/codetables/33080.table\
-	bufr/tables/0/wmo/25/codetables/33081.table\
-	bufr/tables/0/wmo/25/codetables/33082.table\
-	bufr/tables/0/wmo/25/codetables/33083.table\
-	bufr/tables/0/wmo/25/codetables/33084.table\
-	bufr/tables/0/wmo/25/codetables/33085.table\
-	bufr/tables/0/wmo/25/codetables/33086.table\
-	bufr/tables/0/wmo/25/codetables/33087.table\
-	bufr/tables/0/wmo/25/codetables/33088.table\
-	bufr/tables/0/wmo/25/codetables/35000.table\
-	bufr/tables/0/wmo/25/codetables/35001.table\
-	bufr/tables/0/wmo/25/codetables/35030.table\
-	bufr/tables/0/wmo/25/codetables/35031.table\
-	bufr/tables/0/wmo/25/codetables/35032.table\
-	bufr/tables/0/wmo/25/codetables/35033.table\
-	bufr/tables/0/wmo/25/codetables/35034.table\
-	bufr/tables/0/wmo/25/codetables/35035.table\
-	bufr/tables/0/wmo/25/codetables/40005.table\
-	bufr/tables/0/wmo/25/codetables/40006.table\
-	bufr/tables/0/wmo/25/codetables/40011.table\
-	bufr/tables/0/wmo/25/codetables/40012.table\
-	bufr/tables/0/wmo/25/codetables/40013.table\
-	bufr/tables/0/wmo/25/codetables/40020.table\
-	bufr/tables/0/wmo/25/codetables/40023.table\
-	bufr/tables/0/wmo/25/codetables/40024.table\
-	bufr/tables/0/wmo/25/codetables/40025.table\
-	bufr/tables/0/wmo/25/codetables/40028.table\
-	bufr/tables/0/wmo/25/codetables/4059.table\
-	bufr/tables/0/wmo/25/codetables/4080.table\
-	bufr/tables/0/wmo/25/codetables/8001.table\
-	bufr/tables/0/wmo/25/codetables/8002.table\
-	bufr/tables/0/wmo/25/codetables/8003.table\
-	bufr/tables/0/wmo/25/codetables/8004.table\
-	bufr/tables/0/wmo/25/codetables/8005.table\
-	bufr/tables/0/wmo/25/codetables/8006.table\
-	bufr/tables/0/wmo/25/codetables/8007.table\
-	bufr/tables/0/wmo/25/codetables/8008.table\
-	bufr/tables/0/wmo/25/codetables/8009.table\
-	bufr/tables/0/wmo/25/codetables/8010.table\
-	bufr/tables/0/wmo/25/codetables/8011.table\
-	bufr/tables/0/wmo/25/codetables/8012.table\
-	bufr/tables/0/wmo/25/codetables/8013.table\
-	bufr/tables/0/wmo/25/codetables/8014.table\
-	bufr/tables/0/wmo/25/codetables/8015.table\
-	bufr/tables/0/wmo/25/codetables/8016.table\
-	bufr/tables/0/wmo/25/codetables/8017.table\
-	bufr/tables/0/wmo/25/codetables/8018.table\
-	bufr/tables/0/wmo/25/codetables/8019.table\
-	bufr/tables/0/wmo/25/codetables/8021.table\
-	bufr/tables/0/wmo/25/codetables/8023.table\
-	bufr/tables/0/wmo/25/codetables/8024.table\
-	bufr/tables/0/wmo/25/codetables/8025.table\
-	bufr/tables/0/wmo/25/codetables/8026.table\
-	bufr/tables/0/wmo/25/codetables/8029.table\
-	bufr/tables/0/wmo/25/codetables/8032.table\
-	bufr/tables/0/wmo/25/codetables/8033.table\
-	bufr/tables/0/wmo/25/codetables/8034.table\
-	bufr/tables/0/wmo/25/codetables/8035.table\
-	bufr/tables/0/wmo/25/codetables/8036.table\
-	bufr/tables/0/wmo/25/codetables/8039.table\
-	bufr/tables/0/wmo/25/codetables/8040.table\
-	bufr/tables/0/wmo/25/codetables/8041.table\
-	bufr/tables/0/wmo/25/codetables/8042.table\
-	bufr/tables/0/wmo/25/codetables/8043.table\
-	bufr/tables/0/wmo/25/codetables/8050.table\
-	bufr/tables/0/wmo/25/codetables/8051.table\
-	bufr/tables/0/wmo/25/codetables/8052.table\
-	bufr/tables/0/wmo/25/codetables/8053.table\
-	bufr/tables/0/wmo/25/codetables/8054.table\
-	bufr/tables/0/wmo/25/codetables/8060.table\
-	bufr/tables/0/wmo/25/codetables/8065.table\
-	bufr/tables/0/wmo/25/codetables/8066.table\
-	bufr/tables/0/wmo/25/codetables/8070.table\
-	bufr/tables/0/wmo/25/codetables/8072.table\
-	bufr/tables/0/wmo/25/codetables/8074.table\
-	bufr/tables/0/wmo/25/codetables/8075.table\
-	bufr/tables/0/wmo/25/codetables/8076.table\
-	bufr/tables/0/wmo/25/codetables/8077.table\
-	bufr/tables/0/wmo/25/codetables/8079.table\
-	bufr/tables/0/wmo/25/codetables/8080.table\
-	bufr/tables/0/wmo/25/codetables/8081.table\
-	bufr/tables/0/wmo/25/codetables/8082.table\
-	bufr/tables/0/wmo/25/codetables/8083.table\
-	bufr/tables/0/wmo/25/codetables/8085.table\
-	bufr/tables/0/wmo/25/codetables/8086.table\
-	bufr/tables/0/wmo/25/codetables/8087.table\
-	bufr/tables/0/wmo/25/codetables/8091.table
-
-definitionsbufr_tables_0_wmo_26dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/26
-dist_definitionsbufr_tables_0_wmo_26_DATA = \
-	bufr/tables/0/wmo/26/element.table\
-	bufr/tables/0/wmo/26/sequence.def
-
-definitionsbufr_tables_0_wmo_26_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/26/codetables
-dist_definitionsbufr_tables_0_wmo_26_codetables_DATA = \
-	bufr/tables/0/wmo/26/codetables/1003.table\
-	bufr/tables/0/wmo/26/codetables/10063.table\
-	bufr/tables/0/wmo/26/codetables/10064.table\
-	bufr/tables/0/wmo/26/codetables/1007.table\
-	bufr/tables/0/wmo/26/codetables/1024.table\
-	bufr/tables/0/wmo/26/codetables/1028.table\
-	bufr/tables/0/wmo/26/codetables/1029.table\
-	bufr/tables/0/wmo/26/codetables/1033.table\
-	bufr/tables/0/wmo/26/codetables/1034.table\
-	bufr/tables/0/wmo/26/codetables/1036.table\
-	bufr/tables/0/wmo/26/codetables/1038.table\
-	bufr/tables/0/wmo/26/codetables/1052.table\
-	bufr/tables/0/wmo/26/codetables/1090.table\
-	bufr/tables/0/wmo/26/codetables/1092.table\
-	bufr/tables/0/wmo/26/codetables/1101.table\
-	bufr/tables/0/wmo/26/codetables/11030.table\
-	bufr/tables/0/wmo/26/codetables/11031.table\
-	bufr/tables/0/wmo/26/codetables/11037.table\
-	bufr/tables/0/wmo/26/codetables/11038.table\
-	bufr/tables/0/wmo/26/codetables/11039.table\
-	bufr/tables/0/wmo/26/codetables/13038.table\
-	bufr/tables/0/wmo/26/codetables/13039.table\
-	bufr/tables/0/wmo/26/codetables/13040.table\
-	bufr/tables/0/wmo/26/codetables/13041.table\
-	bufr/tables/0/wmo/26/codetables/13051.table\
-	bufr/tables/0/wmo/26/codetables/13056.table\
-	bufr/tables/0/wmo/26/codetables/13057.table\
-	bufr/tables/0/wmo/26/codetables/15025.table\
-	bufr/tables/0/wmo/26/codetables/19001.table\
-	bufr/tables/0/wmo/26/codetables/19008.table\
-	bufr/tables/0/wmo/26/codetables/19010.table\
-	bufr/tables/0/wmo/26/codetables/19100.table\
-	bufr/tables/0/wmo/26/codetables/19101.table\
-	bufr/tables/0/wmo/26/codetables/19102.table\
-	bufr/tables/0/wmo/26/codetables/19103.table\
-	bufr/tables/0/wmo/26/codetables/19104.table\
-	bufr/tables/0/wmo/26/codetables/19105.table\
-	bufr/tables/0/wmo/26/codetables/19107.table\
-	bufr/tables/0/wmo/26/codetables/19108.table\
-	bufr/tables/0/wmo/26/codetables/19109.table\
-	bufr/tables/0/wmo/26/codetables/19110.table\
-	bufr/tables/0/wmo/26/codetables/19113.table\
-	bufr/tables/0/wmo/26/codetables/19117.table\
-	bufr/tables/0/wmo/26/codetables/19119.table\
-	bufr/tables/0/wmo/26/codetables/20003.table\
-	bufr/tables/0/wmo/26/codetables/20004.table\
-	bufr/tables/0/wmo/26/codetables/20005.table\
-	bufr/tables/0/wmo/26/codetables/20006.table\
-	bufr/tables/0/wmo/26/codetables/20008.table\
-	bufr/tables/0/wmo/26/codetables/20009.table\
-	bufr/tables/0/wmo/26/codetables/2001.table\
-	bufr/tables/0/wmo/26/codetables/20011.table\
-	bufr/tables/0/wmo/26/codetables/20012.table\
-	bufr/tables/0/wmo/26/codetables/20017.table\
-	bufr/tables/0/wmo/26/codetables/20018.table\
-	bufr/tables/0/wmo/26/codetables/2002.table\
-	bufr/tables/0/wmo/26/codetables/20021.table\
-	bufr/tables/0/wmo/26/codetables/20022.table\
-	bufr/tables/0/wmo/26/codetables/20023.table\
-	bufr/tables/0/wmo/26/codetables/20024.table\
-	bufr/tables/0/wmo/26/codetables/20025.table\
-	bufr/tables/0/wmo/26/codetables/20026.table\
-	bufr/tables/0/wmo/26/codetables/20027.table\
-	bufr/tables/0/wmo/26/codetables/20028.table\
-	bufr/tables/0/wmo/26/codetables/20029.table\
-	bufr/tables/0/wmo/26/codetables/2003.table\
-	bufr/tables/0/wmo/26/codetables/20032.table\
-	bufr/tables/0/wmo/26/codetables/20033.table\
-	bufr/tables/0/wmo/26/codetables/20034.table\
-	bufr/tables/0/wmo/26/codetables/20035.table\
-	bufr/tables/0/wmo/26/codetables/20036.table\
-	bufr/tables/0/wmo/26/codetables/20037.table\
-	bufr/tables/0/wmo/26/codetables/2004.table\
-	bufr/tables/0/wmo/26/codetables/20040.table\
-	bufr/tables/0/wmo/26/codetables/20041.table\
-	bufr/tables/0/wmo/26/codetables/20042.table\
-	bufr/tables/0/wmo/26/codetables/20045.table\
-	bufr/tables/0/wmo/26/codetables/20048.table\
-	bufr/tables/0/wmo/26/codetables/20050.table\
-	bufr/tables/0/wmo/26/codetables/20055.table\
-	bufr/tables/0/wmo/26/codetables/20056.table\
-	bufr/tables/0/wmo/26/codetables/20062.table\
-	bufr/tables/0/wmo/26/codetables/20063.table\
-	bufr/tables/0/wmo/26/codetables/2007.table\
-	bufr/tables/0/wmo/26/codetables/20071.table\
-	bufr/tables/0/wmo/26/codetables/20085.table\
-	bufr/tables/0/wmo/26/codetables/20086.table\
-	bufr/tables/0/wmo/26/codetables/20087.table\
-	bufr/tables/0/wmo/26/codetables/20089.table\
-	bufr/tables/0/wmo/26/codetables/20090.table\
-	bufr/tables/0/wmo/26/codetables/20101.table\
-	bufr/tables/0/wmo/26/codetables/20102.table\
-	bufr/tables/0/wmo/26/codetables/20103.table\
-	bufr/tables/0/wmo/26/codetables/20104.table\
-	bufr/tables/0/wmo/26/codetables/20105.table\
-	bufr/tables/0/wmo/26/codetables/20106.table\
-	bufr/tables/0/wmo/26/codetables/20107.table\
-	bufr/tables/0/wmo/26/codetables/20108.table\
-	bufr/tables/0/wmo/26/codetables/2011.table\
-	bufr/tables/0/wmo/26/codetables/20119.table\
-	bufr/tables/0/wmo/26/codetables/20124.table\
-	bufr/tables/0/wmo/26/codetables/2013.table\
-	bufr/tables/0/wmo/26/codetables/20136.table\
-	bufr/tables/0/wmo/26/codetables/20137.table\
-	bufr/tables/0/wmo/26/codetables/20138.table\
-	bufr/tables/0/wmo/26/codetables/2014.table\
-	bufr/tables/0/wmo/26/codetables/2015.table\
-	bufr/tables/0/wmo/26/codetables/2016.table\
-	bufr/tables/0/wmo/26/codetables/2017.table\
-	bufr/tables/0/wmo/26/codetables/2019.table\
-	bufr/tables/0/wmo/26/codetables/2020.table\
-	bufr/tables/0/wmo/26/codetables/2021.table\
-	bufr/tables/0/wmo/26/codetables/2022.table\
-	bufr/tables/0/wmo/26/codetables/2023.table\
-	bufr/tables/0/wmo/26/codetables/2024.table\
-	bufr/tables/0/wmo/26/codetables/2025.table\
-	bufr/tables/0/wmo/26/codetables/2030.table\
-	bufr/tables/0/wmo/26/codetables/2031.table\
-	bufr/tables/0/wmo/26/codetables/2032.table\
-	bufr/tables/0/wmo/26/codetables/2033.table\
-	bufr/tables/0/wmo/26/codetables/2034.table\
-	bufr/tables/0/wmo/26/codetables/2036.table\
-	bufr/tables/0/wmo/26/codetables/2037.table\
-	bufr/tables/0/wmo/26/codetables/2038.table\
-	bufr/tables/0/wmo/26/codetables/2039.table\
-	bufr/tables/0/wmo/26/codetables/2040.table\
-	bufr/tables/0/wmo/26/codetables/2041.table\
-	bufr/tables/0/wmo/26/codetables/2042.table\
-	bufr/tables/0/wmo/26/codetables/2044.table\
-	bufr/tables/0/wmo/26/codetables/2045.table\
-	bufr/tables/0/wmo/26/codetables/2046.table\
-	bufr/tables/0/wmo/26/codetables/2047.table\
-	bufr/tables/0/wmo/26/codetables/2048.table\
-	bufr/tables/0/wmo/26/codetables/2049.table\
-	bufr/tables/0/wmo/26/codetables/2050.table\
-	bufr/tables/0/wmo/26/codetables/2051.table\
-	bufr/tables/0/wmo/26/codetables/2052.table\
-	bufr/tables/0/wmo/26/codetables/2053.table\
-	bufr/tables/0/wmo/26/codetables/2054.table\
-	bufr/tables/0/wmo/26/codetables/2055.table\
-	bufr/tables/0/wmo/26/codetables/2056.table\
-	bufr/tables/0/wmo/26/codetables/2057.table\
-	bufr/tables/0/wmo/26/codetables/2058.table\
-	bufr/tables/0/wmo/26/codetables/2059.table\
-	bufr/tables/0/wmo/26/codetables/2060.table\
-	bufr/tables/0/wmo/26/codetables/2061.table\
-	bufr/tables/0/wmo/26/codetables/2062.table\
-	bufr/tables/0/wmo/26/codetables/2064.table\
-	bufr/tables/0/wmo/26/codetables/2066.table\
-	bufr/tables/0/wmo/26/codetables/2070.table\
-	bufr/tables/0/wmo/26/codetables/2080.table\
-	bufr/tables/0/wmo/26/codetables/2081.table\
-	bufr/tables/0/wmo/26/codetables/2083.table\
-	bufr/tables/0/wmo/26/codetables/2084.table\
-	bufr/tables/0/wmo/26/codetables/2095.table\
-	bufr/tables/0/wmo/26/codetables/2096.table\
-	bufr/tables/0/wmo/26/codetables/2097.table\
-	bufr/tables/0/wmo/26/codetables/2099.table\
-	bufr/tables/0/wmo/26/codetables/2101.table\
-	bufr/tables/0/wmo/26/codetables/2103.table\
-	bufr/tables/0/wmo/26/codetables/2104.table\
-	bufr/tables/0/wmo/26/codetables/21066.table\
-	bufr/tables/0/wmo/26/codetables/21067.table\
-	bufr/tables/0/wmo/26/codetables/21068.table\
-	bufr/tables/0/wmo/26/codetables/21069.table\
-	bufr/tables/0/wmo/26/codetables/21070.table\
-	bufr/tables/0/wmo/26/codetables/21072.table\
-	bufr/tables/0/wmo/26/codetables/21073.table\
-	bufr/tables/0/wmo/26/codetables/21076.table\
-	bufr/tables/0/wmo/26/codetables/21109.table\
-	bufr/tables/0/wmo/26/codetables/21115.table\
-	bufr/tables/0/wmo/26/codetables/21116.table\
-	bufr/tables/0/wmo/26/codetables/21119.table\
-	bufr/tables/0/wmo/26/codetables/21144.table\
-	bufr/tables/0/wmo/26/codetables/21148.table\
-	bufr/tables/0/wmo/26/codetables/2115.table\
-	bufr/tables/0/wmo/26/codetables/21150.table\
-	bufr/tables/0/wmo/26/codetables/21155.table\
-	bufr/tables/0/wmo/26/codetables/21158.table\
-	bufr/tables/0/wmo/26/codetables/21159.table\
-	bufr/tables/0/wmo/26/codetables/21169.table\
-	bufr/tables/0/wmo/26/codetables/2119.table\
-	bufr/tables/0/wmo/26/codetables/2131.table\
-	bufr/tables/0/wmo/26/codetables/2137.table\
-	bufr/tables/0/wmo/26/codetables/2138.table\
-	bufr/tables/0/wmo/26/codetables/2139.table\
-	bufr/tables/0/wmo/26/codetables/2143.table\
-	bufr/tables/0/wmo/26/codetables/2144.table\
-	bufr/tables/0/wmo/26/codetables/2145.table\
-	bufr/tables/0/wmo/26/codetables/2146.table\
-	bufr/tables/0/wmo/26/codetables/2147.table\
-	bufr/tables/0/wmo/26/codetables/2148.table\
-	bufr/tables/0/wmo/26/codetables/2149.table\
-	bufr/tables/0/wmo/26/codetables/2150.table\
-	bufr/tables/0/wmo/26/codetables/2151.table\
-	bufr/tables/0/wmo/26/codetables/2152.table\
-	bufr/tables/0/wmo/26/codetables/2158.table\
-	bufr/tables/0/wmo/26/codetables/2159.table\
-	bufr/tables/0/wmo/26/codetables/2160.table\
-	bufr/tables/0/wmo/26/codetables/2163.table\
-	bufr/tables/0/wmo/26/codetables/2164.table\
-	bufr/tables/0/wmo/26/codetables/2165.table\
-	bufr/tables/0/wmo/26/codetables/2166.table\
-	bufr/tables/0/wmo/26/codetables/2167.table\
-	bufr/tables/0/wmo/26/codetables/2169.table\
-	bufr/tables/0/wmo/26/codetables/2170.table\
-	bufr/tables/0/wmo/26/codetables/2172.table\
-	bufr/tables/0/wmo/26/codetables/2175.table\
-	bufr/tables/0/wmo/26/codetables/2176.table\
-	bufr/tables/0/wmo/26/codetables/2177.table\
-	bufr/tables/0/wmo/26/codetables/2178.table\
-	bufr/tables/0/wmo/26/codetables/2179.table\
-	bufr/tables/0/wmo/26/codetables/2180.table\
-	bufr/tables/0/wmo/26/codetables/2181.table\
-	bufr/tables/0/wmo/26/codetables/2182.table\
-	bufr/tables/0/wmo/26/codetables/2183.table\
-	bufr/tables/0/wmo/26/codetables/2184.table\
-	bufr/tables/0/wmo/26/codetables/2185.table\
-	bufr/tables/0/wmo/26/codetables/2186.table\
-	bufr/tables/0/wmo/26/codetables/2187.table\
-	bufr/tables/0/wmo/26/codetables/2188.table\
-	bufr/tables/0/wmo/26/codetables/2189.table\
-	bufr/tables/0/wmo/26/codetables/2191.table\
-	bufr/tables/0/wmo/26/codetables/22056.table\
-	bufr/tables/0/wmo/26/codetables/22060.table\
-	bufr/tables/0/wmo/26/codetables/22061.table\
-	bufr/tables/0/wmo/26/codetables/22067.table\
-	bufr/tables/0/wmo/26/codetables/22068.table\
-	bufr/tables/0/wmo/26/codetables/22120.table\
-	bufr/tables/0/wmo/26/codetables/22121.table\
-	bufr/tables/0/wmo/26/codetables/22122.table\
-	bufr/tables/0/wmo/26/codetables/22123.table\
-	bufr/tables/0/wmo/26/codetables/22178.table\
-	bufr/tables/0/wmo/26/codetables/23001.table\
-	bufr/tables/0/wmo/26/codetables/23002.table\
-	bufr/tables/0/wmo/26/codetables/23003.table\
-	bufr/tables/0/wmo/26/codetables/23004.table\
-	bufr/tables/0/wmo/26/codetables/23005.table\
-	bufr/tables/0/wmo/26/codetables/23006.table\
-	bufr/tables/0/wmo/26/codetables/23007.table\
-	bufr/tables/0/wmo/26/codetables/23008.table\
-	bufr/tables/0/wmo/26/codetables/23009.table\
-	bufr/tables/0/wmo/26/codetables/23016.table\
-	bufr/tables/0/wmo/26/codetables/23018.table\
-	bufr/tables/0/wmo/26/codetables/23031.table\
-	bufr/tables/0/wmo/26/codetables/23032.table\
-	bufr/tables/0/wmo/26/codetables/24003.table\
-	bufr/tables/0/wmo/26/codetables/25004.table\
-	bufr/tables/0/wmo/26/codetables/25005.table\
-	bufr/tables/0/wmo/26/codetables/25006.table\
-	bufr/tables/0/wmo/26/codetables/25009.table\
-	bufr/tables/0/wmo/26/codetables/25010.table\
-	bufr/tables/0/wmo/26/codetables/25011.table\
-	bufr/tables/0/wmo/26/codetables/25012.table\
-	bufr/tables/0/wmo/26/codetables/25013.table\
-	bufr/tables/0/wmo/26/codetables/25015.table\
-	bufr/tables/0/wmo/26/codetables/25017.table\
-	bufr/tables/0/wmo/26/codetables/25020.table\
-	bufr/tables/0/wmo/26/codetables/25021.table\
-	bufr/tables/0/wmo/26/codetables/25022.table\
-	bufr/tables/0/wmo/26/codetables/25023.table\
-	bufr/tables/0/wmo/26/codetables/25024.table\
-	bufr/tables/0/wmo/26/codetables/25029.table\
-	bufr/tables/0/wmo/26/codetables/25030.table\
-	bufr/tables/0/wmo/26/codetables/25031.table\
-	bufr/tables/0/wmo/26/codetables/25032.table\
-	bufr/tables/0/wmo/26/codetables/25033.table\
-	bufr/tables/0/wmo/26/codetables/25034.table\
-	bufr/tables/0/wmo/26/codetables/25035.table\
-	bufr/tables/0/wmo/26/codetables/25036.table\
-	bufr/tables/0/wmo/26/codetables/25040.table\
-	bufr/tables/0/wmo/26/codetables/25041.table\
-	bufr/tables/0/wmo/26/codetables/25042.table\
-	bufr/tables/0/wmo/26/codetables/25053.table\
-	bufr/tables/0/wmo/26/codetables/25063.table\
-	bufr/tables/0/wmo/26/codetables/25069.table\
-	bufr/tables/0/wmo/26/codetables/25086.table\
-	bufr/tables/0/wmo/26/codetables/25090.table\
-	bufr/tables/0/wmo/26/codetables/25093.table\
-	bufr/tables/0/wmo/26/codetables/25095.table\
-	bufr/tables/0/wmo/26/codetables/25096.table\
-	bufr/tables/0/wmo/26/codetables/25097.table\
-	bufr/tables/0/wmo/26/codetables/25098.table\
-	bufr/tables/0/wmo/26/codetables/25099.table\
-	bufr/tables/0/wmo/26/codetables/25110.table\
-	bufr/tables/0/wmo/26/codetables/25112.table\
-	bufr/tables/0/wmo/26/codetables/25113.table\
-	bufr/tables/0/wmo/26/codetables/25120.table\
-	bufr/tables/0/wmo/26/codetables/25122.table\
-	bufr/tables/0/wmo/26/codetables/25123.table\
-	bufr/tables/0/wmo/26/codetables/25124.table\
-	bufr/tables/0/wmo/26/codetables/25150.table\
-	bufr/tables/0/wmo/26/codetables/25174.table\
-	bufr/tables/0/wmo/26/codetables/25181.table\
-	bufr/tables/0/wmo/26/codetables/25182.table\
-	bufr/tables/0/wmo/26/codetables/25184.table\
-	bufr/tables/0/wmo/26/codetables/25187.table\
-	bufr/tables/0/wmo/26/codetables/26010.table\
-	bufr/tables/0/wmo/26/codetables/29001.table\
-	bufr/tables/0/wmo/26/codetables/29002.table\
-	bufr/tables/0/wmo/26/codetables/30031.table\
-	bufr/tables/0/wmo/26/codetables/30032.table\
-	bufr/tables/0/wmo/26/codetables/3010.table\
-	bufr/tables/0/wmo/26/codetables/3011.table\
-	bufr/tables/0/wmo/26/codetables/3012.table\
-	bufr/tables/0/wmo/26/codetables/3016.table\
-	bufr/tables/0/wmo/26/codetables/3017.table\
-	bufr/tables/0/wmo/26/codetables/3018.table\
-	bufr/tables/0/wmo/26/codetables/3019.table\
-	bufr/tables/0/wmo/26/codetables/31021.table\
-	bufr/tables/0/wmo/26/codetables/31031.table\
-	bufr/tables/0/wmo/26/codetables/33002.table\
-	bufr/tables/0/wmo/26/codetables/33003.table\
-	bufr/tables/0/wmo/26/codetables/33005.table\
-	bufr/tables/0/wmo/26/codetables/33006.table\
-	bufr/tables/0/wmo/26/codetables/33015.table\
-	bufr/tables/0/wmo/26/codetables/33020.table\
-	bufr/tables/0/wmo/26/codetables/33021.table\
-	bufr/tables/0/wmo/26/codetables/33022.table\
-	bufr/tables/0/wmo/26/codetables/33023.table\
-	bufr/tables/0/wmo/26/codetables/33024.table\
-	bufr/tables/0/wmo/26/codetables/33025.table\
-	bufr/tables/0/wmo/26/codetables/33026.table\
-	bufr/tables/0/wmo/26/codetables/33027.table\
-	bufr/tables/0/wmo/26/codetables/33028.table\
-	bufr/tables/0/wmo/26/codetables/33030.table\
-	bufr/tables/0/wmo/26/codetables/33031.table\
-	bufr/tables/0/wmo/26/codetables/33032.table\
-	bufr/tables/0/wmo/26/codetables/33033.table\
-	bufr/tables/0/wmo/26/codetables/33035.table\
-	bufr/tables/0/wmo/26/codetables/33037.table\
-	bufr/tables/0/wmo/26/codetables/33038.table\
-	bufr/tables/0/wmo/26/codetables/33039.table\
-	bufr/tables/0/wmo/26/codetables/33041.table\
-	bufr/tables/0/wmo/26/codetables/33042.table\
-	bufr/tables/0/wmo/26/codetables/33043.table\
-	bufr/tables/0/wmo/26/codetables/33044.table\
-	bufr/tables/0/wmo/26/codetables/33047.table\
-	bufr/tables/0/wmo/26/codetables/33048.table\
-	bufr/tables/0/wmo/26/codetables/33049.table\
-	bufr/tables/0/wmo/26/codetables/33050.table\
-	bufr/tables/0/wmo/26/codetables/33060.table\
-	bufr/tables/0/wmo/26/codetables/33070.table\
-	bufr/tables/0/wmo/26/codetables/33071.table\
-	bufr/tables/0/wmo/26/codetables/33072.table\
-	bufr/tables/0/wmo/26/codetables/33075.table\
-	bufr/tables/0/wmo/26/codetables/33076.table\
-	bufr/tables/0/wmo/26/codetables/33077.table\
-	bufr/tables/0/wmo/26/codetables/33078.table\
-	bufr/tables/0/wmo/26/codetables/33079.table\
-	bufr/tables/0/wmo/26/codetables/33080.table\
-	bufr/tables/0/wmo/26/codetables/33081.table\
-	bufr/tables/0/wmo/26/codetables/33082.table\
-	bufr/tables/0/wmo/26/codetables/33083.table\
-	bufr/tables/0/wmo/26/codetables/33084.table\
-	bufr/tables/0/wmo/26/codetables/33085.table\
-	bufr/tables/0/wmo/26/codetables/33086.table\
-	bufr/tables/0/wmo/26/codetables/33087.table\
-	bufr/tables/0/wmo/26/codetables/33088.table\
-	bufr/tables/0/wmo/26/codetables/35000.table\
-	bufr/tables/0/wmo/26/codetables/35001.table\
-	bufr/tables/0/wmo/26/codetables/35030.table\
-	bufr/tables/0/wmo/26/codetables/35031.table\
-	bufr/tables/0/wmo/26/codetables/35032.table\
-	bufr/tables/0/wmo/26/codetables/35033.table\
-	bufr/tables/0/wmo/26/codetables/35034.table\
-	bufr/tables/0/wmo/26/codetables/35035.table\
-	bufr/tables/0/wmo/26/codetables/40005.table\
-	bufr/tables/0/wmo/26/codetables/40006.table\
-	bufr/tables/0/wmo/26/codetables/40011.table\
-	bufr/tables/0/wmo/26/codetables/40012.table\
-	bufr/tables/0/wmo/26/codetables/40013.table\
-	bufr/tables/0/wmo/26/codetables/40020.table\
-	bufr/tables/0/wmo/26/codetables/40023.table\
-	bufr/tables/0/wmo/26/codetables/40024.table\
-	bufr/tables/0/wmo/26/codetables/40025.table\
-	bufr/tables/0/wmo/26/codetables/40028.table\
-	bufr/tables/0/wmo/26/codetables/40036.table\
-	bufr/tables/0/wmo/26/codetables/4059.table\
-	bufr/tables/0/wmo/26/codetables/4080.table\
-	bufr/tables/0/wmo/26/codetables/5069.table\
-	bufr/tables/0/wmo/26/codetables/8001.table\
-	bufr/tables/0/wmo/26/codetables/8002.table\
-	bufr/tables/0/wmo/26/codetables/8003.table\
-	bufr/tables/0/wmo/26/codetables/8004.table\
-	bufr/tables/0/wmo/26/codetables/8005.table\
-	bufr/tables/0/wmo/26/codetables/8006.table\
-	bufr/tables/0/wmo/26/codetables/8007.table\
-	bufr/tables/0/wmo/26/codetables/8008.table\
-	bufr/tables/0/wmo/26/codetables/8009.table\
-	bufr/tables/0/wmo/26/codetables/8010.table\
-	bufr/tables/0/wmo/26/codetables/8011.table\
-	bufr/tables/0/wmo/26/codetables/8012.table\
-	bufr/tables/0/wmo/26/codetables/8013.table\
-	bufr/tables/0/wmo/26/codetables/8014.table\
-	bufr/tables/0/wmo/26/codetables/8015.table\
-	bufr/tables/0/wmo/26/codetables/8016.table\
-	bufr/tables/0/wmo/26/codetables/8017.table\
-	bufr/tables/0/wmo/26/codetables/8018.table\
-	bufr/tables/0/wmo/26/codetables/8019.table\
-	bufr/tables/0/wmo/26/codetables/8021.table\
-	bufr/tables/0/wmo/26/codetables/8023.table\
-	bufr/tables/0/wmo/26/codetables/8024.table\
-	bufr/tables/0/wmo/26/codetables/8025.table\
-	bufr/tables/0/wmo/26/codetables/8026.table\
-	bufr/tables/0/wmo/26/codetables/8029.table\
-	bufr/tables/0/wmo/26/codetables/8032.table\
-	bufr/tables/0/wmo/26/codetables/8033.table\
-	bufr/tables/0/wmo/26/codetables/8034.table\
-	bufr/tables/0/wmo/26/codetables/8035.table\
-	bufr/tables/0/wmo/26/codetables/8036.table\
-	bufr/tables/0/wmo/26/codetables/8039.table\
-	bufr/tables/0/wmo/26/codetables/8040.table\
-	bufr/tables/0/wmo/26/codetables/8041.table\
-	bufr/tables/0/wmo/26/codetables/8042.table\
-	bufr/tables/0/wmo/26/codetables/8043.table\
-	bufr/tables/0/wmo/26/codetables/8050.table\
-	bufr/tables/0/wmo/26/codetables/8051.table\
-	bufr/tables/0/wmo/26/codetables/8052.table\
-	bufr/tables/0/wmo/26/codetables/8053.table\
-	bufr/tables/0/wmo/26/codetables/8054.table\
-	bufr/tables/0/wmo/26/codetables/8060.table\
-	bufr/tables/0/wmo/26/codetables/8065.table\
-	bufr/tables/0/wmo/26/codetables/8066.table\
-	bufr/tables/0/wmo/26/codetables/8070.table\
-	bufr/tables/0/wmo/26/codetables/8072.table\
-	bufr/tables/0/wmo/26/codetables/8074.table\
-	bufr/tables/0/wmo/26/codetables/8075.table\
-	bufr/tables/0/wmo/26/codetables/8076.table\
-	bufr/tables/0/wmo/26/codetables/8077.table\
-	bufr/tables/0/wmo/26/codetables/8079.table\
-	bufr/tables/0/wmo/26/codetables/8080.table\
-	bufr/tables/0/wmo/26/codetables/8081.table\
-	bufr/tables/0/wmo/26/codetables/8082.table\
-	bufr/tables/0/wmo/26/codetables/8083.table\
-	bufr/tables/0/wmo/26/codetables/8085.table\
-	bufr/tables/0/wmo/26/codetables/8086.table\
-	bufr/tables/0/wmo/26/codetables/8087.table\
-	bufr/tables/0/wmo/26/codetables/8091.table
-
-definitionsbufr_tables_0_wmo_6dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/6
-dist_definitionsbufr_tables_0_wmo_6_DATA = \
-	bufr/tables/0/wmo/6/element.table\
-	bufr/tables/0/wmo/6/sequence.def
-
-definitionsbufr_tables_0_wmo_6_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/6/codetables
-dist_definitionsbufr_tables_0_wmo_6_codetables_DATA = \
-	bufr/tables/0/wmo/6/codetables/1003.table\
-	bufr/tables/0/wmo/6/codetables/10063.table\
-	bufr/tables/0/wmo/6/codetables/1007.table\
-	bufr/tables/0/wmo/6/codetables/1031.table\
-	bufr/tables/0/wmo/6/codetables/1032.table\
-	bufr/tables/0/wmo/6/codetables/1033.table\
-	bufr/tables/0/wmo/6/codetables/11031.table\
-	bufr/tables/0/wmo/6/codetables/13038.table\
-	bufr/tables/0/wmo/6/codetables/13039.table\
-	bufr/tables/0/wmo/6/codetables/13041.table\
-	bufr/tables/0/wmo/6/codetables/13051.table\
-	bufr/tables/0/wmo/6/codetables/19001.table\
-	bufr/tables/0/wmo/6/codetables/19008.table\
-	bufr/tables/0/wmo/6/codetables/20003.table\
-	bufr/tables/0/wmo/6/codetables/20004.table\
-	bufr/tables/0/wmo/6/codetables/20005.table\
-	bufr/tables/0/wmo/6/codetables/20009.table\
-	bufr/tables/0/wmo/6/codetables/2001.table\
-	bufr/tables/0/wmo/6/codetables/20011.table\
-	bufr/tables/0/wmo/6/codetables/20012.table\
-	bufr/tables/0/wmo/6/codetables/20017.table\
-	bufr/tables/0/wmo/6/codetables/20018.table\
-	bufr/tables/0/wmo/6/codetables/2002.table\
-	bufr/tables/0/wmo/6/codetables/2003.table\
-	bufr/tables/0/wmo/6/codetables/20032.table\
-	bufr/tables/0/wmo/6/codetables/20033.table\
-	bufr/tables/0/wmo/6/codetables/20034.table\
-	bufr/tables/0/wmo/6/codetables/20035.table\
-	bufr/tables/0/wmo/6/codetables/20036.table\
-	bufr/tables/0/wmo/6/codetables/20037.table\
-	bufr/tables/0/wmo/6/codetables/2004.table\
-	bufr/tables/0/wmo/6/codetables/20041.table\
-	bufr/tables/0/wmo/6/codetables/20062.table\
-	bufr/tables/0/wmo/6/codetables/20063.table\
-	bufr/tables/0/wmo/6/codetables/20090.table\
-	bufr/tables/0/wmo/6/codetables/2011.table\
-	bufr/tables/0/wmo/6/codetables/2012.table\
-	bufr/tables/0/wmo/6/codetables/2013.table\
-	bufr/tables/0/wmo/6/codetables/2014.table\
-	bufr/tables/0/wmo/6/codetables/2015.table\
-	bufr/tables/0/wmo/6/codetables/2019.table\
-	bufr/tables/0/wmo/6/codetables/2020.table\
-	bufr/tables/0/wmo/6/codetables/2021.table\
-	bufr/tables/0/wmo/6/codetables/2022.table\
-	bufr/tables/0/wmo/6/codetables/2023.table\
-	bufr/tables/0/wmo/6/codetables/2024.table\
-	bufr/tables/0/wmo/6/codetables/2025.table\
-	bufr/tables/0/wmo/6/codetables/2030.table\
-	bufr/tables/0/wmo/6/codetables/2031.table\
-	bufr/tables/0/wmo/6/codetables/2032.table\
-	bufr/tables/0/wmo/6/codetables/2033.table\
-	bufr/tables/0/wmo/6/codetables/2034.table\
-	bufr/tables/0/wmo/6/codetables/2036.table\
-	bufr/tables/0/wmo/6/codetables/2037.table\
-	bufr/tables/0/wmo/6/codetables/2038.table\
-	bufr/tables/0/wmo/6/codetables/2039.table\
-	bufr/tables/0/wmo/6/codetables/2040.table\
-	bufr/tables/0/wmo/6/codetables/2041.table\
-	bufr/tables/0/wmo/6/codetables/2044.table\
-	bufr/tables/0/wmo/6/codetables/2045.table\
-	bufr/tables/0/wmo/6/codetables/2046.table\
-	bufr/tables/0/wmo/6/codetables/2048.table\
-	bufr/tables/0/wmo/6/codetables/2049.table\
-	bufr/tables/0/wmo/6/codetables/2050.table\
-	bufr/tables/0/wmo/6/codetables/2051.table\
-	bufr/tables/0/wmo/6/codetables/2052.table\
-	bufr/tables/0/wmo/6/codetables/2053.table\
-	bufr/tables/0/wmo/6/codetables/2054.table\
-	bufr/tables/0/wmo/6/codetables/2055.table\
-	bufr/tables/0/wmo/6/codetables/2056.table\
-	bufr/tables/0/wmo/6/codetables/2057.table\
-	bufr/tables/0/wmo/6/codetables/2058.table\
-	bufr/tables/0/wmo/6/codetables/2059.table\
-	bufr/tables/0/wmo/6/codetables/2060.table\
-	bufr/tables/0/wmo/6/codetables/2061.table\
-	bufr/tables/0/wmo/6/codetables/2062.table\
-	bufr/tables/0/wmo/6/codetables/2064.table\
-	bufr/tables/0/wmo/6/codetables/2070.table\
-	bufr/tables/0/wmo/6/codetables/2101.table\
-	bufr/tables/0/wmo/6/codetables/2103.table\
-	bufr/tables/0/wmo/6/codetables/2104.table\
-	bufr/tables/0/wmo/6/codetables/21066.table\
-	bufr/tables/0/wmo/6/codetables/21067.table\
-	bufr/tables/0/wmo/6/codetables/21068.table\
-	bufr/tables/0/wmo/6/codetables/21069.table\
-	bufr/tables/0/wmo/6/codetables/21070.table\
-	bufr/tables/0/wmo/6/codetables/21072.table\
-	bufr/tables/0/wmo/6/codetables/21073.table\
-	bufr/tables/0/wmo/6/codetables/21076.table\
-	bufr/tables/0/wmo/6/codetables/21109.table\
-	bufr/tables/0/wmo/6/codetables/21115.table\
-	bufr/tables/0/wmo/6/codetables/21116.table\
-	bufr/tables/0/wmo/6/codetables/21119.table\
-	bufr/tables/0/wmo/6/codetables/2131.table\
-	bufr/tables/0/wmo/6/codetables/2143.table\
-	bufr/tables/0/wmo/6/codetables/2144.table\
-	bufr/tables/0/wmo/6/codetables/2145.table\
-	bufr/tables/0/wmo/6/codetables/2146.table\
-	bufr/tables/0/wmo/6/codetables/2150.table\
-	bufr/tables/0/wmo/6/codetables/2151.table\
-	bufr/tables/0/wmo/6/codetables/2152.table\
-	bufr/tables/0/wmo/6/codetables/2158.table\
-	bufr/tables/0/wmo/6/codetables/2159.table\
-	bufr/tables/0/wmo/6/codetables/2163.table\
-	bufr/tables/0/wmo/6/codetables/2164.table\
-	bufr/tables/0/wmo/6/codetables/2166.table\
-	bufr/tables/0/wmo/6/codetables/2167.table\
-	bufr/tables/0/wmo/6/codetables/2169.table\
-	bufr/tables/0/wmo/6/codetables/2172.table\
-	bufr/tables/0/wmo/6/codetables/22061.table\
-	bufr/tables/0/wmo/6/codetables/22067.table\
-	bufr/tables/0/wmo/6/codetables/22068.table\
-	bufr/tables/0/wmo/6/codetables/22120.table\
-	bufr/tables/0/wmo/6/codetables/22121.table\
-	bufr/tables/0/wmo/6/codetables/22122.table\
-	bufr/tables/0/wmo/6/codetables/22123.table\
-	bufr/tables/0/wmo/6/codetables/23001.table\
-	bufr/tables/0/wmo/6/codetables/23002.table\
-	bufr/tables/0/wmo/6/codetables/23003.table\
-	bufr/tables/0/wmo/6/codetables/23004.table\
-	bufr/tables/0/wmo/6/codetables/23005.table\
-	bufr/tables/0/wmo/6/codetables/23006.table\
-	bufr/tables/0/wmo/6/codetables/23007.table\
-	bufr/tables/0/wmo/6/codetables/23008.table\
-	bufr/tables/0/wmo/6/codetables/23009.table\
-	bufr/tables/0/wmo/6/codetables/23016.table\
-	bufr/tables/0/wmo/6/codetables/23018.table\
-	bufr/tables/0/wmo/6/codetables/23031.table\
-	bufr/tables/0/wmo/6/codetables/23032.table\
-	bufr/tables/0/wmo/6/codetables/24003.table\
-	bufr/tables/0/wmo/6/codetables/25004.table\
-	bufr/tables/0/wmo/6/codetables/25005.table\
-	bufr/tables/0/wmo/6/codetables/25006.table\
-	bufr/tables/0/wmo/6/codetables/25009.table\
-	bufr/tables/0/wmo/6/codetables/25010.table\
-	bufr/tables/0/wmo/6/codetables/25011.table\
-	bufr/tables/0/wmo/6/codetables/25012.table\
-	bufr/tables/0/wmo/6/codetables/25013.table\
-	bufr/tables/0/wmo/6/codetables/25015.table\
-	bufr/tables/0/wmo/6/codetables/25017.table\
-	bufr/tables/0/wmo/6/codetables/25020.table\
-	bufr/tables/0/wmo/6/codetables/25021.table\
-	bufr/tables/0/wmo/6/codetables/25030.table\
-	bufr/tables/0/wmo/6/codetables/25032.table\
-	bufr/tables/0/wmo/6/codetables/25033.table\
-	bufr/tables/0/wmo/6/codetables/25034.table\
-	bufr/tables/0/wmo/6/codetables/25040.table\
-	bufr/tables/0/wmo/6/codetables/25041.table\
-	bufr/tables/0/wmo/6/codetables/25042.table\
-	bufr/tables/0/wmo/6/codetables/25045.table\
-	bufr/tables/0/wmo/6/codetables/25046.table\
-	bufr/tables/0/wmo/6/codetables/25047.table\
-	bufr/tables/0/wmo/6/codetables/25048.table\
-	bufr/tables/0/wmo/6/codetables/25049.table\
-	bufr/tables/0/wmo/6/codetables/25051.table\
-	bufr/tables/0/wmo/6/codetables/25053.table\
-	bufr/tables/0/wmo/6/codetables/29001.table\
-	bufr/tables/0/wmo/6/codetables/29002.table\
-	bufr/tables/0/wmo/6/codetables/30031.table\
-	bufr/tables/0/wmo/6/codetables/30032.table\
-	bufr/tables/0/wmo/6/codetables/31021.table\
-	bufr/tables/0/wmo/6/codetables/31031.table\
-	bufr/tables/0/wmo/6/codetables/33002.table\
-	bufr/tables/0/wmo/6/codetables/33003.table\
-	bufr/tables/0/wmo/6/codetables/33020.table\
-	bufr/tables/0/wmo/6/codetables/33021.table\
-	bufr/tables/0/wmo/6/codetables/33022.table\
-	bufr/tables/0/wmo/6/codetables/33023.table\
-	bufr/tables/0/wmo/6/codetables/33024.table\
-	bufr/tables/0/wmo/6/codetables/33025.table\
-	bufr/tables/0/wmo/6/codetables/33026.table\
-	bufr/tables/0/wmo/6/codetables/33027.table\
-	bufr/tables/0/wmo/6/codetables/33030.table\
-	bufr/tables/0/wmo/6/codetables/33031.table\
-	bufr/tables/0/wmo/6/codetables/33032.table\
-	bufr/tables/0/wmo/6/codetables/33033.table\
-	bufr/tables/0/wmo/6/codetables/8001.table\
-	bufr/tables/0/wmo/6/codetables/8002.table\
-	bufr/tables/0/wmo/6/codetables/8003.table\
-	bufr/tables/0/wmo/6/codetables/8004.table\
-	bufr/tables/0/wmo/6/codetables/8005.table\
-	bufr/tables/0/wmo/6/codetables/8006.table\
-	bufr/tables/0/wmo/6/codetables/8007.table\
-	bufr/tables/0/wmo/6/codetables/8011.table\
-	bufr/tables/0/wmo/6/codetables/8012.table\
-	bufr/tables/0/wmo/6/codetables/8013.table\
-	bufr/tables/0/wmo/6/codetables/8014.table\
-	bufr/tables/0/wmo/6/codetables/8016.table\
-	bufr/tables/0/wmo/6/codetables/8017.table\
-	bufr/tables/0/wmo/6/codetables/8018.table\
-	bufr/tables/0/wmo/6/codetables/8021.table\
-	bufr/tables/0/wmo/6/codetables/8023.table\
-	bufr/tables/0/wmo/6/codetables/8024.table\
-	bufr/tables/0/wmo/6/codetables/8025.table\
-	bufr/tables/0/wmo/6/codetables/8033.table\
-	bufr/tables/0/wmo/6/codetables/8051.table\
-	bufr/tables/0/wmo/6/codetables/8052.table\
-	bufr/tables/0/wmo/6/codetables/8053.table\
-	bufr/tables/0/wmo/6/codetables/8060.table\
-	bufr/tables/0/wmo/6/codetables/8065.table\
-	bufr/tables/0/wmo/6/codetables/8066.table\
-	bufr/tables/0/wmo/6/codetables/8070.table\
-	bufr/tables/0/wmo/6/codetables/8072.table
-
-definitionsbufr_tables_0_wmo_7dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/7
-dist_definitionsbufr_tables_0_wmo_7_DATA = \
-	bufr/tables/0/wmo/7/element.table\
-	bufr/tables/0/wmo/7/sequence.def
-
-definitionsbufr_tables_0_wmo_7_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/7/codetables
-dist_definitionsbufr_tables_0_wmo_7_codetables_DATA = \
-	bufr/tables/0/wmo/7/codetables/1003.table\
-	bufr/tables/0/wmo/7/codetables/10063.table\
-	bufr/tables/0/wmo/7/codetables/10064.table\
-	bufr/tables/0/wmo/7/codetables/1007.table\
-	bufr/tables/0/wmo/7/codetables/1031.table\
-	bufr/tables/0/wmo/7/codetables/1032.table\
-	bufr/tables/0/wmo/7/codetables/1033.table\
-	bufr/tables/0/wmo/7/codetables/1035.table\
-	bufr/tables/0/wmo/7/codetables/1090.table\
-	bufr/tables/0/wmo/7/codetables/1092.table\
-	bufr/tables/0/wmo/7/codetables/11031.table\
-	bufr/tables/0/wmo/7/codetables/11037.table\
-	bufr/tables/0/wmo/7/codetables/11038.table\
-	bufr/tables/0/wmo/7/codetables/11039.table\
-	bufr/tables/0/wmo/7/codetables/13038.table\
-	bufr/tables/0/wmo/7/codetables/13039.table\
-	bufr/tables/0/wmo/7/codetables/13040.table\
-	bufr/tables/0/wmo/7/codetables/13041.table\
-	bufr/tables/0/wmo/7/codetables/13051.table\
-	bufr/tables/0/wmo/7/codetables/13056.table\
-	bufr/tables/0/wmo/7/codetables/13057.table\
-	bufr/tables/0/wmo/7/codetables/15025.table\
-	bufr/tables/0/wmo/7/codetables/19001.table\
-	bufr/tables/0/wmo/7/codetables/19008.table\
-	bufr/tables/0/wmo/7/codetables/19010.table\
-	bufr/tables/0/wmo/7/codetables/20003.table\
-	bufr/tables/0/wmo/7/codetables/20004.table\
-	bufr/tables/0/wmo/7/codetables/20005.table\
-	bufr/tables/0/wmo/7/codetables/20008.table\
-	bufr/tables/0/wmo/7/codetables/20009.table\
-	bufr/tables/0/wmo/7/codetables/2001.table\
-	bufr/tables/0/wmo/7/codetables/20011.table\
-	bufr/tables/0/wmo/7/codetables/20012.table\
-	bufr/tables/0/wmo/7/codetables/20017.table\
-	bufr/tables/0/wmo/7/codetables/20018.table\
-	bufr/tables/0/wmo/7/codetables/2002.table\
-	bufr/tables/0/wmo/7/codetables/20021.table\
-	bufr/tables/0/wmo/7/codetables/20022.table\
-	bufr/tables/0/wmo/7/codetables/20023.table\
-	bufr/tables/0/wmo/7/codetables/20024.table\
-	bufr/tables/0/wmo/7/codetables/20025.table\
-	bufr/tables/0/wmo/7/codetables/20026.table\
-	bufr/tables/0/wmo/7/codetables/20027.table\
-	bufr/tables/0/wmo/7/codetables/20029.table\
-	bufr/tables/0/wmo/7/codetables/2003.table\
-	bufr/tables/0/wmo/7/codetables/20032.table\
-	bufr/tables/0/wmo/7/codetables/20033.table\
-	bufr/tables/0/wmo/7/codetables/20034.table\
-	bufr/tables/0/wmo/7/codetables/20035.table\
-	bufr/tables/0/wmo/7/codetables/20036.table\
-	bufr/tables/0/wmo/7/codetables/20037.table\
-	bufr/tables/0/wmo/7/codetables/2004.table\
-	bufr/tables/0/wmo/7/codetables/20040.table\
-	bufr/tables/0/wmo/7/codetables/20041.table\
-	bufr/tables/0/wmo/7/codetables/20042.table\
-	bufr/tables/0/wmo/7/codetables/20045.table\
-	bufr/tables/0/wmo/7/codetables/20050.table\
-	bufr/tables/0/wmo/7/codetables/20055.table\
-	bufr/tables/0/wmo/7/codetables/20056.table\
-	bufr/tables/0/wmo/7/codetables/20062.table\
-	bufr/tables/0/wmo/7/codetables/20063.table\
-	bufr/tables/0/wmo/7/codetables/20071.table\
-	bufr/tables/0/wmo/7/codetables/20086.table\
-	bufr/tables/0/wmo/7/codetables/20090.table\
-	bufr/tables/0/wmo/7/codetables/20101.table\
-	bufr/tables/0/wmo/7/codetables/20102.table\
-	bufr/tables/0/wmo/7/codetables/2011.table\
-	bufr/tables/0/wmo/7/codetables/2012.table\
-	bufr/tables/0/wmo/7/codetables/2013.table\
-	bufr/tables/0/wmo/7/codetables/2014.table\
-	bufr/tables/0/wmo/7/codetables/2015.table\
-	bufr/tables/0/wmo/7/codetables/2016.table\
-	bufr/tables/0/wmo/7/codetables/2019.table\
-	bufr/tables/0/wmo/7/codetables/2020.table\
-	bufr/tables/0/wmo/7/codetables/2021.table\
-	bufr/tables/0/wmo/7/codetables/2022.table\
-	bufr/tables/0/wmo/7/codetables/2023.table\
-	bufr/tables/0/wmo/7/codetables/2024.table\
-	bufr/tables/0/wmo/7/codetables/2025.table\
-	bufr/tables/0/wmo/7/codetables/2030.table\
-	bufr/tables/0/wmo/7/codetables/2031.table\
-	bufr/tables/0/wmo/7/codetables/2032.table\
-	bufr/tables/0/wmo/7/codetables/2033.table\
-	bufr/tables/0/wmo/7/codetables/2034.table\
-	bufr/tables/0/wmo/7/codetables/2036.table\
-	bufr/tables/0/wmo/7/codetables/2037.table\
-	bufr/tables/0/wmo/7/codetables/2038.table\
-	bufr/tables/0/wmo/7/codetables/2039.table\
-	bufr/tables/0/wmo/7/codetables/2040.table\
-	bufr/tables/0/wmo/7/codetables/2041.table\
-	bufr/tables/0/wmo/7/codetables/2044.table\
-	bufr/tables/0/wmo/7/codetables/2045.table\
-	bufr/tables/0/wmo/7/codetables/2046.table\
-	bufr/tables/0/wmo/7/codetables/2048.table\
-	bufr/tables/0/wmo/7/codetables/2049.table\
-	bufr/tables/0/wmo/7/codetables/2050.table\
-	bufr/tables/0/wmo/7/codetables/2051.table\
-	bufr/tables/0/wmo/7/codetables/2052.table\
-	bufr/tables/0/wmo/7/codetables/2053.table\
-	bufr/tables/0/wmo/7/codetables/2054.table\
-	bufr/tables/0/wmo/7/codetables/2055.table\
-	bufr/tables/0/wmo/7/codetables/2056.table\
-	bufr/tables/0/wmo/7/codetables/2057.table\
-	bufr/tables/0/wmo/7/codetables/2058.table\
-	bufr/tables/0/wmo/7/codetables/2059.table\
-	bufr/tables/0/wmo/7/codetables/2060.table\
-	bufr/tables/0/wmo/7/codetables/2061.table\
-	bufr/tables/0/wmo/7/codetables/2062.table\
-	bufr/tables/0/wmo/7/codetables/2064.table\
-	bufr/tables/0/wmo/7/codetables/2066.table\
-	bufr/tables/0/wmo/7/codetables/2070.table\
-	bufr/tables/0/wmo/7/codetables/2080.table\
-	bufr/tables/0/wmo/7/codetables/2081.table\
-	bufr/tables/0/wmo/7/codetables/2083.table\
-	bufr/tables/0/wmo/7/codetables/2084.table\
-	bufr/tables/0/wmo/7/codetables/2095.table\
-	bufr/tables/0/wmo/7/codetables/2096.table\
-	bufr/tables/0/wmo/7/codetables/2097.table\
-	bufr/tables/0/wmo/7/codetables/2098.table\
-	bufr/tables/0/wmo/7/codetables/2101.table\
-	bufr/tables/0/wmo/7/codetables/2103.table\
-	bufr/tables/0/wmo/7/codetables/2104.table\
-	bufr/tables/0/wmo/7/codetables/21066.table\
-	bufr/tables/0/wmo/7/codetables/21067.table\
-	bufr/tables/0/wmo/7/codetables/21068.table\
-	bufr/tables/0/wmo/7/codetables/21069.table\
-	bufr/tables/0/wmo/7/codetables/21070.table\
-	bufr/tables/0/wmo/7/codetables/21072.table\
-	bufr/tables/0/wmo/7/codetables/21073.table\
-	bufr/tables/0/wmo/7/codetables/21076.table\
-	bufr/tables/0/wmo/7/codetables/21109.table\
-	bufr/tables/0/wmo/7/codetables/21115.table\
-	bufr/tables/0/wmo/7/codetables/21116.table\
-	bufr/tables/0/wmo/7/codetables/21119.table\
-	bufr/tables/0/wmo/7/codetables/21144.table\
-	bufr/tables/0/wmo/7/codetables/2115.table\
-	bufr/tables/0/wmo/7/codetables/21150.table\
-	bufr/tables/0/wmo/7/codetables/21155.table\
-	bufr/tables/0/wmo/7/codetables/21158.table\
-	bufr/tables/0/wmo/7/codetables/21159.table\
-	bufr/tables/0/wmo/7/codetables/21169.table\
-	bufr/tables/0/wmo/7/codetables/2119.table\
-	bufr/tables/0/wmo/7/codetables/2131.table\
-	bufr/tables/0/wmo/7/codetables/2143.table\
-	bufr/tables/0/wmo/7/codetables/2144.table\
-	bufr/tables/0/wmo/7/codetables/2145.table\
-	bufr/tables/0/wmo/7/codetables/2146.table\
-	bufr/tables/0/wmo/7/codetables/2148.table\
-	bufr/tables/0/wmo/7/codetables/2149.table\
-	bufr/tables/0/wmo/7/codetables/2150.table\
-	bufr/tables/0/wmo/7/codetables/2151.table\
-	bufr/tables/0/wmo/7/codetables/2152.table\
-	bufr/tables/0/wmo/7/codetables/2158.table\
-	bufr/tables/0/wmo/7/codetables/2159.table\
-	bufr/tables/0/wmo/7/codetables/2163.table\
-	bufr/tables/0/wmo/7/codetables/2164.table\
-	bufr/tables/0/wmo/7/codetables/2166.table\
-	bufr/tables/0/wmo/7/codetables/2167.table\
-	bufr/tables/0/wmo/7/codetables/2169.table\
-	bufr/tables/0/wmo/7/codetables/2172.table\
-	bufr/tables/0/wmo/7/codetables/2175.table\
-	bufr/tables/0/wmo/7/codetables/2176.table\
-	bufr/tables/0/wmo/7/codetables/2177.table\
-	bufr/tables/0/wmo/7/codetables/2178.table\
-	bufr/tables/0/wmo/7/codetables/2179.table\
-	bufr/tables/0/wmo/7/codetables/2180.table\
-	bufr/tables/0/wmo/7/codetables/2181.table\
-	bufr/tables/0/wmo/7/codetables/2182.table\
-	bufr/tables/0/wmo/7/codetables/2183.table\
-	bufr/tables/0/wmo/7/codetables/2184.table\
-	bufr/tables/0/wmo/7/codetables/2185.table\
-	bufr/tables/0/wmo/7/codetables/2186.table\
-	bufr/tables/0/wmo/7/codetables/2187.table\
-	bufr/tables/0/wmo/7/codetables/2188.table\
-	bufr/tables/0/wmo/7/codetables/2189.table\
-	bufr/tables/0/wmo/7/codetables/22056.table\
-	bufr/tables/0/wmo/7/codetables/22060.table\
-	bufr/tables/0/wmo/7/codetables/22061.table\
-	bufr/tables/0/wmo/7/codetables/22067.table\
-	bufr/tables/0/wmo/7/codetables/22068.table\
-	bufr/tables/0/wmo/7/codetables/22120.table\
-	bufr/tables/0/wmo/7/codetables/22121.table\
-	bufr/tables/0/wmo/7/codetables/22122.table\
-	bufr/tables/0/wmo/7/codetables/22123.table\
-	bufr/tables/0/wmo/7/codetables/23001.table\
-	bufr/tables/0/wmo/7/codetables/23002.table\
-	bufr/tables/0/wmo/7/codetables/23003.table\
-	bufr/tables/0/wmo/7/codetables/23004.table\
-	bufr/tables/0/wmo/7/codetables/23005.table\
-	bufr/tables/0/wmo/7/codetables/23006.table\
-	bufr/tables/0/wmo/7/codetables/23007.table\
-	bufr/tables/0/wmo/7/codetables/23008.table\
-	bufr/tables/0/wmo/7/codetables/23009.table\
-	bufr/tables/0/wmo/7/codetables/23016.table\
-	bufr/tables/0/wmo/7/codetables/23018.table\
-	bufr/tables/0/wmo/7/codetables/23031.table\
-	bufr/tables/0/wmo/7/codetables/23032.table\
-	bufr/tables/0/wmo/7/codetables/24003.table\
-	bufr/tables/0/wmo/7/codetables/25004.table\
-	bufr/tables/0/wmo/7/codetables/25005.table\
-	bufr/tables/0/wmo/7/codetables/25006.table\
-	bufr/tables/0/wmo/7/codetables/25009.table\
-	bufr/tables/0/wmo/7/codetables/25010.table\
-	bufr/tables/0/wmo/7/codetables/25011.table\
-	bufr/tables/0/wmo/7/codetables/25012.table\
-	bufr/tables/0/wmo/7/codetables/25013.table\
-	bufr/tables/0/wmo/7/codetables/25015.table\
-	bufr/tables/0/wmo/7/codetables/25017.table\
-	bufr/tables/0/wmo/7/codetables/25020.table\
-	bufr/tables/0/wmo/7/codetables/25021.table\
-	bufr/tables/0/wmo/7/codetables/25030.table\
-	bufr/tables/0/wmo/7/codetables/25032.table\
-	bufr/tables/0/wmo/7/codetables/25033.table\
-	bufr/tables/0/wmo/7/codetables/25034.table\
-	bufr/tables/0/wmo/7/codetables/25036.table\
-	bufr/tables/0/wmo/7/codetables/25040.table\
-	bufr/tables/0/wmo/7/codetables/25041.table\
-	bufr/tables/0/wmo/7/codetables/25042.table\
-	bufr/tables/0/wmo/7/codetables/25045.table\
-	bufr/tables/0/wmo/7/codetables/25046.table\
-	bufr/tables/0/wmo/7/codetables/25047.table\
-	bufr/tables/0/wmo/7/codetables/25048.table\
-	bufr/tables/0/wmo/7/codetables/25049.table\
-	bufr/tables/0/wmo/7/codetables/25051.table\
-	bufr/tables/0/wmo/7/codetables/25053.table\
-	bufr/tables/0/wmo/7/codetables/25069.table\
-	bufr/tables/0/wmo/7/codetables/25086.table\
-	bufr/tables/0/wmo/7/codetables/25093.table\
-	bufr/tables/0/wmo/7/codetables/25095.table\
-	bufr/tables/0/wmo/7/codetables/25096.table\
-	bufr/tables/0/wmo/7/codetables/25097.table\
-	bufr/tables/0/wmo/7/codetables/25098.table\
-	bufr/tables/0/wmo/7/codetables/25099.table\
-	bufr/tables/0/wmo/7/codetables/25110.table\
-	bufr/tables/0/wmo/7/codetables/25120.table\
-	bufr/tables/0/wmo/7/codetables/25122.table\
-	bufr/tables/0/wmo/7/codetables/25123.table\
-	bufr/tables/0/wmo/7/codetables/25124.table\
-	bufr/tables/0/wmo/7/codetables/26010.table\
-	bufr/tables/0/wmo/7/codetables/29001.table\
-	bufr/tables/0/wmo/7/codetables/29002.table\
-	bufr/tables/0/wmo/7/codetables/30031.table\
-	bufr/tables/0/wmo/7/codetables/30032.table\
-	bufr/tables/0/wmo/7/codetables/31021.table\
-	bufr/tables/0/wmo/7/codetables/31031.table\
-	bufr/tables/0/wmo/7/codetables/33002.table\
-	bufr/tables/0/wmo/7/codetables/33003.table\
-	bufr/tables/0/wmo/7/codetables/33005.table\
-	bufr/tables/0/wmo/7/codetables/33006.table\
-	bufr/tables/0/wmo/7/codetables/33015.table\
-	bufr/tables/0/wmo/7/codetables/33020.table\
-	bufr/tables/0/wmo/7/codetables/33021.table\
-	bufr/tables/0/wmo/7/codetables/33022.table\
-	bufr/tables/0/wmo/7/codetables/33023.table\
-	bufr/tables/0/wmo/7/codetables/33024.table\
-	bufr/tables/0/wmo/7/codetables/33025.table\
-	bufr/tables/0/wmo/7/codetables/33026.table\
-	bufr/tables/0/wmo/7/codetables/33027.table\
-	bufr/tables/0/wmo/7/codetables/33028.table\
-	bufr/tables/0/wmo/7/codetables/33030.table\
-	bufr/tables/0/wmo/7/codetables/33031.table\
-	bufr/tables/0/wmo/7/codetables/33032.table\
-	bufr/tables/0/wmo/7/codetables/33033.table\
-	bufr/tables/0/wmo/7/codetables/33035.table\
-	bufr/tables/0/wmo/7/codetables/33037.table\
-	bufr/tables/0/wmo/7/codetables/33038.table\
-	bufr/tables/0/wmo/7/codetables/33039.table\
-	bufr/tables/0/wmo/7/codetables/33041.table\
-	bufr/tables/0/wmo/7/codetables/33042.table\
-	bufr/tables/0/wmo/7/codetables/33043.table\
-	bufr/tables/0/wmo/7/codetables/33044.table\
-	bufr/tables/0/wmo/7/codetables/33047.table\
-	bufr/tables/0/wmo/7/codetables/33048.table\
-	bufr/tables/0/wmo/7/codetables/33049.table\
-	bufr/tables/0/wmo/7/codetables/33050.table\
-	bufr/tables/0/wmo/7/codetables/33052.table\
-	bufr/tables/0/wmo/7/codetables/33053.table\
-	bufr/tables/0/wmo/7/codetables/33060.table\
-	bufr/tables/0/wmo/7/codetables/35000.table\
-	bufr/tables/0/wmo/7/codetables/35001.table\
-	bufr/tables/0/wmo/7/codetables/35030.table\
-	bufr/tables/0/wmo/7/codetables/35031.table\
-	bufr/tables/0/wmo/7/codetables/35032.table\
-	bufr/tables/0/wmo/7/codetables/35033.table\
-	bufr/tables/0/wmo/7/codetables/35034.table\
-	bufr/tables/0/wmo/7/codetables/40011.table\
-	bufr/tables/0/wmo/7/codetables/40012.table\
-	bufr/tables/0/wmo/7/codetables/40013.table\
-	bufr/tables/0/wmo/7/codetables/4059.table\
-	bufr/tables/0/wmo/7/codetables/8001.table\
-	bufr/tables/0/wmo/7/codetables/8002.table\
-	bufr/tables/0/wmo/7/codetables/8003.table\
-	bufr/tables/0/wmo/7/codetables/8004.table\
-	bufr/tables/0/wmo/7/codetables/8005.table\
-	bufr/tables/0/wmo/7/codetables/8006.table\
-	bufr/tables/0/wmo/7/codetables/8007.table\
-	bufr/tables/0/wmo/7/codetables/8008.table\
-	bufr/tables/0/wmo/7/codetables/8009.table\
-	bufr/tables/0/wmo/7/codetables/8010.table\
-	bufr/tables/0/wmo/7/codetables/8011.table\
-	bufr/tables/0/wmo/7/codetables/8012.table\
-	bufr/tables/0/wmo/7/codetables/8013.table\
-	bufr/tables/0/wmo/7/codetables/8014.table\
-	bufr/tables/0/wmo/7/codetables/8016.table\
-	bufr/tables/0/wmo/7/codetables/8017.table\
-	bufr/tables/0/wmo/7/codetables/8018.table\
-	bufr/tables/0/wmo/7/codetables/8021.table\
-	bufr/tables/0/wmo/7/codetables/8023.table\
-	bufr/tables/0/wmo/7/codetables/8024.table\
-	bufr/tables/0/wmo/7/codetables/8025.table\
-	bufr/tables/0/wmo/7/codetables/8026.table\
-	bufr/tables/0/wmo/7/codetables/8029.table\
-	bufr/tables/0/wmo/7/codetables/8033.table\
-	bufr/tables/0/wmo/7/codetables/8035.table\
-	bufr/tables/0/wmo/7/codetables/8036.table\
-	bufr/tables/0/wmo/7/codetables/8039.table\
-	bufr/tables/0/wmo/7/codetables/8040.table\
-	bufr/tables/0/wmo/7/codetables/8041.table\
-	bufr/tables/0/wmo/7/codetables/8042.table\
-	bufr/tables/0/wmo/7/codetables/8043.table\
-	bufr/tables/0/wmo/7/codetables/8050.table\
-	bufr/tables/0/wmo/7/codetables/8051.table\
-	bufr/tables/0/wmo/7/codetables/8052.table\
-	bufr/tables/0/wmo/7/codetables/8053.table\
-	bufr/tables/0/wmo/7/codetables/8054.table\
-	bufr/tables/0/wmo/7/codetables/8060.table\
-	bufr/tables/0/wmo/7/codetables/8065.table\
-	bufr/tables/0/wmo/7/codetables/8066.table\
-	bufr/tables/0/wmo/7/codetables/8070.table\
-	bufr/tables/0/wmo/7/codetables/8072.table\
-	bufr/tables/0/wmo/7/codetables/8074.table\
-	bufr/tables/0/wmo/7/codetables/8075.table\
-	bufr/tables/0/wmo/7/codetables/8076.table\
-	bufr/tables/0/wmo/7/codetables/8077.table\
-	bufr/tables/0/wmo/7/codetables/8079.table\
-	bufr/tables/0/wmo/7/codetables/8080.table\
-	bufr/tables/0/wmo/7/codetables/8081.table\
-	bufr/tables/0/wmo/7/codetables/8082.table\
-	bufr/tables/0/wmo/7/codetables/8083.table\
-	bufr/tables/0/wmo/7/codetables/8085.table
-
-definitionsbufr_tables_0_wmo_8dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/8
-dist_definitionsbufr_tables_0_wmo_8_DATA = \
-	bufr/tables/0/wmo/8/element.table\
-	bufr/tables/0/wmo/8/sequence.def
-
-definitionsbufr_tables_0_wmo_8_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/8/codetables
-dist_definitionsbufr_tables_0_wmo_8_codetables_DATA = \
-	bufr/tables/0/wmo/8/codetables/1003.table\
-	bufr/tables/0/wmo/8/codetables/10063.table\
-	bufr/tables/0/wmo/8/codetables/10064.table\
-	bufr/tables/0/wmo/8/codetables/1007.table\
-	bufr/tables/0/wmo/8/codetables/1031.table\
-	bufr/tables/0/wmo/8/codetables/1032.table\
-	bufr/tables/0/wmo/8/codetables/1033.table\
-	bufr/tables/0/wmo/8/codetables/1035.table\
-	bufr/tables/0/wmo/8/codetables/1090.table\
-	bufr/tables/0/wmo/8/codetables/1092.table\
-	bufr/tables/0/wmo/8/codetables/11031.table\
-	bufr/tables/0/wmo/8/codetables/11037.table\
-	bufr/tables/0/wmo/8/codetables/11038.table\
-	bufr/tables/0/wmo/8/codetables/11039.table\
-	bufr/tables/0/wmo/8/codetables/13038.table\
-	bufr/tables/0/wmo/8/codetables/13039.table\
-	bufr/tables/0/wmo/8/codetables/13040.table\
-	bufr/tables/0/wmo/8/codetables/13041.table\
-	bufr/tables/0/wmo/8/codetables/13051.table\
-	bufr/tables/0/wmo/8/codetables/13056.table\
-	bufr/tables/0/wmo/8/codetables/13057.table\
-	bufr/tables/0/wmo/8/codetables/15025.table\
-	bufr/tables/0/wmo/8/codetables/19001.table\
-	bufr/tables/0/wmo/8/codetables/19008.table\
-	bufr/tables/0/wmo/8/codetables/19010.table\
-	bufr/tables/0/wmo/8/codetables/20003.table\
-	bufr/tables/0/wmo/8/codetables/20004.table\
-	bufr/tables/0/wmo/8/codetables/20005.table\
-	bufr/tables/0/wmo/8/codetables/20008.table\
-	bufr/tables/0/wmo/8/codetables/20009.table\
-	bufr/tables/0/wmo/8/codetables/2001.table\
-	bufr/tables/0/wmo/8/codetables/20011.table\
-	bufr/tables/0/wmo/8/codetables/20012.table\
-	bufr/tables/0/wmo/8/codetables/20017.table\
-	bufr/tables/0/wmo/8/codetables/20018.table\
-	bufr/tables/0/wmo/8/codetables/2002.table\
-	bufr/tables/0/wmo/8/codetables/20021.table\
-	bufr/tables/0/wmo/8/codetables/20022.table\
-	bufr/tables/0/wmo/8/codetables/20023.table\
-	bufr/tables/0/wmo/8/codetables/20024.table\
-	bufr/tables/0/wmo/8/codetables/20025.table\
-	bufr/tables/0/wmo/8/codetables/20026.table\
-	bufr/tables/0/wmo/8/codetables/20027.table\
-	bufr/tables/0/wmo/8/codetables/20029.table\
-	bufr/tables/0/wmo/8/codetables/2003.table\
-	bufr/tables/0/wmo/8/codetables/20032.table\
-	bufr/tables/0/wmo/8/codetables/20033.table\
-	bufr/tables/0/wmo/8/codetables/20034.table\
-	bufr/tables/0/wmo/8/codetables/20035.table\
-	bufr/tables/0/wmo/8/codetables/20036.table\
-	bufr/tables/0/wmo/8/codetables/20037.table\
-	bufr/tables/0/wmo/8/codetables/2004.table\
-	bufr/tables/0/wmo/8/codetables/20040.table\
-	bufr/tables/0/wmo/8/codetables/20041.table\
-	bufr/tables/0/wmo/8/codetables/20042.table\
-	bufr/tables/0/wmo/8/codetables/20045.table\
-	bufr/tables/0/wmo/8/codetables/20050.table\
-	bufr/tables/0/wmo/8/codetables/20055.table\
-	bufr/tables/0/wmo/8/codetables/20056.table\
-	bufr/tables/0/wmo/8/codetables/20062.table\
-	bufr/tables/0/wmo/8/codetables/20063.table\
-	bufr/tables/0/wmo/8/codetables/20071.table\
-	bufr/tables/0/wmo/8/codetables/20086.table\
-	bufr/tables/0/wmo/8/codetables/20090.table\
-	bufr/tables/0/wmo/8/codetables/20101.table\
-	bufr/tables/0/wmo/8/codetables/20102.table\
-	bufr/tables/0/wmo/8/codetables/2011.table\
-	bufr/tables/0/wmo/8/codetables/2012.table\
-	bufr/tables/0/wmo/8/codetables/2013.table\
-	bufr/tables/0/wmo/8/codetables/2014.table\
-	bufr/tables/0/wmo/8/codetables/2015.table\
-	bufr/tables/0/wmo/8/codetables/2016.table\
-	bufr/tables/0/wmo/8/codetables/2019.table\
-	bufr/tables/0/wmo/8/codetables/2020.table\
-	bufr/tables/0/wmo/8/codetables/2021.table\
-	bufr/tables/0/wmo/8/codetables/2022.table\
-	bufr/tables/0/wmo/8/codetables/2023.table\
-	bufr/tables/0/wmo/8/codetables/2024.table\
-	bufr/tables/0/wmo/8/codetables/2025.table\
-	bufr/tables/0/wmo/8/codetables/2030.table\
-	bufr/tables/0/wmo/8/codetables/2031.table\
-	bufr/tables/0/wmo/8/codetables/2032.table\
-	bufr/tables/0/wmo/8/codetables/2033.table\
-	bufr/tables/0/wmo/8/codetables/2034.table\
-	bufr/tables/0/wmo/8/codetables/2036.table\
-	bufr/tables/0/wmo/8/codetables/2037.table\
-	bufr/tables/0/wmo/8/codetables/2038.table\
-	bufr/tables/0/wmo/8/codetables/2039.table\
-	bufr/tables/0/wmo/8/codetables/2040.table\
-	bufr/tables/0/wmo/8/codetables/2041.table\
-	bufr/tables/0/wmo/8/codetables/2044.table\
-	bufr/tables/0/wmo/8/codetables/2045.table\
-	bufr/tables/0/wmo/8/codetables/2046.table\
-	bufr/tables/0/wmo/8/codetables/2048.table\
-	bufr/tables/0/wmo/8/codetables/2049.table\
-	bufr/tables/0/wmo/8/codetables/2050.table\
-	bufr/tables/0/wmo/8/codetables/2051.table\
-	bufr/tables/0/wmo/8/codetables/2052.table\
-	bufr/tables/0/wmo/8/codetables/2053.table\
-	bufr/tables/0/wmo/8/codetables/2054.table\
-	bufr/tables/0/wmo/8/codetables/2055.table\
-	bufr/tables/0/wmo/8/codetables/2056.table\
-	bufr/tables/0/wmo/8/codetables/2057.table\
-	bufr/tables/0/wmo/8/codetables/2058.table\
-	bufr/tables/0/wmo/8/codetables/2059.table\
-	bufr/tables/0/wmo/8/codetables/2060.table\
-	bufr/tables/0/wmo/8/codetables/2061.table\
-	bufr/tables/0/wmo/8/codetables/2062.table\
-	bufr/tables/0/wmo/8/codetables/2064.table\
-	bufr/tables/0/wmo/8/codetables/2066.table\
-	bufr/tables/0/wmo/8/codetables/2070.table\
-	bufr/tables/0/wmo/8/codetables/2080.table\
-	bufr/tables/0/wmo/8/codetables/2081.table\
-	bufr/tables/0/wmo/8/codetables/2083.table\
-	bufr/tables/0/wmo/8/codetables/2084.table\
-	bufr/tables/0/wmo/8/codetables/2095.table\
-	bufr/tables/0/wmo/8/codetables/2096.table\
-	bufr/tables/0/wmo/8/codetables/2097.table\
-	bufr/tables/0/wmo/8/codetables/2098.table\
-	bufr/tables/0/wmo/8/codetables/2101.table\
-	bufr/tables/0/wmo/8/codetables/2103.table\
-	bufr/tables/0/wmo/8/codetables/2104.table\
-	bufr/tables/0/wmo/8/codetables/21066.table\
-	bufr/tables/0/wmo/8/codetables/21067.table\
-	bufr/tables/0/wmo/8/codetables/21068.table\
-	bufr/tables/0/wmo/8/codetables/21069.table\
-	bufr/tables/0/wmo/8/codetables/21070.table\
-	bufr/tables/0/wmo/8/codetables/21072.table\
-	bufr/tables/0/wmo/8/codetables/21073.table\
-	bufr/tables/0/wmo/8/codetables/21076.table\
-	bufr/tables/0/wmo/8/codetables/21109.table\
-	bufr/tables/0/wmo/8/codetables/21115.table\
-	bufr/tables/0/wmo/8/codetables/21116.table\
-	bufr/tables/0/wmo/8/codetables/21119.table\
-	bufr/tables/0/wmo/8/codetables/21144.table\
-	bufr/tables/0/wmo/8/codetables/2115.table\
-	bufr/tables/0/wmo/8/codetables/21150.table\
-	bufr/tables/0/wmo/8/codetables/21155.table\
-	bufr/tables/0/wmo/8/codetables/21158.table\
-	bufr/tables/0/wmo/8/codetables/21159.table\
-	bufr/tables/0/wmo/8/codetables/21169.table\
-	bufr/tables/0/wmo/8/codetables/2119.table\
-	bufr/tables/0/wmo/8/codetables/2131.table\
-	bufr/tables/0/wmo/8/codetables/2143.table\
-	bufr/tables/0/wmo/8/codetables/2144.table\
-	bufr/tables/0/wmo/8/codetables/2145.table\
-	bufr/tables/0/wmo/8/codetables/2146.table\
-	bufr/tables/0/wmo/8/codetables/2148.table\
-	bufr/tables/0/wmo/8/codetables/2149.table\
-	bufr/tables/0/wmo/8/codetables/2150.table\
-	bufr/tables/0/wmo/8/codetables/2151.table\
-	bufr/tables/0/wmo/8/codetables/2152.table\
-	bufr/tables/0/wmo/8/codetables/2158.table\
-	bufr/tables/0/wmo/8/codetables/2159.table\
-	bufr/tables/0/wmo/8/codetables/2163.table\
-	bufr/tables/0/wmo/8/codetables/2164.table\
-	bufr/tables/0/wmo/8/codetables/2166.table\
-	bufr/tables/0/wmo/8/codetables/2167.table\
-	bufr/tables/0/wmo/8/codetables/2169.table\
-	bufr/tables/0/wmo/8/codetables/2172.table\
-	bufr/tables/0/wmo/8/codetables/2175.table\
-	bufr/tables/0/wmo/8/codetables/2176.table\
-	bufr/tables/0/wmo/8/codetables/2177.table\
-	bufr/tables/0/wmo/8/codetables/2178.table\
-	bufr/tables/0/wmo/8/codetables/2179.table\
-	bufr/tables/0/wmo/8/codetables/2180.table\
-	bufr/tables/0/wmo/8/codetables/2181.table\
-	bufr/tables/0/wmo/8/codetables/2182.table\
-	bufr/tables/0/wmo/8/codetables/2183.table\
-	bufr/tables/0/wmo/8/codetables/2184.table\
-	bufr/tables/0/wmo/8/codetables/2185.table\
-	bufr/tables/0/wmo/8/codetables/2186.table\
-	bufr/tables/0/wmo/8/codetables/2187.table\
-	bufr/tables/0/wmo/8/codetables/2188.table\
-	bufr/tables/0/wmo/8/codetables/2189.table\
-	bufr/tables/0/wmo/8/codetables/22056.table\
-	bufr/tables/0/wmo/8/codetables/22060.table\
-	bufr/tables/0/wmo/8/codetables/22061.table\
-	bufr/tables/0/wmo/8/codetables/22067.table\
-	bufr/tables/0/wmo/8/codetables/22068.table\
-	bufr/tables/0/wmo/8/codetables/22120.table\
-	bufr/tables/0/wmo/8/codetables/22121.table\
-	bufr/tables/0/wmo/8/codetables/22122.table\
-	bufr/tables/0/wmo/8/codetables/22123.table\
-	bufr/tables/0/wmo/8/codetables/23001.table\
-	bufr/tables/0/wmo/8/codetables/23002.table\
-	bufr/tables/0/wmo/8/codetables/23003.table\
-	bufr/tables/0/wmo/8/codetables/23004.table\
-	bufr/tables/0/wmo/8/codetables/23005.table\
-	bufr/tables/0/wmo/8/codetables/23006.table\
-	bufr/tables/0/wmo/8/codetables/23007.table\
-	bufr/tables/0/wmo/8/codetables/23008.table\
-	bufr/tables/0/wmo/8/codetables/23009.table\
-	bufr/tables/0/wmo/8/codetables/23016.table\
-	bufr/tables/0/wmo/8/codetables/23018.table\
-	bufr/tables/0/wmo/8/codetables/23031.table\
-	bufr/tables/0/wmo/8/codetables/23032.table\
-	bufr/tables/0/wmo/8/codetables/24003.table\
-	bufr/tables/0/wmo/8/codetables/25004.table\
-	bufr/tables/0/wmo/8/codetables/25005.table\
-	bufr/tables/0/wmo/8/codetables/25006.table\
-	bufr/tables/0/wmo/8/codetables/25009.table\
-	bufr/tables/0/wmo/8/codetables/25010.table\
-	bufr/tables/0/wmo/8/codetables/25011.table\
-	bufr/tables/0/wmo/8/codetables/25012.table\
-	bufr/tables/0/wmo/8/codetables/25013.table\
-	bufr/tables/0/wmo/8/codetables/25015.table\
-	bufr/tables/0/wmo/8/codetables/25017.table\
-	bufr/tables/0/wmo/8/codetables/25020.table\
-	bufr/tables/0/wmo/8/codetables/25021.table\
-	bufr/tables/0/wmo/8/codetables/25030.table\
-	bufr/tables/0/wmo/8/codetables/25032.table\
-	bufr/tables/0/wmo/8/codetables/25033.table\
-	bufr/tables/0/wmo/8/codetables/25034.table\
-	bufr/tables/0/wmo/8/codetables/25036.table\
-	bufr/tables/0/wmo/8/codetables/25040.table\
-	bufr/tables/0/wmo/8/codetables/25041.table\
-	bufr/tables/0/wmo/8/codetables/25042.table\
-	bufr/tables/0/wmo/8/codetables/25045.table\
-	bufr/tables/0/wmo/8/codetables/25046.table\
-	bufr/tables/0/wmo/8/codetables/25047.table\
-	bufr/tables/0/wmo/8/codetables/25048.table\
-	bufr/tables/0/wmo/8/codetables/25049.table\
-	bufr/tables/0/wmo/8/codetables/25051.table\
-	bufr/tables/0/wmo/8/codetables/25053.table\
-	bufr/tables/0/wmo/8/codetables/25069.table\
-	bufr/tables/0/wmo/8/codetables/25086.table\
-	bufr/tables/0/wmo/8/codetables/25093.table\
-	bufr/tables/0/wmo/8/codetables/25095.table\
-	bufr/tables/0/wmo/8/codetables/25096.table\
-	bufr/tables/0/wmo/8/codetables/25097.table\
-	bufr/tables/0/wmo/8/codetables/25098.table\
-	bufr/tables/0/wmo/8/codetables/25099.table\
-	bufr/tables/0/wmo/8/codetables/25110.table\
-	bufr/tables/0/wmo/8/codetables/25120.table\
-	bufr/tables/0/wmo/8/codetables/25122.table\
-	bufr/tables/0/wmo/8/codetables/25123.table\
-	bufr/tables/0/wmo/8/codetables/25124.table\
-	bufr/tables/0/wmo/8/codetables/26010.table\
-	bufr/tables/0/wmo/8/codetables/29001.table\
-	bufr/tables/0/wmo/8/codetables/29002.table\
-	bufr/tables/0/wmo/8/codetables/30031.table\
-	bufr/tables/0/wmo/8/codetables/30032.table\
-	bufr/tables/0/wmo/8/codetables/31021.table\
-	bufr/tables/0/wmo/8/codetables/31031.table\
-	bufr/tables/0/wmo/8/codetables/33002.table\
-	bufr/tables/0/wmo/8/codetables/33003.table\
-	bufr/tables/0/wmo/8/codetables/33005.table\
-	bufr/tables/0/wmo/8/codetables/33006.table\
-	bufr/tables/0/wmo/8/codetables/33015.table\
-	bufr/tables/0/wmo/8/codetables/33020.table\
-	bufr/tables/0/wmo/8/codetables/33021.table\
-	bufr/tables/0/wmo/8/codetables/33022.table\
-	bufr/tables/0/wmo/8/codetables/33023.table\
-	bufr/tables/0/wmo/8/codetables/33024.table\
-	bufr/tables/0/wmo/8/codetables/33025.table\
-	bufr/tables/0/wmo/8/codetables/33026.table\
-	bufr/tables/0/wmo/8/codetables/33027.table\
-	bufr/tables/0/wmo/8/codetables/33028.table\
-	bufr/tables/0/wmo/8/codetables/33030.table\
-	bufr/tables/0/wmo/8/codetables/33031.table\
-	bufr/tables/0/wmo/8/codetables/33032.table\
-	bufr/tables/0/wmo/8/codetables/33033.table\
-	bufr/tables/0/wmo/8/codetables/33035.table\
-	bufr/tables/0/wmo/8/codetables/33037.table\
-	bufr/tables/0/wmo/8/codetables/33038.table\
-	bufr/tables/0/wmo/8/codetables/33039.table\
-	bufr/tables/0/wmo/8/codetables/33041.table\
-	bufr/tables/0/wmo/8/codetables/33042.table\
-	bufr/tables/0/wmo/8/codetables/33043.table\
-	bufr/tables/0/wmo/8/codetables/33044.table\
-	bufr/tables/0/wmo/8/codetables/33047.table\
-	bufr/tables/0/wmo/8/codetables/33048.table\
-	bufr/tables/0/wmo/8/codetables/33049.table\
-	bufr/tables/0/wmo/8/codetables/33050.table\
-	bufr/tables/0/wmo/8/codetables/33052.table\
-	bufr/tables/0/wmo/8/codetables/33053.table\
-	bufr/tables/0/wmo/8/codetables/33060.table\
-	bufr/tables/0/wmo/8/codetables/35000.table\
-	bufr/tables/0/wmo/8/codetables/35001.table\
-	bufr/tables/0/wmo/8/codetables/35030.table\
-	bufr/tables/0/wmo/8/codetables/35031.table\
-	bufr/tables/0/wmo/8/codetables/35032.table\
-	bufr/tables/0/wmo/8/codetables/35033.table\
-	bufr/tables/0/wmo/8/codetables/35034.table\
-	bufr/tables/0/wmo/8/codetables/40011.table\
-	bufr/tables/0/wmo/8/codetables/40012.table\
-	bufr/tables/0/wmo/8/codetables/40013.table\
-	bufr/tables/0/wmo/8/codetables/4059.table\
-	bufr/tables/0/wmo/8/codetables/8001.table\
-	bufr/tables/0/wmo/8/codetables/8002.table\
-	bufr/tables/0/wmo/8/codetables/8003.table\
-	bufr/tables/0/wmo/8/codetables/8004.table\
-	bufr/tables/0/wmo/8/codetables/8005.table\
-	bufr/tables/0/wmo/8/codetables/8006.table\
-	bufr/tables/0/wmo/8/codetables/8007.table\
-	bufr/tables/0/wmo/8/codetables/8008.table\
-	bufr/tables/0/wmo/8/codetables/8009.table\
-	bufr/tables/0/wmo/8/codetables/8010.table\
-	bufr/tables/0/wmo/8/codetables/8011.table\
-	bufr/tables/0/wmo/8/codetables/8012.table\
-	bufr/tables/0/wmo/8/codetables/8013.table\
-	bufr/tables/0/wmo/8/codetables/8014.table\
-	bufr/tables/0/wmo/8/codetables/8016.table\
-	bufr/tables/0/wmo/8/codetables/8017.table\
-	bufr/tables/0/wmo/8/codetables/8018.table\
-	bufr/tables/0/wmo/8/codetables/8021.table\
-	bufr/tables/0/wmo/8/codetables/8023.table\
-	bufr/tables/0/wmo/8/codetables/8024.table\
-	bufr/tables/0/wmo/8/codetables/8025.table\
-	bufr/tables/0/wmo/8/codetables/8026.table\
-	bufr/tables/0/wmo/8/codetables/8029.table\
-	bufr/tables/0/wmo/8/codetables/8033.table\
-	bufr/tables/0/wmo/8/codetables/8035.table\
-	bufr/tables/0/wmo/8/codetables/8036.table\
-	bufr/tables/0/wmo/8/codetables/8039.table\
-	bufr/tables/0/wmo/8/codetables/8040.table\
-	bufr/tables/0/wmo/8/codetables/8041.table\
-	bufr/tables/0/wmo/8/codetables/8042.table\
-	bufr/tables/0/wmo/8/codetables/8043.table\
-	bufr/tables/0/wmo/8/codetables/8050.table\
-	bufr/tables/0/wmo/8/codetables/8051.table\
-	bufr/tables/0/wmo/8/codetables/8052.table\
-	bufr/tables/0/wmo/8/codetables/8053.table\
-	bufr/tables/0/wmo/8/codetables/8054.table\
-	bufr/tables/0/wmo/8/codetables/8060.table\
-	bufr/tables/0/wmo/8/codetables/8065.table\
-	bufr/tables/0/wmo/8/codetables/8066.table\
-	bufr/tables/0/wmo/8/codetables/8070.table\
-	bufr/tables/0/wmo/8/codetables/8072.table\
-	bufr/tables/0/wmo/8/codetables/8074.table\
-	bufr/tables/0/wmo/8/codetables/8075.table\
-	bufr/tables/0/wmo/8/codetables/8076.table\
-	bufr/tables/0/wmo/8/codetables/8077.table\
-	bufr/tables/0/wmo/8/codetables/8079.table\
-	bufr/tables/0/wmo/8/codetables/8080.table\
-	bufr/tables/0/wmo/8/codetables/8081.table\
-	bufr/tables/0/wmo/8/codetables/8082.table\
-	bufr/tables/0/wmo/8/codetables/8083.table\
-	bufr/tables/0/wmo/8/codetables/8085.table
-
-definitionsbufr_tables_0_wmo_9dir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/9
-dist_definitionsbufr_tables_0_wmo_9_DATA = \
-	bufr/tables/0/wmo/9/element.table\
-	bufr/tables/0/wmo/9/sequence.def
-
-definitionsbufr_tables_0_wmo_9_codetablesdir = @ECCODES_DEFINITION_PATH@/bufr/tables/0/wmo/9/codetables
-dist_definitionsbufr_tables_0_wmo_9_codetables_DATA = \
-	bufr/tables/0/wmo/9/codetables/1003.table\
-	bufr/tables/0/wmo/9/codetables/10063.table\
-	bufr/tables/0/wmo/9/codetables/10064.table\
-	bufr/tables/0/wmo/9/codetables/1007.table\
-	bufr/tables/0/wmo/9/codetables/1031.table\
-	bufr/tables/0/wmo/9/codetables/1032.table\
-	bufr/tables/0/wmo/9/codetables/1033.table\
-	bufr/tables/0/wmo/9/codetables/1035.table\
-	bufr/tables/0/wmo/9/codetables/1090.table\
-	bufr/tables/0/wmo/9/codetables/1092.table\
-	bufr/tables/0/wmo/9/codetables/11031.table\
-	bufr/tables/0/wmo/9/codetables/11037.table\
-	bufr/tables/0/wmo/9/codetables/11038.table\
-	bufr/tables/0/wmo/9/codetables/11039.table\
-	bufr/tables/0/wmo/9/codetables/13038.table\
-	bufr/tables/0/wmo/9/codetables/13039.table\
-	bufr/tables/0/wmo/9/codetables/13040.table\
-	bufr/tables/0/wmo/9/codetables/13041.table\
-	bufr/tables/0/wmo/9/codetables/13051.table\
-	bufr/tables/0/wmo/9/codetables/13056.table\
-	bufr/tables/0/wmo/9/codetables/13057.table\
-	bufr/tables/0/wmo/9/codetables/15025.table\
-	bufr/tables/0/wmo/9/codetables/19001.table\
-	bufr/tables/0/wmo/9/codetables/19008.table\
-	bufr/tables/0/wmo/9/codetables/19010.table\
-	bufr/tables/0/wmo/9/codetables/20003.table\
-	bufr/tables/0/wmo/9/codetables/20004.table\
-	bufr/tables/0/wmo/9/codetables/20005.table\
-	bufr/tables/0/wmo/9/codetables/20008.table\
-	bufr/tables/0/wmo/9/codetables/20009.table\
-	bufr/tables/0/wmo/9/codetables/2001.table\
-	bufr/tables/0/wmo/9/codetables/20011.table\
-	bufr/tables/0/wmo/9/codetables/20012.table\
-	bufr/tables/0/wmo/9/codetables/20017.table\
-	bufr/tables/0/wmo/9/codetables/20018.table\
-	bufr/tables/0/wmo/9/codetables/2002.table\
-	bufr/tables/0/wmo/9/codetables/20021.table\
-	bufr/tables/0/wmo/9/codetables/20022.table\
-	bufr/tables/0/wmo/9/codetables/20023.table\
-	bufr/tables/0/wmo/9/codetables/20024.table\
-	bufr/tables/0/wmo/9/codetables/20025.table\
-	bufr/tables/0/wmo/9/codetables/20026.table\
-	bufr/tables/0/wmo/9/codetables/20027.table\
-	bufr/tables/0/wmo/9/codetables/20029.table\
-	bufr/tables/0/wmo/9/codetables/2003.table\
-	bufr/tables/0/wmo/9/codetables/20032.table\
-	bufr/tables/0/wmo/9/codetables/20033.table\
-	bufr/tables/0/wmo/9/codetables/20034.table\
-	bufr/tables/0/wmo/9/codetables/20035.table\
-	bufr/tables/0/wmo/9/codetables/20036.table\
-	bufr/tables/0/wmo/9/codetables/20037.table\
-	bufr/tables/0/wmo/9/codetables/2004.table\
-	bufr/tables/0/wmo/9/codetables/20040.table\
-	bufr/tables/0/wmo/9/codetables/20041.table\
-	bufr/tables/0/wmo/9/codetables/20042.table\
-	bufr/tables/0/wmo/9/codetables/20045.table\
-	bufr/tables/0/wmo/9/codetables/20050.table\
-	bufr/tables/0/wmo/9/codetables/20055.table\
-	bufr/tables/0/wmo/9/codetables/20056.table\
-	bufr/tables/0/wmo/9/codetables/20062.table\
-	bufr/tables/0/wmo/9/codetables/20063.table\
-	bufr/tables/0/wmo/9/codetables/20071.table\
-	bufr/tables/0/wmo/9/codetables/20086.table\
-	bufr/tables/0/wmo/9/codetables/20090.table\
-	bufr/tables/0/wmo/9/codetables/20101.table\
-	bufr/tables/0/wmo/9/codetables/20102.table\
-	bufr/tables/0/wmo/9/codetables/2011.table\
-	bufr/tables/0/wmo/9/codetables/2012.table\
-	bufr/tables/0/wmo/9/codetables/2013.table\
-	bufr/tables/0/wmo/9/codetables/2014.table\
-	bufr/tables/0/wmo/9/codetables/2015.table\
-	bufr/tables/0/wmo/9/codetables/2016.table\
-	bufr/tables/0/wmo/9/codetables/2019.table\
-	bufr/tables/0/wmo/9/codetables/2020.table\
-	bufr/tables/0/wmo/9/codetables/2021.table\
-	bufr/tables/0/wmo/9/codetables/2022.table\
-	bufr/tables/0/wmo/9/codetables/2023.table\
-	bufr/tables/0/wmo/9/codetables/2024.table\
-	bufr/tables/0/wmo/9/codetables/2025.table\
-	bufr/tables/0/wmo/9/codetables/2030.table\
-	bufr/tables/0/wmo/9/codetables/2031.table\
-	bufr/tables/0/wmo/9/codetables/2032.table\
-	bufr/tables/0/wmo/9/codetables/2033.table\
-	bufr/tables/0/wmo/9/codetables/2034.table\
-	bufr/tables/0/wmo/9/codetables/2036.table\
-	bufr/tables/0/wmo/9/codetables/2037.table\
-	bufr/tables/0/wmo/9/codetables/2038.table\
-	bufr/tables/0/wmo/9/codetables/2039.table\
-	bufr/tables/0/wmo/9/codetables/2040.table\
-	bufr/tables/0/wmo/9/codetables/2041.table\
-	bufr/tables/0/wmo/9/codetables/2044.table\
-	bufr/tables/0/wmo/9/codetables/2045.table\
-	bufr/tables/0/wmo/9/codetables/2046.table\
-	bufr/tables/0/wmo/9/codetables/2048.table\
-	bufr/tables/0/wmo/9/codetables/2049.table\
-	bufr/tables/0/wmo/9/codetables/2050.table\
-	bufr/tables/0/wmo/9/codetables/2051.table\
-	bufr/tables/0/wmo/9/codetables/2052.table\
-	bufr/tables/0/wmo/9/codetables/2053.table\
-	bufr/tables/0/wmo/9/codetables/2054.table\
-	bufr/tables/0/wmo/9/codetables/2055.table\
-	bufr/tables/0/wmo/9/codetables/2056.table\
-	bufr/tables/0/wmo/9/codetables/2057.table\
-	bufr/tables/0/wmo/9/codetables/2058.table\
-	bufr/tables/0/wmo/9/codetables/2059.table\
-	bufr/tables/0/wmo/9/codetables/2060.table\
-	bufr/tables/0/wmo/9/codetables/2061.table\
-	bufr/tables/0/wmo/9/codetables/2062.table\
-	bufr/tables/0/wmo/9/codetables/2064.table\
-	bufr/tables/0/wmo/9/codetables/2066.table\
-	bufr/tables/0/wmo/9/codetables/2070.table\
-	bufr/tables/0/wmo/9/codetables/2080.table\
-	bufr/tables/0/wmo/9/codetables/2081.table\
-	bufr/tables/0/wmo/9/codetables/2083.table\
-	bufr/tables/0/wmo/9/codetables/2084.table\
-	bufr/tables/0/wmo/9/codetables/2095.table\
-	bufr/tables/0/wmo/9/codetables/2096.table\
-	bufr/tables/0/wmo/9/codetables/2097.table\
-	bufr/tables/0/wmo/9/codetables/2098.table\
-	bufr/tables/0/wmo/9/codetables/2101.table\
-	bufr/tables/0/wmo/9/codetables/2103.table\
-	bufr/tables/0/wmo/9/codetables/2104.table\
-	bufr/tables/0/wmo/9/codetables/21066.table\
-	bufr/tables/0/wmo/9/codetables/21067.table\
-	bufr/tables/0/wmo/9/codetables/21068.table\
-	bufr/tables/0/wmo/9/codetables/21069.table\
-	bufr/tables/0/wmo/9/codetables/21070.table\
-	bufr/tables/0/wmo/9/codetables/21072.table\
-	bufr/tables/0/wmo/9/codetables/21073.table\
-	bufr/tables/0/wmo/9/codetables/21076.table\
-	bufr/tables/0/wmo/9/codetables/21109.table\
-	bufr/tables/0/wmo/9/codetables/21115.table\
-	bufr/tables/0/wmo/9/codetables/21116.table\
-	bufr/tables/0/wmo/9/codetables/21119.table\
-	bufr/tables/0/wmo/9/codetables/21144.table\
-	bufr/tables/0/wmo/9/codetables/2115.table\
-	bufr/tables/0/wmo/9/codetables/21150.table\
-	bufr/tables/0/wmo/9/codetables/21155.table\
-	bufr/tables/0/wmo/9/codetables/21158.table\
-	bufr/tables/0/wmo/9/codetables/21159.table\
-	bufr/tables/0/wmo/9/codetables/21169.table\
-	bufr/tables/0/wmo/9/codetables/2119.table\
-	bufr/tables/0/wmo/9/codetables/2131.table\
-	bufr/tables/0/wmo/9/codetables/2143.table\
-	bufr/tables/0/wmo/9/codetables/2144.table\
-	bufr/tables/0/wmo/9/codetables/2145.table\
-	bufr/tables/0/wmo/9/codetables/2146.table\
-	bufr/tables/0/wmo/9/codetables/2148.table\
-	bufr/tables/0/wmo/9/codetables/2149.table\
-	bufr/tables/0/wmo/9/codetables/2150.table\
-	bufr/tables/0/wmo/9/codetables/2151.table\
-	bufr/tables/0/wmo/9/codetables/2152.table\
-	bufr/tables/0/wmo/9/codetables/2158.table\
-	bufr/tables/0/wmo/9/codetables/2159.table\
-	bufr/tables/0/wmo/9/codetables/2163.table\
-	bufr/tables/0/wmo/9/codetables/2164.table\
-	bufr/tables/0/wmo/9/codetables/2166.table\
-	bufr/tables/0/wmo/9/codetables/2167.table\
-	bufr/tables/0/wmo/9/codetables/2169.table\
-	bufr/tables/0/wmo/9/codetables/2172.table\
-	bufr/tables/0/wmo/9/codetables/2175.table\
-	bufr/tables/0/wmo/9/codetables/2176.table\
-	bufr/tables/0/wmo/9/codetables/2177.table\
-	bufr/tables/0/wmo/9/codetables/2178.table\
-	bufr/tables/0/wmo/9/codetables/2179.table\
-	bufr/tables/0/wmo/9/codetables/2180.table\
-	bufr/tables/0/wmo/9/codetables/2181.table\
-	bufr/tables/0/wmo/9/codetables/2182.table\
-	bufr/tables/0/wmo/9/codetables/2183.table\
-	bufr/tables/0/wmo/9/codetables/2184.table\
-	bufr/tables/0/wmo/9/codetables/2185.table\
-	bufr/tables/0/wmo/9/codetables/2186.table\
-	bufr/tables/0/wmo/9/codetables/2187.table\
-	bufr/tables/0/wmo/9/codetables/2188.table\
-	bufr/tables/0/wmo/9/codetables/2189.table\
-	bufr/tables/0/wmo/9/codetables/22056.table\
-	bufr/tables/0/wmo/9/codetables/22060.table\
-	bufr/tables/0/wmo/9/codetables/22061.table\
-	bufr/tables/0/wmo/9/codetables/22067.table\
-	bufr/tables/0/wmo/9/codetables/22068.table\
-	bufr/tables/0/wmo/9/codetables/22120.table\
-	bufr/tables/0/wmo/9/codetables/22121.table\
-	bufr/tables/0/wmo/9/codetables/22122.table\
-	bufr/tables/0/wmo/9/codetables/22123.table\
-	bufr/tables/0/wmo/9/codetables/23001.table\
-	bufr/tables/0/wmo/9/codetables/23002.table\
-	bufr/tables/0/wmo/9/codetables/23003.table\
-	bufr/tables/0/wmo/9/codetables/23004.table\
-	bufr/tables/0/wmo/9/codetables/23005.table\
-	bufr/tables/0/wmo/9/codetables/23006.table\
-	bufr/tables/0/wmo/9/codetables/23007.table\
-	bufr/tables/0/wmo/9/codetables/23008.table\
-	bufr/tables/0/wmo/9/codetables/23009.table\
-	bufr/tables/0/wmo/9/codetables/23016.table\
-	bufr/tables/0/wmo/9/codetables/23018.table\
-	bufr/tables/0/wmo/9/codetables/23031.table\
-	bufr/tables/0/wmo/9/codetables/23032.table\
-	bufr/tables/0/wmo/9/codetables/24003.table\
-	bufr/tables/0/wmo/9/codetables/25004.table\
-	bufr/tables/0/wmo/9/codetables/25005.table\
-	bufr/tables/0/wmo/9/codetables/25006.table\
-	bufr/tables/0/wmo/9/codetables/25009.table\
-	bufr/tables/0/wmo/9/codetables/25010.table\
-	bufr/tables/0/wmo/9/codetables/25011.table\
-	bufr/tables/0/wmo/9/codetables/25012.table\
-	bufr/tables/0/wmo/9/codetables/25013.table\
-	bufr/tables/0/wmo/9/codetables/25015.table\
-	bufr/tables/0/wmo/9/codetables/25017.table\
-	bufr/tables/0/wmo/9/codetables/25020.table\
-	bufr/tables/0/wmo/9/codetables/25021.table\
-	bufr/tables/0/wmo/9/codetables/25030.table\
-	bufr/tables/0/wmo/9/codetables/25032.table\
-	bufr/tables/0/wmo/9/codetables/25033.table\
-	bufr/tables/0/wmo/9/codetables/25034.table\
-	bufr/tables/0/wmo/9/codetables/25036.table\
-	bufr/tables/0/wmo/9/codetables/25040.table\
-	bufr/tables/0/wmo/9/codetables/25041.table\
-	bufr/tables/0/wmo/9/codetables/25042.table\
-	bufr/tables/0/wmo/9/codetables/25045.table\
-	bufr/tables/0/wmo/9/codetables/25046.table\
-	bufr/tables/0/wmo/9/codetables/25047.table\
-	bufr/tables/0/wmo/9/codetables/25048.table\
-	bufr/tables/0/wmo/9/codetables/25049.table\
-	bufr/tables/0/wmo/9/codetables/25051.table\
-	bufr/tables/0/wmo/9/codetables/25053.table\
-	bufr/tables/0/wmo/9/codetables/25069.table\
-	bufr/tables/0/wmo/9/codetables/25086.table\
-	bufr/tables/0/wmo/9/codetables/25093.table\
-	bufr/tables/0/wmo/9/codetables/25095.table\
-	bufr/tables/0/wmo/9/codetables/25096.table\
-	bufr/tables/0/wmo/9/codetables/25097.table\
-	bufr/tables/0/wmo/9/codetables/25098.table\
-	bufr/tables/0/wmo/9/codetables/25099.table\
-	bufr/tables/0/wmo/9/codetables/25110.table\
-	bufr/tables/0/wmo/9/codetables/25120.table\
-	bufr/tables/0/wmo/9/codetables/25122.table\
-	bufr/tables/0/wmo/9/codetables/25123.table\
-	bufr/tables/0/wmo/9/codetables/25124.table\
-	bufr/tables/0/wmo/9/codetables/26010.table\
-	bufr/tables/0/wmo/9/codetables/29001.table\
-	bufr/tables/0/wmo/9/codetables/29002.table\
-	bufr/tables/0/wmo/9/codetables/30031.table\
-	bufr/tables/0/wmo/9/codetables/30032.table\
-	bufr/tables/0/wmo/9/codetables/31021.table\
-	bufr/tables/0/wmo/9/codetables/31031.table\
-	bufr/tables/0/wmo/9/codetables/33002.table\
-	bufr/tables/0/wmo/9/codetables/33003.table\
-	bufr/tables/0/wmo/9/codetables/33005.table\
-	bufr/tables/0/wmo/9/codetables/33006.table\
-	bufr/tables/0/wmo/9/codetables/33015.table\
-	bufr/tables/0/wmo/9/codetables/33020.table\
-	bufr/tables/0/wmo/9/codetables/33021.table\
-	bufr/tables/0/wmo/9/codetables/33022.table\
-	bufr/tables/0/wmo/9/codetables/33023.table\
-	bufr/tables/0/wmo/9/codetables/33024.table\
-	bufr/tables/0/wmo/9/codetables/33025.table\
-	bufr/tables/0/wmo/9/codetables/33026.table\
-	bufr/tables/0/wmo/9/codetables/33027.table\
-	bufr/tables/0/wmo/9/codetables/33028.table\
-	bufr/tables/0/wmo/9/codetables/33030.table\
-	bufr/tables/0/wmo/9/codetables/33031.table\
-	bufr/tables/0/wmo/9/codetables/33032.table\
-	bufr/tables/0/wmo/9/codetables/33033.table\
-	bufr/tables/0/wmo/9/codetables/33035.table\
-	bufr/tables/0/wmo/9/codetables/33037.table\
-	bufr/tables/0/wmo/9/codetables/33038.table\
-	bufr/tables/0/wmo/9/codetables/33039.table\
-	bufr/tables/0/wmo/9/codetables/33041.table\
-	bufr/tables/0/wmo/9/codetables/33042.table\
-	bufr/tables/0/wmo/9/codetables/33043.table\
-	bufr/tables/0/wmo/9/codetables/33044.table\
-	bufr/tables/0/wmo/9/codetables/33047.table\
-	bufr/tables/0/wmo/9/codetables/33048.table\
-	bufr/tables/0/wmo/9/codetables/33049.table\
-	bufr/tables/0/wmo/9/codetables/33050.table\
-	bufr/tables/0/wmo/9/codetables/33052.table\
-	bufr/tables/0/wmo/9/codetables/33053.table\
-	bufr/tables/0/wmo/9/codetables/33060.table\
-	bufr/tables/0/wmo/9/codetables/35000.table\
-	bufr/tables/0/wmo/9/codetables/35001.table\
-	bufr/tables/0/wmo/9/codetables/35030.table\
-	bufr/tables/0/wmo/9/codetables/35031.table\
-	bufr/tables/0/wmo/9/codetables/35032.table\
-	bufr/tables/0/wmo/9/codetables/35033.table\
-	bufr/tables/0/wmo/9/codetables/35034.table\
-	bufr/tables/0/wmo/9/codetables/40011.table\
-	bufr/tables/0/wmo/9/codetables/40012.table\
-	bufr/tables/0/wmo/9/codetables/40013.table\
-	bufr/tables/0/wmo/9/codetables/4059.table\
-	bufr/tables/0/wmo/9/codetables/8001.table\
-	bufr/tables/0/wmo/9/codetables/8002.table\
-	bufr/tables/0/wmo/9/codetables/8003.table\
-	bufr/tables/0/wmo/9/codetables/8004.table\
-	bufr/tables/0/wmo/9/codetables/8005.table\
-	bufr/tables/0/wmo/9/codetables/8006.table\
-	bufr/tables/0/wmo/9/codetables/8007.table\
-	bufr/tables/0/wmo/9/codetables/8008.table\
-	bufr/tables/0/wmo/9/codetables/8009.table\
-	bufr/tables/0/wmo/9/codetables/8010.table\
-	bufr/tables/0/wmo/9/codetables/8011.table\
-	bufr/tables/0/wmo/9/codetables/8012.table\
-	bufr/tables/0/wmo/9/codetables/8013.table\
-	bufr/tables/0/wmo/9/codetables/8014.table\
-	bufr/tables/0/wmo/9/codetables/8016.table\
-	bufr/tables/0/wmo/9/codetables/8017.table\
-	bufr/tables/0/wmo/9/codetables/8018.table\
-	bufr/tables/0/wmo/9/codetables/8021.table\
-	bufr/tables/0/wmo/9/codetables/8023.table\
-	bufr/tables/0/wmo/9/codetables/8024.table\
-	bufr/tables/0/wmo/9/codetables/8025.table\
-	bufr/tables/0/wmo/9/codetables/8026.table\
-	bufr/tables/0/wmo/9/codetables/8029.table\
-	bufr/tables/0/wmo/9/codetables/8033.table\
-	bufr/tables/0/wmo/9/codetables/8035.table\
-	bufr/tables/0/wmo/9/codetables/8036.table\
-	bufr/tables/0/wmo/9/codetables/8039.table\
-	bufr/tables/0/wmo/9/codetables/8040.table\
-	bufr/tables/0/wmo/9/codetables/8041.table\
-	bufr/tables/0/wmo/9/codetables/8042.table\
-	bufr/tables/0/wmo/9/codetables/8043.table\
-	bufr/tables/0/wmo/9/codetables/8050.table\
-	bufr/tables/0/wmo/9/codetables/8051.table\
-	bufr/tables/0/wmo/9/codetables/8052.table\
-	bufr/tables/0/wmo/9/codetables/8053.table\
-	bufr/tables/0/wmo/9/codetables/8054.table\
-	bufr/tables/0/wmo/9/codetables/8060.table\
-	bufr/tables/0/wmo/9/codetables/8065.table\
-	bufr/tables/0/wmo/9/codetables/8066.table\
-	bufr/tables/0/wmo/9/codetables/8070.table\
-	bufr/tables/0/wmo/9/codetables/8072.table\
-	bufr/tables/0/wmo/9/codetables/8074.table\
-	bufr/tables/0/wmo/9/codetables/8075.table\
-	bufr/tables/0/wmo/9/codetables/8076.table\
-	bufr/tables/0/wmo/9/codetables/8077.table\
-	bufr/tables/0/wmo/9/codetables/8079.table\
-	bufr/tables/0/wmo/9/codetables/8080.table\
-	bufr/tables/0/wmo/9/codetables/8081.table\
-	bufr/tables/0/wmo/9/codetables/8082.table\
-	bufr/tables/0/wmo/9/codetables/8083.table\
-	bufr/tables/0/wmo/9/codetables/8085.table
-
-definitionsbufr_tables_3_local_1_98_0dir = @ECCODES_DEFINITION_PATH@/bufr/tables/3/local/1/98/0
-dist_definitionsbufr_tables_3_local_1_98_0_DATA = \
-	bufr/tables/3/local/1/98/0/element.table\
-	bufr/tables/3/local/1/98/0/sequence.def
-
-definitionsbufr_tables_3_wmo_11dir = @ECCODES_DEFINITION_PATH@/bufr/tables/3/wmo/11
-dist_definitionsbufr_tables_3_wmo_11_DATA = \
-	bufr/tables/3/wmo/11/element.table\
-	bufr/tables/3/wmo/11/sequence.def
-
-definitionsbufr_tables_3_wmo_6dir = @ECCODES_DEFINITION_PATH@/bufr/tables/3/wmo/6
-dist_definitionsbufr_tables_3_wmo_6_DATA = \
-	bufr/tables/3/wmo/6/element.table\
-	bufr/tables/3/wmo/6/sequence.def
-
-definitionsbufr_templatesdir = @ECCODES_DEFINITION_PATH@/bufr/templates
-dist_definitionsbufr_templates_DATA = \
-	bufr/templates/BufrTemplate.def
-
-definitionsbufr_templates_localdir = @ECCODES_DEFINITION_PATH@/bufr/templates/local
-dist_definitionsbufr_templates_local_DATA = \
-	bufr/templates/local/BufrTemplate.def
-
-definitionscdfdir = @ECCODES_DEFINITION_PATH@/cdf
-dist_definitionscdf_DATA = \
-	cdf/boot.def
-
-definitionscommondir = @ECCODES_DEFINITION_PATH@/common
-dist_definitionscommon_DATA = \
-	common/statistics_grid.def\
-	common/statistics_spectral.def
-
-definitionsgrib1dir = @ECCODES_DEFINITION_PATH@/grib1
-dist_definitionsgrib1_DATA = \
-	grib1/0.ecmf.table\
-	grib1/0.eidb.table\
-	grib1/0.eswi.table\
-	grib1/0.rjtd.table\
-	grib1/0.table\
-	grib1/1.table\
-	grib1/10.table\
-	grib1/11-2.table\
-	grib1/11.table\
-	grib1/12.table\
-	grib1/13.table\
-	grib1/2.0.1.table\
-	grib1/2.0.2.table\
-	grib1/2.0.3.table\
-	grib1/2.128.table\
-	grib1/2.233.1.table\
-	grib1/2.233.253.table\
-	grib1/2.253.128.table\
-	grib1/2.34.200.table\
-	grib1/2.46.254.table\
-	grib1/2.82.1.table\
-	grib1/2.82.128.table\
-	grib1/2.82.129.table\
-	grib1/2.82.130.table\
-	grib1/2.82.131.table\
-	grib1/2.82.133.table\
-	grib1/2.82.134.table\
-	grib1/2.82.135.table\
-	grib1/2.82.136.table\
-	grib1/2.82.253.table\
-	grib1/2.98.128.table\
-	grib1/2.98.129.table\
-	grib1/2.98.130.table\
-	grib1/2.98.131.table\
-	grib1/2.98.132.table\
-	grib1/2.98.133.table\
-	grib1/2.98.140.table\
-	grib1/2.98.150.table\
-	grib1/2.98.151.table\
-	grib1/2.98.160.table\
-	grib1/2.98.162.table\
-	grib1/2.98.170.table\
-	grib1/2.98.171.table\
-	grib1/2.98.172.table\
-	grib1/2.98.173.table\
-	grib1/2.98.174.table\
-	grib1/2.98.175.table\
-	grib1/2.98.180.table\
-	grib1/2.98.190.table\
-	grib1/2.98.200.table\
-	grib1/2.98.201.table\
-	grib1/2.98.210.table\
-	grib1/2.98.211.table\
-	grib1/2.98.220.table\
-	grib1/2.98.228.table\
-	grib1/2.98.230.table\
-	grib1/2.98.235.table\
-	grib1/2.table\
-	grib1/3.233.table\
-	grib1/3.82.table\
-	grib1/3.98.table\
-	grib1/3.table\
-	grib1/4.table\
-	grib1/5.table\
-	grib1/6.table\
-	grib1/7.table\
-	grib1/8.table\
-	grib1/9.table\
-	grib1/boot.def\
-	grib1/cfName.def\
-	grib1/cfVarName.def\
-	grib1/cluster_domain.def\
-	grib1/data.grid_ieee.def\
-	grib1/data.grid_jpeg.def\
-	grib1/data.grid_second_order.def\
-	grib1/data.grid_second_order_SPD1.def\
-	grib1/data.grid_second_order_SPD2.def\
-	grib1/data.grid_second_order_SPD3.def\
-	grib1/data.grid_second_order_constant_width.def\
-	grib1/data.grid_second_order_general_grib1.def\
-	grib1/data.grid_second_order_no_SPD.def\
-	grib1/data.grid_second_order_row_by_row.def\
-	grib1/data.grid_simple.def\
-	grib1/data.grid_simple_matrix.def\
-	grib1/data.spectral_complex.def\
-	grib1/data.spectral_ieee.def\
-	grib1/data.spectral_simple.def\
-	grib1/gds_not_present_bitmap.def\
-	grib1/grid.192.78.3.10.table\
-	grib1/grid.192.78.3.9.table\
-	grib1/grid_21.def\
-	grib1/grid_22.def\
-	grib1/grid_23.def\
-	grib1/grid_24.def\
-	grib1/grid_25.def\
-	grib1/grid_26.def\
-	grib1/grid_61.def\
-	grib1/grid_62.def\
-	grib1/grid_63.def\
-	grib1/grid_64.def\
-	grib1/grid_definition_0.def\
-	grib1/grid_definition_1.def\
-	grib1/grid_definition_10.def\
-	grib1/grid_definition_13.def\
-	grib1/grid_definition_14.def\
-	grib1/grid_definition_192.78.def\
-	grib1/grid_definition_192.98.def\
-	grib1/grid_definition_193.98.def\
-	grib1/grid_definition_20.def\
-	grib1/grid_definition_24.def\
-	grib1/grid_definition_3.def\
-	grib1/grid_definition_30.def\
-	grib1/grid_definition_34.def\
-	grib1/grid_definition_4.def\
-	grib1/grid_definition_5.def\
-	grib1/grid_definition_50.def\
-	grib1/grid_definition_60.def\
-	grib1/grid_definition_70.def\
-	grib1/grid_definition_8.def\
-	grib1/grid_definition_80.def\
-	grib1/grid_definition_90.def\
-	grib1/grid_definition_gaussian.def\
-	grib1/grid_definition_lambert.def\
-	grib1/grid_definition_latlon.def\
-	grib1/grid_definition_spherical_harmonics.def\
-	grib1/grid_first_last_resandcomp.def\
-	grib1/grid_rotation.def\
-	grib1/grid_stretching.def\
-	grib1/local.1.def\
-	grib1/local.13.table\
-	grib1/local.214.1.def\
-	grib1/local.214.244.def\
-	grib1/local.214.245.def\
-	grib1/local.214.def\
-	grib1/local.253.def\
-	grib1/local.254.def\
-	grib1/local.34.1.def\
-	grib1/local.34.def\
-	grib1/local.46.def\
-	grib1/local.54.def\
-	grib1/local.7.1.def\
-	grib1/local.7.def\
-	grib1/local.78.def\
-	grib1/local.80.def\
-	grib1/local.82.0.def\
-	grib1/local.82.82.def\
-	grib1/local.82.83.def\
-	grib1/local.82.def\
-	grib1/local.85.def\
-	grib1/local.96.def\
-	grib1/local.98.1.def\
-	grib1/local.98.10.def\
-	grib1/local.98.11.def\
-	grib1/local.98.13.def\
-	grib1/local.98.14.def\
-	grib1/local.98.15.def\
-	grib1/local.98.16.def\
-	grib1/local.98.17.def\
-	grib1/local.98.18.def\
-	grib1/local.98.19.def\
-	grib1/local.98.190.def\
-	grib1/local.98.191.def\
-	grib1/local.98.192.def\
-	grib1/local.98.2.def\
-	grib1/local.98.20.def\
-	grib1/local.98.21.def\
-	grib1/local.98.218.def\
-	grib1/local.98.23.def\
-	grib1/local.98.24.def\
-	grib1/local.98.244.def\
-	grib1/local.98.245.def\
-	grib1/local.98.25.def\
-	grib1/local.98.26.def\
-	grib1/local.98.27.def\
-	grib1/local.98.28.def\
-	grib1/local.98.29.def\
-	grib1/local.98.3.def\
-	grib1/local.98.30.def\
-	grib1/local.98.31.def\
-	grib1/local.98.32.def\
-	grib1/local.98.33.def\
-	grib1/local.98.35.def\
-	grib1/local.98.36.def\
-	grib1/local.98.37.def\
-	grib1/local.98.38.def\
-	grib1/local.98.39.def\
-	grib1/local.98.4.def\
-	grib1/local.98.40.def\
-	grib1/local.98.5.def\
-	grib1/local.98.50.def\
-	grib1/local.98.6.def\
-	grib1/local.98.7.def\
-	grib1/local.98.8.def\
-	grib1/local.98.9.def\
-	grib1/local.98.def\
-	grib1/localDefinitionNumber.34.table\
-	grib1/localDefinitionNumber.82.table\
-	grib1/localDefinitionNumber.96.table\
-	grib1/localDefinitionNumber.98.table\
-	grib1/local_no_mars.98.1.def\
-	grib1/local_no_mars.98.24.def\
-	grib1/ls.def\
-	grib1/ls_labeling.82.def\
-	grib1/mars_labeling.23.def\
-	grib1/mars_labeling.4.def\
-	grib1/mars_labeling.82.def\
-	grib1/mars_labeling.def\
-	grib1/name.def\
-	grib1/ocean.1.table\
-	grib1/paramId.def\
-	grib1/precision.table\
-	grib1/predefined_grid.def\
-	grib1/regimes.table\
-	grib1/resolution_flags.def\
-	grib1/scanning_mode.def\
-	grib1/section.0.def\
-	grib1/section.1.def\
-	grib1/section.2.def\
-	grib1/section.3.def\
-	grib1/section.4.def\
-	grib1/section.5.def\
-	grib1/sensitive_area_domain.def\
-	grib1/shortName.def\
-	grib1/stepType.def\
-	grib1/tube_domain.def\
-	grib1/typeOfLevel.def\
-	grib1/units.def
-
-definitionsgrib1_local_ecmfdir = @ECCODES_DEFINITION_PATH@/grib1/local/ecmf
-dist_definitionsgrib1_local_ecmf_DATA = \
-	grib1/local/ecmf/3.table\
-	grib1/local/ecmf/5.table
-
-definitionsgrib1_local_edzwdir = @ECCODES_DEFINITION_PATH@/grib1/local/edzw
-dist_definitionsgrib1_local_edzw_DATA = \
-	grib1/local/edzw/2.0.3.table\
-	grib1/local/edzw/5.table\
-	grib1/local/edzw/generatingProcessIdentifier.table
-
-definitionsgrib1_local_rjtddir = @ECCODES_DEFINITION_PATH@/grib1/local/rjtd
-dist_definitionsgrib1_local_rjtd_DATA = \
-	grib1/local/rjtd/252.table\
-	grib1/local/rjtd/3.table\
-	grib1/local/rjtd/5.table
-
-definitionsgrib1_localConcepts_ammcdir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/ammc
-dist_definitionsgrib1_localConcepts_ammc_DATA = \
-	grib1/localConcepts/ammc/name.def\
-	grib1/localConcepts/ammc/paramId.def\
-	grib1/localConcepts/ammc/shortName.def\
-	grib1/localConcepts/ammc/units.def
-
-definitionsgrib1_localConcepts_cnmcdir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/cnmc
-dist_definitionsgrib1_localConcepts_cnmc_DATA = \
-	grib1/localConcepts/cnmc/name.def\
-	grib1/localConcepts/cnmc/paramId.def\
-	grib1/localConcepts/cnmc/shortName.def\
-	grib1/localConcepts/cnmc/units.def
-
-definitionsgrib1_localConcepts_ecmfdir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/ecmf
-dist_definitionsgrib1_localConcepts_ecmf_DATA = \
-	grib1/localConcepts/ecmf/cfName.def\
-	grib1/localConcepts/ecmf/cfVarName.def\
-	grib1/localConcepts/ecmf/name.def\
-	grib1/localConcepts/ecmf/paramId.def\
-	grib1/localConcepts/ecmf/shortName.def\
-	grib1/localConcepts/ecmf/stepType.def\
-	grib1/localConcepts/ecmf/typeOfLevel.def\
-	grib1/localConcepts/ecmf/units.def
-
-definitionsgrib1_localConcepts_edzwdir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/edzw
-dist_definitionsgrib1_localConcepts_edzw_DATA = \
-	grib1/localConcepts/edzw/name.def\
-	grib1/localConcepts/edzw/paramId.def\
-	grib1/localConcepts/edzw/shortName.def\
-	grib1/localConcepts/edzw/stepType.def\
-	grib1/localConcepts/edzw/units.def
-
-definitionsgrib1_localConcepts_efkldir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/efkl
-dist_definitionsgrib1_localConcepts_efkl_DATA = \
-	grib1/localConcepts/efkl/cfVarName.def\
-	grib1/localConcepts/efkl/name.def\
-	grib1/localConcepts/efkl/paramId.def\
-	grib1/localConcepts/efkl/shortName.def\
-	grib1/localConcepts/efkl/units.def
-
-definitionsgrib1_localConcepts_eidbdir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/eidb
-dist_definitionsgrib1_localConcepts_eidb_DATA = \
-	grib1/localConcepts/eidb/cfName.def\
-	grib1/localConcepts/eidb/name.def\
-	grib1/localConcepts/eidb/paramId.def\
-	grib1/localConcepts/eidb/shortName.def\
-	grib1/localConcepts/eidb/typeOfLevel.def\
-	grib1/localConcepts/eidb/units.def
-
-definitionsgrib1_localConcepts_ekmidir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/ekmi
-dist_definitionsgrib1_localConcepts_ekmi_DATA = \
-	grib1/localConcepts/ekmi/name.def\
-	grib1/localConcepts/ekmi/paramId.def\
-	grib1/localConcepts/ekmi/shortName.def\
-	grib1/localConcepts/ekmi/units.def
-
-definitionsgrib1_localConcepts_enmidir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/enmi
-dist_definitionsgrib1_localConcepts_enmi_DATA = \
-	grib1/localConcepts/enmi/name.def\
-	grib1/localConcepts/enmi/paramId.def\
-	grib1/localConcepts/enmi/shortName.def\
-	grib1/localConcepts/enmi/units.def
-
-definitionsgrib1_localConcepts_eswidir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/eswi
-dist_definitionsgrib1_localConcepts_eswi_DATA = \
-	grib1/localConcepts/eswi/aerosolConcept.def\
-	grib1/localConcepts/eswi/aerosolbinnumber.table\
-	grib1/localConcepts/eswi/cfName.def\
-	grib1/localConcepts/eswi/landTypeConcept.def\
-	grib1/localConcepts/eswi/landtype.table\
-	grib1/localConcepts/eswi/name.def\
-	grib1/localConcepts/eswi/paramId.def\
-	grib1/localConcepts/eswi/shortName.def\
-	grib1/localConcepts/eswi/sort.table\
-	grib1/localConcepts/eswi/sortConcept.def\
-	grib1/localConcepts/eswi/timeRepresConcept.def\
-	grib1/localConcepts/eswi/timerepres.table\
-	grib1/localConcepts/eswi/typeOfLevel.def\
-	grib1/localConcepts/eswi/units.def
-
-definitionsgrib1_localConcepts_kwbcdir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/kwbc
-dist_definitionsgrib1_localConcepts_kwbc_DATA = \
-	grib1/localConcepts/kwbc/name.def\
-	grib1/localConcepts/kwbc/paramId.def\
-	grib1/localConcepts/kwbc/shortName.def\
-	grib1/localConcepts/kwbc/units.def
-
-definitionsgrib1_localConcepts_lfpwdir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/lfpw
-dist_definitionsgrib1_localConcepts_lfpw_DATA = \
-	grib1/localConcepts/lfpw/faFieldName.def\
-	grib1/localConcepts/lfpw/faLevelName.def\
-	grib1/localConcepts/lfpw/faModelName.def\
-	grib1/localConcepts/lfpw/name.def\
-	grib1/localConcepts/lfpw/paramId.def\
-	grib1/localConcepts/lfpw/shortName.def\
-	grib1/localConcepts/lfpw/units.def
-
-definitionsgrib1_localConcepts_lowmdir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/lowm
-dist_definitionsgrib1_localConcepts_lowm_DATA = \
-	grib1/localConcepts/lowm/name.def\
-	grib1/localConcepts/lowm/paramId.def\
-	grib1/localConcepts/lowm/shortName.def\
-	grib1/localConcepts/lowm/units.def
-
-definitionsgrib1_localConcepts_rjtddir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/rjtd
-dist_definitionsgrib1_localConcepts_rjtd_DATA = \
-	grib1/localConcepts/rjtd/cfVarName.def\
-	grib1/localConcepts/rjtd/name.def\
-	grib1/localConcepts/rjtd/paramId.def\
-	grib1/localConcepts/rjtd/shortName.def\
-	grib1/localConcepts/rjtd/stepType.def\
-	grib1/localConcepts/rjtd/typeOfLevel.def\
-	grib1/localConcepts/rjtd/units.def
-
-definitionsgrib1_localConcepts_sbsjdir = @ECCODES_DEFINITION_PATH@/grib1/localConcepts/sbsj
-dist_definitionsgrib1_localConcepts_sbsj_DATA = \
-	grib1/localConcepts/sbsj/name.def\
-	grib1/localConcepts/sbsj/paramId.def\
-	grib1/localConcepts/sbsj/shortName.def\
-	grib1/localConcepts/sbsj/units.def
-
-definitionsgrib2dir = @ECCODES_DEFINITION_PATH@/grib2
-dist_definitionsgrib2_DATA = \
-	grib2/boot.def\
-	grib2/boot_multifield.def\
-	grib2/centre.table\
-	grib2/cfName.def\
-	grib2/cfVarName.def\
-	grib2/dimension.0.table\
-	grib2/dimensionTableNumber.table\
-	grib2/dimensionType.table\
-	grib2/grib2LocalSectionNumber.82.table\
-	grib2/grib2LocalSectionNumber.85.table\
-	grib2/grib2LocalSectionNumber.98.table\
-	grib2/local.82.0.def\
-	grib2/local.82.82.def\
-	grib2/local.82.83.def\
-	grib2/local.82.def\
-	grib2/local.85.0.def\
-	grib2/local.85.1.def\
-	grib2/local.85.2.def\
-	grib2/local.85.def\
-	grib2/local.98.0.def\
-	grib2/local.98.1.def\
-	grib2/local.98.11.def\
-	grib2/local.98.14.def\
-	grib2/local.98.15.def\
-	grib2/local.98.16.def\
-	grib2/local.98.18.def\
-	grib2/local.98.192.def\
-	grib2/local.98.20.def\
-	grib2/local.98.21.def\
-	grib2/local.98.24.def\
-	grib2/local.98.25.def\
-	grib2/local.98.26.def\
-	grib2/local.98.28.def\
-	grib2/local.98.30.def\
-	grib2/local.98.300.def\
-	grib2/local.98.36.def\
-	grib2/local.98.38.def\
-	grib2/local.98.39.def\
-	grib2/local.98.500.def\
-	grib2/local.98.7.def\
-	grib2/local.98.9.def\
-	grib2/local.98.def\
-	grib2/local.tigge.1.def\
-	grib2/ls.def\
-	grib2/ls_labeling.82.def\
-	grib2/mars_labeling.82.def\
-	grib2/mars_labeling.def\
-	grib2/meta.def\
-	grib2/modelName.def\
-	grib2/name.def\
-	grib2/paramId.def\
-	grib2/parameters.def\
-	grib2/products_0.def\
-	grib2/products_1.def\
-	grib2/products_2.def\
-	grib2/products_3.def\
-	grib2/products_4.def\
-	grib2/products_5.def\
-	grib2/products_6.def\
-	grib2/products_7.def\
-	grib2/products_8.def\
-	grib2/products_9.def\
-	grib2/products_s2s.def\
-	grib2/products_tigge.def\
-	grib2/products_uerra.def\
-	grib2/rules.def\
-	grib2/section.0.def\
-	grib2/section.1.def\
-	grib2/section.2.def\
-	grib2/section.3.def\
-	grib2/section.4.def\
-	grib2/section.5.def\
-	grib2/section.6.def\
-	grib2/section.7.def\
-	grib2/section.8.def\
-	grib2/sections.def\
-	grib2/shortName.def\
-	grib2/template.1.0.def\
-	grib2/template.1.1.def\
-	grib2/template.1.2.def\
-	grib2/template.1.calendar.def\
-	grib2/template.1.offset.def\
-	grib2/template.3.0.def\
-	grib2/template.3.1.def\
-	grib2/template.3.10.def\
-	grib2/template.3.100.def\
-	grib2/template.3.1000.def\
-	grib2/template.3.101.def\
-	grib2/template.3.110.def\
-	grib2/template.3.1100.def\
-	grib2/template.3.12.def\
-	grib2/template.3.120.def\
-	grib2/template.3.1200.def\
-	grib2/template.3.130.def\
-	grib2/template.3.140.def\
-	grib2/template.3.2.def\
-	grib2/template.3.20.def\
-	grib2/template.3.3.def\
-	grib2/template.3.30.def\
-	grib2/template.3.31.def\
-	grib2/template.3.4.def\
-	grib2/template.3.40.def\
-	grib2/template.3.41.def\
-	grib2/template.3.42.def\
-	grib2/template.3.43.def\
-	grib2/template.3.5.def\
-	grib2/template.3.50.def\
-	grib2/template.3.51.def\
-	grib2/template.3.52.def\
-	grib2/template.3.53.def\
-	grib2/template.3.90.def\
-	grib2/template.3.gaussian.def\
-	grib2/template.3.grid.def\
-	grib2/template.3.latlon.def\
-	grib2/template.3.latlon_vares.def\
-	grib2/template.3.resolution_flags.def\
-	grib2/template.3.rotation.def\
-	grib2/template.3.scanning_mode.def\
-	grib2/template.3.shape_of_the_earth.def\
-	grib2/template.3.spherical_harmonics.def\
-	grib2/template.3.stretching.def\
-	grib2/template.4.0.def\
-	grib2/template.4.1.def\
-	grib2/template.4.10.def\
-	grib2/template.4.1000.def\
-	grib2/template.4.1001.def\
-	grib2/template.4.1002.def\
-	grib2/template.4.11.def\
-	grib2/template.4.1100.def\
-	grib2/template.4.1101.def\
-	grib2/template.4.12.def\
-	grib2/template.4.13.def\
-	grib2/template.4.14.def\
-	grib2/template.4.15.def\
-	grib2/template.4.2.def\
-	grib2/template.4.20.def\
-	grib2/template.4.2000.def\
-	grib2/template.4.254.def\
-	grib2/template.4.3.def\
-	grib2/template.4.30.def\
-	grib2/template.4.31.def\
-	grib2/template.4.311.def\
-	grib2/template.4.32.def\
-	grib2/template.4.33.def\
-	grib2/template.4.34.def\
-	grib2/template.4.4.def\
-	grib2/template.4.40.def\
-	grib2/template.4.40033.def\
-	grib2/template.4.40034.def\
-	grib2/template.4.41.def\
-	grib2/template.4.42.def\
-	grib2/template.4.43.def\
-	grib2/template.4.44.def\
-	grib2/template.4.45.def\
-	grib2/template.4.46.def\
-	grib2/template.4.47.def\
-	grib2/template.4.48.def\
-	grib2/template.4.5.def\
-	grib2/template.4.51.def\
-	grib2/template.4.53.def\
-	grib2/template.4.54.def\
-	grib2/template.4.55.def\
-	grib2/template.4.56.def\
-	grib2/template.4.57.def\
-	grib2/template.4.6.def\
-	grib2/template.4.60.def\
-	grib2/template.4.61.def\
-	grib2/template.4.7.def\
-	grib2/template.4.8.def\
-	grib2/template.4.9.def\
-	grib2/template.4.91.def\
-	grib2/template.4.categorical.def\
-	grib2/template.4.circular_cluster.def\
-	grib2/template.4.derived.def\
-	grib2/template.4.eps.def\
-	grib2/template.4.horizontal.def\
-	grib2/template.4.parameter.def\
-	grib2/template.4.parameter_aerosol.def\
-	grib2/template.4.parameter_aerosol_44.def\
-	grib2/template.4.parameter_aerosol_optical.def\
-	grib2/template.4.parameter_chemical.def\
-	grib2/template.4.parameter_chemical_distribution.def\
-	grib2/template.4.parameter_partition.def\
-	grib2/template.4.parameter_tile.def\
-	grib2/template.4.percentile.def\
-	grib2/template.4.point_in_time.def\
-	grib2/template.4.probability.def\
-	grib2/template.4.rectangular_cluster.def\
-	grib2/template.4.reforecast.def\
-	grib2/template.4.statistical.def\
-	grib2/template.5.0.def\
-	grib2/template.5.1.def\
-	grib2/template.5.2.def\
-	grib2/template.5.3.def\
-	grib2/template.5.4.def\
-	grib2/template.5.40.def\
-	grib2/template.5.40000.def\
-	grib2/template.5.40010.def\
-	grib2/template.5.41.def\
-	grib2/template.5.42.def\
-	grib2/template.5.50.def\
-	grib2/template.5.50000.def\
-	grib2/template.5.50001.def\
-	grib2/template.5.50002.def\
-	grib2/template.5.51.def\
-	grib2/template.5.6.def\
-	grib2/template.5.61.def\
-	grib2/template.5.original_values.def\
-	grib2/template.5.packing.def\
-	grib2/template.5.second_order.def\
-	grib2/template.7.0.def\
-	grib2/template.7.1.def\
-	grib2/template.7.2.def\
-	grib2/template.7.3.def\
-	grib2/template.7.4.def\
-	grib2/template.7.40.def\
-	grib2/template.7.40000.def\
-	grib2/template.7.40010.def\
-	grib2/template.7.41.def\
-	grib2/template.7.42.def\
-	grib2/template.7.50.def\
-	grib2/template.7.50000.def\
-	grib2/template.7.50001.def\
-	grib2/template.7.50002.def\
-	grib2/template.7.51.def\
-	grib2/template.7.6.def\
-	grib2/template.7.61.def\
-	grib2/template.7.second_order.def\
-	grib2/template.second_order.def\
-	grib2/tiggeLocalVersion.table\
-	grib2/tigge_name.def\
-	grib2/tigge_parameter.def\
-	grib2/tigge_short_name.def\
-	grib2/tigge_suiteName.table\
-	grib2/units.def
-
-definitionsgrib2_localdir = @ECCODES_DEFINITION_PATH@/grib2/local
-dist_definitionsgrib2_local_DATA = \
-	grib2/local/2.0.table
-
-definitionsgrib2_local_1098dir = @ECCODES_DEFINITION_PATH@/grib2/local/1098
-dist_definitionsgrib2_local_1098_DATA = \
-	grib2/local/1098/2.1.table\
-	grib2/local/1098/centres.table\
-	grib2/local/1098/models.table\
-	grib2/local/1098/template.2.0.def
-
-definitionsgrib2_local_edzwdir = @ECCODES_DEFINITION_PATH@/grib2/local/edzw
-dist_definitionsgrib2_local_edzw_DATA = \
-	grib2/local/edzw/2.0.3.table\
-	grib2/local/edzw/3.table\
-	grib2/local/edzw/5.table\
-	grib2/local/edzw/generatingProcessIdentifier.table
-
-definitionsgrib2_localConcepts_cnmcdir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/cnmc
-dist_definitionsgrib2_localConcepts_cnmc_DATA = \
-	grib2/localConcepts/cnmc/modelName.def\
-	grib2/localConcepts/cnmc/name.def\
-	grib2/localConcepts/cnmc/paramId.def\
-	grib2/localConcepts/cnmc/shortName.def\
-	grib2/localConcepts/cnmc/units.def
-
-definitionsgrib2_localConcepts_ecmfdir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/ecmf
-dist_definitionsgrib2_localConcepts_ecmf_DATA = \
-	grib2/localConcepts/ecmf/cfName.def\
-	grib2/localConcepts/ecmf/cfVarName.def\
-	grib2/localConcepts/ecmf/name.def\
-	grib2/localConcepts/ecmf/paramId.def\
-	grib2/localConcepts/ecmf/shortName.def\
-	grib2/localConcepts/ecmf/units.def
-
-definitionsgrib2_localConcepts_edzwdir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/edzw
-dist_definitionsgrib2_localConcepts_edzw_DATA = \
-	grib2/localConcepts/edzw/modelName.def\
-	grib2/localConcepts/edzw/name.def\
-	grib2/localConcepts/edzw/paramId.def\
-	grib2/localConcepts/edzw/shortName.def\
-	grib2/localConcepts/edzw/units.def
-
-definitionsgrib2_localConcepts_efkldir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/efkl
-dist_definitionsgrib2_localConcepts_efkl_DATA = \
-	grib2/localConcepts/efkl/name.def\
-	grib2/localConcepts/efkl/paramId.def\
-	grib2/localConcepts/efkl/shortName.def\
-	grib2/localConcepts/efkl/units.def
-
-definitionsgrib2_localConcepts_egrrdir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/egrr
-dist_definitionsgrib2_localConcepts_egrr_DATA = \
-	grib2/localConcepts/egrr/name.def\
-	grib2/localConcepts/egrr/paramId.def\
-	grib2/localConcepts/egrr/shortName.def\
-	grib2/localConcepts/egrr/units.def
-
-definitionsgrib2_localConcepts_ekmidir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/ekmi
-dist_definitionsgrib2_localConcepts_ekmi_DATA = \
-	grib2/localConcepts/ekmi/name.def\
-	grib2/localConcepts/ekmi/paramId.def\
-	grib2/localConcepts/ekmi/shortName.def\
-	grib2/localConcepts/ekmi/units.def
-
-definitionsgrib2_localConcepts_eswidir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/eswi
-dist_definitionsgrib2_localConcepts_eswi_DATA = \
-	grib2/localConcepts/eswi/name.def\
-	grib2/localConcepts/eswi/paramId.def\
-	grib2/localConcepts/eswi/shortName.def\
-	grib2/localConcepts/eswi/units.def
-
-definitionsgrib2_localConcepts_kwbcdir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/kwbc
-dist_definitionsgrib2_localConcepts_kwbc_DATA = \
-	grib2/localConcepts/kwbc/name.def\
-	grib2/localConcepts/kwbc/paramId.def\
-	grib2/localConcepts/kwbc/shortName.def\
-	grib2/localConcepts/kwbc/units.def
-
-definitionsgrib2_localConcepts_lfpwdir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/lfpw
-dist_definitionsgrib2_localConcepts_lfpw_DATA = \
-	grib2/localConcepts/lfpw/faFieldName.def\
-	grib2/localConcepts/lfpw/faLevelName.def\
-	grib2/localConcepts/lfpw/faModelName.def\
-	grib2/localConcepts/lfpw/name.def\
-	grib2/localConcepts/lfpw/paramId.def\
-	grib2/localConcepts/lfpw/shortName.def\
-	grib2/localConcepts/lfpw/units.def
-
-definitionsgrib2_localConcepts_lfpw1dir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/lfpw1
-dist_definitionsgrib2_localConcepts_lfpw1_DATA = \
-	grib2/localConcepts/lfpw1/name.def\
-	grib2/localConcepts/lfpw1/paramId.def\
-	grib2/localConcepts/lfpw1/shortName.def\
-	grib2/localConcepts/lfpw1/units.def
-
-definitionsgrib2_localConcepts_lsswdir = @ECCODES_DEFINITION_PATH@/grib2/localConcepts/lssw
-dist_definitionsgrib2_localConcepts_lssw_DATA = \
-	grib2/localConcepts/lssw/modelName.def
-
-definitionsgrib2_tablesdir = @ECCODES_DEFINITION_PATH@/grib2/tables
-dist_definitionsgrib2_tables_DATA = \
-	grib2/tables/0.0.table\
-	grib2/tables/1.0.table
-
-definitionsgrib2_tables_0dir = @ECCODES_DEFINITION_PATH@/grib2/tables/0
-dist_definitionsgrib2_tables_0_DATA = \
-	grib2/tables/0/0.0.table\
-	grib2/tables/0/1.0.table\
-	grib2/tables/0/1.1.table\
-	grib2/tables/0/1.2.table\
-	grib2/tables/0/1.3.table\
-	grib2/tables/0/1.4.table\
-	grib2/tables/0/3.0.table\
-	grib2/tables/0/3.1.table\
-	grib2/tables/0/3.10.table\
-	grib2/tables/0/3.11.table\
-	grib2/tables/0/3.15.table\
-	grib2/tables/0/3.2.table\
-	grib2/tables/0/3.20.table\
-	grib2/tables/0/3.21.table\
-	grib2/tables/0/3.3.table\
-	grib2/tables/0/3.4.table\
-	grib2/tables/0/3.5.table\
-	grib2/tables/0/3.6.table\
-	grib2/tables/0/3.7.table\
-	grib2/tables/0/3.8.table\
-	grib2/tables/0/3.9.table\
-	grib2/tables/0/4.0.table\
-	grib2/tables/0/4.1.0.table\
-	grib2/tables/0/4.1.1.table\
-	grib2/tables/0/4.1.10.table\
-	grib2/tables/0/4.1.2.table\
-	grib2/tables/0/4.1.3.table\
-	grib2/tables/0/4.1.table\
-	grib2/tables/0/4.10.table\
-	grib2/tables/0/4.11.table\
-	grib2/tables/0/4.12.table\
-	grib2/tables/0/4.13.table\
-	grib2/tables/0/4.14.table\
-	grib2/tables/0/4.15.table\
-	grib2/tables/0/4.151.table\
-	grib2/tables/0/4.2.0.0.table\
-	grib2/tables/0/4.2.0.1.table\
-	grib2/tables/0/4.2.0.13.table\
-	grib2/tables/0/4.2.0.14.table\
-	grib2/tables/0/4.2.0.15.table\
-	grib2/tables/0/4.2.0.18.table\
-	grib2/tables/0/4.2.0.19.table\
-	grib2/tables/0/4.2.0.190.table\
-	grib2/tables/0/4.2.0.191.table\
-	grib2/tables/0/4.2.0.2.table\
-	grib2/tables/0/4.2.0.20.table\
-	grib2/tables/0/4.2.0.3.table\
-	grib2/tables/0/4.2.0.4.table\
-	grib2/tables/0/4.2.0.5.table\
-	grib2/tables/0/4.2.0.6.table\
-	grib2/tables/0/4.2.0.7.table\
-	grib2/tables/0/4.2.1.0.table\
-	grib2/tables/0/4.2.1.1.table\
-	grib2/tables/0/4.2.10.0.table\
-	grib2/tables/0/4.2.10.1.table\
-	grib2/tables/0/4.2.10.2.table\
-	grib2/tables/0/4.2.10.3.table\
-	grib2/tables/0/4.2.10.4.table\
-	grib2/tables/0/4.2.2.0.table\
-	grib2/tables/0/4.2.2.3.table\
-	grib2/tables/0/4.2.3.0.table\
-	grib2/tables/0/4.2.3.1.table\
-	grib2/tables/0/4.2.table\
-	grib2/tables/0/4.201.table\
-	grib2/tables/0/4.202.table\
-	grib2/tables/0/4.203.table\
-	grib2/tables/0/4.204.table\
-	grib2/tables/0/4.205.table\
-	grib2/tables/0/4.206.table\
-	grib2/tables/0/4.207.table\
-	grib2/tables/0/4.208.table\
-	grib2/tables/0/4.209.table\
-	grib2/tables/0/4.210.table\
-	grib2/tables/0/4.211.table\
-	grib2/tables/0/4.212.table\
-	grib2/tables/0/4.213.table\
-	grib2/tables/0/4.215.table\
-	grib2/tables/0/4.216.table\
-	grib2/tables/0/4.217.table\
-	grib2/tables/0/4.220.table\
-	grib2/tables/0/4.221.table\
-	grib2/tables/0/4.230.table\
-	grib2/tables/0/4.3.table\
-	grib2/tables/0/4.4.table\
-	grib2/tables/0/4.5.table\
-	grib2/tables/0/4.6.table\
-	grib2/tables/0/4.7.table\
-	grib2/tables/0/4.8.table\
-	grib2/tables/0/4.9.table\
-	grib2/tables/0/4.91.table\
-	grib2/tables/0/5.0.table\
-	grib2/tables/0/5.1.table\
-	grib2/tables/0/5.2.table\
-	grib2/tables/0/5.3.table\
-	grib2/tables/0/5.4.table\
-	grib2/tables/0/5.40.table\
-	grib2/tables/0/5.40000.table\
-	grib2/tables/0/5.5.table\
-	grib2/tables/0/5.6.table\
-	grib2/tables/0/5.7.table\
-	grib2/tables/0/5.8.table\
-	grib2/tables/0/5.9.table\
-	grib2/tables/0/6.0.table\
-	grib2/tables/0/stepType.table
-
-definitionsgrib2_tables_1dir = @ECCODES_DEFINITION_PATH@/grib2/tables/1
-dist_definitionsgrib2_tables_1_DATA = \
-	grib2/tables/1/0.0.table\
-	grib2/tables/1/1.0.table\
-	grib2/tables/1/1.1.table\
-	grib2/tables/1/1.2.table\
-	grib2/tables/1/1.3.table\
-	grib2/tables/1/1.4.table\
-	grib2/tables/1/3.0.table\
-	grib2/tables/1/3.1.table\
-	grib2/tables/1/3.10.table\
-	grib2/tables/1/3.11.table\
-	grib2/tables/1/3.15.table\
-	grib2/tables/1/3.2.table\
-	grib2/tables/1/3.20.table\
-	grib2/tables/1/3.21.table\
-	grib2/tables/1/3.3.table\
-	grib2/tables/1/3.4.table\
-	grib2/tables/1/3.5.table\
-	grib2/tables/1/3.6.table\
-	grib2/tables/1/3.7.table\
-	grib2/tables/1/3.8.table\
-	grib2/tables/1/3.9.table\
-	grib2/tables/1/4.0.table\
-	grib2/tables/1/4.1.0.table\
-	grib2/tables/1/4.1.1.table\
-	grib2/tables/1/4.1.10.table\
-	grib2/tables/1/4.1.2.table\
-	grib2/tables/1/4.1.3.table\
-	grib2/tables/1/4.1.table\
-	grib2/tables/1/4.10.table\
-	grib2/tables/1/4.11.table\
-	grib2/tables/1/4.12.table\
-	grib2/tables/1/4.13.table\
-	grib2/tables/1/4.14.table\
-	grib2/tables/1/4.15.table\
-	grib2/tables/1/4.151.table\
-	grib2/tables/1/4.2.0.0.table\
-	grib2/tables/1/4.2.0.1.table\
-	grib2/tables/1/4.2.0.13.table\
-	grib2/tables/1/4.2.0.14.table\
-	grib2/tables/1/4.2.0.15.table\
-	grib2/tables/1/4.2.0.18.table\
-	grib2/tables/1/4.2.0.19.table\
-	grib2/tables/1/4.2.0.190.table\
-	grib2/tables/1/4.2.0.191.table\
-	grib2/tables/1/4.2.0.2.table\
-	grib2/tables/1/4.2.0.20.table\
-	grib2/tables/1/4.2.0.3.table\
-	grib2/tables/1/4.2.0.4.table\
-	grib2/tables/1/4.2.0.5.table\
-	grib2/tables/1/4.2.0.6.table\
-	grib2/tables/1/4.2.0.7.table\
-	grib2/tables/1/4.2.1.0.table\
-	grib2/tables/1/4.2.1.1.table\
-	grib2/tables/1/4.2.10.0.table\
-	grib2/tables/1/4.2.10.1.table\
-	grib2/tables/1/4.2.10.2.table\
-	grib2/tables/1/4.2.10.3.table\
-	grib2/tables/1/4.2.10.4.table\
-	grib2/tables/1/4.2.2.0.table\
-	grib2/tables/1/4.2.2.3.table\
-	grib2/tables/1/4.2.3.0.table\
-	grib2/tables/1/4.2.3.1.table\
-	grib2/tables/1/4.2.table\
-	grib2/tables/1/4.201.table\
-	grib2/tables/1/4.202.table\
-	grib2/tables/1/4.203.table\
-	grib2/tables/1/4.204.table\
-	grib2/tables/1/4.205.table\
-	grib2/tables/1/4.206.table\
-	grib2/tables/1/4.207.table\
-	grib2/tables/1/4.208.table\
-	grib2/tables/1/4.209.table\
-	grib2/tables/1/4.210.table\
-	grib2/tables/1/4.211.table\
-	grib2/tables/1/4.212.table\
-	grib2/tables/1/4.213.table\
-	grib2/tables/1/4.215.table\
-	grib2/tables/1/4.216.table\
-	grib2/tables/1/4.217.table\
-	grib2/tables/1/4.220.table\
-	grib2/tables/1/4.221.table\
-	grib2/tables/1/4.230.table\
-	grib2/tables/1/4.3.table\
-	grib2/tables/1/4.4.table\
-	grib2/tables/1/4.5.table\
-	grib2/tables/1/4.6.table\
-	grib2/tables/1/4.7.table\
-	grib2/tables/1/4.8.table\
-	grib2/tables/1/4.9.table\
-	grib2/tables/1/4.91.table\
-	grib2/tables/1/5.0.table\
-	grib2/tables/1/5.1.table\
-	grib2/tables/1/5.2.table\
-	grib2/tables/1/5.3.table\
-	grib2/tables/1/5.4.table\
-	grib2/tables/1/5.40.table\
-	grib2/tables/1/5.40000.table\
-	grib2/tables/1/5.5.table\
-	grib2/tables/1/5.6.table\
-	grib2/tables/1/5.7.table\
-	grib2/tables/1/5.8.table\
-	grib2/tables/1/5.9.table\
-	grib2/tables/1/6.0.table\
-	grib2/tables/1/stepType.table
-
-definitionsgrib2_tables_10dir = @ECCODES_DEFINITION_PATH@/grib2/tables/10
-dist_definitionsgrib2_tables_10_DATA = \
-	grib2/tables/10/0.0.table\
-	grib2/tables/10/1.0.table\
-	grib2/tables/10/1.1.table\
-	grib2/tables/10/1.2.table\
-	grib2/tables/10/1.3.table\
-	grib2/tables/10/1.4.table\
-	grib2/tables/10/3.0.table\
-	grib2/tables/10/3.1.table\
-	grib2/tables/10/3.10.table\
-	grib2/tables/10/3.11.table\
-	grib2/tables/10/3.15.table\
-	grib2/tables/10/3.2.table\
-	grib2/tables/10/3.20.table\
-	grib2/tables/10/3.21.table\
-	grib2/tables/10/3.3.table\
-	grib2/tables/10/3.4.table\
-	grib2/tables/10/3.5.table\
-	grib2/tables/10/3.6.table\
-	grib2/tables/10/3.7.table\
-	grib2/tables/10/3.8.table\
-	grib2/tables/10/3.9.table\
-	grib2/tables/10/4.0.table\
-	grib2/tables/10/4.1.0.table\
-	grib2/tables/10/4.1.1.table\
-	grib2/tables/10/4.1.10.table\
-	grib2/tables/10/4.1.192.table\
-	grib2/tables/10/4.1.2.table\
-	grib2/tables/10/4.1.3.table\
-	grib2/tables/10/4.1.table\
-	grib2/tables/10/4.10.table\
-	grib2/tables/10/4.11.table\
-	grib2/tables/10/4.12.table\
-	grib2/tables/10/4.13.table\
-	grib2/tables/10/4.14.table\
-	grib2/tables/10/4.15.table\
-	grib2/tables/10/4.151.table\
-	grib2/tables/10/4.192.table\
-	grib2/tables/10/4.2.0.0.table\
-	grib2/tables/10/4.2.0.1.table\
-	grib2/tables/10/4.2.0.13.table\
-	grib2/tables/10/4.2.0.14.table\
-	grib2/tables/10/4.2.0.15.table\
-	grib2/tables/10/4.2.0.16.table\
-	grib2/tables/10/4.2.0.18.table\
-	grib2/tables/10/4.2.0.19.table\
-	grib2/tables/10/4.2.0.190.table\
-	grib2/tables/10/4.2.0.191.table\
-	grib2/tables/10/4.2.0.2.table\
-	grib2/tables/10/4.2.0.20.table\
-	grib2/tables/10/4.2.0.3.table\
-	grib2/tables/10/4.2.0.4.table\
-	grib2/tables/10/4.2.0.5.table\
-	grib2/tables/10/4.2.0.6.table\
-	grib2/tables/10/4.2.0.7.table\
-	grib2/tables/10/4.2.1.0.table\
-	grib2/tables/10/4.2.1.1.table\
-	grib2/tables/10/4.2.1.2.table\
-	grib2/tables/10/4.2.10.0.table\
-	grib2/tables/10/4.2.10.1.table\
-	grib2/tables/10/4.2.10.191.table\
-	grib2/tables/10/4.2.10.2.table\
-	grib2/tables/10/4.2.10.3.table\
-	grib2/tables/10/4.2.10.4.table\
-	grib2/tables/10/4.2.2.0.table\
-	grib2/tables/10/4.2.2.3.table\
-	grib2/tables/10/4.2.2.4.table\
-	grib2/tables/10/4.2.3.0.table\
-	grib2/tables/10/4.2.3.1.table\
-	grib2/tables/10/4.2.table\
-	grib2/tables/10/4.201.table\
-	grib2/tables/10/4.202.table\
-	grib2/tables/10/4.203.table\
-	grib2/tables/10/4.204.table\
-	grib2/tables/10/4.205.table\
-	grib2/tables/10/4.206.table\
-	grib2/tables/10/4.207.table\
-	grib2/tables/10/4.208.table\
-	grib2/tables/10/4.209.table\
-	grib2/tables/10/4.210.table\
-	grib2/tables/10/4.211.table\
-	grib2/tables/10/4.212.table\
-	grib2/tables/10/4.213.table\
-	grib2/tables/10/4.215.table\
-	grib2/tables/10/4.216.table\
-	grib2/tables/10/4.217.table\
-	grib2/tables/10/4.218.table\
-	grib2/tables/10/4.219.table\
-	grib2/tables/10/4.220.table\
-	grib2/tables/10/4.221.table\
-	grib2/tables/10/4.222.table\
-	grib2/tables/10/4.223.table\
-	grib2/tables/10/4.224.table\
-	grib2/tables/10/4.225.table\
-	grib2/tables/10/4.227.table\
-	grib2/tables/10/4.230.table\
-	grib2/tables/10/4.233.table\
-	grib2/tables/10/4.234.table\
-	grib2/tables/10/4.235.table\
-	grib2/tables/10/4.3.table\
-	grib2/tables/10/4.4.table\
-	grib2/tables/10/4.5.table\
-	grib2/tables/10/4.6.table\
-	grib2/tables/10/4.7.table\
-	grib2/tables/10/4.8.table\
-	grib2/tables/10/4.9.table\
-	grib2/tables/10/4.91.table\
-	grib2/tables/10/5.0.table\
-	grib2/tables/10/5.1.table\
-	grib2/tables/10/5.2.table\
-	grib2/tables/10/5.3.table\
-	grib2/tables/10/5.4.table\
-	grib2/tables/10/5.40.table\
-	grib2/tables/10/5.40000.table\
-	grib2/tables/10/5.5.table\
-	grib2/tables/10/5.50002.table\
-	grib2/tables/10/5.6.table\
-	grib2/tables/10/5.7.table\
-	grib2/tables/10/5.8.table\
-	grib2/tables/10/5.9.table\
-	grib2/tables/10/6.0.table\
-	grib2/tables/10/stepType.table
-
-definitionsgrib2_tables_11dir = @ECCODES_DEFINITION_PATH@/grib2/tables/11
-dist_definitionsgrib2_tables_11_DATA = \
-	grib2/tables/11/0.0.table\
-	grib2/tables/11/1.0.table\
-	grib2/tables/11/1.1.table\
-	grib2/tables/11/1.2.table\
-	grib2/tables/11/1.3.table\
-	grib2/tables/11/1.4.table\
-	grib2/tables/11/3.0.table\
-	grib2/tables/11/3.1.table\
-	grib2/tables/11/3.10.table\
-	grib2/tables/11/3.11.table\
-	grib2/tables/11/3.15.table\
-	grib2/tables/11/3.2.table\
-	grib2/tables/11/3.20.table\
-	grib2/tables/11/3.21.table\
-	grib2/tables/11/3.3.table\
-	grib2/tables/11/3.4.table\
-	grib2/tables/11/3.5.table\
-	grib2/tables/11/3.6.table\
-	grib2/tables/11/3.7.table\
-	grib2/tables/11/3.8.table\
-	grib2/tables/11/3.9.table\
-	grib2/tables/11/4.0.table\
-	grib2/tables/11/4.1.0.table\
-	grib2/tables/11/4.1.1.table\
-	grib2/tables/11/4.1.10.table\
-	grib2/tables/11/4.1.192.table\
-	grib2/tables/11/4.1.2.table\
-	grib2/tables/11/4.1.3.table\
-	grib2/tables/11/4.10.table\
-	grib2/tables/11/4.11.table\
-	grib2/tables/11/4.12.table\
-	grib2/tables/11/4.13.table\
-	grib2/tables/11/4.14.table\
-	grib2/tables/11/4.15.table\
-	grib2/tables/11/4.192.table\
-	grib2/tables/11/4.2.0.0.table\
-	grib2/tables/11/4.2.0.1.table\
-	grib2/tables/11/4.2.0.13.table\
-	grib2/tables/11/4.2.0.14.table\
-	grib2/tables/11/4.2.0.15.table\
-	grib2/tables/11/4.2.0.16.table\
-	grib2/tables/11/4.2.0.18.table\
-	grib2/tables/11/4.2.0.19.table\
-	grib2/tables/11/4.2.0.190.table\
-	grib2/tables/11/4.2.0.191.table\
-	grib2/tables/11/4.2.0.2.table\
-	grib2/tables/11/4.2.0.20.table\
-	grib2/tables/11/4.2.0.3.table\
-	grib2/tables/11/4.2.0.4.table\
-	grib2/tables/11/4.2.0.5.table\
-	grib2/tables/11/4.2.0.6.table\
-	grib2/tables/11/4.2.0.7.table\
-	grib2/tables/11/4.2.1.0.table\
-	grib2/tables/11/4.2.1.1.table\
-	grib2/tables/11/4.2.1.2.table\
-	grib2/tables/11/4.2.10.0.table\
-	grib2/tables/11/4.2.10.1.table\
-	grib2/tables/11/4.2.10.191.table\
-	grib2/tables/11/4.2.10.2.table\
-	grib2/tables/11/4.2.10.3.table\
-	grib2/tables/11/4.2.10.4.table\
-	grib2/tables/11/4.2.2.0.table\
-	grib2/tables/11/4.2.2.3.table\
-	grib2/tables/11/4.2.2.4.table\
-	grib2/tables/11/4.2.3.0.table\
-	grib2/tables/11/4.2.3.1.table\
-	grib2/tables/11/4.201.table\
-	grib2/tables/11/4.202.table\
-	grib2/tables/11/4.203.table\
-	grib2/tables/11/4.204.table\
-	grib2/tables/11/4.205.table\
-	grib2/tables/11/4.206.table\
-	grib2/tables/11/4.207.table\
-	grib2/tables/11/4.208.table\
-	grib2/tables/11/4.209.table\
-	grib2/tables/11/4.210.table\
-	grib2/tables/11/4.211.table\
-	grib2/tables/11/4.212.table\
-	grib2/tables/11/4.213.table\
-	grib2/tables/11/4.215.table\
-	grib2/tables/11/4.216.table\
-	grib2/tables/11/4.217.table\
-	grib2/tables/11/4.218.table\
-	grib2/tables/11/4.219.table\
-	grib2/tables/11/4.220.table\
-	grib2/tables/11/4.221.table\
-	grib2/tables/11/4.222.table\
-	grib2/tables/11/4.223.table\
-	grib2/tables/11/4.224.table\
-	grib2/tables/11/4.225.table\
-	grib2/tables/11/4.227.table\
-	grib2/tables/11/4.230.table\
-	grib2/tables/11/4.233.table\
-	grib2/tables/11/4.234.table\
-	grib2/tables/11/4.236.table\
-	grib2/tables/11/4.3.table\
-	grib2/tables/11/4.4.table\
-	grib2/tables/11/4.5.table\
-	grib2/tables/11/4.6.table\
-	grib2/tables/11/4.7.table\
-	grib2/tables/11/4.8.table\
-	grib2/tables/11/4.9.table\
-	grib2/tables/11/4.91.table\
-	grib2/tables/11/5.0.table\
-	grib2/tables/11/5.1.table\
-	grib2/tables/11/5.2.table\
-	grib2/tables/11/5.3.table\
-	grib2/tables/11/5.4.table\
-	grib2/tables/11/5.40.table\
-	grib2/tables/11/5.40000.table\
-	grib2/tables/11/5.5.table\
-	grib2/tables/11/5.50002.table\
-	grib2/tables/11/5.6.table\
-	grib2/tables/11/5.7.table\
-	grib2/tables/11/5.8.table\
-	grib2/tables/11/5.9.table\
-	grib2/tables/11/6.0.table\
-	grib2/tables/11/stepType.table
-
-definitionsgrib2_tables_12dir = @ECCODES_DEFINITION_PATH@/grib2/tables/12
-dist_definitionsgrib2_tables_12_DATA = \
-	grib2/tables/12/0.0.table\
-	grib2/tables/12/1.0.table\
-	grib2/tables/12/1.1.table\
-	grib2/tables/12/1.2.table\
-	grib2/tables/12/1.3.table\
-	grib2/tables/12/1.4.table\
-	grib2/tables/12/1.5.table\
-	grib2/tables/12/1.6.table\
-	grib2/tables/12/3.0.table\
-	grib2/tables/12/3.1.table\
-	grib2/tables/12/3.10.table\
-	grib2/tables/12/3.11.table\
-	grib2/tables/12/3.15.table\
-	grib2/tables/12/3.2.table\
-	grib2/tables/12/3.20.table\
-	grib2/tables/12/3.21.table\
-	grib2/tables/12/3.3.table\
-	grib2/tables/12/3.4.table\
-	grib2/tables/12/3.5.table\
-	grib2/tables/12/3.6.table\
-	grib2/tables/12/3.7.table\
-	grib2/tables/12/3.8.table\
-	grib2/tables/12/3.9.table\
-	grib2/tables/12/4.0.table\
-	grib2/tables/12/4.1.0.table\
-	grib2/tables/12/4.1.1.table\
-	grib2/tables/12/4.1.10.table\
-	grib2/tables/12/4.1.192.table\
-	grib2/tables/12/4.1.2.table\
-	grib2/tables/12/4.1.3.table\
-	grib2/tables/12/4.10.table\
-	grib2/tables/12/4.11.table\
-	grib2/tables/12/4.12.table\
-	grib2/tables/12/4.13.table\
-	grib2/tables/12/4.14.table\
-	grib2/tables/12/4.15.table\
-	grib2/tables/12/4.192.table\
-	grib2/tables/12/4.2.0.0.table\
-	grib2/tables/12/4.2.0.1.table\
-	grib2/tables/12/4.2.0.13.table\
-	grib2/tables/12/4.2.0.14.table\
-	grib2/tables/12/4.2.0.15.table\
-	grib2/tables/12/4.2.0.16.table\
-	grib2/tables/12/4.2.0.18.table\
-	grib2/tables/12/4.2.0.19.table\
-	grib2/tables/12/4.2.0.190.table\
-	grib2/tables/12/4.2.0.191.table\
-	grib2/tables/12/4.2.0.2.table\
-	grib2/tables/12/4.2.0.20.table\
-	grib2/tables/12/4.2.0.3.table\
-	grib2/tables/12/4.2.0.4.table\
-	grib2/tables/12/4.2.0.5.table\
-	grib2/tables/12/4.2.0.6.table\
-	grib2/tables/12/4.2.0.7.table\
-	grib2/tables/12/4.2.1.0.table\
-	grib2/tables/12/4.2.1.1.table\
-	grib2/tables/12/4.2.1.2.table\
-	grib2/tables/12/4.2.10.0.table\
-	grib2/tables/12/4.2.10.1.table\
-	grib2/tables/12/4.2.10.191.table\
-	grib2/tables/12/4.2.10.2.table\
-	grib2/tables/12/4.2.10.3.table\
-	grib2/tables/12/4.2.10.4.table\
-	grib2/tables/12/4.2.2.0.table\
-	grib2/tables/12/4.2.2.3.table\
-	grib2/tables/12/4.2.2.4.table\
-	grib2/tables/12/4.2.3.0.table\
-	grib2/tables/12/4.2.3.1.table\
-	grib2/tables/12/4.201.table\
-	grib2/tables/12/4.202.table\
-	grib2/tables/12/4.203.table\
-	grib2/tables/12/4.204.table\
-	grib2/tables/12/4.205.table\
-	grib2/tables/12/4.206.table\
-	grib2/tables/12/4.207.table\
-	grib2/tables/12/4.208.table\
-	grib2/tables/12/4.209.table\
-	grib2/tables/12/4.210.table\
-	grib2/tables/12/4.211.table\
-	grib2/tables/12/4.212.table\
-	grib2/tables/12/4.213.table\
-	grib2/tables/12/4.215.table\
-	grib2/tables/12/4.216.table\
-	grib2/tables/12/4.217.table\
-	grib2/tables/12/4.218.table\
-	grib2/tables/12/4.219.table\
-	grib2/tables/12/4.220.table\
-	grib2/tables/12/4.221.table\
-	grib2/tables/12/4.222.table\
-	grib2/tables/12/4.223.table\
-	grib2/tables/12/4.224.table\
-	grib2/tables/12/4.225.table\
-	grib2/tables/12/4.227.table\
-	grib2/tables/12/4.230.table\
-	grib2/tables/12/4.233.table\
-	grib2/tables/12/4.234.table\
-	grib2/tables/12/4.236.table\
-	grib2/tables/12/4.3.table\
-	grib2/tables/12/4.4.table\
-	grib2/tables/12/4.5.table\
-	grib2/tables/12/4.6.table\
-	grib2/tables/12/4.7.table\
-	grib2/tables/12/4.8.table\
-	grib2/tables/12/4.9.table\
-	grib2/tables/12/4.91.table\
-	grib2/tables/12/5.0.table\
-	grib2/tables/12/5.1.table\
-	grib2/tables/12/5.2.table\
-	grib2/tables/12/5.3.table\
-	grib2/tables/12/5.4.table\
-	grib2/tables/12/5.40.table\
-	grib2/tables/12/5.40000.table\
-	grib2/tables/12/5.5.table\
-	grib2/tables/12/5.50002.table\
-	grib2/tables/12/5.6.table\
-	grib2/tables/12/5.7.table\
-	grib2/tables/12/5.8.table\
-	grib2/tables/12/5.9.table\
-	grib2/tables/12/6.0.table\
-	grib2/tables/12/stepType.table
-
-definitionsgrib2_tables_13dir = @ECCODES_DEFINITION_PATH@/grib2/tables/13
-dist_definitionsgrib2_tables_13_DATA = \
-	grib2/tables/13/0.0.table\
-	grib2/tables/13/1.0.table\
-	grib2/tables/13/1.1.table\
-	grib2/tables/13/1.2.table\
-	grib2/tables/13/1.3.table\
-	grib2/tables/13/1.4.table\
-	grib2/tables/13/1.5.table\
-	grib2/tables/13/1.6.table\
-	grib2/tables/13/3.0.table\
-	grib2/tables/13/3.1.table\
-	grib2/tables/13/3.10.table\
-	grib2/tables/13/3.11.table\
-	grib2/tables/13/3.15.table\
-	grib2/tables/13/3.2.table\
-	grib2/tables/13/3.20.table\
-	grib2/tables/13/3.21.table\
-	grib2/tables/13/3.3.table\
-	grib2/tables/13/3.4.table\
-	grib2/tables/13/3.5.table\
-	grib2/tables/13/3.6.table\
-	grib2/tables/13/3.7.table\
-	grib2/tables/13/3.8.table\
-	grib2/tables/13/3.9.table\
-	grib2/tables/13/4.0.table\
-	grib2/tables/13/4.1.0.table\
-	grib2/tables/13/4.1.1.table\
-	grib2/tables/13/4.1.10.table\
-	grib2/tables/13/4.1.192.table\
-	grib2/tables/13/4.1.2.table\
-	grib2/tables/13/4.1.3.table\
-	grib2/tables/13/4.10.table\
-	grib2/tables/13/4.11.table\
-	grib2/tables/13/4.12.table\
-	grib2/tables/13/4.13.table\
-	grib2/tables/13/4.14.table\
-	grib2/tables/13/4.15.table\
-	grib2/tables/13/4.192.table\
-	grib2/tables/13/4.2.0.0.table\
-	grib2/tables/13/4.2.0.1.table\
-	grib2/tables/13/4.2.0.13.table\
-	grib2/tables/13/4.2.0.14.table\
-	grib2/tables/13/4.2.0.15.table\
-	grib2/tables/13/4.2.0.16.table\
-	grib2/tables/13/4.2.0.17.table\
-	grib2/tables/13/4.2.0.18.table\
-	grib2/tables/13/4.2.0.19.table\
-	grib2/tables/13/4.2.0.190.table\
-	grib2/tables/13/4.2.0.191.table\
-	grib2/tables/13/4.2.0.2.table\
-	grib2/tables/13/4.2.0.20.table\
-	grib2/tables/13/4.2.0.3.table\
-	grib2/tables/13/4.2.0.4.table\
-	grib2/tables/13/4.2.0.5.table\
-	grib2/tables/13/4.2.0.6.table\
-	grib2/tables/13/4.2.0.7.table\
-	grib2/tables/13/4.2.1.0.table\
-	grib2/tables/13/4.2.1.1.table\
-	grib2/tables/13/4.2.1.2.table\
-	grib2/tables/13/4.2.10.0.table\
-	grib2/tables/13/4.2.10.1.table\
-	grib2/tables/13/4.2.10.191.table\
-	grib2/tables/13/4.2.10.2.table\
-	grib2/tables/13/4.2.10.3.table\
-	grib2/tables/13/4.2.10.4.table\
-	grib2/tables/13/4.2.2.0.table\
-	grib2/tables/13/4.2.2.3.table\
-	grib2/tables/13/4.2.2.4.table\
-	grib2/tables/13/4.2.3.0.table\
-	grib2/tables/13/4.2.3.1.table\
-	grib2/tables/13/4.201.table\
-	grib2/tables/13/4.202.table\
-	grib2/tables/13/4.203.table\
-	grib2/tables/13/4.204.table\
-	grib2/tables/13/4.205.table\
-	grib2/tables/13/4.206.table\
-	grib2/tables/13/4.207.table\
-	grib2/tables/13/4.208.table\
-	grib2/tables/13/4.209.table\
-	grib2/tables/13/4.210.table\
-	grib2/tables/13/4.211.table\
-	grib2/tables/13/4.212.table\
-	grib2/tables/13/4.213.table\
-	grib2/tables/13/4.215.table\
-	grib2/tables/13/4.216.table\
-	grib2/tables/13/4.217.table\
-	grib2/tables/13/4.218.table\
-	grib2/tables/13/4.219.table\
-	grib2/tables/13/4.220.table\
-	grib2/tables/13/4.221.table\
-	grib2/tables/13/4.222.table\
-	grib2/tables/13/4.223.table\
-	grib2/tables/13/4.224.table\
-	grib2/tables/13/4.225.table\
-	grib2/tables/13/4.227.table\
-	grib2/tables/13/4.230.table\
-	grib2/tables/13/4.233.table\
-	grib2/tables/13/4.234.table\
-	grib2/tables/13/4.236.table\
-	grib2/tables/13/4.3.table\
-	grib2/tables/13/4.4.table\
-	grib2/tables/13/4.5.table\
-	grib2/tables/13/4.6.table\
-	grib2/tables/13/4.7.table\
-	grib2/tables/13/4.8.table\
-	grib2/tables/13/4.9.table\
-	grib2/tables/13/4.91.table\
-	grib2/tables/13/5.0.table\
-	grib2/tables/13/5.1.table\
-	grib2/tables/13/5.2.table\
-	grib2/tables/13/5.3.table\
-	grib2/tables/13/5.4.table\
-	grib2/tables/13/5.40.table\
-	grib2/tables/13/5.40000.table\
-	grib2/tables/13/5.5.table\
-	grib2/tables/13/5.50002.table\
-	grib2/tables/13/5.6.table\
-	grib2/tables/13/5.7.table\
-	grib2/tables/13/5.8.table\
-	grib2/tables/13/5.9.table\
-	grib2/tables/13/6.0.table\
-	grib2/tables/13/stepType.table
-
-definitionsgrib2_tables_14dir = @ECCODES_DEFINITION_PATH@/grib2/tables/14
-dist_definitionsgrib2_tables_14_DATA = \
-	grib2/tables/14/0.0.table\
-	grib2/tables/14/1.0.table\
-	grib2/tables/14/1.1.table\
-	grib2/tables/14/1.2.table\
-	grib2/tables/14/1.3.table\
-	grib2/tables/14/1.4.table\
-	grib2/tables/14/1.5.table\
-	grib2/tables/14/1.6.table\
-	grib2/tables/14/3.0.table\
-	grib2/tables/14/3.1.table\
-	grib2/tables/14/3.10.table\
-	grib2/tables/14/3.11.table\
-	grib2/tables/14/3.15.table\
-	grib2/tables/14/3.2.table\
-	grib2/tables/14/3.20.table\
-	grib2/tables/14/3.21.table\
-	grib2/tables/14/3.3.table\
-	grib2/tables/14/3.4.table\
-	grib2/tables/14/3.5.table\
-	grib2/tables/14/3.6.table\
-	grib2/tables/14/3.7.table\
-	grib2/tables/14/3.8.table\
-	grib2/tables/14/3.9.table\
-	grib2/tables/14/4.0.table\
-	grib2/tables/14/4.1.0.table\
-	grib2/tables/14/4.1.1.table\
-	grib2/tables/14/4.1.10.table\
-	grib2/tables/14/4.1.192.table\
-	grib2/tables/14/4.1.2.table\
-	grib2/tables/14/4.1.3.table\
-	grib2/tables/14/4.10.table\
-	grib2/tables/14/4.11.table\
-	grib2/tables/14/4.12.table\
-	grib2/tables/14/4.13.table\
-	grib2/tables/14/4.14.table\
-	grib2/tables/14/4.15.table\
-	grib2/tables/14/4.192.table\
-	grib2/tables/14/4.2.0.0.table\
-	grib2/tables/14/4.2.0.1.table\
-	grib2/tables/14/4.2.0.13.table\
-	grib2/tables/14/4.2.0.14.table\
-	grib2/tables/14/4.2.0.15.table\
-	grib2/tables/14/4.2.0.16.table\
-	grib2/tables/14/4.2.0.17.table\
-	grib2/tables/14/4.2.0.18.table\
-	grib2/tables/14/4.2.0.19.table\
-	grib2/tables/14/4.2.0.190.table\
-	grib2/tables/14/4.2.0.191.table\
-	grib2/tables/14/4.2.0.2.table\
-	grib2/tables/14/4.2.0.20.table\
-	grib2/tables/14/4.2.0.3.table\
-	grib2/tables/14/4.2.0.4.table\
-	grib2/tables/14/4.2.0.5.table\
-	grib2/tables/14/4.2.0.6.table\
-	grib2/tables/14/4.2.0.7.table\
-	grib2/tables/14/4.2.1.0.table\
-	grib2/tables/14/4.2.1.1.table\
-	grib2/tables/14/4.2.1.2.table\
-	grib2/tables/14/4.2.10.0.table\
-	grib2/tables/14/4.2.10.1.table\
-	grib2/tables/14/4.2.10.191.table\
-	grib2/tables/14/4.2.10.2.table\
-	grib2/tables/14/4.2.10.3.table\
-	grib2/tables/14/4.2.10.4.table\
-	grib2/tables/14/4.2.2.0.table\
-	grib2/tables/14/4.2.2.3.table\
-	grib2/tables/14/4.2.2.4.table\
-	grib2/tables/14/4.2.3.0.table\
-	grib2/tables/14/4.2.3.1.table\
-	grib2/tables/14/4.201.table\
-	grib2/tables/14/4.202.table\
-	grib2/tables/14/4.203.table\
-	grib2/tables/14/4.204.table\
-	grib2/tables/14/4.205.table\
-	grib2/tables/14/4.206.table\
-	grib2/tables/14/4.207.table\
-	grib2/tables/14/4.208.table\
-	grib2/tables/14/4.209.table\
-	grib2/tables/14/4.210.table\
-	grib2/tables/14/4.211.table\
-	grib2/tables/14/4.212.table\
-	grib2/tables/14/4.213.table\
-	grib2/tables/14/4.215.table\
-	grib2/tables/14/4.216.table\
-	grib2/tables/14/4.217.table\
-	grib2/tables/14/4.218.table\
-	grib2/tables/14/4.219.table\
-	grib2/tables/14/4.220.table\
-	grib2/tables/14/4.221.table\
-	grib2/tables/14/4.222.table\
-	grib2/tables/14/4.223.table\
-	grib2/tables/14/4.224.table\
-	grib2/tables/14/4.225.table\
-	grib2/tables/14/4.227.table\
-	grib2/tables/14/4.230.table\
-	grib2/tables/14/4.233.table\
-	grib2/tables/14/4.234.table\
-	grib2/tables/14/4.236.table\
-	grib2/tables/14/4.241.table\
-	grib2/tables/14/4.242.table\
-	grib2/tables/14/4.243.table\
-	grib2/tables/14/4.3.table\
-	grib2/tables/14/4.4.table\
-	grib2/tables/14/4.5.table\
-	grib2/tables/14/4.6.table\
-	grib2/tables/14/4.7.table\
-	grib2/tables/14/4.8.table\
-	grib2/tables/14/4.9.table\
-	grib2/tables/14/4.91.table\
-	grib2/tables/14/5.0.table\
-	grib2/tables/14/5.1.table\
-	grib2/tables/14/5.2.table\
-	grib2/tables/14/5.3.table\
-	grib2/tables/14/5.4.table\
-	grib2/tables/14/5.40.table\
-	grib2/tables/14/5.40000.table\
-	grib2/tables/14/5.5.table\
-	grib2/tables/14/5.50002.table\
-	grib2/tables/14/5.6.table\
-	grib2/tables/14/5.7.table\
-	grib2/tables/14/5.8.table\
-	grib2/tables/14/5.9.table\
-	grib2/tables/14/6.0.table\
-	grib2/tables/14/stepType.table
-
-definitionsgrib2_tables_15dir = @ECCODES_DEFINITION_PATH@/grib2/tables/15
-dist_definitionsgrib2_tables_15_DATA = \
-	grib2/tables/15/0.0.table\
-	grib2/tables/15/1.0.table\
-	grib2/tables/15/1.1.table\
-	grib2/tables/15/1.2.table\
-	grib2/tables/15/1.3.table\
-	grib2/tables/15/1.4.table\
-	grib2/tables/15/1.5.table\
-	grib2/tables/15/1.6.table\
-	grib2/tables/15/3.0.table\
-	grib2/tables/15/3.1.table\
-	grib2/tables/15/3.10.table\
-	grib2/tables/15/3.11.table\
-	grib2/tables/15/3.15.table\
-	grib2/tables/15/3.2.table\
-	grib2/tables/15/3.20.table\
-	grib2/tables/15/3.21.table\
-	grib2/tables/15/3.3.table\
-	grib2/tables/15/3.4.table\
-	grib2/tables/15/3.5.table\
-	grib2/tables/15/3.6.table\
-	grib2/tables/15/3.7.table\
-	grib2/tables/15/3.8.table\
-	grib2/tables/15/3.9.table\
-	grib2/tables/15/4.0.table\
-	grib2/tables/15/4.1.0.table\
-	grib2/tables/15/4.1.1.table\
-	grib2/tables/15/4.1.10.table\
-	grib2/tables/15/4.1.192.table\
-	grib2/tables/15/4.1.2.table\
-	grib2/tables/15/4.1.3.table\
-	grib2/tables/15/4.10.table\
-	grib2/tables/15/4.11.table\
-	grib2/tables/15/4.12.table\
-	grib2/tables/15/4.13.table\
-	grib2/tables/15/4.14.table\
-	grib2/tables/15/4.15.table\
-	grib2/tables/15/4.192.table\
-	grib2/tables/15/4.2.0.0.table\
-	grib2/tables/15/4.2.0.1.table\
-	grib2/tables/15/4.2.0.13.table\
-	grib2/tables/15/4.2.0.14.table\
-	grib2/tables/15/4.2.0.15.table\
-	grib2/tables/15/4.2.0.16.table\
-	grib2/tables/15/4.2.0.17.table\
-	grib2/tables/15/4.2.0.18.table\
-	grib2/tables/15/4.2.0.19.table\
-	grib2/tables/15/4.2.0.190.table\
-	grib2/tables/15/4.2.0.191.table\
-	grib2/tables/15/4.2.0.2.table\
-	grib2/tables/15/4.2.0.20.table\
-	grib2/tables/15/4.2.0.3.table\
-	grib2/tables/15/4.2.0.4.table\
-	grib2/tables/15/4.2.0.5.table\
-	grib2/tables/15/4.2.0.6.table\
-	grib2/tables/15/4.2.0.7.table\
-	grib2/tables/15/4.2.1.0.table\
-	grib2/tables/15/4.2.1.1.table\
-	grib2/tables/15/4.2.1.2.table\
-	grib2/tables/15/4.2.10.0.table\
-	grib2/tables/15/4.2.10.1.table\
-	grib2/tables/15/4.2.10.191.table\
-	grib2/tables/15/4.2.10.2.table\
-	grib2/tables/15/4.2.10.3.table\
-	grib2/tables/15/4.2.10.4.table\
-	grib2/tables/15/4.2.2.0.table\
-	grib2/tables/15/4.2.2.3.table\
-	grib2/tables/15/4.2.2.4.table\
-	grib2/tables/15/4.2.2.5.table\
-	grib2/tables/15/4.2.3.0.table\
-	grib2/tables/15/4.2.3.1.table\
-	grib2/tables/15/4.201.table\
-	grib2/tables/15/4.202.table\
-	grib2/tables/15/4.203.table\
-	grib2/tables/15/4.204.table\
-	grib2/tables/15/4.205.table\
-	grib2/tables/15/4.206.table\
-	grib2/tables/15/4.207.table\
-	grib2/tables/15/4.208.table\
-	grib2/tables/15/4.209.table\
-	grib2/tables/15/4.210.table\
-	grib2/tables/15/4.211.table\
-	grib2/tables/15/4.212.table\
-	grib2/tables/15/4.213.table\
-	grib2/tables/15/4.215.table\
-	grib2/tables/15/4.216.table\
-	grib2/tables/15/4.217.table\
-	grib2/tables/15/4.218.table\
-	grib2/tables/15/4.219.table\
-	grib2/tables/15/4.220.table\
-	grib2/tables/15/4.221.table\
-	grib2/tables/15/4.222.table\
-	grib2/tables/15/4.223.table\
-	grib2/tables/15/4.224.table\
-	grib2/tables/15/4.225.table\
-	grib2/tables/15/4.227.table\
-	grib2/tables/15/4.230.table\
-	grib2/tables/15/4.233.table\
-	grib2/tables/15/4.234.table\
-	grib2/tables/15/4.236.table\
-	grib2/tables/15/4.240.table\
-	grib2/tables/15/4.241.table\
-	grib2/tables/15/4.242.table\
-	grib2/tables/15/4.243.table\
-	grib2/tables/15/4.3.table\
-	grib2/tables/15/4.4.table\
-	grib2/tables/15/4.5.table\
-	grib2/tables/15/4.6.table\
-	grib2/tables/15/4.7.table\
-	grib2/tables/15/4.8.table\
-	grib2/tables/15/4.9.table\
-	grib2/tables/15/4.91.table\
-	grib2/tables/15/5.0.table\
-	grib2/tables/15/5.1.table\
-	grib2/tables/15/5.2.table\
-	grib2/tables/15/5.3.table\
-	grib2/tables/15/5.4.table\
-	grib2/tables/15/5.40.table\
-	grib2/tables/15/5.40000.table\
-	grib2/tables/15/5.5.table\
-	grib2/tables/15/5.50002.table\
-	grib2/tables/15/5.6.table\
-	grib2/tables/15/5.7.table\
-	grib2/tables/15/6.0.table\
-	grib2/tables/15/stepType.table
-
-definitionsgrib2_tables_16dir = @ECCODES_DEFINITION_PATH@/grib2/tables/16
-dist_definitionsgrib2_tables_16_DATA = \
-	grib2/tables/16/0.0.table\
-	grib2/tables/16/1.0.table\
-	grib2/tables/16/1.1.table\
-	grib2/tables/16/1.2.table\
-	grib2/tables/16/1.3.table\
-	grib2/tables/16/1.4.table\
-	grib2/tables/16/1.5.table\
-	grib2/tables/16/1.6.table\
-	grib2/tables/16/3.0.table\
-	grib2/tables/16/3.1.table\
-	grib2/tables/16/3.10.table\
-	grib2/tables/16/3.11.table\
-	grib2/tables/16/3.15.table\
-	grib2/tables/16/3.2.table\
-	grib2/tables/16/3.20.table\
-	grib2/tables/16/3.21.table\
-	grib2/tables/16/3.3.table\
-	grib2/tables/16/3.4.table\
-	grib2/tables/16/3.5.table\
-	grib2/tables/16/3.6.table\
-	grib2/tables/16/3.7.table\
-	grib2/tables/16/3.8.table\
-	grib2/tables/16/3.9.table\
-	grib2/tables/16/4.0.table\
-	grib2/tables/16/4.1.0.table\
-	grib2/tables/16/4.1.1.table\
-	grib2/tables/16/4.1.10.table\
-	grib2/tables/16/4.1.192.table\
-	grib2/tables/16/4.1.2.table\
-	grib2/tables/16/4.1.3.table\
-	grib2/tables/16/4.10.table\
-	grib2/tables/16/4.11.table\
-	grib2/tables/16/4.12.table\
-	grib2/tables/16/4.13.table\
-	grib2/tables/16/4.14.table\
-	grib2/tables/16/4.15.table\
-	grib2/tables/16/4.192.table\
-	grib2/tables/16/4.2.0.0.table\
-	grib2/tables/16/4.2.0.1.table\
-	grib2/tables/16/4.2.0.13.table\
-	grib2/tables/16/4.2.0.14.table\
-	grib2/tables/16/4.2.0.15.table\
-	grib2/tables/16/4.2.0.16.table\
-	grib2/tables/16/4.2.0.17.table\
-	grib2/tables/16/4.2.0.18.table\
-	grib2/tables/16/4.2.0.19.table\
-	grib2/tables/16/4.2.0.190.table\
-	grib2/tables/16/4.2.0.191.table\
-	grib2/tables/16/4.2.0.2.table\
-	grib2/tables/16/4.2.0.20.table\
-	grib2/tables/16/4.2.0.3.table\
-	grib2/tables/16/4.2.0.4.table\
-	grib2/tables/16/4.2.0.5.table\
-	grib2/tables/16/4.2.0.6.table\
-	grib2/tables/16/4.2.0.7.table\
-	grib2/tables/16/4.2.1.0.table\
-	grib2/tables/16/4.2.1.1.table\
-	grib2/tables/16/4.2.1.2.table\
-	grib2/tables/16/4.2.10.0.table\
-	grib2/tables/16/4.2.10.1.table\
-	grib2/tables/16/4.2.10.191.table\
-	grib2/tables/16/4.2.10.2.table\
-	grib2/tables/16/4.2.10.3.table\
-	grib2/tables/16/4.2.10.4.table\
-	grib2/tables/16/4.2.2.0.table\
-	grib2/tables/16/4.2.2.3.table\
-	grib2/tables/16/4.2.2.4.table\
-	grib2/tables/16/4.2.2.5.table\
-	grib2/tables/16/4.2.3.0.table\
-	grib2/tables/16/4.2.3.1.table\
-	grib2/tables/16/4.2.3.2.table\
-	grib2/tables/16/4.2.3.3.table\
-	grib2/tables/16/4.2.3.4.table\
-	grib2/tables/16/4.2.3.5.table\
-	grib2/tables/16/4.2.3.6.table\
-	grib2/tables/16/4.201.table\
-	grib2/tables/16/4.202.table\
-	grib2/tables/16/4.203.table\
-	grib2/tables/16/4.204.table\
-	grib2/tables/16/4.205.table\
-	grib2/tables/16/4.206.table\
-	grib2/tables/16/4.207.table\
-	grib2/tables/16/4.208.table\
-	grib2/tables/16/4.209.table\
-	grib2/tables/16/4.210.table\
-	grib2/tables/16/4.211.table\
-	grib2/tables/16/4.212.table\
-	grib2/tables/16/4.213.table\
-	grib2/tables/16/4.215.table\
-	grib2/tables/16/4.216.table\
-	grib2/tables/16/4.217.table\
-	grib2/tables/16/4.218.table\
-	grib2/tables/16/4.219.table\
-	grib2/tables/16/4.220.table\
-	grib2/tables/16/4.221.table\
-	grib2/tables/16/4.222.table\
-	grib2/tables/16/4.223.table\
-	grib2/tables/16/4.224.table\
-	grib2/tables/16/4.225.table\
-	grib2/tables/16/4.227.table\
-	grib2/tables/16/4.230.table\
-	grib2/tables/16/4.233.table\
-	grib2/tables/16/4.234.table\
-	grib2/tables/16/4.236.table\
-	grib2/tables/16/4.240.table\
-	grib2/tables/16/4.241.table\
-	grib2/tables/16/4.242.table\
-	grib2/tables/16/4.243.table\
-	grib2/tables/16/4.3.table\
-	grib2/tables/16/4.4.table\
-	grib2/tables/16/4.5.table\
-	grib2/tables/16/4.6.table\
-	grib2/tables/16/4.7.table\
-	grib2/tables/16/4.8.table\
-	grib2/tables/16/4.9.table\
-	grib2/tables/16/4.91.table\
-	grib2/tables/16/5.0.table\
-	grib2/tables/16/5.1.table\
-	grib2/tables/16/5.2.table\
-	grib2/tables/16/5.3.table\
-	grib2/tables/16/5.4.table\
-	grib2/tables/16/5.40.table\
-	grib2/tables/16/5.40000.table\
-	grib2/tables/16/5.5.table\
-	grib2/tables/16/5.50002.table\
-	grib2/tables/16/5.6.table\
-	grib2/tables/16/5.7.table\
-	grib2/tables/16/6.0.table\
-	grib2/tables/16/stepType.table
-
-definitionsgrib2_tables_17dir = @ECCODES_DEFINITION_PATH@/grib2/tables/17
-dist_definitionsgrib2_tables_17_DATA = \
-	grib2/tables/17/0.0.table\
-	grib2/tables/17/1.0.table\
-	grib2/tables/17/1.1.table\
-	grib2/tables/17/1.2.table\
-	grib2/tables/17/1.3.table\
-	grib2/tables/17/1.4.table\
-	grib2/tables/17/1.5.table\
-	grib2/tables/17/1.6.table\
-	grib2/tables/17/3.0.table\
-	grib2/tables/17/3.1.table\
-	grib2/tables/17/3.10.table\
-	grib2/tables/17/3.11.table\
-	grib2/tables/17/3.15.table\
-	grib2/tables/17/3.2.table\
-	grib2/tables/17/3.20.table\
-	grib2/tables/17/3.21.table\
-	grib2/tables/17/3.3.table\
-	grib2/tables/17/3.4.table\
-	grib2/tables/17/3.5.table\
-	grib2/tables/17/3.6.table\
-	grib2/tables/17/3.7.table\
-	grib2/tables/17/3.8.table\
-	grib2/tables/17/3.9.table\
-	grib2/tables/17/4.0.table\
-	grib2/tables/17/4.1.0.table\
-	grib2/tables/17/4.1.1.table\
-	grib2/tables/17/4.1.10.table\
-	grib2/tables/17/4.1.192.table\
-	grib2/tables/17/4.1.2.table\
-	grib2/tables/17/4.1.3.table\
-	grib2/tables/17/4.10.table\
-	grib2/tables/17/4.11.table\
-	grib2/tables/17/4.12.table\
-	grib2/tables/17/4.13.table\
-	grib2/tables/17/4.14.table\
-	grib2/tables/17/4.15.table\
-	grib2/tables/17/4.192.table\
-	grib2/tables/17/4.2.0.0.table\
-	grib2/tables/17/4.2.0.1.table\
-	grib2/tables/17/4.2.0.13.table\
-	grib2/tables/17/4.2.0.14.table\
-	grib2/tables/17/4.2.0.15.table\
-	grib2/tables/17/4.2.0.16.table\
-	grib2/tables/17/4.2.0.17.table\
-	grib2/tables/17/4.2.0.18.table\
-	grib2/tables/17/4.2.0.19.table\
-	grib2/tables/17/4.2.0.190.table\
-	grib2/tables/17/4.2.0.191.table\
-	grib2/tables/17/4.2.0.2.table\
-	grib2/tables/17/4.2.0.20.table\
-	grib2/tables/17/4.2.0.3.table\
-	grib2/tables/17/4.2.0.4.table\
-	grib2/tables/17/4.2.0.5.table\
-	grib2/tables/17/4.2.0.6.table\
-	grib2/tables/17/4.2.0.7.table\
-	grib2/tables/17/4.2.1.0.table\
-	grib2/tables/17/4.2.1.1.table\
-	grib2/tables/17/4.2.1.2.table\
-	grib2/tables/17/4.2.10.0.table\
-	grib2/tables/17/4.2.10.1.table\
-	grib2/tables/17/4.2.10.191.table\
-	grib2/tables/17/4.2.10.2.table\
-	grib2/tables/17/4.2.10.3.table\
-	grib2/tables/17/4.2.10.4.table\
-	grib2/tables/17/4.2.2.0.table\
-	grib2/tables/17/4.2.2.3.table\
-	grib2/tables/17/4.2.2.4.table\
-	grib2/tables/17/4.2.2.5.table\
-	grib2/tables/17/4.2.3.0.table\
-	grib2/tables/17/4.2.3.1.table\
-	grib2/tables/17/4.2.3.2.table\
-	grib2/tables/17/4.2.3.3.table\
-	grib2/tables/17/4.2.3.4.table\
-	grib2/tables/17/4.2.3.5.table\
-	grib2/tables/17/4.2.3.6.table\
-	grib2/tables/17/4.201.table\
-	grib2/tables/17/4.202.table\
-	grib2/tables/17/4.203.table\
-	grib2/tables/17/4.204.table\
-	grib2/tables/17/4.205.table\
-	grib2/tables/17/4.206.table\
-	grib2/tables/17/4.207.table\
-	grib2/tables/17/4.208.table\
-	grib2/tables/17/4.209.table\
-	grib2/tables/17/4.210.table\
-	grib2/tables/17/4.211.table\
-	grib2/tables/17/4.212.table\
-	grib2/tables/17/4.213.table\
-	grib2/tables/17/4.215.table\
-	grib2/tables/17/4.216.table\
-	grib2/tables/17/4.217.table\
-	grib2/tables/17/4.218.table\
-	grib2/tables/17/4.219.table\
-	grib2/tables/17/4.220.table\
-	grib2/tables/17/4.221.table\
-	grib2/tables/17/4.222.table\
-	grib2/tables/17/4.223.table\
-	grib2/tables/17/4.224.table\
-	grib2/tables/17/4.225.table\
-	grib2/tables/17/4.227.table\
-	grib2/tables/17/4.230.table\
-	grib2/tables/17/4.233.table\
-	grib2/tables/17/4.234.table\
-	grib2/tables/17/4.236.table\
-	grib2/tables/17/4.240.table\
-	grib2/tables/17/4.241.table\
-	grib2/tables/17/4.242.table\
-	grib2/tables/17/4.243.table\
-	grib2/tables/17/4.3.table\
-	grib2/tables/17/4.4.table\
-	grib2/tables/17/4.5.table\
-	grib2/tables/17/4.6.table\
-	grib2/tables/17/4.7.table\
-	grib2/tables/17/4.8.table\
-	grib2/tables/17/4.9.table\
-	grib2/tables/17/4.91.table\
-	grib2/tables/17/5.0.table\
-	grib2/tables/17/5.1.table\
-	grib2/tables/17/5.2.table\
-	grib2/tables/17/5.3.table\
-	grib2/tables/17/5.4.table\
-	grib2/tables/17/5.40.table\
-	grib2/tables/17/5.40000.table\
-	grib2/tables/17/5.5.table\
-	grib2/tables/17/5.50002.table\
-	grib2/tables/17/5.6.table\
-	grib2/tables/17/5.7.table\
-	grib2/tables/17/6.0.table\
-	grib2/tables/17/stepType.table
-
-definitionsgrib2_tables_2dir = @ECCODES_DEFINITION_PATH@/grib2/tables/2
-dist_definitionsgrib2_tables_2_DATA = \
-	grib2/tables/2/0.0.table\
-	grib2/tables/2/1.0.table\
-	grib2/tables/2/1.1.table\
-	grib2/tables/2/1.2.table\
-	grib2/tables/2/1.3.table\
-	grib2/tables/2/1.4.table\
-	grib2/tables/2/3.0.table\
-	grib2/tables/2/3.1.table\
-	grib2/tables/2/3.10.table\
-	grib2/tables/2/3.11.table\
-	grib2/tables/2/3.15.table\
-	grib2/tables/2/3.2.table\
-	grib2/tables/2/3.20.table\
-	grib2/tables/2/3.21.table\
-	grib2/tables/2/3.3.table\
-	grib2/tables/2/3.4.table\
-	grib2/tables/2/3.5.table\
-	grib2/tables/2/3.6.table\
-	grib2/tables/2/3.7.table\
-	grib2/tables/2/3.8.table\
-	grib2/tables/2/3.9.table\
-	grib2/tables/2/4.0.table\
-	grib2/tables/2/4.1.0.table\
-	grib2/tables/2/4.1.1.table\
-	grib2/tables/2/4.1.10.table\
-	grib2/tables/2/4.1.2.table\
-	grib2/tables/2/4.1.3.table\
-	grib2/tables/2/4.1.table\
-	grib2/tables/2/4.10.table\
-	grib2/tables/2/4.11.table\
-	grib2/tables/2/4.12.table\
-	grib2/tables/2/4.13.table\
-	grib2/tables/2/4.14.table\
-	grib2/tables/2/4.15.table\
-	grib2/tables/2/4.151.table\
-	grib2/tables/2/4.2.0.0.table\
-	grib2/tables/2/4.2.0.1.table\
-	grib2/tables/2/4.2.0.13.table\
-	grib2/tables/2/4.2.0.14.table\
-	grib2/tables/2/4.2.0.15.table\
-	grib2/tables/2/4.2.0.18.table\
-	grib2/tables/2/4.2.0.19.table\
-	grib2/tables/2/4.2.0.190.table\
-	grib2/tables/2/4.2.0.191.table\
-	grib2/tables/2/4.2.0.2.table\
-	grib2/tables/2/4.2.0.20.table\
-	grib2/tables/2/4.2.0.3.table\
-	grib2/tables/2/4.2.0.4.table\
-	grib2/tables/2/4.2.0.5.table\
-	grib2/tables/2/4.2.0.6.table\
-	grib2/tables/2/4.2.0.7.table\
-	grib2/tables/2/4.2.1.0.table\
-	grib2/tables/2/4.2.1.1.table\
-	grib2/tables/2/4.2.10.0.table\
-	grib2/tables/2/4.2.10.1.table\
-	grib2/tables/2/4.2.10.2.table\
-	grib2/tables/2/4.2.10.3.table\
-	grib2/tables/2/4.2.10.4.table\
-	grib2/tables/2/4.2.2.0.table\
-	grib2/tables/2/4.2.2.3.table\
-	grib2/tables/2/4.2.3.0.table\
-	grib2/tables/2/4.2.3.1.table\
-	grib2/tables/2/4.2.table\
-	grib2/tables/2/4.201.table\
-	grib2/tables/2/4.202.table\
-	grib2/tables/2/4.203.table\
-	grib2/tables/2/4.204.table\
-	grib2/tables/2/4.205.table\
-	grib2/tables/2/4.206.table\
-	grib2/tables/2/4.207.table\
-	grib2/tables/2/4.208.table\
-	grib2/tables/2/4.209.table\
-	grib2/tables/2/4.210.table\
-	grib2/tables/2/4.211.table\
-	grib2/tables/2/4.212.table\
-	grib2/tables/2/4.213.table\
-	grib2/tables/2/4.215.table\
-	grib2/tables/2/4.216.table\
-	grib2/tables/2/4.217.table\
-	grib2/tables/2/4.220.table\
-	grib2/tables/2/4.221.table\
-	grib2/tables/2/4.230.table\
-	grib2/tables/2/4.3.table\
-	grib2/tables/2/4.4.table\
-	grib2/tables/2/4.5.table\
-	grib2/tables/2/4.6.table\
-	grib2/tables/2/4.7.table\
-	grib2/tables/2/4.8.table\
-	grib2/tables/2/4.9.table\
-	grib2/tables/2/4.91.table\
-	grib2/tables/2/5.0.table\
-	grib2/tables/2/5.1.table\
-	grib2/tables/2/5.2.table\
-	grib2/tables/2/5.3.table\
-	grib2/tables/2/5.4.table\
-	grib2/tables/2/5.40.table\
-	grib2/tables/2/5.40000.table\
-	grib2/tables/2/5.5.table\
-	grib2/tables/2/5.6.table\
-	grib2/tables/2/5.7.table\
-	grib2/tables/2/5.8.table\
-	grib2/tables/2/5.9.table\
-	grib2/tables/2/6.0.table\
-	grib2/tables/2/stepType.table
-
-definitionsgrib2_tables_3dir = @ECCODES_DEFINITION_PATH@/grib2/tables/3
-dist_definitionsgrib2_tables_3_DATA = \
-	grib2/tables/3/0.0.table\
-	grib2/tables/3/1.0.table\
-	grib2/tables/3/1.1.table\
-	grib2/tables/3/1.2.table\
-	grib2/tables/3/1.3.table\
-	grib2/tables/3/1.4.table\
-	grib2/tables/3/3.0.table\
-	grib2/tables/3/3.1.table\
-	grib2/tables/3/3.10.table\
-	grib2/tables/3/3.11.table\
-	grib2/tables/3/3.15.table\
-	grib2/tables/3/3.2.table\
-	grib2/tables/3/3.20.table\
-	grib2/tables/3/3.21.table\
-	grib2/tables/3/3.3.table\
-	grib2/tables/3/3.4.table\
-	grib2/tables/3/3.5.table\
-	grib2/tables/3/3.6.table\
-	grib2/tables/3/3.7.table\
-	grib2/tables/3/3.8.table\
-	grib2/tables/3/3.9.table\
-	grib2/tables/3/4.0.table\
-	grib2/tables/3/4.1.0.table\
-	grib2/tables/3/4.1.1.table\
-	grib2/tables/3/4.1.10.table\
-	grib2/tables/3/4.1.2.table\
-	grib2/tables/3/4.1.3.table\
-	grib2/tables/3/4.1.table\
-	grib2/tables/3/4.10.table\
-	grib2/tables/3/4.11.table\
-	grib2/tables/3/4.12.table\
-	grib2/tables/3/4.13.table\
-	grib2/tables/3/4.14.table\
-	grib2/tables/3/4.15.table\
-	grib2/tables/3/4.151.table\
-	grib2/tables/3/4.2.0.0.table\
-	grib2/tables/3/4.2.0.1.table\
-	grib2/tables/3/4.2.0.13.table\
-	grib2/tables/3/4.2.0.14.table\
-	grib2/tables/3/4.2.0.15.table\
-	grib2/tables/3/4.2.0.18.table\
-	grib2/tables/3/4.2.0.19.table\
-	grib2/tables/3/4.2.0.190.table\
-	grib2/tables/3/4.2.0.191.table\
-	grib2/tables/3/4.2.0.2.table\
-	grib2/tables/3/4.2.0.20.table\
-	grib2/tables/3/4.2.0.3.table\
-	grib2/tables/3/4.2.0.4.table\
-	grib2/tables/3/4.2.0.5.table\
-	grib2/tables/3/4.2.0.6.table\
-	grib2/tables/3/4.2.0.7.table\
-	grib2/tables/3/4.2.1.0.table\
-	grib2/tables/3/4.2.1.1.table\
-	grib2/tables/3/4.2.10.0.table\
-	grib2/tables/3/4.2.10.1.table\
-	grib2/tables/3/4.2.10.2.table\
-	grib2/tables/3/4.2.10.3.table\
-	grib2/tables/3/4.2.10.4.table\
-	grib2/tables/3/4.2.2.0.table\
-	grib2/tables/3/4.2.2.3.table\
-	grib2/tables/3/4.2.3.0.table\
-	grib2/tables/3/4.2.3.1.table\
-	grib2/tables/3/4.2.table\
-	grib2/tables/3/4.201.table\
-	grib2/tables/3/4.202.table\
-	grib2/tables/3/4.203.table\
-	grib2/tables/3/4.204.table\
-	grib2/tables/3/4.205.table\
-	grib2/tables/3/4.206.table\
-	grib2/tables/3/4.207.table\
-	grib2/tables/3/4.208.table\
-	grib2/tables/3/4.209.table\
-	grib2/tables/3/4.210.table\
-	grib2/tables/3/4.211.table\
-	grib2/tables/3/4.212.table\
-	grib2/tables/3/4.213.table\
-	grib2/tables/3/4.215.table\
-	grib2/tables/3/4.216.table\
-	grib2/tables/3/4.217.table\
-	grib2/tables/3/4.220.table\
-	grib2/tables/3/4.221.table\
-	grib2/tables/3/4.230.table\
-	grib2/tables/3/4.3.table\
-	grib2/tables/3/4.4.table\
-	grib2/tables/3/4.5.table\
-	grib2/tables/3/4.6.table\
-	grib2/tables/3/4.7.table\
-	grib2/tables/3/4.8.table\
-	grib2/tables/3/4.9.table\
-	grib2/tables/3/4.91.table\
-	grib2/tables/3/5.0.table\
-	grib2/tables/3/5.1.table\
-	grib2/tables/3/5.2.table\
-	grib2/tables/3/5.3.table\
-	grib2/tables/3/5.4.table\
-	grib2/tables/3/5.40.table\
-	grib2/tables/3/5.40000.table\
-	grib2/tables/3/5.5.table\
-	grib2/tables/3/5.50002.table\
-	grib2/tables/3/5.6.table\
-	grib2/tables/3/5.7.table\
-	grib2/tables/3/5.8.table\
-	grib2/tables/3/5.9.table\
-	grib2/tables/3/6.0.table\
-	grib2/tables/3/stepType.table
-
-definitionsgrib2_tables_4dir = @ECCODES_DEFINITION_PATH@/grib2/tables/4
-dist_definitionsgrib2_tables_4_DATA = \
-	grib2/tables/4/0.0.table\
-	grib2/tables/4/1.0.table\
-	grib2/tables/4/1.1.table\
-	grib2/tables/4/1.2.table\
-	grib2/tables/4/1.3.table\
-	grib2/tables/4/1.4.table\
-	grib2/tables/4/3.0.table\
-	grib2/tables/4/3.1.table\
-	grib2/tables/4/3.10.table\
-	grib2/tables/4/3.11.table\
-	grib2/tables/4/3.15.table\
-	grib2/tables/4/3.2.table\
-	grib2/tables/4/3.20.table\
-	grib2/tables/4/3.21.table\
-	grib2/tables/4/3.3.table\
-	grib2/tables/4/3.4.table\
-	grib2/tables/4/3.5.table\
-	grib2/tables/4/3.6.table\
-	grib2/tables/4/3.7.table\
-	grib2/tables/4/3.8.table\
-	grib2/tables/4/3.9.table\
-	grib2/tables/4/4.0.table\
-	grib2/tables/4/4.1.0.table\
-	grib2/tables/4/4.1.1.table\
-	grib2/tables/4/4.1.10.table\
-	grib2/tables/4/4.1.192.table\
-	grib2/tables/4/4.1.2.table\
-	grib2/tables/4/4.1.3.table\
-	grib2/tables/4/4.1.table\
-	grib2/tables/4/4.10.table\
-	grib2/tables/4/4.11.table\
-	grib2/tables/4/4.12.table\
-	grib2/tables/4/4.13.table\
-	grib2/tables/4/4.14.table\
-	grib2/tables/4/4.15.table\
-	grib2/tables/4/4.151.table\
-	grib2/tables/4/4.2.0.0.table\
-	grib2/tables/4/4.2.0.1.table\
-	grib2/tables/4/4.2.0.13.table\
-	grib2/tables/4/4.2.0.14.table\
-	grib2/tables/4/4.2.0.15.table\
-	grib2/tables/4/4.2.0.18.table\
-	grib2/tables/4/4.2.0.19.table\
-	grib2/tables/4/4.2.0.190.table\
-	grib2/tables/4/4.2.0.191.table\
-	grib2/tables/4/4.2.0.2.table\
-	grib2/tables/4/4.2.0.20.table\
-	grib2/tables/4/4.2.0.3.table\
-	grib2/tables/4/4.2.0.4.table\
-	grib2/tables/4/4.2.0.5.table\
-	grib2/tables/4/4.2.0.6.table\
-	grib2/tables/4/4.2.0.7.table\
-	grib2/tables/4/4.2.1.0.table\
-	grib2/tables/4/4.2.1.1.table\
-	grib2/tables/4/4.2.10.0.table\
-	grib2/tables/4/4.2.10.1.table\
-	grib2/tables/4/4.2.10.2.table\
-	grib2/tables/4/4.2.10.3.table\
-	grib2/tables/4/4.2.10.4.table\
-	grib2/tables/4/4.2.192.0.table\
-	grib2/tables/4/4.2.192.1.table\
-	grib2/tables/4/4.2.192.10.table\
-	grib2/tables/4/4.2.192.100.table\
-	grib2/tables/4/4.2.192.101.table\
-	grib2/tables/4/4.2.192.102.table\
-	grib2/tables/4/4.2.192.103.table\
-	grib2/tables/4/4.2.192.104.table\
-	grib2/tables/4/4.2.192.105.table\
-	grib2/tables/4/4.2.192.106.table\
-	grib2/tables/4/4.2.192.107.table\
-	grib2/tables/4/4.2.192.108.table\
-	grib2/tables/4/4.2.192.109.table\
-	grib2/tables/4/4.2.192.11.table\
-	grib2/tables/4/4.2.192.110.table\
-	grib2/tables/4/4.2.192.111.table\
-	grib2/tables/4/4.2.192.112.table\
-	grib2/tables/4/4.2.192.113.table\
-	grib2/tables/4/4.2.192.114.table\
-	grib2/tables/4/4.2.192.115.table\
-	grib2/tables/4/4.2.192.116.table\
-	grib2/tables/4/4.2.192.117.table\
-	grib2/tables/4/4.2.192.118.table\
-	grib2/tables/4/4.2.192.119.table\
-	grib2/tables/4/4.2.192.12.table\
-	grib2/tables/4/4.2.192.120.table\
-	grib2/tables/4/4.2.192.121.table\
-	grib2/tables/4/4.2.192.122.table\
-	grib2/tables/4/4.2.192.123.table\
-	grib2/tables/4/4.2.192.124.table\
-	grib2/tables/4/4.2.192.125.table\
-	grib2/tables/4/4.2.192.126.table\
-	grib2/tables/4/4.2.192.127.table\
-	grib2/tables/4/4.2.192.128.table\
-	grib2/tables/4/4.2.192.129.table\
-	grib2/tables/4/4.2.192.13.table\
-	grib2/tables/4/4.2.192.130.table\
-	grib2/tables/4/4.2.192.131.table\
-	grib2/tables/4/4.2.192.132.table\
-	grib2/tables/4/4.2.192.133.table\
-	grib2/tables/4/4.2.192.134.table\
-	grib2/tables/4/4.2.192.135.table\
-	grib2/tables/4/4.2.192.136.table\
-	grib2/tables/4/4.2.192.137.table\
-	grib2/tables/4/4.2.192.138.table\
-	grib2/tables/4/4.2.192.139.table\
-	grib2/tables/4/4.2.192.14.table\
-	grib2/tables/4/4.2.192.140.table\
-	grib2/tables/4/4.2.192.141.table\
-	grib2/tables/4/4.2.192.142.table\
-	grib2/tables/4/4.2.192.143.table\
-	grib2/tables/4/4.2.192.144.table\
-	grib2/tables/4/4.2.192.145.table\
-	grib2/tables/4/4.2.192.146.table\
-	grib2/tables/4/4.2.192.147.table\
-	grib2/tables/4/4.2.192.148.table\
-	grib2/tables/4/4.2.192.149.table\
-	grib2/tables/4/4.2.192.15.table\
-	grib2/tables/4/4.2.192.150.table\
-	grib2/tables/4/4.2.192.151.table\
-	grib2/tables/4/4.2.192.152.table\
-	grib2/tables/4/4.2.192.153.table\
-	grib2/tables/4/4.2.192.154.table\
-	grib2/tables/4/4.2.192.155.table\
-	grib2/tables/4/4.2.192.156.table\
-	grib2/tables/4/4.2.192.157.table\
-	grib2/tables/4/4.2.192.158.table\
-	grib2/tables/4/4.2.192.159.table\
-	grib2/tables/4/4.2.192.16.table\
-	grib2/tables/4/4.2.192.160.table\
-	grib2/tables/4/4.2.192.161.table\
-	grib2/tables/4/4.2.192.162.table\
-	grib2/tables/4/4.2.192.163.table\
-	grib2/tables/4/4.2.192.164.table\
-	grib2/tables/4/4.2.192.165.table\
-	grib2/tables/4/4.2.192.166.table\
-	grib2/tables/4/4.2.192.167.table\
-	grib2/tables/4/4.2.192.168.table\
-	grib2/tables/4/4.2.192.169.table\
-	grib2/tables/4/4.2.192.17.table\
-	grib2/tables/4/4.2.192.170.table\
-	grib2/tables/4/4.2.192.171.table\
-	grib2/tables/4/4.2.192.172.table\
-	grib2/tables/4/4.2.192.173.table\
-	grib2/tables/4/4.2.192.174.table\
-	grib2/tables/4/4.2.192.175.table\
-	grib2/tables/4/4.2.192.176.table\
-	grib2/tables/4/4.2.192.177.table\
-	grib2/tables/4/4.2.192.178.table\
-	grib2/tables/4/4.2.192.179.table\
-	grib2/tables/4/4.2.192.18.table\
-	grib2/tables/4/4.2.192.180.table\
-	grib2/tables/4/4.2.192.181.table\
-	grib2/tables/4/4.2.192.182.table\
-	grib2/tables/4/4.2.192.183.table\
-	grib2/tables/4/4.2.192.184.table\
-	grib2/tables/4/4.2.192.185.table\
-	grib2/tables/4/4.2.192.186.table\
-	grib2/tables/4/4.2.192.187.table\
-	grib2/tables/4/4.2.192.188.table\
-	grib2/tables/4/4.2.192.189.table\
-	grib2/tables/4/4.2.192.19.table\
-	grib2/tables/4/4.2.192.190.table\
-	grib2/tables/4/4.2.192.191.table\
-	grib2/tables/4/4.2.192.192.table\
-	grib2/tables/4/4.2.192.193.table\
-	grib2/tables/4/4.2.192.194.table\
-	grib2/tables/4/4.2.192.195.table\
-	grib2/tables/4/4.2.192.196.table\
-	grib2/tables/4/4.2.192.197.table\
-	grib2/tables/4/4.2.192.198.table\
-	grib2/tables/4/4.2.192.199.table\
-	grib2/tables/4/4.2.192.2.table\
-	grib2/tables/4/4.2.192.20.table\
-	grib2/tables/4/4.2.192.200.table\
-	grib2/tables/4/4.2.192.201.table\
-	grib2/tables/4/4.2.192.202.table\
-	grib2/tables/4/4.2.192.203.table\
-	grib2/tables/4/4.2.192.204.table\
-	grib2/tables/4/4.2.192.205.table\
-	grib2/tables/4/4.2.192.206.table\
-	grib2/tables/4/4.2.192.207.table\
-	grib2/tables/4/4.2.192.208.table\
-	grib2/tables/4/4.2.192.209.table\
-	grib2/tables/4/4.2.192.21.table\
-	grib2/tables/4/4.2.192.210.table\
-	grib2/tables/4/4.2.192.211.table\
-	grib2/tables/4/4.2.192.212.table\
-	grib2/tables/4/4.2.192.213.table\
-	grib2/tables/4/4.2.192.214.table\
-	grib2/tables/4/4.2.192.215.table\
-	grib2/tables/4/4.2.192.216.table\
-	grib2/tables/4/4.2.192.217.table\
-	grib2/tables/4/4.2.192.218.table\
-	grib2/tables/4/4.2.192.219.table\
-	grib2/tables/4/4.2.192.22.table\
-	grib2/tables/4/4.2.192.220.table\
-	grib2/tables/4/4.2.192.221.table\
-	grib2/tables/4/4.2.192.222.table\
-	grib2/tables/4/4.2.192.223.table\
-	grib2/tables/4/4.2.192.224.table\
-	grib2/tables/4/4.2.192.225.table\
-	grib2/tables/4/4.2.192.226.table\
-	grib2/tables/4/4.2.192.227.table\
-	grib2/tables/4/4.2.192.228.table\
-	grib2/tables/4/4.2.192.229.table\
-	grib2/tables/4/4.2.192.23.table\
-	grib2/tables/4/4.2.192.230.table\
-	grib2/tables/4/4.2.192.231.table\
-	grib2/tables/4/4.2.192.232.table\
-	grib2/tables/4/4.2.192.233.table\
-	grib2/tables/4/4.2.192.234.table\
-	grib2/tables/4/4.2.192.235.table\
-	grib2/tables/4/4.2.192.236.table\
-	grib2/tables/4/4.2.192.237.table\
-	grib2/tables/4/4.2.192.238.table\
-	grib2/tables/4/4.2.192.239.table\
-	grib2/tables/4/4.2.192.24.table\
-	grib2/tables/4/4.2.192.240.table\
-	grib2/tables/4/4.2.192.241.table\
-	grib2/tables/4/4.2.192.242.table\
-	grib2/tables/4/4.2.192.243.table\
-	grib2/tables/4/4.2.192.244.table\
-	grib2/tables/4/4.2.192.245.table\
-	grib2/tables/4/4.2.192.246.table\
-	grib2/tables/4/4.2.192.247.table\
-	grib2/tables/4/4.2.192.248.table\
-	grib2/tables/4/4.2.192.249.table\
-	grib2/tables/4/4.2.192.25.table\
-	grib2/tables/4/4.2.192.250.table\
-	grib2/tables/4/4.2.192.251.table\
-	grib2/tables/4/4.2.192.252.table\
-	grib2/tables/4/4.2.192.253.table\
-	grib2/tables/4/4.2.192.254.table\
-	grib2/tables/4/4.2.192.255.table\
-	grib2/tables/4/4.2.192.26.table\
-	grib2/tables/4/4.2.192.27.table\
-	grib2/tables/4/4.2.192.28.table\
-	grib2/tables/4/4.2.192.29.table\
-	grib2/tables/4/4.2.192.3.table\
-	grib2/tables/4/4.2.192.30.table\
-	grib2/tables/4/4.2.192.31.table\
-	grib2/tables/4/4.2.192.32.table\
-	grib2/tables/4/4.2.192.33.table\
-	grib2/tables/4/4.2.192.34.table\
-	grib2/tables/4/4.2.192.35.table\
-	grib2/tables/4/4.2.192.36.table\
-	grib2/tables/4/4.2.192.37.table\
-	grib2/tables/4/4.2.192.38.table\
-	grib2/tables/4/4.2.192.39.table\
-	grib2/tables/4/4.2.192.4.table\
-	grib2/tables/4/4.2.192.40.table\
-	grib2/tables/4/4.2.192.41.table\
-	grib2/tables/4/4.2.192.42.table\
-	grib2/tables/4/4.2.192.43.table\
-	grib2/tables/4/4.2.192.44.table\
-	grib2/tables/4/4.2.192.45.table\
-	grib2/tables/4/4.2.192.46.table\
-	grib2/tables/4/4.2.192.47.table\
-	grib2/tables/4/4.2.192.48.table\
-	grib2/tables/4/4.2.192.49.table\
-	grib2/tables/4/4.2.192.5.table\
-	grib2/tables/4/4.2.192.50.table\
-	grib2/tables/4/4.2.192.51.table\
-	grib2/tables/4/4.2.192.52.table\
-	grib2/tables/4/4.2.192.53.table\
-	grib2/tables/4/4.2.192.54.table\
-	grib2/tables/4/4.2.192.55.table\
-	grib2/tables/4/4.2.192.56.table\
-	grib2/tables/4/4.2.192.57.table\
-	grib2/tables/4/4.2.192.58.table\
-	grib2/tables/4/4.2.192.59.table\
-	grib2/tables/4/4.2.192.6.table\
-	grib2/tables/4/4.2.192.60.table\
-	grib2/tables/4/4.2.192.61.table\
-	grib2/tables/4/4.2.192.62.table\
-	grib2/tables/4/4.2.192.63.table\
-	grib2/tables/4/4.2.192.64.table\
-	grib2/tables/4/4.2.192.65.table\
-	grib2/tables/4/4.2.192.66.table\
-	grib2/tables/4/4.2.192.67.table\
-	grib2/tables/4/4.2.192.68.table\
-	grib2/tables/4/4.2.192.69.table\
-	grib2/tables/4/4.2.192.7.table\
-	grib2/tables/4/4.2.192.70.table\
-	grib2/tables/4/4.2.192.71.table\
-	grib2/tables/4/4.2.192.72.table\
-	grib2/tables/4/4.2.192.73.table\
-	grib2/tables/4/4.2.192.74.table\
-	grib2/tables/4/4.2.192.75.table\
-	grib2/tables/4/4.2.192.76.table\
-	grib2/tables/4/4.2.192.77.table\
-	grib2/tables/4/4.2.192.78.table\
-	grib2/tables/4/4.2.192.79.table\
-	grib2/tables/4/4.2.192.8.table\
-	grib2/tables/4/4.2.192.80.table\
-	grib2/tables/4/4.2.192.81.table\
-	grib2/tables/4/4.2.192.82.table\
-	grib2/tables/4/4.2.192.83.table\
-	grib2/tables/4/4.2.192.84.table\
-	grib2/tables/4/4.2.192.85.table\
-	grib2/tables/4/4.2.192.86.table\
-	grib2/tables/4/4.2.192.87.table\
-	grib2/tables/4/4.2.192.88.table\
-	grib2/tables/4/4.2.192.89.table\
-	grib2/tables/4/4.2.192.9.table\
-	grib2/tables/4/4.2.192.90.table\
-	grib2/tables/4/4.2.192.91.table\
-	grib2/tables/4/4.2.192.92.table\
-	grib2/tables/4/4.2.192.93.table\
-	grib2/tables/4/4.2.192.94.table\
-	grib2/tables/4/4.2.192.95.table\
-	grib2/tables/4/4.2.192.96.table\
-	grib2/tables/4/4.2.192.97.table\
-	grib2/tables/4/4.2.192.98.table\
-	grib2/tables/4/4.2.192.99.table\
-	grib2/tables/4/4.2.2.0.table\
-	grib2/tables/4/4.2.2.3.table\
-	grib2/tables/4/4.2.3.0.table\
-	grib2/tables/4/4.2.3.1.table\
-	grib2/tables/4/4.2.table\
-	grib2/tables/4/4.201.table\
-	grib2/tables/4/4.202.table\
-	grib2/tables/4/4.203.table\
-	grib2/tables/4/4.204.table\
-	grib2/tables/4/4.205.table\
-	grib2/tables/4/4.206.table\
-	grib2/tables/4/4.207.table\
-	grib2/tables/4/4.208.table\
-	grib2/tables/4/4.209.table\
-	grib2/tables/4/4.210.table\
-	grib2/tables/4/4.211.table\
-	grib2/tables/4/4.212.table\
-	grib2/tables/4/4.213.table\
-	grib2/tables/4/4.215.table\
-	grib2/tables/4/4.216.table\
-	grib2/tables/4/4.217.table\
-	grib2/tables/4/4.220.table\
-	grib2/tables/4/4.221.table\
-	grib2/tables/4/4.230.table\
-	grib2/tables/4/4.3.table\
-	grib2/tables/4/4.4.table\
-	grib2/tables/4/4.5.table\
-	grib2/tables/4/4.6.table\
-	grib2/tables/4/4.7.table\
-	grib2/tables/4/4.8.table\
-	grib2/tables/4/4.9.table\
-	grib2/tables/4/4.91.table\
-	grib2/tables/4/5.0.table\
-	grib2/tables/4/5.1.table\
-	grib2/tables/4/5.2.table\
-	grib2/tables/4/5.3.table\
-	grib2/tables/4/5.4.table\
-	grib2/tables/4/5.40.table\
-	grib2/tables/4/5.40000.table\
-	grib2/tables/4/5.5.table\
-	grib2/tables/4/5.50002.table\
-	grib2/tables/4/5.6.table\
-	grib2/tables/4/5.7.table\
-	grib2/tables/4/5.8.table\
-	grib2/tables/4/5.9.table\
-	grib2/tables/4/6.0.table\
-	grib2/tables/4/stepType.table
-
-definitionsgrib2_tables_5dir = @ECCODES_DEFINITION_PATH@/grib2/tables/5
-dist_definitionsgrib2_tables_5_DATA = \
-	grib2/tables/5/0.0.table\
-	grib2/tables/5/1.0.table\
-	grib2/tables/5/1.1.table\
-	grib2/tables/5/1.2.table\
-	grib2/tables/5/1.3.table\
-	grib2/tables/5/1.4.table\
-	grib2/tables/5/3.0.table\
-	grib2/tables/5/3.1.table\
-	grib2/tables/5/3.10.table\
-	grib2/tables/5/3.11.table\
-	grib2/tables/5/3.15.table\
-	grib2/tables/5/3.2.table\
-	grib2/tables/5/3.20.table\
-	grib2/tables/5/3.21.table\
-	grib2/tables/5/3.3.table\
-	grib2/tables/5/3.4.table\
-	grib2/tables/5/3.5.table\
-	grib2/tables/5/3.6.table\
-	grib2/tables/5/3.7.table\
-	grib2/tables/5/3.8.table\
-	grib2/tables/5/3.9.table\
-	grib2/tables/5/4.0.table\
-	grib2/tables/5/4.1.0.table\
-	grib2/tables/5/4.1.1.table\
-	grib2/tables/5/4.1.10.table\
-	grib2/tables/5/4.1.192.table\
-	grib2/tables/5/4.1.2.table\
-	grib2/tables/5/4.1.3.table\
-	grib2/tables/5/4.1.table\
-	grib2/tables/5/4.10.table\
-	grib2/tables/5/4.11.table\
-	grib2/tables/5/4.12.table\
-	grib2/tables/5/4.13.table\
-	grib2/tables/5/4.14.table\
-	grib2/tables/5/4.15.table\
-	grib2/tables/5/4.151.table\
-	grib2/tables/5/4.192.table\
-	grib2/tables/5/4.2.0.0.table\
-	grib2/tables/5/4.2.0.1.table\
-	grib2/tables/5/4.2.0.13.table\
-	grib2/tables/5/4.2.0.14.table\
-	grib2/tables/5/4.2.0.15.table\
-	grib2/tables/5/4.2.0.18.table\
-	grib2/tables/5/4.2.0.19.table\
-	grib2/tables/5/4.2.0.190.table\
-	grib2/tables/5/4.2.0.191.table\
-	grib2/tables/5/4.2.0.2.table\
-	grib2/tables/5/4.2.0.20.table\
-	grib2/tables/5/4.2.0.3.table\
-	grib2/tables/5/4.2.0.4.table\
-	grib2/tables/5/4.2.0.5.table\
-	grib2/tables/5/4.2.0.6.table\
-	grib2/tables/5/4.2.0.7.table\
-	grib2/tables/5/4.2.1.0.table\
-	grib2/tables/5/4.2.1.1.table\
-	grib2/tables/5/4.2.10.0.table\
-	grib2/tables/5/4.2.10.1.table\
-	grib2/tables/5/4.2.10.191.table\
-	grib2/tables/5/4.2.10.2.table\
-	grib2/tables/5/4.2.10.3.table\
-	grib2/tables/5/4.2.10.4.table\
-	grib2/tables/5/4.2.192.0.table\
-	grib2/tables/5/4.2.192.1.table\
-	grib2/tables/5/4.2.192.10.table\
-	grib2/tables/5/4.2.192.100.table\
-	grib2/tables/5/4.2.192.101.table\
-	grib2/tables/5/4.2.192.102.table\
-	grib2/tables/5/4.2.192.103.table\
-	grib2/tables/5/4.2.192.104.table\
-	grib2/tables/5/4.2.192.105.table\
-	grib2/tables/5/4.2.192.106.table\
-	grib2/tables/5/4.2.192.107.table\
-	grib2/tables/5/4.2.192.108.table\
-	grib2/tables/5/4.2.192.109.table\
-	grib2/tables/5/4.2.192.11.table\
-	grib2/tables/5/4.2.192.110.table\
-	grib2/tables/5/4.2.192.111.table\
-	grib2/tables/5/4.2.192.112.table\
-	grib2/tables/5/4.2.192.113.table\
-	grib2/tables/5/4.2.192.114.table\
-	grib2/tables/5/4.2.192.115.table\
-	grib2/tables/5/4.2.192.116.table\
-	grib2/tables/5/4.2.192.117.table\
-	grib2/tables/5/4.2.192.118.table\
-	grib2/tables/5/4.2.192.119.table\
-	grib2/tables/5/4.2.192.12.table\
-	grib2/tables/5/4.2.192.120.table\
-	grib2/tables/5/4.2.192.121.table\
-	grib2/tables/5/4.2.192.122.table\
-	grib2/tables/5/4.2.192.123.table\
-	grib2/tables/5/4.2.192.124.table\
-	grib2/tables/5/4.2.192.125.table\
-	grib2/tables/5/4.2.192.126.table\
-	grib2/tables/5/4.2.192.127.table\
-	grib2/tables/5/4.2.192.128.table\
-	grib2/tables/5/4.2.192.129.table\
-	grib2/tables/5/4.2.192.13.table\
-	grib2/tables/5/4.2.192.130.table\
-	grib2/tables/5/4.2.192.131.table\
-	grib2/tables/5/4.2.192.132.table\
-	grib2/tables/5/4.2.192.133.table\
-	grib2/tables/5/4.2.192.134.table\
-	grib2/tables/5/4.2.192.135.table\
-	grib2/tables/5/4.2.192.136.table\
-	grib2/tables/5/4.2.192.137.table\
-	grib2/tables/5/4.2.192.138.table\
-	grib2/tables/5/4.2.192.139.table\
-	grib2/tables/5/4.2.192.14.table\
-	grib2/tables/5/4.2.192.140.table\
-	grib2/tables/5/4.2.192.141.table\
-	grib2/tables/5/4.2.192.142.table\
-	grib2/tables/5/4.2.192.143.table\
-	grib2/tables/5/4.2.192.144.table\
-	grib2/tables/5/4.2.192.145.table\
-	grib2/tables/5/4.2.192.146.table\
-	grib2/tables/5/4.2.192.147.table\
-	grib2/tables/5/4.2.192.148.table\
-	grib2/tables/5/4.2.192.149.table\
-	grib2/tables/5/4.2.192.15.table\
-	grib2/tables/5/4.2.192.150.table\
-	grib2/tables/5/4.2.192.151.table\
-	grib2/tables/5/4.2.192.152.table\
-	grib2/tables/5/4.2.192.153.table\
-	grib2/tables/5/4.2.192.154.table\
-	grib2/tables/5/4.2.192.155.table\
-	grib2/tables/5/4.2.192.156.table\
-	grib2/tables/5/4.2.192.157.table\
-	grib2/tables/5/4.2.192.158.table\
-	grib2/tables/5/4.2.192.159.table\
-	grib2/tables/5/4.2.192.16.table\
-	grib2/tables/5/4.2.192.160.table\
-	grib2/tables/5/4.2.192.161.table\
-	grib2/tables/5/4.2.192.162.table\
-	grib2/tables/5/4.2.192.163.table\
-	grib2/tables/5/4.2.192.164.table\
-	grib2/tables/5/4.2.192.165.table\
-	grib2/tables/5/4.2.192.166.table\
-	grib2/tables/5/4.2.192.167.table\
-	grib2/tables/5/4.2.192.168.table\
-	grib2/tables/5/4.2.192.169.table\
-	grib2/tables/5/4.2.192.17.table\
-	grib2/tables/5/4.2.192.170.table\
-	grib2/tables/5/4.2.192.171.table\
-	grib2/tables/5/4.2.192.172.table\
-	grib2/tables/5/4.2.192.173.table\
-	grib2/tables/5/4.2.192.174.table\
-	grib2/tables/5/4.2.192.175.table\
-	grib2/tables/5/4.2.192.176.table\
-	grib2/tables/5/4.2.192.177.table\
-	grib2/tables/5/4.2.192.178.table\
-	grib2/tables/5/4.2.192.179.table\
-	grib2/tables/5/4.2.192.18.table\
-	grib2/tables/5/4.2.192.180.table\
-	grib2/tables/5/4.2.192.181.table\
-	grib2/tables/5/4.2.192.182.table\
-	grib2/tables/5/4.2.192.183.table\
-	grib2/tables/5/4.2.192.184.table\
-	grib2/tables/5/4.2.192.185.table\
-	grib2/tables/5/4.2.192.186.table\
-	grib2/tables/5/4.2.192.187.table\
-	grib2/tables/5/4.2.192.188.table\
-	grib2/tables/5/4.2.192.189.table\
-	grib2/tables/5/4.2.192.19.table\
-	grib2/tables/5/4.2.192.190.table\
-	grib2/tables/5/4.2.192.191.table\
-	grib2/tables/5/4.2.192.192.table\
-	grib2/tables/5/4.2.192.193.table\
-	grib2/tables/5/4.2.192.194.table\
-	grib2/tables/5/4.2.192.195.table\
-	grib2/tables/5/4.2.192.196.table\
-	grib2/tables/5/4.2.192.197.table\
-	grib2/tables/5/4.2.192.198.table\
-	grib2/tables/5/4.2.192.199.table\
-	grib2/tables/5/4.2.192.2.table\
-	grib2/tables/5/4.2.192.20.table\
-	grib2/tables/5/4.2.192.200.table\
-	grib2/tables/5/4.2.192.201.table\
-	grib2/tables/5/4.2.192.202.table\
-	grib2/tables/5/4.2.192.203.table\
-	grib2/tables/5/4.2.192.204.table\
-	grib2/tables/5/4.2.192.205.table\
-	grib2/tables/5/4.2.192.206.table\
-	grib2/tables/5/4.2.192.207.table\
-	grib2/tables/5/4.2.192.208.table\
-	grib2/tables/5/4.2.192.209.table\
-	grib2/tables/5/4.2.192.21.table\
-	grib2/tables/5/4.2.192.210.table\
-	grib2/tables/5/4.2.192.211.table\
-	grib2/tables/5/4.2.192.212.table\
-	grib2/tables/5/4.2.192.213.table\
-	grib2/tables/5/4.2.192.214.table\
-	grib2/tables/5/4.2.192.215.table\
-	grib2/tables/5/4.2.192.216.table\
-	grib2/tables/5/4.2.192.217.table\
-	grib2/tables/5/4.2.192.218.table\
-	grib2/tables/5/4.2.192.219.table\
-	grib2/tables/5/4.2.192.22.table\
-	grib2/tables/5/4.2.192.220.table\
-	grib2/tables/5/4.2.192.221.table\
-	grib2/tables/5/4.2.192.222.table\
-	grib2/tables/5/4.2.192.223.table\
-	grib2/tables/5/4.2.192.224.table\
-	grib2/tables/5/4.2.192.225.table\
-	grib2/tables/5/4.2.192.226.table\
-	grib2/tables/5/4.2.192.227.table\
-	grib2/tables/5/4.2.192.228.table\
-	grib2/tables/5/4.2.192.229.table\
-	grib2/tables/5/4.2.192.23.table\
-	grib2/tables/5/4.2.192.230.table\
-	grib2/tables/5/4.2.192.231.table\
-	grib2/tables/5/4.2.192.232.table\
-	grib2/tables/5/4.2.192.233.table\
-	grib2/tables/5/4.2.192.234.table\
-	grib2/tables/5/4.2.192.235.table\
-	grib2/tables/5/4.2.192.236.table\
-	grib2/tables/5/4.2.192.237.table\
-	grib2/tables/5/4.2.192.238.table\
-	grib2/tables/5/4.2.192.239.table\
-	grib2/tables/5/4.2.192.24.table\
-	grib2/tables/5/4.2.192.240.table\
-	grib2/tables/5/4.2.192.241.table\
-	grib2/tables/5/4.2.192.242.table\
-	grib2/tables/5/4.2.192.243.table\
-	grib2/tables/5/4.2.192.244.table\
-	grib2/tables/5/4.2.192.245.table\
-	grib2/tables/5/4.2.192.246.table\
-	grib2/tables/5/4.2.192.247.table\
-	grib2/tables/5/4.2.192.248.table\
-	grib2/tables/5/4.2.192.249.table\
-	grib2/tables/5/4.2.192.25.table\
-	grib2/tables/5/4.2.192.250.table\
-	grib2/tables/5/4.2.192.251.table\
-	grib2/tables/5/4.2.192.252.table\
-	grib2/tables/5/4.2.192.253.table\
-	grib2/tables/5/4.2.192.254.table\
-	grib2/tables/5/4.2.192.255.table\
-	grib2/tables/5/4.2.192.26.table\
-	grib2/tables/5/4.2.192.27.table\
-	grib2/tables/5/4.2.192.28.table\
-	grib2/tables/5/4.2.192.29.table\
-	grib2/tables/5/4.2.192.3.table\
-	grib2/tables/5/4.2.192.30.table\
-	grib2/tables/5/4.2.192.31.table\
-	grib2/tables/5/4.2.192.32.table\
-	grib2/tables/5/4.2.192.33.table\
-	grib2/tables/5/4.2.192.34.table\
-	grib2/tables/5/4.2.192.35.table\
-	grib2/tables/5/4.2.192.36.table\
-	grib2/tables/5/4.2.192.37.table\
-	grib2/tables/5/4.2.192.38.table\
-	grib2/tables/5/4.2.192.39.table\
-	grib2/tables/5/4.2.192.4.table\
-	grib2/tables/5/4.2.192.40.table\
-	grib2/tables/5/4.2.192.41.table\
-	grib2/tables/5/4.2.192.42.table\
-	grib2/tables/5/4.2.192.43.table\
-	grib2/tables/5/4.2.192.44.table\
-	grib2/tables/5/4.2.192.45.table\
-	grib2/tables/5/4.2.192.46.table\
-	grib2/tables/5/4.2.192.47.table\
-	grib2/tables/5/4.2.192.48.table\
-	grib2/tables/5/4.2.192.49.table\
-	grib2/tables/5/4.2.192.5.table\
-	grib2/tables/5/4.2.192.50.table\
-	grib2/tables/5/4.2.192.51.table\
-	grib2/tables/5/4.2.192.52.table\
-	grib2/tables/5/4.2.192.53.table\
-	grib2/tables/5/4.2.192.54.table\
-	grib2/tables/5/4.2.192.55.table\
-	grib2/tables/5/4.2.192.56.table\
-	grib2/tables/5/4.2.192.57.table\
-	grib2/tables/5/4.2.192.58.table\
-	grib2/tables/5/4.2.192.59.table\
-	grib2/tables/5/4.2.192.6.table\
-	grib2/tables/5/4.2.192.60.table\
-	grib2/tables/5/4.2.192.61.table\
-	grib2/tables/5/4.2.192.62.table\
-	grib2/tables/5/4.2.192.63.table\
-	grib2/tables/5/4.2.192.64.table\
-	grib2/tables/5/4.2.192.65.table\
-	grib2/tables/5/4.2.192.66.table\
-	grib2/tables/5/4.2.192.67.table\
-	grib2/tables/5/4.2.192.68.table\
-	grib2/tables/5/4.2.192.69.table\
-	grib2/tables/5/4.2.192.7.table\
-	grib2/tables/5/4.2.192.70.table\
-	grib2/tables/5/4.2.192.71.table\
-	grib2/tables/5/4.2.192.72.table\
-	grib2/tables/5/4.2.192.73.table\
-	grib2/tables/5/4.2.192.74.table\
-	grib2/tables/5/4.2.192.75.table\
-	grib2/tables/5/4.2.192.76.table\
-	grib2/tables/5/4.2.192.77.table\
-	grib2/tables/5/4.2.192.78.table\
-	grib2/tables/5/4.2.192.79.table\
-	grib2/tables/5/4.2.192.8.table\
-	grib2/tables/5/4.2.192.80.table\
-	grib2/tables/5/4.2.192.81.table\
-	grib2/tables/5/4.2.192.82.table\
-	grib2/tables/5/4.2.192.83.table\
-	grib2/tables/5/4.2.192.84.table\
-	grib2/tables/5/4.2.192.85.table\
-	grib2/tables/5/4.2.192.86.table\
-	grib2/tables/5/4.2.192.87.table\
-	grib2/tables/5/4.2.192.88.table\
-	grib2/tables/5/4.2.192.89.table\
-	grib2/tables/5/4.2.192.9.table\
-	grib2/tables/5/4.2.192.90.table\
-	grib2/tables/5/4.2.192.91.table\
-	grib2/tables/5/4.2.192.92.table\
-	grib2/tables/5/4.2.192.93.table\
-	grib2/tables/5/4.2.192.94.table\
-	grib2/tables/5/4.2.192.95.table\
-	grib2/tables/5/4.2.192.96.table\
-	grib2/tables/5/4.2.192.97.table\
-	grib2/tables/5/4.2.192.98.table\
-	grib2/tables/5/4.2.192.99.table\
-	grib2/tables/5/4.2.2.0.table\
-	grib2/tables/5/4.2.2.3.table\
-	grib2/tables/5/4.2.3.0.table\
-	grib2/tables/5/4.2.3.1.table\
-	grib2/tables/5/4.2.table\
-	grib2/tables/5/4.201.table\
-	grib2/tables/5/4.202.table\
-	grib2/tables/5/4.203.table\
-	grib2/tables/5/4.204.table\
-	grib2/tables/5/4.205.table\
-	grib2/tables/5/4.206.table\
-	grib2/tables/5/4.207.table\
-	grib2/tables/5/4.208.table\
-	grib2/tables/5/4.209.table\
-	grib2/tables/5/4.210.table\
-	grib2/tables/5/4.211.table\
-	grib2/tables/5/4.212.table\
-	grib2/tables/5/4.213.table\
-	grib2/tables/5/4.215.table\
-	grib2/tables/5/4.216.table\
-	grib2/tables/5/4.217.table\
-	grib2/tables/5/4.218.table\
-	grib2/tables/5/4.219.table\
-	grib2/tables/5/4.220.table\
-	grib2/tables/5/4.221.table\
-	grib2/tables/5/4.222.table\
-	grib2/tables/5/4.223.table\
-	grib2/tables/5/4.230.table\
-	grib2/tables/5/4.3.table\
-	grib2/tables/5/4.4.table\
-	grib2/tables/5/4.5.table\
-	grib2/tables/5/4.6.table\
-	grib2/tables/5/4.7.table\
-	grib2/tables/5/4.8.table\
-	grib2/tables/5/4.9.table\
-	grib2/tables/5/4.91.table\
-	grib2/tables/5/5.0.table\
-	grib2/tables/5/5.1.table\
-	grib2/tables/5/5.2.table\
-	grib2/tables/5/5.3.table\
-	grib2/tables/5/5.4.table\
-	grib2/tables/5/5.40.table\
-	grib2/tables/5/5.40000.table\
-	grib2/tables/5/5.5.table\
-	grib2/tables/5/5.50002.table\
-	grib2/tables/5/5.6.table\
-	grib2/tables/5/5.7.table\
-	grib2/tables/5/5.8.table\
-	grib2/tables/5/5.9.table\
-	grib2/tables/5/6.0.table\
-	grib2/tables/5/stepType.table
-
-definitionsgrib2_tables_6dir = @ECCODES_DEFINITION_PATH@/grib2/tables/6
-dist_definitionsgrib2_tables_6_DATA = \
-	grib2/tables/6/0.0.table\
-	grib2/tables/6/1.0.table\
-	grib2/tables/6/1.1.table\
-	grib2/tables/6/1.2.table\
-	grib2/tables/6/1.3.table\
-	grib2/tables/6/1.4.table\
-	grib2/tables/6/3.0.table\
-	grib2/tables/6/3.1.table\
-	grib2/tables/6/3.10.table\
-	grib2/tables/6/3.11.table\
-	grib2/tables/6/3.15.table\
-	grib2/tables/6/3.2.table\
-	grib2/tables/6/3.20.table\
-	grib2/tables/6/3.21.table\
-	grib2/tables/6/3.3.table\
-	grib2/tables/6/3.4.table\
-	grib2/tables/6/3.5.table\
-	grib2/tables/6/3.6.table\
-	grib2/tables/6/3.7.table\
-	grib2/tables/6/3.8.table\
-	grib2/tables/6/3.9.table\
-	grib2/tables/6/4.0.table\
-	grib2/tables/6/4.1.0.table\
-	grib2/tables/6/4.1.1.table\
-	grib2/tables/6/4.1.10.table\
-	grib2/tables/6/4.1.192.table\
-	grib2/tables/6/4.1.2.table\
-	grib2/tables/6/4.1.3.table\
-	grib2/tables/6/4.1.table\
-	grib2/tables/6/4.10.table\
-	grib2/tables/6/4.11.table\
-	grib2/tables/6/4.12.table\
-	grib2/tables/6/4.13.table\
-	grib2/tables/6/4.14.table\
-	grib2/tables/6/4.15.table\
-	grib2/tables/6/4.151.table\
-	grib2/tables/6/4.192.table\
-	grib2/tables/6/4.2.0.0.table\
-	grib2/tables/6/4.2.0.1.table\
-	grib2/tables/6/4.2.0.13.table\
-	grib2/tables/6/4.2.0.14.table\
-	grib2/tables/6/4.2.0.15.table\
-	grib2/tables/6/4.2.0.16.table\
-	grib2/tables/6/4.2.0.18.table\
-	grib2/tables/6/4.2.0.19.table\
-	grib2/tables/6/4.2.0.190.table\
-	grib2/tables/6/4.2.0.191.table\
-	grib2/tables/6/4.2.0.2.table\
-	grib2/tables/6/4.2.0.20.table\
-	grib2/tables/6/4.2.0.3.table\
-	grib2/tables/6/4.2.0.4.table\
-	grib2/tables/6/4.2.0.5.table\
-	grib2/tables/6/4.2.0.6.table\
-	grib2/tables/6/4.2.0.7.table\
-	grib2/tables/6/4.2.1.0.table\
-	grib2/tables/6/4.2.1.1.table\
-	grib2/tables/6/4.2.10.0.table\
-	grib2/tables/6/4.2.10.1.table\
-	grib2/tables/6/4.2.10.191.table\
-	grib2/tables/6/4.2.10.2.table\
-	grib2/tables/6/4.2.10.3.table\
-	grib2/tables/6/4.2.10.4.table\
-	grib2/tables/6/4.2.192.0.table\
-	grib2/tables/6/4.2.192.1.table\
-	grib2/tables/6/4.2.192.10.table\
-	grib2/tables/6/4.2.192.100.table\
-	grib2/tables/6/4.2.192.101.table\
-	grib2/tables/6/4.2.192.102.table\
-	grib2/tables/6/4.2.192.103.table\
-	grib2/tables/6/4.2.192.104.table\
-	grib2/tables/6/4.2.192.105.table\
-	grib2/tables/6/4.2.192.106.table\
-	grib2/tables/6/4.2.192.107.table\
-	grib2/tables/6/4.2.192.108.table\
-	grib2/tables/6/4.2.192.109.table\
-	grib2/tables/6/4.2.192.11.table\
-	grib2/tables/6/4.2.192.110.table\
-	grib2/tables/6/4.2.192.111.table\
-	grib2/tables/6/4.2.192.112.table\
-	grib2/tables/6/4.2.192.113.table\
-	grib2/tables/6/4.2.192.114.table\
-	grib2/tables/6/4.2.192.115.table\
-	grib2/tables/6/4.2.192.116.table\
-	grib2/tables/6/4.2.192.117.table\
-	grib2/tables/6/4.2.192.118.table\
-	grib2/tables/6/4.2.192.119.table\
-	grib2/tables/6/4.2.192.12.table\
-	grib2/tables/6/4.2.192.120.table\
-	grib2/tables/6/4.2.192.121.table\
-	grib2/tables/6/4.2.192.122.table\
-	grib2/tables/6/4.2.192.123.table\
-	grib2/tables/6/4.2.192.124.table\
-	grib2/tables/6/4.2.192.125.table\
-	grib2/tables/6/4.2.192.126.table\
-	grib2/tables/6/4.2.192.127.table\
-	grib2/tables/6/4.2.192.128.table\
-	grib2/tables/6/4.2.192.129.table\
-	grib2/tables/6/4.2.192.13.table\
-	grib2/tables/6/4.2.192.130.table\
-	grib2/tables/6/4.2.192.131.table\
-	grib2/tables/6/4.2.192.132.table\
-	grib2/tables/6/4.2.192.133.table\
-	grib2/tables/6/4.2.192.134.table\
-	grib2/tables/6/4.2.192.135.table\
-	grib2/tables/6/4.2.192.136.table\
-	grib2/tables/6/4.2.192.137.table\
-	grib2/tables/6/4.2.192.138.table\
-	grib2/tables/6/4.2.192.139.table\
-	grib2/tables/6/4.2.192.14.table\
-	grib2/tables/6/4.2.192.140.table\
-	grib2/tables/6/4.2.192.141.table\
-	grib2/tables/6/4.2.192.142.table\
-	grib2/tables/6/4.2.192.143.table\
-	grib2/tables/6/4.2.192.144.table\
-	grib2/tables/6/4.2.192.145.table\
-	grib2/tables/6/4.2.192.146.table\
-	grib2/tables/6/4.2.192.147.table\
-	grib2/tables/6/4.2.192.148.table\
-	grib2/tables/6/4.2.192.149.table\
-	grib2/tables/6/4.2.192.15.table\
-	grib2/tables/6/4.2.192.150.table\
-	grib2/tables/6/4.2.192.151.table\
-	grib2/tables/6/4.2.192.152.table\
-	grib2/tables/6/4.2.192.153.table\
-	grib2/tables/6/4.2.192.154.table\
-	grib2/tables/6/4.2.192.155.table\
-	grib2/tables/6/4.2.192.156.table\
-	grib2/tables/6/4.2.192.157.table\
-	grib2/tables/6/4.2.192.158.table\
-	grib2/tables/6/4.2.192.159.table\
-	grib2/tables/6/4.2.192.16.table\
-	grib2/tables/6/4.2.192.160.table\
-	grib2/tables/6/4.2.192.161.table\
-	grib2/tables/6/4.2.192.162.table\
-	grib2/tables/6/4.2.192.163.table\
-	grib2/tables/6/4.2.192.164.table\
-	grib2/tables/6/4.2.192.165.table\
-	grib2/tables/6/4.2.192.166.table\
-	grib2/tables/6/4.2.192.167.table\
-	grib2/tables/6/4.2.192.168.table\
-	grib2/tables/6/4.2.192.169.table\
-	grib2/tables/6/4.2.192.17.table\
-	grib2/tables/6/4.2.192.170.table\
-	grib2/tables/6/4.2.192.171.table\
-	grib2/tables/6/4.2.192.172.table\
-	grib2/tables/6/4.2.192.173.table\
-	grib2/tables/6/4.2.192.174.table\
-	grib2/tables/6/4.2.192.175.table\
-	grib2/tables/6/4.2.192.176.table\
-	grib2/tables/6/4.2.192.177.table\
-	grib2/tables/6/4.2.192.178.table\
-	grib2/tables/6/4.2.192.179.table\
-	grib2/tables/6/4.2.192.18.table\
-	grib2/tables/6/4.2.192.180.table\
-	grib2/tables/6/4.2.192.181.table\
-	grib2/tables/6/4.2.192.182.table\
-	grib2/tables/6/4.2.192.183.table\
-	grib2/tables/6/4.2.192.184.table\
-	grib2/tables/6/4.2.192.185.table\
-	grib2/tables/6/4.2.192.186.table\
-	grib2/tables/6/4.2.192.187.table\
-	grib2/tables/6/4.2.192.188.table\
-	grib2/tables/6/4.2.192.189.table\
-	grib2/tables/6/4.2.192.19.table\
-	grib2/tables/6/4.2.192.190.table\
-	grib2/tables/6/4.2.192.191.table\
-	grib2/tables/6/4.2.192.192.table\
-	grib2/tables/6/4.2.192.193.table\
-	grib2/tables/6/4.2.192.194.table\
-	grib2/tables/6/4.2.192.195.table\
-	grib2/tables/6/4.2.192.196.table\
-	grib2/tables/6/4.2.192.197.table\
-	grib2/tables/6/4.2.192.198.table\
-	grib2/tables/6/4.2.192.199.table\
-	grib2/tables/6/4.2.192.2.table\
-	grib2/tables/6/4.2.192.20.table\
-	grib2/tables/6/4.2.192.200.table\
-	grib2/tables/6/4.2.192.201.table\
-	grib2/tables/6/4.2.192.202.table\
-	grib2/tables/6/4.2.192.203.table\
-	grib2/tables/6/4.2.192.204.table\
-	grib2/tables/6/4.2.192.205.table\
-	grib2/tables/6/4.2.192.206.table\
-	grib2/tables/6/4.2.192.207.table\
-	grib2/tables/6/4.2.192.208.table\
-	grib2/tables/6/4.2.192.209.table\
-	grib2/tables/6/4.2.192.21.table\
-	grib2/tables/6/4.2.192.210.table\
-	grib2/tables/6/4.2.192.211.table\
-	grib2/tables/6/4.2.192.212.table\
-	grib2/tables/6/4.2.192.213.table\
-	grib2/tables/6/4.2.192.214.table\
-	grib2/tables/6/4.2.192.215.table\
-	grib2/tables/6/4.2.192.216.table\
-	grib2/tables/6/4.2.192.217.table\
-	grib2/tables/6/4.2.192.218.table\
-	grib2/tables/6/4.2.192.219.table\
-	grib2/tables/6/4.2.192.22.table\
-	grib2/tables/6/4.2.192.220.table\
-	grib2/tables/6/4.2.192.221.table\
-	grib2/tables/6/4.2.192.222.table\
-	grib2/tables/6/4.2.192.223.table\
-	grib2/tables/6/4.2.192.224.table\
-	grib2/tables/6/4.2.192.225.table\
-	grib2/tables/6/4.2.192.226.table\
-	grib2/tables/6/4.2.192.227.table\
-	grib2/tables/6/4.2.192.228.table\
-	grib2/tables/6/4.2.192.229.table\
-	grib2/tables/6/4.2.192.23.table\
-	grib2/tables/6/4.2.192.230.table\
-	grib2/tables/6/4.2.192.231.table\
-	grib2/tables/6/4.2.192.232.table\
-	grib2/tables/6/4.2.192.233.table\
-	grib2/tables/6/4.2.192.234.table\
-	grib2/tables/6/4.2.192.235.table\
-	grib2/tables/6/4.2.192.236.table\
-	grib2/tables/6/4.2.192.237.table\
-	grib2/tables/6/4.2.192.238.table\
-	grib2/tables/6/4.2.192.239.table\
-	grib2/tables/6/4.2.192.24.table\
-	grib2/tables/6/4.2.192.240.table\
-	grib2/tables/6/4.2.192.241.table\
-	grib2/tables/6/4.2.192.242.table\
-	grib2/tables/6/4.2.192.243.table\
-	grib2/tables/6/4.2.192.244.table\
-	grib2/tables/6/4.2.192.245.table\
-	grib2/tables/6/4.2.192.246.table\
-	grib2/tables/6/4.2.192.247.table\
-	grib2/tables/6/4.2.192.248.table\
-	grib2/tables/6/4.2.192.249.table\
-	grib2/tables/6/4.2.192.25.table\
-	grib2/tables/6/4.2.192.250.table\
-	grib2/tables/6/4.2.192.251.table\
-	grib2/tables/6/4.2.192.252.table\
-	grib2/tables/6/4.2.192.253.table\
-	grib2/tables/6/4.2.192.254.table\
-	grib2/tables/6/4.2.192.255.table\
-	grib2/tables/6/4.2.192.26.table\
-	grib2/tables/6/4.2.192.27.table\
-	grib2/tables/6/4.2.192.28.table\
-	grib2/tables/6/4.2.192.29.table\
-	grib2/tables/6/4.2.192.3.table\
-	grib2/tables/6/4.2.192.30.table\
-	grib2/tables/6/4.2.192.31.table\
-	grib2/tables/6/4.2.192.32.table\
-	grib2/tables/6/4.2.192.33.table\
-	grib2/tables/6/4.2.192.34.table\
-	grib2/tables/6/4.2.192.35.table\
-	grib2/tables/6/4.2.192.36.table\
-	grib2/tables/6/4.2.192.37.table\
-	grib2/tables/6/4.2.192.38.table\
-	grib2/tables/6/4.2.192.39.table\
-	grib2/tables/6/4.2.192.4.table\
-	grib2/tables/6/4.2.192.40.table\
-	grib2/tables/6/4.2.192.41.table\
-	grib2/tables/6/4.2.192.42.table\
-	grib2/tables/6/4.2.192.43.table\
-	grib2/tables/6/4.2.192.44.table\
-	grib2/tables/6/4.2.192.45.table\
-	grib2/tables/6/4.2.192.46.table\
-	grib2/tables/6/4.2.192.47.table\
-	grib2/tables/6/4.2.192.48.table\
-	grib2/tables/6/4.2.192.49.table\
-	grib2/tables/6/4.2.192.5.table\
-	grib2/tables/6/4.2.192.50.table\
-	grib2/tables/6/4.2.192.51.table\
-	grib2/tables/6/4.2.192.52.table\
-	grib2/tables/6/4.2.192.53.table\
-	grib2/tables/6/4.2.192.54.table\
-	grib2/tables/6/4.2.192.55.table\
-	grib2/tables/6/4.2.192.56.table\
-	grib2/tables/6/4.2.192.57.table\
-	grib2/tables/6/4.2.192.58.table\
-	grib2/tables/6/4.2.192.59.table\
-	grib2/tables/6/4.2.192.6.table\
-	grib2/tables/6/4.2.192.60.table\
-	grib2/tables/6/4.2.192.61.table\
-	grib2/tables/6/4.2.192.62.table\
-	grib2/tables/6/4.2.192.63.table\
-	grib2/tables/6/4.2.192.64.table\
-	grib2/tables/6/4.2.192.65.table\
-	grib2/tables/6/4.2.192.66.table\
-	grib2/tables/6/4.2.192.67.table\
-	grib2/tables/6/4.2.192.68.table\
-	grib2/tables/6/4.2.192.69.table\
-	grib2/tables/6/4.2.192.7.table\
-	grib2/tables/6/4.2.192.70.table\
-	grib2/tables/6/4.2.192.71.table\
-	grib2/tables/6/4.2.192.72.table\
-	grib2/tables/6/4.2.192.73.table\
-	grib2/tables/6/4.2.192.74.table\
-	grib2/tables/6/4.2.192.75.table\
-	grib2/tables/6/4.2.192.76.table\
-	grib2/tables/6/4.2.192.77.table\
-	grib2/tables/6/4.2.192.78.table\
-	grib2/tables/6/4.2.192.79.table\
-	grib2/tables/6/4.2.192.8.table\
-	grib2/tables/6/4.2.192.80.table\
-	grib2/tables/6/4.2.192.81.table\
-	grib2/tables/6/4.2.192.82.table\
-	grib2/tables/6/4.2.192.83.table\
-	grib2/tables/6/4.2.192.84.table\
-	grib2/tables/6/4.2.192.85.table\
-	grib2/tables/6/4.2.192.86.table\
-	grib2/tables/6/4.2.192.87.table\
-	grib2/tables/6/4.2.192.88.table\
-	grib2/tables/6/4.2.192.89.table\
-	grib2/tables/6/4.2.192.9.table\
-	grib2/tables/6/4.2.192.90.table\
-	grib2/tables/6/4.2.192.91.table\
-	grib2/tables/6/4.2.192.92.table\
-	grib2/tables/6/4.2.192.93.table\
-	grib2/tables/6/4.2.192.94.table\
-	grib2/tables/6/4.2.192.95.table\
-	grib2/tables/6/4.2.192.96.table\
-	grib2/tables/6/4.2.192.97.table\
-	grib2/tables/6/4.2.192.98.table\
-	grib2/tables/6/4.2.192.99.table\
-	grib2/tables/6/4.2.2.0.table\
-	grib2/tables/6/4.2.2.3.table\
-	grib2/tables/6/4.2.2.4.table\
-	grib2/tables/6/4.2.3.0.table\
-	grib2/tables/6/4.2.3.1.table\
-	grib2/tables/6/4.2.table\
-	grib2/tables/6/4.201.table\
-	grib2/tables/6/4.202.table\
-	grib2/tables/6/4.203.table\
-	grib2/tables/6/4.204.table\
-	grib2/tables/6/4.205.table\
-	grib2/tables/6/4.206.table\
-	grib2/tables/6/4.207.table\
-	grib2/tables/6/4.208.table\
-	grib2/tables/6/4.209.table\
-	grib2/tables/6/4.210.table\
-	grib2/tables/6/4.211.table\
-	grib2/tables/6/4.212.table\
-	grib2/tables/6/4.213.table\
-	grib2/tables/6/4.215.table\
-	grib2/tables/6/4.216.table\
-	grib2/tables/6/4.217.table\
-	grib2/tables/6/4.218.table\
-	grib2/tables/6/4.219.table\
-	grib2/tables/6/4.220.table\
-	grib2/tables/6/4.221.table\
-	grib2/tables/6/4.222.table\
-	grib2/tables/6/4.223.table\
-	grib2/tables/6/4.230.table\
-	grib2/tables/6/4.3.table\
-	grib2/tables/6/4.4.table\
-	grib2/tables/6/4.5.table\
-	grib2/tables/6/4.6.table\
-	grib2/tables/6/4.7.table\
-	grib2/tables/6/4.8.table\
-	grib2/tables/6/4.9.table\
-	grib2/tables/6/4.91.table\
-	grib2/tables/6/5.0.table\
-	grib2/tables/6/5.1.table\
-	grib2/tables/6/5.2.table\
-	grib2/tables/6/5.3.table\
-	grib2/tables/6/5.4.table\
-	grib2/tables/6/5.40.table\
-	grib2/tables/6/5.40000.table\
-	grib2/tables/6/5.5.table\
-	grib2/tables/6/5.50002.table\
-	grib2/tables/6/5.6.table\
-	grib2/tables/6/5.7.table\
-	grib2/tables/6/5.8.table\
-	grib2/tables/6/5.9.table\
-	grib2/tables/6/6.0.table\
-	grib2/tables/6/stepType.table
-
-definitionsgrib2_tables_7dir = @ECCODES_DEFINITION_PATH@/grib2/tables/7
-dist_definitionsgrib2_tables_7_DATA = \
-	grib2/tables/7/0.0.table\
-	grib2/tables/7/1.0.table\
-	grib2/tables/7/1.1.table\
-	grib2/tables/7/1.2.table\
-	grib2/tables/7/1.3.table\
-	grib2/tables/7/1.4.table\
-	grib2/tables/7/3.0.table\
-	grib2/tables/7/3.1.table\
-	grib2/tables/7/3.10.table\
-	grib2/tables/7/3.11.table\
-	grib2/tables/7/3.15.table\
-	grib2/tables/7/3.2.table\
-	grib2/tables/7/3.20.table\
-	grib2/tables/7/3.21.table\
-	grib2/tables/7/3.3.table\
-	grib2/tables/7/3.4.table\
-	grib2/tables/7/3.5.table\
-	grib2/tables/7/3.6.table\
-	grib2/tables/7/3.7.table\
-	grib2/tables/7/3.8.table\
-	grib2/tables/7/3.9.table\
-	grib2/tables/7/4.0.table\
-	grib2/tables/7/4.1.0.table\
-	grib2/tables/7/4.1.1.table\
-	grib2/tables/7/4.1.10.table\
-	grib2/tables/7/4.1.192.table\
-	grib2/tables/7/4.1.2.table\
-	grib2/tables/7/4.1.3.table\
-	grib2/tables/7/4.1.table\
-	grib2/tables/7/4.10.table\
-	grib2/tables/7/4.11.table\
-	grib2/tables/7/4.12.table\
-	grib2/tables/7/4.13.table\
-	grib2/tables/7/4.14.table\
-	grib2/tables/7/4.15.table\
-	grib2/tables/7/4.151.table\
-	grib2/tables/7/4.192.table\
-	grib2/tables/7/4.2.0.0.table\
-	grib2/tables/7/4.2.0.1.table\
-	grib2/tables/7/4.2.0.13.table\
-	grib2/tables/7/4.2.0.14.table\
-	grib2/tables/7/4.2.0.15.table\
-	grib2/tables/7/4.2.0.16.table\
-	grib2/tables/7/4.2.0.18.table\
-	grib2/tables/7/4.2.0.19.table\
-	grib2/tables/7/4.2.0.190.table\
-	grib2/tables/7/4.2.0.191.table\
-	grib2/tables/7/4.2.0.2.table\
-	grib2/tables/7/4.2.0.20.table\
-	grib2/tables/7/4.2.0.3.table\
-	grib2/tables/7/4.2.0.4.table\
-	grib2/tables/7/4.2.0.5.table\
-	grib2/tables/7/4.2.0.6.table\
-	grib2/tables/7/4.2.0.7.table\
-	grib2/tables/7/4.2.1.0.table\
-	grib2/tables/7/4.2.1.1.table\
-	grib2/tables/7/4.2.10.0.table\
-	grib2/tables/7/4.2.10.1.table\
-	grib2/tables/7/4.2.10.191.table\
-	grib2/tables/7/4.2.10.2.table\
-	grib2/tables/7/4.2.10.3.table\
-	grib2/tables/7/4.2.10.4.table\
-	grib2/tables/7/4.2.192.0.table\
-	grib2/tables/7/4.2.192.1.table\
-	grib2/tables/7/4.2.192.10.table\
-	grib2/tables/7/4.2.192.100.table\
-	grib2/tables/7/4.2.192.101.table\
-	grib2/tables/7/4.2.192.102.table\
-	grib2/tables/7/4.2.192.103.table\
-	grib2/tables/7/4.2.192.104.table\
-	grib2/tables/7/4.2.192.105.table\
-	grib2/tables/7/4.2.192.106.table\
-	grib2/tables/7/4.2.192.107.table\
-	grib2/tables/7/4.2.192.108.table\
-	grib2/tables/7/4.2.192.109.table\
-	grib2/tables/7/4.2.192.11.table\
-	grib2/tables/7/4.2.192.110.table\
-	grib2/tables/7/4.2.192.111.table\
-	grib2/tables/7/4.2.192.112.table\
-	grib2/tables/7/4.2.192.113.table\
-	grib2/tables/7/4.2.192.114.table\
-	grib2/tables/7/4.2.192.115.table\
-	grib2/tables/7/4.2.192.116.table\
-	grib2/tables/7/4.2.192.117.table\
-	grib2/tables/7/4.2.192.118.table\
-	grib2/tables/7/4.2.192.119.table\
-	grib2/tables/7/4.2.192.12.table\
-	grib2/tables/7/4.2.192.120.table\
-	grib2/tables/7/4.2.192.121.table\
-	grib2/tables/7/4.2.192.122.table\
-	grib2/tables/7/4.2.192.123.table\
-	grib2/tables/7/4.2.192.124.table\
-	grib2/tables/7/4.2.192.125.table\
-	grib2/tables/7/4.2.192.126.table\
-	grib2/tables/7/4.2.192.127.table\
-	grib2/tables/7/4.2.192.128.table\
-	grib2/tables/7/4.2.192.129.table\
-	grib2/tables/7/4.2.192.13.table\
-	grib2/tables/7/4.2.192.130.table\
-	grib2/tables/7/4.2.192.131.table\
-	grib2/tables/7/4.2.192.132.table\
-	grib2/tables/7/4.2.192.133.table\
-	grib2/tables/7/4.2.192.134.table\
-	grib2/tables/7/4.2.192.135.table\
-	grib2/tables/7/4.2.192.136.table\
-	grib2/tables/7/4.2.192.137.table\
-	grib2/tables/7/4.2.192.138.table\
-	grib2/tables/7/4.2.192.139.table\
-	grib2/tables/7/4.2.192.14.table\
-	grib2/tables/7/4.2.192.140.table\
-	grib2/tables/7/4.2.192.141.table\
-	grib2/tables/7/4.2.192.142.table\
-	grib2/tables/7/4.2.192.143.table\
-	grib2/tables/7/4.2.192.144.table\
-	grib2/tables/7/4.2.192.145.table\
-	grib2/tables/7/4.2.192.146.table\
-	grib2/tables/7/4.2.192.147.table\
-	grib2/tables/7/4.2.192.148.table\
-	grib2/tables/7/4.2.192.149.table\
-	grib2/tables/7/4.2.192.15.table\
-	grib2/tables/7/4.2.192.150.table\
-	grib2/tables/7/4.2.192.151.table\
-	grib2/tables/7/4.2.192.152.table\
-	grib2/tables/7/4.2.192.153.table\
-	grib2/tables/7/4.2.192.154.table\
-	grib2/tables/7/4.2.192.155.table\
-	grib2/tables/7/4.2.192.156.table\
-	grib2/tables/7/4.2.192.157.table\
-	grib2/tables/7/4.2.192.158.table\
-	grib2/tables/7/4.2.192.159.table\
-	grib2/tables/7/4.2.192.16.table\
-	grib2/tables/7/4.2.192.160.table\
-	grib2/tables/7/4.2.192.161.table\
-	grib2/tables/7/4.2.192.162.table\
-	grib2/tables/7/4.2.192.163.table\
-	grib2/tables/7/4.2.192.164.table\
-	grib2/tables/7/4.2.192.165.table\
-	grib2/tables/7/4.2.192.166.table\
-	grib2/tables/7/4.2.192.167.table\
-	grib2/tables/7/4.2.192.168.table\
-	grib2/tables/7/4.2.192.169.table\
-	grib2/tables/7/4.2.192.17.table\
-	grib2/tables/7/4.2.192.170.table\
-	grib2/tables/7/4.2.192.171.table\
-	grib2/tables/7/4.2.192.172.table\
-	grib2/tables/7/4.2.192.173.table\
-	grib2/tables/7/4.2.192.174.table\
-	grib2/tables/7/4.2.192.175.table\
-	grib2/tables/7/4.2.192.176.table\
-	grib2/tables/7/4.2.192.177.table\
-	grib2/tables/7/4.2.192.178.table\
-	grib2/tables/7/4.2.192.179.table\
-	grib2/tables/7/4.2.192.18.table\
-	grib2/tables/7/4.2.192.180.table\
-	grib2/tables/7/4.2.192.181.table\
-	grib2/tables/7/4.2.192.182.table\
-	grib2/tables/7/4.2.192.183.table\
-	grib2/tables/7/4.2.192.184.table\
-	grib2/tables/7/4.2.192.185.table\
-	grib2/tables/7/4.2.192.186.table\
-	grib2/tables/7/4.2.192.187.table\
-	grib2/tables/7/4.2.192.188.table\
-	grib2/tables/7/4.2.192.189.table\
-	grib2/tables/7/4.2.192.19.table\
-	grib2/tables/7/4.2.192.190.table\
-	grib2/tables/7/4.2.192.191.table\
-	grib2/tables/7/4.2.192.192.table\
-	grib2/tables/7/4.2.192.193.table\
-	grib2/tables/7/4.2.192.194.table\
-	grib2/tables/7/4.2.192.195.table\
-	grib2/tables/7/4.2.192.196.table\
-	grib2/tables/7/4.2.192.197.table\
-	grib2/tables/7/4.2.192.198.table\
-	grib2/tables/7/4.2.192.199.table\
-	grib2/tables/7/4.2.192.2.table\
-	grib2/tables/7/4.2.192.20.table\
-	grib2/tables/7/4.2.192.200.table\
-	grib2/tables/7/4.2.192.201.table\
-	grib2/tables/7/4.2.192.202.table\
-	grib2/tables/7/4.2.192.203.table\
-	grib2/tables/7/4.2.192.204.table\
-	grib2/tables/7/4.2.192.205.table\
-	grib2/tables/7/4.2.192.206.table\
-	grib2/tables/7/4.2.192.207.table\
-	grib2/tables/7/4.2.192.208.table\
-	grib2/tables/7/4.2.192.209.table\
-	grib2/tables/7/4.2.192.21.table\
-	grib2/tables/7/4.2.192.210.table\
-	grib2/tables/7/4.2.192.211.table\
-	grib2/tables/7/4.2.192.212.table\
-	grib2/tables/7/4.2.192.213.table\
-	grib2/tables/7/4.2.192.214.table\
-	grib2/tables/7/4.2.192.215.table\
-	grib2/tables/7/4.2.192.216.table\
-	grib2/tables/7/4.2.192.217.table\
-	grib2/tables/7/4.2.192.218.table\
-	grib2/tables/7/4.2.192.219.table\
-	grib2/tables/7/4.2.192.22.table\
-	grib2/tables/7/4.2.192.220.table\
-	grib2/tables/7/4.2.192.221.table\
-	grib2/tables/7/4.2.192.222.table\
-	grib2/tables/7/4.2.192.223.table\
-	grib2/tables/7/4.2.192.224.table\
-	grib2/tables/7/4.2.192.225.table\
-	grib2/tables/7/4.2.192.226.table\
-	grib2/tables/7/4.2.192.227.table\
-	grib2/tables/7/4.2.192.228.table\
-	grib2/tables/7/4.2.192.229.table\
-	grib2/tables/7/4.2.192.23.table\
-	grib2/tables/7/4.2.192.230.table\
-	grib2/tables/7/4.2.192.231.table\
-	grib2/tables/7/4.2.192.232.table\
-	grib2/tables/7/4.2.192.233.table\
-	grib2/tables/7/4.2.192.234.table\
-	grib2/tables/7/4.2.192.235.table\
-	grib2/tables/7/4.2.192.236.table\
-	grib2/tables/7/4.2.192.237.table\
-	grib2/tables/7/4.2.192.238.table\
-	grib2/tables/7/4.2.192.239.table\
-	grib2/tables/7/4.2.192.24.table\
-	grib2/tables/7/4.2.192.240.table\
-	grib2/tables/7/4.2.192.241.table\
-	grib2/tables/7/4.2.192.242.table\
-	grib2/tables/7/4.2.192.243.table\
-	grib2/tables/7/4.2.192.244.table\
-	grib2/tables/7/4.2.192.245.table\
-	grib2/tables/7/4.2.192.246.table\
-	grib2/tables/7/4.2.192.247.table\
-	grib2/tables/7/4.2.192.248.table\
-	grib2/tables/7/4.2.192.249.table\
-	grib2/tables/7/4.2.192.25.table\
-	grib2/tables/7/4.2.192.250.table\
-	grib2/tables/7/4.2.192.251.table\
-	grib2/tables/7/4.2.192.252.table\
-	grib2/tables/7/4.2.192.253.table\
-	grib2/tables/7/4.2.192.254.table\
-	grib2/tables/7/4.2.192.255.table\
-	grib2/tables/7/4.2.192.26.table\
-	grib2/tables/7/4.2.192.27.table\
-	grib2/tables/7/4.2.192.28.table\
-	grib2/tables/7/4.2.192.29.table\
-	grib2/tables/7/4.2.192.3.table\
-	grib2/tables/7/4.2.192.30.table\
-	grib2/tables/7/4.2.192.31.table\
-	grib2/tables/7/4.2.192.32.table\
-	grib2/tables/7/4.2.192.33.table\
-	grib2/tables/7/4.2.192.34.table\
-	grib2/tables/7/4.2.192.35.table\
-	grib2/tables/7/4.2.192.36.table\
-	grib2/tables/7/4.2.192.37.table\
-	grib2/tables/7/4.2.192.38.table\
-	grib2/tables/7/4.2.192.39.table\
-	grib2/tables/7/4.2.192.4.table\
-	grib2/tables/7/4.2.192.40.table\
-	grib2/tables/7/4.2.192.41.table\
-	grib2/tables/7/4.2.192.42.table\
-	grib2/tables/7/4.2.192.43.table\
-	grib2/tables/7/4.2.192.44.table\
-	grib2/tables/7/4.2.192.45.table\
-	grib2/tables/7/4.2.192.46.table\
-	grib2/tables/7/4.2.192.47.table\
-	grib2/tables/7/4.2.192.48.table\
-	grib2/tables/7/4.2.192.49.table\
-	grib2/tables/7/4.2.192.5.table\
-	grib2/tables/7/4.2.192.50.table\
-	grib2/tables/7/4.2.192.51.table\
-	grib2/tables/7/4.2.192.52.table\
-	grib2/tables/7/4.2.192.53.table\
-	grib2/tables/7/4.2.192.54.table\
-	grib2/tables/7/4.2.192.55.table\
-	grib2/tables/7/4.2.192.56.table\
-	grib2/tables/7/4.2.192.57.table\
-	grib2/tables/7/4.2.192.58.table\
-	grib2/tables/7/4.2.192.59.table\
-	grib2/tables/7/4.2.192.6.table\
-	grib2/tables/7/4.2.192.60.table\
-	grib2/tables/7/4.2.192.61.table\
-	grib2/tables/7/4.2.192.62.table\
-	grib2/tables/7/4.2.192.63.table\
-	grib2/tables/7/4.2.192.64.table\
-	grib2/tables/7/4.2.192.65.table\
-	grib2/tables/7/4.2.192.66.table\
-	grib2/tables/7/4.2.192.67.table\
-	grib2/tables/7/4.2.192.68.table\
-	grib2/tables/7/4.2.192.69.table\
-	grib2/tables/7/4.2.192.7.table\
-	grib2/tables/7/4.2.192.70.table\
-	grib2/tables/7/4.2.192.71.table\
-	grib2/tables/7/4.2.192.72.table\
-	grib2/tables/7/4.2.192.73.table\
-	grib2/tables/7/4.2.192.74.table\
-	grib2/tables/7/4.2.192.75.table\
-	grib2/tables/7/4.2.192.76.table\
-	grib2/tables/7/4.2.192.77.table\
-	grib2/tables/7/4.2.192.78.table\
-	grib2/tables/7/4.2.192.79.table\
-	grib2/tables/7/4.2.192.8.table\
-	grib2/tables/7/4.2.192.80.table\
-	grib2/tables/7/4.2.192.81.table\
-	grib2/tables/7/4.2.192.82.table\
-	grib2/tables/7/4.2.192.83.table\
-	grib2/tables/7/4.2.192.84.table\
-	grib2/tables/7/4.2.192.85.table\
-	grib2/tables/7/4.2.192.86.table\
-	grib2/tables/7/4.2.192.87.table\
-	grib2/tables/7/4.2.192.88.table\
-	grib2/tables/7/4.2.192.89.table\
-	grib2/tables/7/4.2.192.9.table\
-	grib2/tables/7/4.2.192.90.table\
-	grib2/tables/7/4.2.192.91.table\
-	grib2/tables/7/4.2.192.92.table\
-	grib2/tables/7/4.2.192.93.table\
-	grib2/tables/7/4.2.192.94.table\
-	grib2/tables/7/4.2.192.95.table\
-	grib2/tables/7/4.2.192.96.table\
-	grib2/tables/7/4.2.192.97.table\
-	grib2/tables/7/4.2.192.98.table\
-	grib2/tables/7/4.2.192.99.table\
-	grib2/tables/7/4.2.2.0.table\
-	grib2/tables/7/4.2.2.3.table\
-	grib2/tables/7/4.2.2.4.table\
-	grib2/tables/7/4.2.3.0.table\
-	grib2/tables/7/4.2.3.1.table\
-	grib2/tables/7/4.2.table\
-	grib2/tables/7/4.201.table\
-	grib2/tables/7/4.202.table\
-	grib2/tables/7/4.203.table\
-	grib2/tables/7/4.204.table\
-	grib2/tables/7/4.205.table\
-	grib2/tables/7/4.206.table\
-	grib2/tables/7/4.207.table\
-	grib2/tables/7/4.208.table\
-	grib2/tables/7/4.209.table\
-	grib2/tables/7/4.210.table\
-	grib2/tables/7/4.211.table\
-	grib2/tables/7/4.212.table\
-	grib2/tables/7/4.213.table\
-	grib2/tables/7/4.215.table\
-	grib2/tables/7/4.216.table\
-	grib2/tables/7/4.217.table\
-	grib2/tables/7/4.218.table\
-	grib2/tables/7/4.219.table\
-	grib2/tables/7/4.220.table\
-	grib2/tables/7/4.221.table\
-	grib2/tables/7/4.222.table\
-	grib2/tables/7/4.223.table\
-	grib2/tables/7/4.224.table\
-	grib2/tables/7/4.230.table\
-	grib2/tables/7/4.3.table\
-	grib2/tables/7/4.4.table\
-	grib2/tables/7/4.5.table\
-	grib2/tables/7/4.6.table\
-	grib2/tables/7/4.7.table\
-	grib2/tables/7/4.8.table\
-	grib2/tables/7/4.9.table\
-	grib2/tables/7/4.91.table\
-	grib2/tables/7/5.0.table\
-	grib2/tables/7/5.1.table\
-	grib2/tables/7/5.2.table\
-	grib2/tables/7/5.3.table\
-	grib2/tables/7/5.4.table\
-	grib2/tables/7/5.40.table\
-	grib2/tables/7/5.40000.table\
-	grib2/tables/7/5.5.table\
-	grib2/tables/7/5.50002.table\
-	grib2/tables/7/5.6.table\
-	grib2/tables/7/5.7.table\
-	grib2/tables/7/5.8.table\
-	grib2/tables/7/5.9.table\
-	grib2/tables/7/6.0.table\
-	grib2/tables/7/stepType.table
-
-definitionsgrib2_tables_8dir = @ECCODES_DEFINITION_PATH@/grib2/tables/8
-dist_definitionsgrib2_tables_8_DATA = \
-	grib2/tables/8/0.0.table\
-	grib2/tables/8/1.0.table\
-	grib2/tables/8/1.1.table\
-	grib2/tables/8/1.2.table\
-	grib2/tables/8/1.3.table\
-	grib2/tables/8/1.4.table\
-	grib2/tables/8/3.0.table\
-	grib2/tables/8/3.1.table\
-	grib2/tables/8/3.10.table\
-	grib2/tables/8/3.11.table\
-	grib2/tables/8/3.15.table\
-	grib2/tables/8/3.2.table\
-	grib2/tables/8/3.20.table\
-	grib2/tables/8/3.21.table\
-	grib2/tables/8/3.3.table\
-	grib2/tables/8/3.4.table\
-	grib2/tables/8/3.5.table\
-	grib2/tables/8/3.6.table\
-	grib2/tables/8/3.7.table\
-	grib2/tables/8/3.8.table\
-	grib2/tables/8/3.9.table\
-	grib2/tables/8/4.0.table\
-	grib2/tables/8/4.1.0.table\
-	grib2/tables/8/4.1.1.table\
-	grib2/tables/8/4.1.10.table\
-	grib2/tables/8/4.1.192.table\
-	grib2/tables/8/4.1.2.table\
-	grib2/tables/8/4.1.3.table\
-	grib2/tables/8/4.1.table\
-	grib2/tables/8/4.10.table\
-	grib2/tables/8/4.11.table\
-	grib2/tables/8/4.12.table\
-	grib2/tables/8/4.13.table\
-	grib2/tables/8/4.14.table\
-	grib2/tables/8/4.15.table\
-	grib2/tables/8/4.151.table\
-	grib2/tables/8/4.192.table\
-	grib2/tables/8/4.2.0.0.table\
-	grib2/tables/8/4.2.0.1.table\
-	grib2/tables/8/4.2.0.13.table\
-	grib2/tables/8/4.2.0.14.table\
-	grib2/tables/8/4.2.0.15.table\
-	grib2/tables/8/4.2.0.16.table\
-	grib2/tables/8/4.2.0.18.table\
-	grib2/tables/8/4.2.0.19.table\
-	grib2/tables/8/4.2.0.190.table\
-	grib2/tables/8/4.2.0.191.table\
-	grib2/tables/8/4.2.0.2.table\
-	grib2/tables/8/4.2.0.20.table\
-	grib2/tables/8/4.2.0.3.table\
-	grib2/tables/8/4.2.0.4.table\
-	grib2/tables/8/4.2.0.5.table\
-	grib2/tables/8/4.2.0.6.table\
-	grib2/tables/8/4.2.0.7.table\
-	grib2/tables/8/4.2.1.0.table\
-	grib2/tables/8/4.2.1.1.table\
-	grib2/tables/8/4.2.1.2.table\
-	grib2/tables/8/4.2.10.0.table\
-	grib2/tables/8/4.2.10.1.table\
-	grib2/tables/8/4.2.10.191.table\
-	grib2/tables/8/4.2.10.2.table\
-	grib2/tables/8/4.2.10.3.table\
-	grib2/tables/8/4.2.10.4.table\
-	grib2/tables/8/4.2.192.0.table\
-	grib2/tables/8/4.2.192.1.table\
-	grib2/tables/8/4.2.192.10.table\
-	grib2/tables/8/4.2.192.100.table\
-	grib2/tables/8/4.2.192.101.table\
-	grib2/tables/8/4.2.192.102.table\
-	grib2/tables/8/4.2.192.103.table\
-	grib2/tables/8/4.2.192.104.table\
-	grib2/tables/8/4.2.192.105.table\
-	grib2/tables/8/4.2.192.106.table\
-	grib2/tables/8/4.2.192.107.table\
-	grib2/tables/8/4.2.192.108.table\
-	grib2/tables/8/4.2.192.109.table\
-	grib2/tables/8/4.2.192.11.table\
-	grib2/tables/8/4.2.192.110.table\
-	grib2/tables/8/4.2.192.111.table\
-	grib2/tables/8/4.2.192.112.table\
-	grib2/tables/8/4.2.192.113.table\
-	grib2/tables/8/4.2.192.114.table\
-	grib2/tables/8/4.2.192.115.table\
-	grib2/tables/8/4.2.192.116.table\
-	grib2/tables/8/4.2.192.117.table\
-	grib2/tables/8/4.2.192.118.table\
-	grib2/tables/8/4.2.192.119.table\
-	grib2/tables/8/4.2.192.12.table\
-	grib2/tables/8/4.2.192.120.table\
-	grib2/tables/8/4.2.192.121.table\
-	grib2/tables/8/4.2.192.122.table\
-	grib2/tables/8/4.2.192.123.table\
-	grib2/tables/8/4.2.192.124.table\
-	grib2/tables/8/4.2.192.125.table\
-	grib2/tables/8/4.2.192.126.table\
-	grib2/tables/8/4.2.192.127.table\
-	grib2/tables/8/4.2.192.128.table\
-	grib2/tables/8/4.2.192.129.table\
-	grib2/tables/8/4.2.192.13.table\
-	grib2/tables/8/4.2.192.130.table\
-	grib2/tables/8/4.2.192.131.table\
-	grib2/tables/8/4.2.192.132.table\
-	grib2/tables/8/4.2.192.133.table\
-	grib2/tables/8/4.2.192.134.table\
-	grib2/tables/8/4.2.192.135.table\
-	grib2/tables/8/4.2.192.136.table\
-	grib2/tables/8/4.2.192.137.table\
-	grib2/tables/8/4.2.192.138.table\
-	grib2/tables/8/4.2.192.139.table\
-	grib2/tables/8/4.2.192.14.table\
-	grib2/tables/8/4.2.192.140.table\
-	grib2/tables/8/4.2.192.141.table\
-	grib2/tables/8/4.2.192.142.table\
-	grib2/tables/8/4.2.192.143.table\
-	grib2/tables/8/4.2.192.144.table\
-	grib2/tables/8/4.2.192.145.table\
-	grib2/tables/8/4.2.192.146.table\
-	grib2/tables/8/4.2.192.147.table\
-	grib2/tables/8/4.2.192.148.table\
-	grib2/tables/8/4.2.192.149.table\
-	grib2/tables/8/4.2.192.15.table\
-	grib2/tables/8/4.2.192.150.table\
-	grib2/tables/8/4.2.192.151.table\
-	grib2/tables/8/4.2.192.152.table\
-	grib2/tables/8/4.2.192.153.table\
-	grib2/tables/8/4.2.192.154.table\
-	grib2/tables/8/4.2.192.155.table\
-	grib2/tables/8/4.2.192.156.table\
-	grib2/tables/8/4.2.192.157.table\
-	grib2/tables/8/4.2.192.158.table\
-	grib2/tables/8/4.2.192.159.table\
-	grib2/tables/8/4.2.192.16.table\
-	grib2/tables/8/4.2.192.160.table\
-	grib2/tables/8/4.2.192.161.table\
-	grib2/tables/8/4.2.192.162.table\
-	grib2/tables/8/4.2.192.163.table\
-	grib2/tables/8/4.2.192.164.table\
-	grib2/tables/8/4.2.192.165.table\
-	grib2/tables/8/4.2.192.166.table\
-	grib2/tables/8/4.2.192.167.table\
-	grib2/tables/8/4.2.192.168.table\
-	grib2/tables/8/4.2.192.169.table\
-	grib2/tables/8/4.2.192.17.table\
-	grib2/tables/8/4.2.192.170.table\
-	grib2/tables/8/4.2.192.171.table\
-	grib2/tables/8/4.2.192.172.table\
-	grib2/tables/8/4.2.192.173.table\
-	grib2/tables/8/4.2.192.174.table\
-	grib2/tables/8/4.2.192.175.table\
-	grib2/tables/8/4.2.192.176.table\
-	grib2/tables/8/4.2.192.177.table\
-	grib2/tables/8/4.2.192.178.table\
-	grib2/tables/8/4.2.192.179.table\
-	grib2/tables/8/4.2.192.18.table\
-	grib2/tables/8/4.2.192.180.table\
-	grib2/tables/8/4.2.192.181.table\
-	grib2/tables/8/4.2.192.182.table\
-	grib2/tables/8/4.2.192.183.table\
-	grib2/tables/8/4.2.192.184.table\
-	grib2/tables/8/4.2.192.185.table\
-	grib2/tables/8/4.2.192.186.table\
-	grib2/tables/8/4.2.192.187.table\
-	grib2/tables/8/4.2.192.188.table\
-	grib2/tables/8/4.2.192.189.table\
-	grib2/tables/8/4.2.192.19.table\
-	grib2/tables/8/4.2.192.190.table\
-	grib2/tables/8/4.2.192.191.table\
-	grib2/tables/8/4.2.192.192.table\
-	grib2/tables/8/4.2.192.193.table\
-	grib2/tables/8/4.2.192.194.table\
-	grib2/tables/8/4.2.192.195.table\
-	grib2/tables/8/4.2.192.196.table\
-	grib2/tables/8/4.2.192.197.table\
-	grib2/tables/8/4.2.192.198.table\
-	grib2/tables/8/4.2.192.199.table\
-	grib2/tables/8/4.2.192.2.table\
-	grib2/tables/8/4.2.192.20.table\
-	grib2/tables/8/4.2.192.200.table\
-	grib2/tables/8/4.2.192.201.table\
-	grib2/tables/8/4.2.192.202.table\
-	grib2/tables/8/4.2.192.203.table\
-	grib2/tables/8/4.2.192.204.table\
-	grib2/tables/8/4.2.192.205.table\
-	grib2/tables/8/4.2.192.206.table\
-	grib2/tables/8/4.2.192.207.table\
-	grib2/tables/8/4.2.192.208.table\
-	grib2/tables/8/4.2.192.209.table\
-	grib2/tables/8/4.2.192.21.table\
-	grib2/tables/8/4.2.192.210.table\
-	grib2/tables/8/4.2.192.211.table\
-	grib2/tables/8/4.2.192.212.table\
-	grib2/tables/8/4.2.192.213.table\
-	grib2/tables/8/4.2.192.214.table\
-	grib2/tables/8/4.2.192.215.table\
-	grib2/tables/8/4.2.192.216.table\
-	grib2/tables/8/4.2.192.217.table\
-	grib2/tables/8/4.2.192.218.table\
-	grib2/tables/8/4.2.192.219.table\
-	grib2/tables/8/4.2.192.22.table\
-	grib2/tables/8/4.2.192.220.table\
-	grib2/tables/8/4.2.192.221.table\
-	grib2/tables/8/4.2.192.222.table\
-	grib2/tables/8/4.2.192.223.table\
-	grib2/tables/8/4.2.192.224.table\
-	grib2/tables/8/4.2.192.225.table\
-	grib2/tables/8/4.2.192.226.table\
-	grib2/tables/8/4.2.192.227.table\
-	grib2/tables/8/4.2.192.228.table\
-	grib2/tables/8/4.2.192.229.table\
-	grib2/tables/8/4.2.192.23.table\
-	grib2/tables/8/4.2.192.230.table\
-	grib2/tables/8/4.2.192.231.table\
-	grib2/tables/8/4.2.192.232.table\
-	grib2/tables/8/4.2.192.233.table\
-	grib2/tables/8/4.2.192.234.table\
-	grib2/tables/8/4.2.192.235.table\
-	grib2/tables/8/4.2.192.236.table\
-	grib2/tables/8/4.2.192.237.table\
-	grib2/tables/8/4.2.192.238.table\
-	grib2/tables/8/4.2.192.239.table\
-	grib2/tables/8/4.2.192.24.table\
-	grib2/tables/8/4.2.192.240.table\
-	grib2/tables/8/4.2.192.241.table\
-	grib2/tables/8/4.2.192.242.table\
-	grib2/tables/8/4.2.192.243.table\
-	grib2/tables/8/4.2.192.244.table\
-	grib2/tables/8/4.2.192.245.table\
-	grib2/tables/8/4.2.192.246.table\
-	grib2/tables/8/4.2.192.247.table\
-	grib2/tables/8/4.2.192.248.table\
-	grib2/tables/8/4.2.192.249.table\
-	grib2/tables/8/4.2.192.25.table\
-	grib2/tables/8/4.2.192.250.table\
-	grib2/tables/8/4.2.192.251.table\
-	grib2/tables/8/4.2.192.252.table\
-	grib2/tables/8/4.2.192.253.table\
-	grib2/tables/8/4.2.192.254.table\
-	grib2/tables/8/4.2.192.255.table\
-	grib2/tables/8/4.2.192.26.table\
-	grib2/tables/8/4.2.192.27.table\
-	grib2/tables/8/4.2.192.28.table\
-	grib2/tables/8/4.2.192.29.table\
-	grib2/tables/8/4.2.192.3.table\
-	grib2/tables/8/4.2.192.30.table\
-	grib2/tables/8/4.2.192.31.table\
-	grib2/tables/8/4.2.192.32.table\
-	grib2/tables/8/4.2.192.33.table\
-	grib2/tables/8/4.2.192.34.table\
-	grib2/tables/8/4.2.192.35.table\
-	grib2/tables/8/4.2.192.36.table\
-	grib2/tables/8/4.2.192.37.table\
-	grib2/tables/8/4.2.192.38.table\
-	grib2/tables/8/4.2.192.39.table\
-	grib2/tables/8/4.2.192.4.table\
-	grib2/tables/8/4.2.192.40.table\
-	grib2/tables/8/4.2.192.41.table\
-	grib2/tables/8/4.2.192.42.table\
-	grib2/tables/8/4.2.192.43.table\
-	grib2/tables/8/4.2.192.44.table\
-	grib2/tables/8/4.2.192.45.table\
-	grib2/tables/8/4.2.192.46.table\
-	grib2/tables/8/4.2.192.47.table\
-	grib2/tables/8/4.2.192.48.table\
-	grib2/tables/8/4.2.192.49.table\
-	grib2/tables/8/4.2.192.5.table\
-	grib2/tables/8/4.2.192.50.table\
-	grib2/tables/8/4.2.192.51.table\
-	grib2/tables/8/4.2.192.52.table\
-	grib2/tables/8/4.2.192.53.table\
-	grib2/tables/8/4.2.192.54.table\
-	grib2/tables/8/4.2.192.55.table\
-	grib2/tables/8/4.2.192.56.table\
-	grib2/tables/8/4.2.192.57.table\
-	grib2/tables/8/4.2.192.58.table\
-	grib2/tables/8/4.2.192.59.table\
-	grib2/tables/8/4.2.192.6.table\
-	grib2/tables/8/4.2.192.60.table\
-	grib2/tables/8/4.2.192.61.table\
-	grib2/tables/8/4.2.192.62.table\
-	grib2/tables/8/4.2.192.63.table\
-	grib2/tables/8/4.2.192.64.table\
-	grib2/tables/8/4.2.192.65.table\
-	grib2/tables/8/4.2.192.66.table\
-	grib2/tables/8/4.2.192.67.table\
-	grib2/tables/8/4.2.192.68.table\
-	grib2/tables/8/4.2.192.69.table\
-	grib2/tables/8/4.2.192.7.table\
-	grib2/tables/8/4.2.192.70.table\
-	grib2/tables/8/4.2.192.71.table\
-	grib2/tables/8/4.2.192.72.table\
-	grib2/tables/8/4.2.192.73.table\
-	grib2/tables/8/4.2.192.74.table\
-	grib2/tables/8/4.2.192.75.table\
-	grib2/tables/8/4.2.192.76.table\
-	grib2/tables/8/4.2.192.77.table\
-	grib2/tables/8/4.2.192.78.table\
-	grib2/tables/8/4.2.192.79.table\
-	grib2/tables/8/4.2.192.8.table\
-	grib2/tables/8/4.2.192.80.table\
-	grib2/tables/8/4.2.192.81.table\
-	grib2/tables/8/4.2.192.82.table\
-	grib2/tables/8/4.2.192.83.table\
-	grib2/tables/8/4.2.192.84.table\
-	grib2/tables/8/4.2.192.85.table\
-	grib2/tables/8/4.2.192.86.table\
-	grib2/tables/8/4.2.192.87.table\
-	grib2/tables/8/4.2.192.88.table\
-	grib2/tables/8/4.2.192.89.table\
-	grib2/tables/8/4.2.192.9.table\
-	grib2/tables/8/4.2.192.90.table\
-	grib2/tables/8/4.2.192.91.table\
-	grib2/tables/8/4.2.192.92.table\
-	grib2/tables/8/4.2.192.93.table\
-	grib2/tables/8/4.2.192.94.table\
-	grib2/tables/8/4.2.192.95.table\
-	grib2/tables/8/4.2.192.96.table\
-	grib2/tables/8/4.2.192.97.table\
-	grib2/tables/8/4.2.192.98.table\
-	grib2/tables/8/4.2.192.99.table\
-	grib2/tables/8/4.2.2.0.table\
-	grib2/tables/8/4.2.2.3.table\
-	grib2/tables/8/4.2.2.4.table\
-	grib2/tables/8/4.2.3.0.table\
-	grib2/tables/8/4.2.3.1.table\
-	grib2/tables/8/4.2.table\
-	grib2/tables/8/4.201.table\
-	grib2/tables/8/4.202.table\
-	grib2/tables/8/4.203.table\
-	grib2/tables/8/4.204.table\
-	grib2/tables/8/4.205.table\
-	grib2/tables/8/4.206.table\
-	grib2/tables/8/4.207.table\
-	grib2/tables/8/4.208.table\
-	grib2/tables/8/4.209.table\
-	grib2/tables/8/4.210.table\
-	grib2/tables/8/4.211.table\
-	grib2/tables/8/4.212.table\
-	grib2/tables/8/4.213.table\
-	grib2/tables/8/4.215.table\
-	grib2/tables/8/4.216.table\
-	grib2/tables/8/4.217.table\
-	grib2/tables/8/4.218.table\
-	grib2/tables/8/4.219.table\
-	grib2/tables/8/4.220.table\
-	grib2/tables/8/4.221.table\
-	grib2/tables/8/4.222.table\
-	grib2/tables/8/4.223.table\
-	grib2/tables/8/4.224.table\
-	grib2/tables/8/4.230.table\
-	grib2/tables/8/4.233.table\
-	grib2/tables/8/4.3.table\
-	grib2/tables/8/4.4.table\
-	grib2/tables/8/4.5.table\
-	grib2/tables/8/4.6.table\
-	grib2/tables/8/4.7.table\
-	grib2/tables/8/4.8.table\
-	grib2/tables/8/4.9.table\
-	grib2/tables/8/4.91.table\
-	grib2/tables/8/5.0.table\
-	grib2/tables/8/5.1.table\
-	grib2/tables/8/5.2.table\
-	grib2/tables/8/5.3.table\
-	grib2/tables/8/5.4.table\
-	grib2/tables/8/5.40.table\
-	grib2/tables/8/5.40000.table\
-	grib2/tables/8/5.5.table\
-	grib2/tables/8/5.50002.table\
-	grib2/tables/8/5.6.table\
-	grib2/tables/8/5.7.table\
-	grib2/tables/8/5.8.table\
-	grib2/tables/8/5.9.table\
-	grib2/tables/8/6.0.table\
-	grib2/tables/8/stepType.table
-
-definitionsgrib2_tables_9dir = @ECCODES_DEFINITION_PATH@/grib2/tables/9
-dist_definitionsgrib2_tables_9_DATA = \
-	grib2/tables/9/0.0.table\
-	grib2/tables/9/1.0.table\
-	grib2/tables/9/1.1.table\
-	grib2/tables/9/1.2.table\
-	grib2/tables/9/1.3.table\
-	grib2/tables/9/1.4.table\
-	grib2/tables/9/3.0.table\
-	grib2/tables/9/3.1.table\
-	grib2/tables/9/3.10.table\
-	grib2/tables/9/3.11.table\
-	grib2/tables/9/3.15.table\
-	grib2/tables/9/3.2.table\
-	grib2/tables/9/3.20.table\
-	grib2/tables/9/3.21.table\
-	grib2/tables/9/3.3.table\
-	grib2/tables/9/3.4.table\
-	grib2/tables/9/3.5.table\
-	grib2/tables/9/3.6.table\
-	grib2/tables/9/3.7.table\
-	grib2/tables/9/3.8.table\
-	grib2/tables/9/3.9.table\
-	grib2/tables/9/4.0.table\
-	grib2/tables/9/4.1.0.table\
-	grib2/tables/9/4.1.1.table\
-	grib2/tables/9/4.1.10.table\
-	grib2/tables/9/4.1.192.table\
-	grib2/tables/9/4.1.2.table\
-	grib2/tables/9/4.1.3.table\
-	grib2/tables/9/4.1.table\
-	grib2/tables/9/4.10.table\
-	grib2/tables/9/4.11.table\
-	grib2/tables/9/4.12.table\
-	grib2/tables/9/4.13.table\
-	grib2/tables/9/4.14.table\
-	grib2/tables/9/4.15.table\
-	grib2/tables/9/4.151.table\
-	grib2/tables/9/4.192.table\
-	grib2/tables/9/4.2.0.0.table\
-	grib2/tables/9/4.2.0.1.table\
-	grib2/tables/9/4.2.0.13.table\
-	grib2/tables/9/4.2.0.14.table\
-	grib2/tables/9/4.2.0.15.table\
-	grib2/tables/9/4.2.0.16.table\
-	grib2/tables/9/4.2.0.18.table\
-	grib2/tables/9/4.2.0.19.table\
-	grib2/tables/9/4.2.0.190.table\
-	grib2/tables/9/4.2.0.191.table\
-	grib2/tables/9/4.2.0.2.table\
-	grib2/tables/9/4.2.0.20.table\
-	grib2/tables/9/4.2.0.3.table\
-	grib2/tables/9/4.2.0.4.table\
-	grib2/tables/9/4.2.0.5.table\
-	grib2/tables/9/4.2.0.6.table\
-	grib2/tables/9/4.2.0.7.table\
-	grib2/tables/9/4.2.1.0.table\
-	grib2/tables/9/4.2.1.1.table\
-	grib2/tables/9/4.2.1.2.table\
-	grib2/tables/9/4.2.10.0.table\
-	grib2/tables/9/4.2.10.1.table\
-	grib2/tables/9/4.2.10.191.table\
-	grib2/tables/9/4.2.10.2.table\
-	grib2/tables/9/4.2.10.3.table\
-	grib2/tables/9/4.2.10.4.table\
-	grib2/tables/9/4.2.192.0.table\
-	grib2/tables/9/4.2.192.1.table\
-	grib2/tables/9/4.2.192.10.table\
-	grib2/tables/9/4.2.192.100.table\
-	grib2/tables/9/4.2.192.101.table\
-	grib2/tables/9/4.2.192.102.table\
-	grib2/tables/9/4.2.192.103.table\
-	grib2/tables/9/4.2.192.104.table\
-	grib2/tables/9/4.2.192.105.table\
-	grib2/tables/9/4.2.192.106.table\
-	grib2/tables/9/4.2.192.107.table\
-	grib2/tables/9/4.2.192.108.table\
-	grib2/tables/9/4.2.192.109.table\
-	grib2/tables/9/4.2.192.11.table\
-	grib2/tables/9/4.2.192.110.table\
-	grib2/tables/9/4.2.192.111.table\
-	grib2/tables/9/4.2.192.112.table\
-	grib2/tables/9/4.2.192.113.table\
-	grib2/tables/9/4.2.192.114.table\
-	grib2/tables/9/4.2.192.115.table\
-	grib2/tables/9/4.2.192.116.table\
-	grib2/tables/9/4.2.192.117.table\
-	grib2/tables/9/4.2.192.118.table\
-	grib2/tables/9/4.2.192.119.table\
-	grib2/tables/9/4.2.192.12.table\
-	grib2/tables/9/4.2.192.120.table\
-	grib2/tables/9/4.2.192.121.table\
-	grib2/tables/9/4.2.192.122.table\
-	grib2/tables/9/4.2.192.123.table\
-	grib2/tables/9/4.2.192.124.table\
-	grib2/tables/9/4.2.192.125.table\
-	grib2/tables/9/4.2.192.126.table\
-	grib2/tables/9/4.2.192.127.table\
-	grib2/tables/9/4.2.192.128.table\
-	grib2/tables/9/4.2.192.129.table\
-	grib2/tables/9/4.2.192.13.table\
-	grib2/tables/9/4.2.192.130.table\
-	grib2/tables/9/4.2.192.131.table\
-	grib2/tables/9/4.2.192.132.table\
-	grib2/tables/9/4.2.192.133.table\
-	grib2/tables/9/4.2.192.134.table\
-	grib2/tables/9/4.2.192.135.table\
-	grib2/tables/9/4.2.192.136.table\
-	grib2/tables/9/4.2.192.137.table\
-	grib2/tables/9/4.2.192.138.table\
-	grib2/tables/9/4.2.192.139.table\
-	grib2/tables/9/4.2.192.14.table\
-	grib2/tables/9/4.2.192.140.table\
-	grib2/tables/9/4.2.192.141.table\
-	grib2/tables/9/4.2.192.142.table\
-	grib2/tables/9/4.2.192.143.table\
-	grib2/tables/9/4.2.192.144.table\
-	grib2/tables/9/4.2.192.145.table\
-	grib2/tables/9/4.2.192.146.table\
-	grib2/tables/9/4.2.192.147.table\
-	grib2/tables/9/4.2.192.148.table\
-	grib2/tables/9/4.2.192.149.table\
-	grib2/tables/9/4.2.192.15.table\
-	grib2/tables/9/4.2.192.150.table\
-	grib2/tables/9/4.2.192.151.table\
-	grib2/tables/9/4.2.192.152.table\
-	grib2/tables/9/4.2.192.153.table\
-	grib2/tables/9/4.2.192.154.table\
-	grib2/tables/9/4.2.192.155.table\
-	grib2/tables/9/4.2.192.156.table\
-	grib2/tables/9/4.2.192.157.table\
-	grib2/tables/9/4.2.192.158.table\
-	grib2/tables/9/4.2.192.159.table\
-	grib2/tables/9/4.2.192.16.table\
-	grib2/tables/9/4.2.192.160.table\
-	grib2/tables/9/4.2.192.161.table\
-	grib2/tables/9/4.2.192.162.table\
-	grib2/tables/9/4.2.192.163.table\
-	grib2/tables/9/4.2.192.164.table\
-	grib2/tables/9/4.2.192.165.table\
-	grib2/tables/9/4.2.192.166.table\
-	grib2/tables/9/4.2.192.167.table\
-	grib2/tables/9/4.2.192.168.table\
-	grib2/tables/9/4.2.192.169.table\
-	grib2/tables/9/4.2.192.17.table\
-	grib2/tables/9/4.2.192.170.table\
-	grib2/tables/9/4.2.192.171.table\
-	grib2/tables/9/4.2.192.172.table\
-	grib2/tables/9/4.2.192.173.table\
-	grib2/tables/9/4.2.192.174.table\
-	grib2/tables/9/4.2.192.175.table\
-	grib2/tables/9/4.2.192.176.table\
-	grib2/tables/9/4.2.192.177.table\
-	grib2/tables/9/4.2.192.178.table\
-	grib2/tables/9/4.2.192.179.table\
-	grib2/tables/9/4.2.192.18.table\
-	grib2/tables/9/4.2.192.180.table\
-	grib2/tables/9/4.2.192.181.table\
-	grib2/tables/9/4.2.192.182.table\
-	grib2/tables/9/4.2.192.183.table\
-	grib2/tables/9/4.2.192.184.table\
-	grib2/tables/9/4.2.192.185.table\
-	grib2/tables/9/4.2.192.186.table\
-	grib2/tables/9/4.2.192.187.table\
-	grib2/tables/9/4.2.192.188.table\
-	grib2/tables/9/4.2.192.189.table\
-	grib2/tables/9/4.2.192.19.table\
-	grib2/tables/9/4.2.192.190.table\
-	grib2/tables/9/4.2.192.191.table\
-	grib2/tables/9/4.2.192.192.table\
-	grib2/tables/9/4.2.192.193.table\
-	grib2/tables/9/4.2.192.194.table\
-	grib2/tables/9/4.2.192.195.table\
-	grib2/tables/9/4.2.192.196.table\
-	grib2/tables/9/4.2.192.197.table\
-	grib2/tables/9/4.2.192.198.table\
-	grib2/tables/9/4.2.192.199.table\
-	grib2/tables/9/4.2.192.2.table\
-	grib2/tables/9/4.2.192.20.table\
-	grib2/tables/9/4.2.192.200.table\
-	grib2/tables/9/4.2.192.201.table\
-	grib2/tables/9/4.2.192.202.table\
-	grib2/tables/9/4.2.192.203.table\
-	grib2/tables/9/4.2.192.204.table\
-	grib2/tables/9/4.2.192.205.table\
-	grib2/tables/9/4.2.192.206.table\
-	grib2/tables/9/4.2.192.207.table\
-	grib2/tables/9/4.2.192.208.table\
-	grib2/tables/9/4.2.192.209.table\
-	grib2/tables/9/4.2.192.21.table\
-	grib2/tables/9/4.2.192.210.table\
-	grib2/tables/9/4.2.192.211.table\
-	grib2/tables/9/4.2.192.212.table\
-	grib2/tables/9/4.2.192.213.table\
-	grib2/tables/9/4.2.192.214.table\
-	grib2/tables/9/4.2.192.215.table\
-	grib2/tables/9/4.2.192.216.table\
-	grib2/tables/9/4.2.192.217.table\
-	grib2/tables/9/4.2.192.218.table\
-	grib2/tables/9/4.2.192.219.table\
-	grib2/tables/9/4.2.192.22.table\
-	grib2/tables/9/4.2.192.220.table\
-	grib2/tables/9/4.2.192.221.table\
-	grib2/tables/9/4.2.192.222.table\
-	grib2/tables/9/4.2.192.223.table\
-	grib2/tables/9/4.2.192.224.table\
-	grib2/tables/9/4.2.192.225.table\
-	grib2/tables/9/4.2.192.226.table\
-	grib2/tables/9/4.2.192.227.table\
-	grib2/tables/9/4.2.192.228.table\
-	grib2/tables/9/4.2.192.229.table\
-	grib2/tables/9/4.2.192.23.table\
-	grib2/tables/9/4.2.192.230.table\
-	grib2/tables/9/4.2.192.231.table\
-	grib2/tables/9/4.2.192.232.table\
-	grib2/tables/9/4.2.192.233.table\
-	grib2/tables/9/4.2.192.234.table\
-	grib2/tables/9/4.2.192.235.table\
-	grib2/tables/9/4.2.192.236.table\
-	grib2/tables/9/4.2.192.237.table\
-	grib2/tables/9/4.2.192.238.table\
-	grib2/tables/9/4.2.192.239.table\
-	grib2/tables/9/4.2.192.24.table\
-	grib2/tables/9/4.2.192.240.table\
-	grib2/tables/9/4.2.192.241.table\
-	grib2/tables/9/4.2.192.242.table\
-	grib2/tables/9/4.2.192.243.table\
-	grib2/tables/9/4.2.192.244.table\
-	grib2/tables/9/4.2.192.245.table\
-	grib2/tables/9/4.2.192.246.table\
-	grib2/tables/9/4.2.192.247.table\
-	grib2/tables/9/4.2.192.248.table\
-	grib2/tables/9/4.2.192.249.table\
-	grib2/tables/9/4.2.192.25.table\
-	grib2/tables/9/4.2.192.250.table\
-	grib2/tables/9/4.2.192.251.table\
-	grib2/tables/9/4.2.192.252.table\
-	grib2/tables/9/4.2.192.253.table\
-	grib2/tables/9/4.2.192.254.table\
-	grib2/tables/9/4.2.192.255.table\
-	grib2/tables/9/4.2.192.26.table\
-	grib2/tables/9/4.2.192.27.table\
-	grib2/tables/9/4.2.192.28.table\
-	grib2/tables/9/4.2.192.29.table\
-	grib2/tables/9/4.2.192.3.table\
-	grib2/tables/9/4.2.192.30.table\
-	grib2/tables/9/4.2.192.31.table\
-	grib2/tables/9/4.2.192.32.table\
-	grib2/tables/9/4.2.192.33.table\
-	grib2/tables/9/4.2.192.34.table\
-	grib2/tables/9/4.2.192.35.table\
-	grib2/tables/9/4.2.192.36.table\
-	grib2/tables/9/4.2.192.37.table\
-	grib2/tables/9/4.2.192.38.table\
-	grib2/tables/9/4.2.192.39.table\
-	grib2/tables/9/4.2.192.4.table\
-	grib2/tables/9/4.2.192.40.table\
-	grib2/tables/9/4.2.192.41.table\
-	grib2/tables/9/4.2.192.42.table\
-	grib2/tables/9/4.2.192.43.table\
-	grib2/tables/9/4.2.192.44.table\
-	grib2/tables/9/4.2.192.45.table\
-	grib2/tables/9/4.2.192.46.table\
-	grib2/tables/9/4.2.192.47.table\
-	grib2/tables/9/4.2.192.48.table\
-	grib2/tables/9/4.2.192.49.table\
-	grib2/tables/9/4.2.192.5.table\
-	grib2/tables/9/4.2.192.50.table\
-	grib2/tables/9/4.2.192.51.table\
-	grib2/tables/9/4.2.192.52.table\
-	grib2/tables/9/4.2.192.53.table\
-	grib2/tables/9/4.2.192.54.table\
-	grib2/tables/9/4.2.192.55.table\
-	grib2/tables/9/4.2.192.56.table\
-	grib2/tables/9/4.2.192.57.table\
-	grib2/tables/9/4.2.192.58.table\
-	grib2/tables/9/4.2.192.59.table\
-	grib2/tables/9/4.2.192.6.table\
-	grib2/tables/9/4.2.192.60.table\
-	grib2/tables/9/4.2.192.61.table\
-	grib2/tables/9/4.2.192.62.table\
-	grib2/tables/9/4.2.192.63.table\
-	grib2/tables/9/4.2.192.64.table\
-	grib2/tables/9/4.2.192.65.table\
-	grib2/tables/9/4.2.192.66.table\
-	grib2/tables/9/4.2.192.67.table\
-	grib2/tables/9/4.2.192.68.table\
-	grib2/tables/9/4.2.192.69.table\
-	grib2/tables/9/4.2.192.7.table\
-	grib2/tables/9/4.2.192.70.table\
-	grib2/tables/9/4.2.192.71.table\
-	grib2/tables/9/4.2.192.72.table\
-	grib2/tables/9/4.2.192.73.table\
-	grib2/tables/9/4.2.192.74.table\
-	grib2/tables/9/4.2.192.75.table\
-	grib2/tables/9/4.2.192.76.table\
-	grib2/tables/9/4.2.192.77.table\
-	grib2/tables/9/4.2.192.78.table\
-	grib2/tables/9/4.2.192.79.table\
-	grib2/tables/9/4.2.192.8.table\
-	grib2/tables/9/4.2.192.80.table\
-	grib2/tables/9/4.2.192.81.table\
-	grib2/tables/9/4.2.192.82.table\
-	grib2/tables/9/4.2.192.83.table\
-	grib2/tables/9/4.2.192.84.table\
-	grib2/tables/9/4.2.192.85.table\
-	grib2/tables/9/4.2.192.86.table\
-	grib2/tables/9/4.2.192.87.table\
-	grib2/tables/9/4.2.192.88.table\
-	grib2/tables/9/4.2.192.89.table\
-	grib2/tables/9/4.2.192.9.table\
-	grib2/tables/9/4.2.192.90.table\
-	grib2/tables/9/4.2.192.91.table\
-	grib2/tables/9/4.2.192.92.table\
-	grib2/tables/9/4.2.192.93.table\
-	grib2/tables/9/4.2.192.94.table\
-	grib2/tables/9/4.2.192.95.table\
-	grib2/tables/9/4.2.192.96.table\
-	grib2/tables/9/4.2.192.97.table\
-	grib2/tables/9/4.2.192.98.table\
-	grib2/tables/9/4.2.192.99.table\
-	grib2/tables/9/4.2.2.0.table\
-	grib2/tables/9/4.2.2.3.table\
-	grib2/tables/9/4.2.2.4.table\
-	grib2/tables/9/4.2.3.0.table\
-	grib2/tables/9/4.2.3.1.table\
-	grib2/tables/9/4.2.table\
-	grib2/tables/9/4.201.table\
-	grib2/tables/9/4.202.table\
-	grib2/tables/9/4.203.table\
-	grib2/tables/9/4.204.table\
-	grib2/tables/9/4.205.table\
-	grib2/tables/9/4.206.table\
-	grib2/tables/9/4.207.table\
-	grib2/tables/9/4.208.table\
-	grib2/tables/9/4.209.table\
-	grib2/tables/9/4.210.table\
-	grib2/tables/9/4.211.table\
-	grib2/tables/9/4.212.table\
-	grib2/tables/9/4.213.table\
-	grib2/tables/9/4.215.table\
-	grib2/tables/9/4.216.table\
-	grib2/tables/9/4.217.table\
-	grib2/tables/9/4.218.table\
-	grib2/tables/9/4.219.table\
-	grib2/tables/9/4.220.table\
-	grib2/tables/9/4.221.table\
-	grib2/tables/9/4.222.table\
-	grib2/tables/9/4.223.table\
-	grib2/tables/9/4.224.table\
-	grib2/tables/9/4.227.table\
-	grib2/tables/9/4.230.table\
-	grib2/tables/9/4.233.table\
-	grib2/tables/9/4.234.table\
-	grib2/tables/9/4.235.table\
-	grib2/tables/9/4.3.table\
-	grib2/tables/9/4.4.table\
-	grib2/tables/9/4.5.table\
-	grib2/tables/9/4.6.table\
-	grib2/tables/9/4.7.table\
-	grib2/tables/9/4.8.table\
-	grib2/tables/9/4.9.table\
-	grib2/tables/9/4.91.table\
-	grib2/tables/9/5.0.table\
-	grib2/tables/9/5.1.table\
-	grib2/tables/9/5.2.table\
-	grib2/tables/9/5.3.table\
-	grib2/tables/9/5.4.table\
-	grib2/tables/9/5.40.table\
-	grib2/tables/9/5.40000.table\
-	grib2/tables/9/5.5.table\
-	grib2/tables/9/5.50002.table\
-	grib2/tables/9/5.6.table\
-	grib2/tables/9/5.7.table\
-	grib2/tables/9/5.8.table\
-	grib2/tables/9/5.9.table\
-	grib2/tables/9/6.0.table\
-	grib2/tables/9/stepType.table
-
-definitionsgrib2_tables_local_ecmfdir = @ECCODES_DEFINITION_PATH@/grib2/tables/local/ecmf
-dist_definitionsgrib2_tables_local_ecmf_DATA = \
-	grib2/tables/local/ecmf/obstat.1.0.table\
-	grib2/tables/local/ecmf/obstat.10.0.table\
-	grib2/tables/local/ecmf/obstat.11.0.table\
-	grib2/tables/local/ecmf/obstat.2.0.table\
-	grib2/tables/local/ecmf/obstat.3.0.table\
-	grib2/tables/local/ecmf/obstat.4.0.table\
-	grib2/tables/local/ecmf/obstat.5.0.table\
-	grib2/tables/local/ecmf/obstat.6.0.table\
-	grib2/tables/local/ecmf/obstat.7.0.table\
-	grib2/tables/local/ecmf/obstat.8.0.table\
-	grib2/tables/local/ecmf/obstat.9.0.table\
-	grib2/tables/local/ecmf/obstat.reporttype.table\
-	grib2/tables/local/ecmf/obstat.varno.table
-
-definitionsgrib2_tables_local_ecmf_4dir = @ECCODES_DEFINITION_PATH@/grib2/tables/local/ecmf/4
-dist_definitionsgrib2_tables_local_ecmf_4_DATA = \
-	grib2/tables/local/ecmf/4/1.2.table
-
-definitionsgtsdir = @ECCODES_DEFINITION_PATH@/gts
-dist_definitionsgts_DATA = \
-	gts/boot.def
-
-definitionshdf5dir = @ECCODES_DEFINITION_PATH@/hdf5
-dist_definitionshdf5_DATA = \
-	hdf5/boot.def
-
-definitionsmarsdir = @ECCODES_DEFINITION_PATH@/mars
-dist_definitionsmars_DATA = \
-	mars/base.def\
-	mars/class.table\
-	mars/default_labeling.def\
-	mars/domain.96.table\
-	mars/domain.table\
-	mars/grib.amap.an.def\
-	mars/grib.dacl.pb.def\
-	mars/grib.dacw.pb.def\
-	mars/grib.dcda.4i.def\
-	mars/grib.dcda.me.def\
-	mars/grib.dcda.sim.def\
-	mars/grib.edmm.an.def\
-	mars/grib.edmm.cl.def\
-	mars/grib.edmm.fc.def\
-	mars/grib.edmm.fg.def\
-	mars/grib.edmm.ia.def\
-	mars/grib.edmm.ssd.def\
-	mars/grib.edmo.an.def\
-	mars/grib.edmo.cl.def\
-	mars/grib.edmo.fc.def\
-	mars/grib.edmo.ssd.def\
-	mars/grib.efhc.cf.def\
-	mars/grib.efhc.icp.def\
-	mars/grib.efhc.pf.def\
-	mars/grib.efho.cf.def\
-	mars/grib.efho.pf.def\
-	mars/grib.efhs.cd.def\
-	mars/grib.efhs.ed.def\
-	mars/grib.efhs.em.def\
-	mars/grib.efhs.es.def\
-	mars/grib.efhs.taem.def\
-	mars/grib.efhs.taes.def\
-	mars/grib.efov.pf.def\
-	mars/grib.ehmm.em.def\
-	mars/grib.elda.4i.def\
-	mars/grib.elda.4v.def\
-	mars/grib.elda.an.def\
-	mars/grib.elda.ea.def\
-	mars/grib.elda.ef.def\
-	mars/grib.elda.em.def\
-	mars/grib.elda.es.def\
-	mars/grib.elda.fc.def\
-	mars/grib.elda.me.def\
-	mars/grib.elda.ses.def\
-	mars/grib.enda.4i.def\
-	mars/grib.enda.4v.def\
-	mars/grib.enda.an.def\
-	mars/grib.enda.def\
-	mars/grib.enda.ea.def\
-	mars/grib.enda.ef.def\
-	mars/grib.enda.em.def\
-	mars/grib.enda.es.def\
-	mars/grib.enda.fc.def\
-	mars/grib.enda.ssd.def\
-	mars/grib.enda.sv.def\
-	mars/grib.enda.svar.def\
-	mars/grib.enfh.cf.def\
-	mars/grib.enfh.fcmax.def\
-	mars/grib.enfh.fcmean.def\
-	mars/grib.enfh.fcmin.def\
-	mars/grib.enfh.fcstdev.def\
-	mars/grib.enfh.ff.def\
-	mars/grib.enfh.icp.def\
-	mars/grib.enfh.pf.def\
-	mars/grib.enfh.tims.def\
-	mars/grib.enfo.cf.def\
-	mars/grib.enfo.ci.def\
-	mars/grib.enfo.cm.def\
-	mars/grib.enfo.cr.def\
-	mars/grib.enfo.cs.def\
-	mars/grib.enfo.cv.def\
-	mars/grib.enfo.ed.def\
-	mars/grib.enfo.ef.def\
-	mars/grib.enfo.efi.def\
-	mars/grib.enfo.efic.def\
-	mars/grib.enfo.em.def\
-	mars/grib.enfo.ep.def\
-	mars/grib.enfo.es.def\
-	mars/grib.enfo.fc.def\
-	mars/grib.enfo.fcmax.def\
-	mars/grib.enfo.fcmean.def\
-	mars/grib.enfo.fcmin.def\
-	mars/grib.enfo.fcstdev.def\
-	mars/grib.enfo.ff.def\
-	mars/grib.enfo.fp.def\
-	mars/grib.enfo.icp.def\
-	mars/grib.enfo.pb.def\
-	mars/grib.enfo.pd.def\
-	mars/grib.enfo.pf.def\
-	mars/grib.enfo.sot.def\
-	mars/grib.enfo.sv.def\
-	mars/grib.enfo.svar.def\
-	mars/grib.enfo.taem.def\
-	mars/grib.enfo.taes.def\
-	mars/grib.enfo.tu.def\
-	mars/grib.enwh.cf.def\
-	mars/grib.enwh.fcmax.def\
-	mars/grib.enwh.fcmean.def\
-	mars/grib.enwh.fcmin.def\
-	mars/grib.enwh.fcstdev.def\
-	mars/grib.enwh.pf.def\
-	mars/grib.esmm.em.def\
-	mars/grib.espd.an.def\
-	mars/grib.ewda.4v.def\
-	mars/grib.ewda.an.def\
-	mars/grib.ewda.def\
-	mars/grib.ewda.fc.def\
-	mars/grib.ewhc.cf.def\
-	mars/grib.ewhc.pf.def\
-	mars/grib.ewho.cf.def\
-	mars/grib.ewho.pf.def\
-	mars/grib.ewla.4v.def\
-	mars/grib.ewla.an.def\
-	mars/grib.ewla.fc.def\
-	mars/grib.ewmm.an.def\
-	mars/grib.ewmm.cl.def\
-	mars/grib.ewmm.fc.def\
-	mars/grib.ewmo.an.def\
-	mars/grib.ewmo.cl.def\
-	mars/grib.ewmo.def\
-	mars/grib.ewmo.fc.def\
-	mars/grib.gfas.ga.def\
-	mars/grib.gfas.gsd.def\
-	mars/grib.kwbc.pf.def\
-	mars/grib.lwda.4i.def\
-	mars/grib.lwda.4v.def\
-	mars/grib.lwda.an.def\
-	mars/grib.lwda.ea.def\
-	mars/grib.lwda.ef.def\
-	mars/grib.lwda.fc.def\
-	mars/grib.lwda.me.def\
-	mars/grib.lwda.ssd.def\
-	mars/grib.lwwv.4v.def\
-	mars/grib.lwwv.an.def\
-	mars/grib.lwwv.fc.def\
-	mars/grib.maed.an.def\
-	mars/grib.maed.fc.def\
-	mars/grib.mawv.fc.def\
-	mars/grib.mdfa.fc.def\
-	mars/grib.me.def\
-	mars/grib.mfam.em.def\
-	mars/grib.mfam.fcmean.def\
-	mars/grib.mfam.fp.def\
-	mars/grib.mfam.pb.def\
-	mars/grib.mfam.pd.def\
-	mars/grib.mfhm.em.def\
-	mars/grib.mfhm.es.def\
-	mars/grib.mfhm.fcmax.def\
-	mars/grib.mfhm.fcmean.def\
-	mars/grib.mfhm.fcmin.def\
-	mars/grib.mfhm.fcstdev.def\
-	mars/grib.mfhw.cf.def\
-	mars/grib.mfhw.fc.def\
-	mars/grib.mfwm.fcmax.def\
-	mars/grib.mfwm.fcmean.def\
-	mars/grib.mfwm.fcmin.def\
-	mars/grib.mfwm.fcstdev.def\
-	mars/grib.mhwm.fcmax.def\
-	mars/grib.mhwm.fcmean.def\
-	mars/grib.mhwm.fcmin.def\
-	mars/grib.mhwm.fcstdev.def\
-	mars/grib.mmaf.fc.def\
-	mars/grib.mmaf.fcmean.def\
-	mars/grib.mmam.fcmean.def\
-	mars/grib.mmsa.em.def\
-	mars/grib.mmsa.fcmean.def\
-	mars/grib.mmsf.fc.def\
-	mars/grib.mmsf.icp.def\
-	mars/grib.mnfc.cf.def\
-	mars/grib.mnfc.ed.def\
-	mars/grib.mnfc.em.def\
-	mars/grib.mnfc.es.def\
-	mars/grib.mnfc.fc.def\
-	mars/grib.mnfc.ff.def\
-	mars/grib.mnfc.icp.def\
-	mars/grib.mnfc.of.def\
-	mars/grib.mnfh.cf.def\
-	mars/grib.mnfh.ed.def\
-	mars/grib.mnfh.em.def\
-	mars/grib.mnfh.es.def\
-	mars/grib.mnfh.fc.def\
-	mars/grib.mnfh.icp.def\
-	mars/grib.mnfm.em.def\
-	mars/grib.mnfm.es.def\
-	mars/grib.mnfm.fcmax.def\
-	mars/grib.mnfm.fcmean.def\
-	mars/grib.mnfm.fcmin.def\
-	mars/grib.mnfm.fcstdev.def\
-	mars/grib.mnfw.cf.def\
-	mars/grib.mnfw.fc.def\
-	mars/grib.mnth.an.def\
-	mars/grib.mnth.cl.def\
-	mars/grib.mnth.fc.def\
-	mars/grib.mnth.fg.def\
-	mars/grib.mnth.ia.def\
-	mars/grib.mnth.ssd.def\
-	mars/grib.moda.an.def\
-	mars/grib.moda.cl.def\
-	mars/grib.moda.fc.def\
-	mars/grib.moda.ssd.def\
-	mars/grib.mofc.cf.def\
-	mars/grib.mofc.ed.def\
-	mars/grib.mofc.em.def\
-	mars/grib.mofc.es.def\
-	mars/grib.mofc.fc.def\
-	mars/grib.mofc.ff.def\
-	mars/grib.mofc.of.def\
-	mars/grib.mofm.fcmax.def\
-	mars/grib.mofm.fcmean.def\
-	mars/grib.mofm.fcmin.def\
-	mars/grib.mofm.fcstdev.def\
-	mars/grib.mpic.s3.def\
-	mars/grib.msda.an.def\
-	mars/grib.msdc.an.def\
-	mars/grib.msdc.fc.def\
-	mars/grib.msmm.em.def\
-	mars/grib.msmm.fcmax.def\
-	mars/grib.msmm.fcmean.def\
-	mars/grib.msmm.fcmin.def\
-	mars/grib.msmm.fcstdev.def\
-	mars/grib.msmm.hcmean.def\
-	mars/grib.ocea.an.def\
-	mars/grib.ocea.ff.def\
-	mars/grib.ocea.fx.def\
-	mars/grib.ocea.of.def\
-	mars/grib.ocea.or.def\
-	mars/grib.oper.3v.def\
-	mars/grib.oper.4i.def\
-	mars/grib.oper.4v.def\
-	mars/grib.oper.an.def\
-	mars/grib.oper.ea.def\
-	mars/grib.oper.ef.def\
-	mars/grib.oper.fa.def\
-	mars/grib.oper.fc.def\
-	mars/grib.oper.fg.def\
-	mars/grib.oper.go.def\
-	mars/grib.oper.ia.def\
-	mars/grib.oper.im.def\
-	mars/grib.oper.me.def\
-	mars/grib.oper.oi.def\
-	mars/grib.oper.si.def\
-	mars/grib.oper.sim.def\
-	mars/grib.oper.ssd.def\
-	mars/grib.scda.4i.def\
-	mars/grib.scda.me.def\
-	mars/grib.seap.an.def\
-	mars/grib.seap.ef.def\
-	mars/grib.seap.es.def\
-	mars/grib.seap.fc.def\
-	mars/grib.seap.sv.def\
-	mars/grib.seap.svar.def\
-	mars/grib.seas.an.def\
-	mars/grib.seas.fc.def\
-	mars/grib.seas.ff.def\
-	mars/grib.seas.fx.def\
-	mars/grib.seas.of.def\
-	mars/grib.seas.or.def\
-	mars/grib.sens.me.def\
-	mars/grib.sens.sf.def\
-	mars/grib.sens.sg.def\
-	mars/grib.sfmm.em.def\
-	mars/grib.sfmm.fcmax.def\
-	mars/grib.sfmm.fcmean.def\
-	mars/grib.sfmm.fcmin.def\
-	mars/grib.sfmm.fcstdev.def\
-	mars/grib.smma.em.def\
-	mars/grib.smma.fcmean.def\
-	mars/grib.supd.an.def\
-	mars/grib.swmm.fcmax.def\
-	mars/grib.swmm.fcmean.def\
-	mars/grib.swmm.fcmin.def\
-	mars/grib.swmm.fcstdev.def\
-	mars/grib.ukmo.s3.def\
-	mars/grib.waef.cv.def\
-	mars/grib.waef.efi.def\
-	mars/grib.waef.efic.def\
-	mars/grib.waef.ep.def\
-	mars/grib.waef.fcmax.def\
-	mars/grib.waef.fcmean.def\
-	mars/grib.waef.fcmin.def\
-	mars/grib.waef.fcstdev.def\
-	mars/grib.waef.fp.def\
-	mars/grib.waef.pf.def\
-	mars/grib.waef.sot.def\
-	mars/grib.wamd.an.def\
-	mars/grib.wamd.fc.def\
-	mars/grib.wamf.cf.def\
-	mars/grib.wamf.fc.def\
-	mars/grib.wamo.an.def\
-	mars/grib.wamo.cl.def\
-	mars/grib.wamo.fc.def\
-	mars/grib.wasf.fc.def\
-	mars/grib.wave.4v.def\
-	mars/grib.wave.an.def\
-	mars/grib.wave.def\
-	mars/grib.wave.fc.def\
-	mars/grib.wave.fg.def\
-	mars/grib.wehs.cd.def\
-	mars/grib.wehs.ed.def\
-	mars/grib.wehs.em.def\
-	mars/grib.wehs.es.def\
-	mars/grib.weov.pf.def\
-	mars/grib.wmfm.fcmax.def\
-	mars/grib.wmfm.fcmean.def\
-	mars/grib.wmfm.fcmin.def\
-	mars/grib.wmfm.fcstdev.def\
-	mars/make_type_switch_case.sh\
-	mars/marsTypeConcept.def\
-	mars/model.96.table\
-	mars/stream.table\
-	mars/type.table\
-	mars/wave_domain.def
-
-definitionsmars_eswidir = @ECCODES_DEFINITION_PATH@/mars/eswi
-dist_definitionsmars_eswi_DATA = \
-	mars/eswi/aerosolPackingConcept.def\
-	mars/eswi/class.table\
-	mars/eswi/grib.expr.3v.def\
-	mars/eswi/grib.expr.4v.def\
-	mars/eswi/grib.expr.an.def\
-	mars/eswi/grib.expr.fc.def\
-	mars/eswi/grib.expr.si.def\
-	mars/eswi/grib.mdfa.fc.def\
-	mars/eswi/grib.mnth.an.def\
-	mars/eswi/grib.mnth.fc.def\
-	mars/eswi/grib.moda.an.def\
-	mars/eswi/grib.moda.fc.def\
-	mars/eswi/grib.oper.3v.def\
-	mars/eswi/grib.oper.4v.def\
-	mars/eswi/grib.oper.an.def\
-	mars/eswi/grib.oper.fc.def\
-	mars/eswi/grib.oper.si.def\
-	mars/eswi/model.table\
-	mars/eswi/stream.table\
-	mars/eswi/type.table\
-	mars/eswi/wave_domain.def
-
-definitionsmetardir = @ECCODES_DEFINITION_PATH@/metar
-dist_definitionsmetar_DATA = \
-	metar/CCCC.txt\
-	metar/boot.def\
-	metar/boot.flexible.def\
-	metar/cccc.def\
-	metar/clouds.def\
-	metar/clouds.table\
-	metar/clouds_Trend1.def\
-	metar/clouds_Trend2.def\
-	metar/clouds_Trend3.def\
-	metar/clouds_Trend4.def\
-	metar/colour.def\
-	metar/direction.table\
-	metar/horizontalVisibility.def\
-	metar/horizontalVisibility_Trend1.def\
-	metar/horizontalVisibility_Trend2.def\
-	metar/horizontalVisibility_Trend3.def\
-	metar/horizontalVisibility_Trend4.def\
-	metar/missing_field.def\
-	metar/nsd_cccc.txt\
-	metar/present_weather.def\
-	metar/present_weather.list\
-	metar/present_weather_Trend1.def\
-	metar/present_weather_Trend2.def\
-	metar/present_weather_Trend3.def\
-	metar/present_weather_Trend4.def\
-	metar/qnh.def\
-	metar/recent_weather.def\
-	metar/remark.def\
-	metar/runwayDepthOfDeposit.table\
-	metar/runwayFrictionCoefficient.table\
-	metar/runwayState.def\
-	metar/runwayState1.def\
-	metar/runwayState2.def\
-	metar/runwayState3.def\
-	metar/runwayState4.def\
-	metar/runwayStateDeposit.table\
-	metar/runwayStateExtentOfContamination.table\
-	metar/rvr1.def\
-	metar/rvr2.def\
-	metar/rvr3.def\
-	metar/rvr4.def\
-	metar/seaState.table\
-	metar/sea_state.def\
-	metar/temperature.def\
-	metar/temperature.list\
-	metar/trend1.def\
-	metar/trend2.def\
-	metar/trend3.def\
-	metar/trend4.def\
-	metar/weatherCodes-forecasters.txt\
-	metar/weatherCodes-full.txt\
-	metar/weatherCodes-metar-template.txt\
-	metar/weatherCodes-trend-template.txt\
-	metar/wind.def\
-	metar/wind_Trend1.def\
-	metar/wind_Trend2.def\
-	metar/wind_Trend3.def\
-	metar/wind_Trend4.def\
-	metar/wind_shear.def\
-	metar/wrong_delayed.def
-
-definitionsmetar_stationsdir = @ECCODES_DEFINITION_PATH@/metar/stations
-dist_definitionsmetar_stations_DATA = \
-	metar/stations/nsd_cccc.txt
-
-definitionstafdir = @ECCODES_DEFINITION_PATH@/taf
-dist_definitionstaf_DATA = \
-	taf/CCCC.txt\
-	taf/boot.def\
-	taf/cccc.def\
-	taf/clouds.def\
-	taf/clouds.table\
-	taf/clouds_Trend1.def\
-	taf/clouds_Trend2.def\
-	taf/clouds_Trend3.def\
-	taf/clouds_Trend4.def\
-	taf/colour.def\
-	taf/direction.table\
-	taf/horizontalVisibility.def\
-	taf/horizontalVisibility_Trend1.def\
-	taf/horizontalVisibility_Trend2.def\
-	taf/horizontalVisibility_Trend3.def\
-	taf/horizontalVisibility_Trend4.def\
-	taf/missing_field.def\
-	taf/nsd_cccc.txt\
-	taf/present_weather.def\
-	taf/present_weather.list\
-	taf/present_weather_Trend1.def\
-	taf/present_weather_Trend2.def\
-	taf/present_weather_Trend3.def\
-	taf/present_weather_Trend4.def\
-	taf/qnh.def\
-	taf/recent_weather.def\
-	taf/remark.def\
-	taf/runwayDepthOfDeposit.table\
-	taf/runwayFrictionCoefficient.table\
-	taf/runwayState.def\
-	taf/runwayState1.def\
-	taf/runwayState2.def\
-	taf/runwayState3.def\
-	taf/runwayState4.def\
-	taf/runwayStateDeposit.table\
-	taf/runwayStateExtentOfContamination.table\
-	taf/rvr1.def\
-	taf/rvr2.def\
-	taf/rvr3.def\
-	taf/rvr4.def\
-	taf/seaState.table\
-	taf/sea_state.def\
-	taf/temperature.def\
-	taf/temperature.list\
-	taf/trend1.def\
-	taf/trend2.def\
-	taf/trend3.def\
-	taf/trend4.def\
-	taf/weatherCodes-forecasters.txt\
-	taf/weatherCodes-full.txt\
-	taf/weatherCodes-metar-template.txt\
-	taf/weatherCodes-trend-template.txt\
-	taf/wind.def\
-	taf/wind_Trend1.def\
-	taf/wind_Trend2.def\
-	taf/wind_Trend3.def\
-	taf/wind_Trend4.def\
-	taf/wind_shear.def\
-	taf/wrong_delayed.def
-
-definitionstaf_stationsdir = @ECCODES_DEFINITION_PATH@/taf/stations
-dist_definitionstaf_stations_DATA = \
-	taf/stations/nsd_cccc.txt
-
-definitionstidedir = @ECCODES_DEFINITION_PATH@/tide
-dist_definitionstide_DATA = \
-	tide/boot.def\
-	tide/mars_labeling.def\
-	tide/section.1.def\
-	tide/section.4.def
-
-definitionswrapdir = @ECCODES_DEFINITION_PATH@/wrap
-dist_definitionswrap_DATA = \
-	wrap/boot.def\
-	wrap/metadata.0.def
-
-EXTRA_DIST = CMakeLists.txt
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu definitions/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu definitions/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-dist_definitionsDATA: $(dist_definitions_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitions_DATA)'; test -n "$(definitionsdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitions_DATA)'; test -n "$(definitionsdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbudgDATA: $(dist_definitionsbudg_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbudg_DATA)'; test -n "$(definitionsbudgdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbudgdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbudgdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbudgdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbudgdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbudgDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbudg_DATA)'; test -n "$(definitionsbudgdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbudgdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufrDATA: $(dist_definitionsbufr_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_DATA)'; test -n "$(definitionsbufrdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufrdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufrdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufrdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufrdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufrDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_DATA)'; test -n "$(definitionsbufrdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufrdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tablesDATA: $(dist_definitionsbufr_tables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_DATA)'; test -n "$(definitionsbufr_tablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_DATA)'; test -n "$(definitionsbufr_tablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_local_101_98_0DATA: $(dist_definitionsbufr_tables_0_local_101_98_0_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_101_98_0_DATA)'; test -n "$(definitionsbufr_tables_0_local_101_98_0dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_local_101_98_0DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_101_98_0_DATA)'; test -n "$(definitionsbufr_tables_0_local_101_98_0dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_local_101_98_0_codetablesDATA: $(dist_definitionsbufr_tables_0_local_101_98_0_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_101_98_0_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_local_101_98_0_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_101_98_0_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_local_1_98_0DATA: $(dist_definitionsbufr_tables_0_local_1_98_0_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_1_98_0_DATA)'; test -n "$(definitionsbufr_tables_0_local_1_98_0dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_local_1_98_0DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_1_98_0_DATA)'; test -n "$(definitionsbufr_tables_0_local_1_98_0dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_local_1_98_0_6DATA: $(dist_definitionsbufr_tables_0_local_1_98_0_6_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_1_98_0_6_DATA)'; test -n "$(definitionsbufr_tables_0_local_1_98_0_6dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_6dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_6dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_6dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_6dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_local_1_98_0_6DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_1_98_0_6_DATA)'; test -n "$(definitionsbufr_tables_0_local_1_98_0_6dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_6dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_local_1_98_0_codetablesDATA: $(dist_definitionsbufr_tables_0_local_1_98_0_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_1_98_0_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_local_1_98_0_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_1_98_0_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_local_2_98_0DATA: $(dist_definitionsbufr_tables_0_local_2_98_0_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_2_98_0_DATA)'; test -n "$(definitionsbufr_tables_0_local_2_98_0dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_local_2_98_0DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_2_98_0_DATA)'; test -n "$(definitionsbufr_tables_0_local_2_98_0dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_local_2_98_0_codetablesDATA: $(dist_definitionsbufr_tables_0_local_2_98_0_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_2_98_0_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_local_2_98_0_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_local_2_98_0_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_2_98_0_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_local_2_98_0_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_2_98_0_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_local_3_98_0DATA: $(dist_definitionsbufr_tables_0_local_3_98_0_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_3_98_0_DATA)'; test -n "$(definitionsbufr_tables_0_local_3_98_0dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_local_3_98_0DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_3_98_0_DATA)'; test -n "$(definitionsbufr_tables_0_local_3_98_0dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_local_3_98_0_codetablesDATA: $(dist_definitionsbufr_tables_0_local_3_98_0_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_3_98_0_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_local_3_98_0_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_local_3_98_0_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_local_3_98_0_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_local_3_98_0_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_local_3_98_0_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_10DATA: $(dist_definitionsbufr_tables_0_wmo_10_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_10_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_10dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_10dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_10dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_10dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_10dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_10DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_10_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_10dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_10dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_10_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_10_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_10_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_10_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_10_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_10_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_10_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_10_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_10_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_10_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_10_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_10_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_11DATA: $(dist_definitionsbufr_tables_0_wmo_11_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_11_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_11dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_11dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_11dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_11dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_11dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_11DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_11_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_11dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_11dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_11_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_11_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_11_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_11_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_11_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_11_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_11_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_11_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_11_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_11_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_11_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_11_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_12DATA: $(dist_definitionsbufr_tables_0_wmo_12_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_12_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_12dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_12dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_12dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_12dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_12dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_12DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_12_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_12dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_12dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_12_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_12_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_12_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_12_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_12_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_12_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_12_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_12_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_12_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_12_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_12_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_12_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_13DATA: $(dist_definitionsbufr_tables_0_wmo_13_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_13_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_13dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_13dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_13dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_13dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_13dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_13DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_13_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_13dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_13dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_13_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_13_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_13_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_13_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_13_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_13_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_13_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_13_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_13_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_13_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_13_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_13_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_14DATA: $(dist_definitionsbufr_tables_0_wmo_14_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_14_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_14dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_14dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_14dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_14dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_14dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_14DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_14_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_14dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_14dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_14_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_14_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_14_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_14_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_14_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_14_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_14_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_14_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_14_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_14_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_14_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_14_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_15DATA: $(dist_definitionsbufr_tables_0_wmo_15_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_15_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_15dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_15dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_15dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_15dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_15dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_15DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_15_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_15dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_15dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_15_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_15_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_15_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_15_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_15_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_15_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_15_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_15_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_15_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_15_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_15_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_15_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_16DATA: $(dist_definitionsbufr_tables_0_wmo_16_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_16_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_16dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_16dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_16dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_16dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_16dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_16DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_16_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_16dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_16dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_16_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_16_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_16_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_16_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_16_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_16_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_16_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_16_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_16_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_16_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_16_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_16_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_17DATA: $(dist_definitionsbufr_tables_0_wmo_17_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_17_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_17dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_17dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_17dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_17dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_17dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_17DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_17_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_17dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_17dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_17_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_17_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_17_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_17_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_17_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_17_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_17_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_17_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_17_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_17_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_17_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_17_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_18DATA: $(dist_definitionsbufr_tables_0_wmo_18_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_18_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_18dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_18dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_18dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_18dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_18dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_18DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_18_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_18dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_18dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_18_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_18_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_18_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_18_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_18_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_18_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_18_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_18_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_18_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_18_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_18_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_18_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_19DATA: $(dist_definitionsbufr_tables_0_wmo_19_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_19_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_19dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_19dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_19dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_19dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_19dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_19DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_19_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_19dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_19dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_19_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_19_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_19_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_19_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_19_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_19_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_19_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_19_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_19_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_19_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_19_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_19_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_20DATA: $(dist_definitionsbufr_tables_0_wmo_20_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_20_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_20dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_20dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_20dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_20dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_20dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_20DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_20_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_20dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_20dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_20_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_20_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_20_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_20_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_20_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_20_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_20_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_20_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_20_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_20_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_20_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_20_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_21DATA: $(dist_definitionsbufr_tables_0_wmo_21_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_21_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_21dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_21dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_21dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_21dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_21dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_21DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_21_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_21dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_21dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_21_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_21_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_21_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_21_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_21_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_21_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_21_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_21_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_21_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_21_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_21_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_21_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_22DATA: $(dist_definitionsbufr_tables_0_wmo_22_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_22_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_22dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_22dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_22dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_22dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_22dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_22DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_22_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_22dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_22dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_22_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_22_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_22_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_22_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_22_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_22_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_22_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_22_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_22_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_22_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_22_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_22_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_23DATA: $(dist_definitionsbufr_tables_0_wmo_23_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_23_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_23dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_23dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_23dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_23dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_23dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_23DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_23_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_23dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_23dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_23_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_23_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_23_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_23_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_23_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_23_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_23_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_23_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_23_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_23_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_23_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_23_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_24DATA: $(dist_definitionsbufr_tables_0_wmo_24_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_24_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_24dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_24dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_24dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_24dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_24dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_24DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_24_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_24dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_24dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_24_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_24_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_24_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_24_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_24_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_24_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_24_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_24_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_24_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_24_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_24_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_24_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_25DATA: $(dist_definitionsbufr_tables_0_wmo_25_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_25_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_25dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_25dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_25dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_25dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_25dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_25DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_25_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_25dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_25dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_25_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_25_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_25_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_25_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_25_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_25_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_25_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_25_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_25_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_25_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_25_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_25_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_26DATA: $(dist_definitionsbufr_tables_0_wmo_26_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_26_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_26dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_26dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_26dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_26dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_26dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_26DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_26_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_26dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_26dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_26_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_26_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_26_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_26_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_26_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_26_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_26_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_26_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_26_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_26_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_26_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_26_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_6DATA: $(dist_definitionsbufr_tables_0_wmo_6_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_6_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_6dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_6dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_6dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_6dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_6dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_6DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_6_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_6dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_6dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_6_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_6_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_6_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_6_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_6_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_6_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_6_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_6_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_6_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_6_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_6_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_6_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_7DATA: $(dist_definitionsbufr_tables_0_wmo_7_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_7_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_7dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_7dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_7dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_7dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_7dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_7DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_7_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_7dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_7dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_7_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_7_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_7_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_7_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_7_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_7_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_7_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_7_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_7_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_7_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_7_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_7_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_8DATA: $(dist_definitionsbufr_tables_0_wmo_8_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_8_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_8dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_8dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_8dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_8dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_8dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_8DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_8_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_8dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_8dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_8_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_8_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_8_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_8_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_8_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_8_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_8_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_8_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_8_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_8_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_8_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_8_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_9DATA: $(dist_definitionsbufr_tables_0_wmo_9_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_9_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_9dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_9dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_9dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_9dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_9dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_9DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_9_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_9dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_9dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_0_wmo_9_codetablesDATA: $(dist_definitionsbufr_tables_0_wmo_9_codetables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_9_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_9_codetablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_0_wmo_9_codetablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_0_wmo_9_codetablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_0_wmo_9_codetablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_0_wmo_9_codetablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_0_wmo_9_codetablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_0_wmo_9_codetables_DATA)'; test -n "$(definitionsbufr_tables_0_wmo_9_codetablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_0_wmo_9_codetablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_3_local_1_98_0DATA: $(dist_definitionsbufr_tables_3_local_1_98_0_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_3_local_1_98_0_DATA)'; test -n "$(definitionsbufr_tables_3_local_1_98_0dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_3_local_1_98_0dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_3_local_1_98_0dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_3_local_1_98_0dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_3_local_1_98_0dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_3_local_1_98_0DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_3_local_1_98_0_DATA)'; test -n "$(definitionsbufr_tables_3_local_1_98_0dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_3_local_1_98_0dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_3_wmo_11DATA: $(dist_definitionsbufr_tables_3_wmo_11_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_3_wmo_11_DATA)'; test -n "$(definitionsbufr_tables_3_wmo_11dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_3_wmo_11dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_3_wmo_11dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_3_wmo_11dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_3_wmo_11dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_3_wmo_11DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_3_wmo_11_DATA)'; test -n "$(definitionsbufr_tables_3_wmo_11dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_3_wmo_11dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_tables_3_wmo_6DATA: $(dist_definitionsbufr_tables_3_wmo_6_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_tables_3_wmo_6_DATA)'; test -n "$(definitionsbufr_tables_3_wmo_6dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_tables_3_wmo_6dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_tables_3_wmo_6dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_tables_3_wmo_6dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_tables_3_wmo_6dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_tables_3_wmo_6DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_tables_3_wmo_6_DATA)'; test -n "$(definitionsbufr_tables_3_wmo_6dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_tables_3_wmo_6dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_templatesDATA: $(dist_definitionsbufr_templates_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_templates_DATA)'; test -n "$(definitionsbufr_templatesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_templatesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_templatesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_templatesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_templatesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_templatesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_templates_DATA)'; test -n "$(definitionsbufr_templatesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_templatesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsbufr_templates_localDATA: $(dist_definitionsbufr_templates_local_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsbufr_templates_local_DATA)'; test -n "$(definitionsbufr_templates_localdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsbufr_templates_localdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsbufr_templates_localdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsbufr_templates_localdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsbufr_templates_localdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsbufr_templates_localDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsbufr_templates_local_DATA)'; test -n "$(definitionsbufr_templates_localdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsbufr_templates_localdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionscdfDATA: $(dist_definitionscdf_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionscdf_DATA)'; test -n "$(definitionscdfdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionscdfdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionscdfdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionscdfdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionscdfdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionscdfDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionscdf_DATA)'; test -n "$(definitionscdfdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionscdfdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionscommonDATA: $(dist_definitionscommon_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionscommon_DATA)'; test -n "$(definitionscommondir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionscommondir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionscommondir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionscommondir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionscommondir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionscommonDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionscommon_DATA)'; test -n "$(definitionscommondir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionscommondir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1DATA: $(dist_definitionsgrib1_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_DATA)'; test -n "$(definitionsgrib1dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_DATA)'; test -n "$(definitionsgrib1dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_ammcDATA: $(dist_definitionsgrib1_localConcepts_ammc_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_ammc_DATA)'; test -n "$(definitionsgrib1_localConcepts_ammcdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_ammcdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_ammcdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_ammcdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_ammcdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_ammcDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_ammc_DATA)'; test -n "$(definitionsgrib1_localConcepts_ammcdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_ammcdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_cnmcDATA: $(dist_definitionsgrib1_localConcepts_cnmc_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_cnmc_DATA)'; test -n "$(definitionsgrib1_localConcepts_cnmcdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_cnmcdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_cnmcdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_cnmcdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_cnmcdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_cnmcDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_cnmc_DATA)'; test -n "$(definitionsgrib1_localConcepts_cnmcdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_cnmcdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_ecmfDATA: $(dist_definitionsgrib1_localConcepts_ecmf_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_ecmf_DATA)'; test -n "$(definitionsgrib1_localConcepts_ecmfdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_ecmfdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_ecmfdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_ecmfdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_ecmfdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_ecmfDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_ecmf_DATA)'; test -n "$(definitionsgrib1_localConcepts_ecmfdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_ecmfdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_edzwDATA: $(dist_definitionsgrib1_localConcepts_edzw_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_edzw_DATA)'; test -n "$(definitionsgrib1_localConcepts_edzwdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_edzwdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_edzwdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_edzwdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_edzwdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_edzwDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_edzw_DATA)'; test -n "$(definitionsgrib1_localConcepts_edzwdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_edzwdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_efklDATA: $(dist_definitionsgrib1_localConcepts_efkl_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_efkl_DATA)'; test -n "$(definitionsgrib1_localConcepts_efkldir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_efkldir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_efkldir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_efkldir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_efkldir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_efklDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_efkl_DATA)'; test -n "$(definitionsgrib1_localConcepts_efkldir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_efkldir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_eidbDATA: $(dist_definitionsgrib1_localConcepts_eidb_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_eidb_DATA)'; test -n "$(definitionsgrib1_localConcepts_eidbdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_eidbdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_eidbdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_eidbdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_eidbdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_eidbDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_eidb_DATA)'; test -n "$(definitionsgrib1_localConcepts_eidbdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_eidbdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_ekmiDATA: $(dist_definitionsgrib1_localConcepts_ekmi_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_ekmi_DATA)'; test -n "$(definitionsgrib1_localConcepts_ekmidir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_ekmidir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_ekmidir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_ekmidir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_ekmidir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_ekmiDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_ekmi_DATA)'; test -n "$(definitionsgrib1_localConcepts_ekmidir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_ekmidir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_enmiDATA: $(dist_definitionsgrib1_localConcepts_enmi_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_enmi_DATA)'; test -n "$(definitionsgrib1_localConcepts_enmidir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_enmidir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_enmidir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_enmidir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_enmidir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_enmiDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_enmi_DATA)'; test -n "$(definitionsgrib1_localConcepts_enmidir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_enmidir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_eswiDATA: $(dist_definitionsgrib1_localConcepts_eswi_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_eswi_DATA)'; test -n "$(definitionsgrib1_localConcepts_eswidir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_eswidir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_eswidir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_eswidir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_eswidir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_eswiDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_eswi_DATA)'; test -n "$(definitionsgrib1_localConcepts_eswidir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_eswidir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_kwbcDATA: $(dist_definitionsgrib1_localConcepts_kwbc_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_kwbc_DATA)'; test -n "$(definitionsgrib1_localConcepts_kwbcdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_kwbcdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_kwbcdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_kwbcdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_kwbcdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_kwbcDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_kwbc_DATA)'; test -n "$(definitionsgrib1_localConcepts_kwbcdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_kwbcdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_lfpwDATA: $(dist_definitionsgrib1_localConcepts_lfpw_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_lfpw_DATA)'; test -n "$(definitionsgrib1_localConcepts_lfpwdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_lfpwdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_lfpwdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_lfpwdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_lfpwdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_lfpwDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_lfpw_DATA)'; test -n "$(definitionsgrib1_localConcepts_lfpwdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_lfpwdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_lowmDATA: $(dist_definitionsgrib1_localConcepts_lowm_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_lowm_DATA)'; test -n "$(definitionsgrib1_localConcepts_lowmdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_lowmdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_lowmdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_lowmdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_lowmdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_lowmDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_lowm_DATA)'; test -n "$(definitionsgrib1_localConcepts_lowmdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_lowmdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_rjtdDATA: $(dist_definitionsgrib1_localConcepts_rjtd_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_rjtd_DATA)'; test -n "$(definitionsgrib1_localConcepts_rjtddir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_rjtddir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_rjtddir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_rjtddir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_rjtddir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_rjtdDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_rjtd_DATA)'; test -n "$(definitionsgrib1_localConcepts_rjtddir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_rjtddir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_localConcepts_sbsjDATA: $(dist_definitionsgrib1_localConcepts_sbsj_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_sbsj_DATA)'; test -n "$(definitionsgrib1_localConcepts_sbsjdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_localConcepts_sbsjdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_localConcepts_sbsjdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_localConcepts_sbsjdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_localConcepts_sbsjdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_localConcepts_sbsjDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_localConcepts_sbsj_DATA)'; test -n "$(definitionsgrib1_localConcepts_sbsjdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_localConcepts_sbsjdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_local_ecmfDATA: $(dist_definitionsgrib1_local_ecmf_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_local_ecmf_DATA)'; test -n "$(definitionsgrib1_local_ecmfdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_local_ecmfdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_local_ecmfdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_local_ecmfdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_local_ecmfdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_local_ecmfDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_local_ecmf_DATA)'; test -n "$(definitionsgrib1_local_ecmfdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_local_ecmfdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_local_edzwDATA: $(dist_definitionsgrib1_local_edzw_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_local_edzw_DATA)'; test -n "$(definitionsgrib1_local_edzwdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_local_edzwdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_local_edzwdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_local_edzwdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_local_edzwdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_local_edzwDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_local_edzw_DATA)'; test -n "$(definitionsgrib1_local_edzwdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_local_edzwdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib1_local_rjtdDATA: $(dist_definitionsgrib1_local_rjtd_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib1_local_rjtd_DATA)'; test -n "$(definitionsgrib1_local_rjtddir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib1_local_rjtddir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib1_local_rjtddir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib1_local_rjtddir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib1_local_rjtddir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib1_local_rjtdDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib1_local_rjtd_DATA)'; test -n "$(definitionsgrib1_local_rjtddir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib1_local_rjtddir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2DATA: $(dist_definitionsgrib2_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_DATA)'; test -n "$(definitionsgrib2dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_DATA)'; test -n "$(definitionsgrib2dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localDATA: $(dist_definitionsgrib2_local_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_local_DATA)'; test -n "$(definitionsgrib2_localdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_local_DATA)'; test -n "$(definitionsgrib2_localdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_cnmcDATA: $(dist_definitionsgrib2_localConcepts_cnmc_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_cnmc_DATA)'; test -n "$(definitionsgrib2_localConcepts_cnmcdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_cnmcdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_cnmcdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_cnmcdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_cnmcdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_cnmcDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_cnmc_DATA)'; test -n "$(definitionsgrib2_localConcepts_cnmcdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_cnmcdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_ecmfDATA: $(dist_definitionsgrib2_localConcepts_ecmf_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_ecmf_DATA)'; test -n "$(definitionsgrib2_localConcepts_ecmfdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_ecmfdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_ecmfdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_ecmfdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_ecmfdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_ecmfDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_ecmf_DATA)'; test -n "$(definitionsgrib2_localConcepts_ecmfdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_ecmfdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_edzwDATA: $(dist_definitionsgrib2_localConcepts_edzw_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_edzw_DATA)'; test -n "$(definitionsgrib2_localConcepts_edzwdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_edzwdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_edzwdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_edzwdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_edzwdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_edzwDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_edzw_DATA)'; test -n "$(definitionsgrib2_localConcepts_edzwdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_edzwdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_efklDATA: $(dist_definitionsgrib2_localConcepts_efkl_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_efkl_DATA)'; test -n "$(definitionsgrib2_localConcepts_efkldir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_efkldir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_efkldir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_efkldir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_efkldir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_efklDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_efkl_DATA)'; test -n "$(definitionsgrib2_localConcepts_efkldir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_efkldir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_egrrDATA: $(dist_definitionsgrib2_localConcepts_egrr_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_egrr_DATA)'; test -n "$(definitionsgrib2_localConcepts_egrrdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_egrrdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_egrrdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_egrrdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_egrrdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_egrrDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_egrr_DATA)'; test -n "$(definitionsgrib2_localConcepts_egrrdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_egrrdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_ekmiDATA: $(dist_definitionsgrib2_localConcepts_ekmi_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_ekmi_DATA)'; test -n "$(definitionsgrib2_localConcepts_ekmidir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_ekmidir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_ekmidir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_ekmidir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_ekmidir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_ekmiDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_ekmi_DATA)'; test -n "$(definitionsgrib2_localConcepts_ekmidir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_ekmidir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_eswiDATA: $(dist_definitionsgrib2_localConcepts_eswi_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_eswi_DATA)'; test -n "$(definitionsgrib2_localConcepts_eswidir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_eswidir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_eswidir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_eswidir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_eswidir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_eswiDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_eswi_DATA)'; test -n "$(definitionsgrib2_localConcepts_eswidir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_eswidir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_kwbcDATA: $(dist_definitionsgrib2_localConcepts_kwbc_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_kwbc_DATA)'; test -n "$(definitionsgrib2_localConcepts_kwbcdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_kwbcdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_kwbcdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_kwbcdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_kwbcdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_kwbcDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_kwbc_DATA)'; test -n "$(definitionsgrib2_localConcepts_kwbcdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_kwbcdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_lfpwDATA: $(dist_definitionsgrib2_localConcepts_lfpw_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_lfpw_DATA)'; test -n "$(definitionsgrib2_localConcepts_lfpwdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_lfpwdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_lfpwdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_lfpwdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_lfpwdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_lfpwDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_lfpw_DATA)'; test -n "$(definitionsgrib2_localConcepts_lfpwdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_lfpwdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_lfpw1DATA: $(dist_definitionsgrib2_localConcepts_lfpw1_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_lfpw1_DATA)'; test -n "$(definitionsgrib2_localConcepts_lfpw1dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_lfpw1dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_lfpw1dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_lfpw1dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_lfpw1dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_lfpw1DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_lfpw1_DATA)'; test -n "$(definitionsgrib2_localConcepts_lfpw1dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_lfpw1dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_localConcepts_lsswDATA: $(dist_definitionsgrib2_localConcepts_lssw_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_lssw_DATA)'; test -n "$(definitionsgrib2_localConcepts_lsswdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_localConcepts_lsswdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_localConcepts_lsswdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_localConcepts_lsswdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_localConcepts_lsswdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_localConcepts_lsswDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_localConcepts_lssw_DATA)'; test -n "$(definitionsgrib2_localConcepts_lsswdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_localConcepts_lsswdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_local_1098DATA: $(dist_definitionsgrib2_local_1098_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_local_1098_DATA)'; test -n "$(definitionsgrib2_local_1098dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_local_1098dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_local_1098dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_local_1098dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_local_1098dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_local_1098DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_local_1098_DATA)'; test -n "$(definitionsgrib2_local_1098dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_local_1098dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_local_edzwDATA: $(dist_definitionsgrib2_local_edzw_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_local_edzw_DATA)'; test -n "$(definitionsgrib2_local_edzwdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_local_edzwdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_local_edzwdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_local_edzwdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_local_edzwdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_local_edzwDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_local_edzw_DATA)'; test -n "$(definitionsgrib2_local_edzwdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_local_edzwdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tablesDATA: $(dist_definitionsgrib2_tables_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_DATA)'; test -n "$(definitionsgrib2_tablesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tablesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tablesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tablesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tablesdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tablesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_DATA)'; test -n "$(definitionsgrib2_tablesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tablesdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_0DATA: $(dist_definitionsgrib2_tables_0_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_0_DATA)'; test -n "$(definitionsgrib2_tables_0dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_0dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_0dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_0dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_0dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_0DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_0_DATA)'; test -n "$(definitionsgrib2_tables_0dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_0dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_1DATA: $(dist_definitionsgrib2_tables_1_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_1_DATA)'; test -n "$(definitionsgrib2_tables_1dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_1dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_1dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_1dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_1dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_1DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_1_DATA)'; test -n "$(definitionsgrib2_tables_1dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_1dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_10DATA: $(dist_definitionsgrib2_tables_10_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_10_DATA)'; test -n "$(definitionsgrib2_tables_10dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_10dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_10dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_10dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_10dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_10DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_10_DATA)'; test -n "$(definitionsgrib2_tables_10dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_10dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_11DATA: $(dist_definitionsgrib2_tables_11_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_11_DATA)'; test -n "$(definitionsgrib2_tables_11dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_11dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_11dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_11dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_11dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_11DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_11_DATA)'; test -n "$(definitionsgrib2_tables_11dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_11dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_12DATA: $(dist_definitionsgrib2_tables_12_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_12_DATA)'; test -n "$(definitionsgrib2_tables_12dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_12dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_12dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_12dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_12dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_12DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_12_DATA)'; test -n "$(definitionsgrib2_tables_12dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_12dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_13DATA: $(dist_definitionsgrib2_tables_13_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_13_DATA)'; test -n "$(definitionsgrib2_tables_13dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_13dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_13dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_13dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_13dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_13DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_13_DATA)'; test -n "$(definitionsgrib2_tables_13dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_13dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_14DATA: $(dist_definitionsgrib2_tables_14_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_14_DATA)'; test -n "$(definitionsgrib2_tables_14dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_14dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_14dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_14dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_14dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_14DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_14_DATA)'; test -n "$(definitionsgrib2_tables_14dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_14dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_15DATA: $(dist_definitionsgrib2_tables_15_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_15_DATA)'; test -n "$(definitionsgrib2_tables_15dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_15dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_15dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_15dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_15dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_15DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_15_DATA)'; test -n "$(definitionsgrib2_tables_15dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_15dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_16DATA: $(dist_definitionsgrib2_tables_16_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_16_DATA)'; test -n "$(definitionsgrib2_tables_16dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_16dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_16dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_16dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_16dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_16DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_16_DATA)'; test -n "$(definitionsgrib2_tables_16dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_16dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_17DATA: $(dist_definitionsgrib2_tables_17_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_17_DATA)'; test -n "$(definitionsgrib2_tables_17dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_17dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_17dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_17dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_17dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_17DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_17_DATA)'; test -n "$(definitionsgrib2_tables_17dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_17dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_2DATA: $(dist_definitionsgrib2_tables_2_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_2_DATA)'; test -n "$(definitionsgrib2_tables_2dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_2dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_2dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_2dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_2dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_2DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_2_DATA)'; test -n "$(definitionsgrib2_tables_2dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_2dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_3DATA: $(dist_definitionsgrib2_tables_3_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_3_DATA)'; test -n "$(definitionsgrib2_tables_3dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_3dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_3dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_3dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_3dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_3DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_3_DATA)'; test -n "$(definitionsgrib2_tables_3dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_3dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_4DATA: $(dist_definitionsgrib2_tables_4_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_4_DATA)'; test -n "$(definitionsgrib2_tables_4dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_4dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_4dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_4dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_4dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_4DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_4_DATA)'; test -n "$(definitionsgrib2_tables_4dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_4dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_5DATA: $(dist_definitionsgrib2_tables_5_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_5_DATA)'; test -n "$(definitionsgrib2_tables_5dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_5dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_5dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_5dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_5dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_5DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_5_DATA)'; test -n "$(definitionsgrib2_tables_5dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_5dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_6DATA: $(dist_definitionsgrib2_tables_6_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_6_DATA)'; test -n "$(definitionsgrib2_tables_6dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_6dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_6dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_6dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_6dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_6DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_6_DATA)'; test -n "$(definitionsgrib2_tables_6dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_6dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_7DATA: $(dist_definitionsgrib2_tables_7_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_7_DATA)'; test -n "$(definitionsgrib2_tables_7dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_7dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_7dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_7dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_7dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_7DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_7_DATA)'; test -n "$(definitionsgrib2_tables_7dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_7dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_8DATA: $(dist_definitionsgrib2_tables_8_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_8_DATA)'; test -n "$(definitionsgrib2_tables_8dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_8dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_8dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_8dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_8dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_8DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_8_DATA)'; test -n "$(definitionsgrib2_tables_8dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_8dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_9DATA: $(dist_definitionsgrib2_tables_9_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_9_DATA)'; test -n "$(definitionsgrib2_tables_9dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_9dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_9dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_9dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_9dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_9DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_9_DATA)'; test -n "$(definitionsgrib2_tables_9dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_9dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_local_ecmfDATA: $(dist_definitionsgrib2_tables_local_ecmf_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_local_ecmf_DATA)'; test -n "$(definitionsgrib2_tables_local_ecmfdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_local_ecmfdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_local_ecmfdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_local_ecmfdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_local_ecmfdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_local_ecmfDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_local_ecmf_DATA)'; test -n "$(definitionsgrib2_tables_local_ecmfdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_local_ecmfdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgrib2_tables_local_ecmf_4DATA: $(dist_definitionsgrib2_tables_local_ecmf_4_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgrib2_tables_local_ecmf_4_DATA)'; test -n "$(definitionsgrib2_tables_local_ecmf_4dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgrib2_tables_local_ecmf_4dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgrib2_tables_local_ecmf_4dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgrib2_tables_local_ecmf_4dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgrib2_tables_local_ecmf_4dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgrib2_tables_local_ecmf_4DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgrib2_tables_local_ecmf_4_DATA)'; test -n "$(definitionsgrib2_tables_local_ecmf_4dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgrib2_tables_local_ecmf_4dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsgtsDATA: $(dist_definitionsgts_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsgts_DATA)'; test -n "$(definitionsgtsdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsgtsdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsgtsdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsgtsdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsgtsdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsgtsDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsgts_DATA)'; test -n "$(definitionsgtsdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsgtsdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionshdf5DATA: $(dist_definitionshdf5_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionshdf5_DATA)'; test -n "$(definitionshdf5dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionshdf5dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionshdf5dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionshdf5dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionshdf5dir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionshdf5DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionshdf5_DATA)'; test -n "$(definitionshdf5dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionshdf5dir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsmarsDATA: $(dist_definitionsmars_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsmars_DATA)'; test -n "$(definitionsmarsdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsmarsdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsmarsdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsmarsdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsmarsdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsmarsDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsmars_DATA)'; test -n "$(definitionsmarsdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsmarsdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsmars_eswiDATA: $(dist_definitionsmars_eswi_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsmars_eswi_DATA)'; test -n "$(definitionsmars_eswidir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsmars_eswidir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsmars_eswidir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsmars_eswidir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsmars_eswidir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsmars_eswiDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsmars_eswi_DATA)'; test -n "$(definitionsmars_eswidir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsmars_eswidir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsmetarDATA: $(dist_definitionsmetar_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsmetar_DATA)'; test -n "$(definitionsmetardir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsmetardir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsmetardir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsmetardir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsmetardir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsmetarDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsmetar_DATA)'; test -n "$(definitionsmetardir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsmetardir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionsmetar_stationsDATA: $(dist_definitionsmetar_stations_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionsmetar_stations_DATA)'; test -n "$(definitionsmetar_stationsdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionsmetar_stationsdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionsmetar_stationsdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionsmetar_stationsdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionsmetar_stationsdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionsmetar_stationsDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionsmetar_stations_DATA)'; test -n "$(definitionsmetar_stationsdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionsmetar_stationsdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionstafDATA: $(dist_definitionstaf_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionstaf_DATA)'; test -n "$(definitionstafdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionstafdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionstafdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionstafdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionstafdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionstafDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionstaf_DATA)'; test -n "$(definitionstafdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionstafdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionstaf_stationsDATA: $(dist_definitionstaf_stations_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionstaf_stations_DATA)'; test -n "$(definitionstaf_stationsdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionstaf_stationsdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionstaf_stationsdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionstaf_stationsdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionstaf_stationsdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionstaf_stationsDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionstaf_stations_DATA)'; test -n "$(definitionstaf_stationsdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionstaf_stationsdir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionstideDATA: $(dist_definitionstide_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionstide_DATA)'; test -n "$(definitionstidedir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionstidedir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionstidedir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionstidedir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionstidedir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionstideDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionstide_DATA)'; test -n "$(definitionstidedir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionstidedir)'; $(am__uninstall_files_from_dir)
-install-dist_definitionswrapDATA: $(dist_definitionswrap_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_definitionswrap_DATA)'; test -n "$(definitionswrapdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(definitionswrapdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(definitionswrapdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(definitionswrapdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(definitionswrapdir)" || exit $$?; \
-	done
-
-uninstall-dist_definitionswrapDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_definitionswrap_DATA)'; test -n "$(definitionswrapdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(definitionswrapdir)'; $(am__uninstall_files_from_dir)
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(definitionsdir)" "$(DESTDIR)$(definitionsbudgdir)" "$(DESTDIR)$(definitionsbufrdir)" "$(DESTDIR)$(definitionsbufr_tablesdir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0dir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_101_98_0_codetablesdir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0dir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_6dir)" "$(DESTDIR)$(definitionsbufr_tables_0_local_1_98_0_codetablesdir)" "$(DESTDIR)$(definitionsbufr_tabl [...]
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-dist_definitionsDATA \
-	install-dist_definitionsbudgDATA \
-	install-dist_definitionsbufrDATA \
-	install-dist_definitionsbufr_tablesDATA \
-	install-dist_definitionsbufr_tables_0_local_101_98_0DATA \
-	install-dist_definitionsbufr_tables_0_local_101_98_0_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_local_1_98_0DATA \
-	install-dist_definitionsbufr_tables_0_local_1_98_0_6DATA \
-	install-dist_definitionsbufr_tables_0_local_1_98_0_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_local_2_98_0DATA \
-	install-dist_definitionsbufr_tables_0_local_2_98_0_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_local_3_98_0DATA \
-	install-dist_definitionsbufr_tables_0_local_3_98_0_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_10DATA \
-	install-dist_definitionsbufr_tables_0_wmo_10_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_11DATA \
-	install-dist_definitionsbufr_tables_0_wmo_11_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_12DATA \
-	install-dist_definitionsbufr_tables_0_wmo_12_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_13DATA \
-	install-dist_definitionsbufr_tables_0_wmo_13_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_14DATA \
-	install-dist_definitionsbufr_tables_0_wmo_14_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_15DATA \
-	install-dist_definitionsbufr_tables_0_wmo_15_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_16DATA \
-	install-dist_definitionsbufr_tables_0_wmo_16_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_17DATA \
-	install-dist_definitionsbufr_tables_0_wmo_17_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_18DATA \
-	install-dist_definitionsbufr_tables_0_wmo_18_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_19DATA \
-	install-dist_definitionsbufr_tables_0_wmo_19_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_20DATA \
-	install-dist_definitionsbufr_tables_0_wmo_20_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_21DATA \
-	install-dist_definitionsbufr_tables_0_wmo_21_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_22DATA \
-	install-dist_definitionsbufr_tables_0_wmo_22_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_23DATA \
-	install-dist_definitionsbufr_tables_0_wmo_23_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_24DATA \
-	install-dist_definitionsbufr_tables_0_wmo_24_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_25DATA \
-	install-dist_definitionsbufr_tables_0_wmo_25_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_26DATA \
-	install-dist_definitionsbufr_tables_0_wmo_26_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_6DATA \
-	install-dist_definitionsbufr_tables_0_wmo_6_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_7DATA \
-	install-dist_definitionsbufr_tables_0_wmo_7_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_8DATA \
-	install-dist_definitionsbufr_tables_0_wmo_8_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_9DATA \
-	install-dist_definitionsbufr_tables_0_wmo_9_codetablesDATA \
-	install-dist_definitionsbufr_tables_3_local_1_98_0DATA \
-	install-dist_definitionsbufr_tables_3_wmo_11DATA \
-	install-dist_definitionsbufr_tables_3_wmo_6DATA \
-	install-dist_definitionsbufr_templatesDATA \
-	install-dist_definitionsbufr_templates_localDATA \
-	install-dist_definitionscdfDATA \
-	install-dist_definitionscommonDATA \
-	install-dist_definitionsgrib1DATA \
-	install-dist_definitionsgrib1_localConcepts_ammcDATA \
-	install-dist_definitionsgrib1_localConcepts_cnmcDATA \
-	install-dist_definitionsgrib1_localConcepts_ecmfDATA \
-	install-dist_definitionsgrib1_localConcepts_edzwDATA \
-	install-dist_definitionsgrib1_localConcepts_efklDATA \
-	install-dist_definitionsgrib1_localConcepts_eidbDATA \
-	install-dist_definitionsgrib1_localConcepts_ekmiDATA \
-	install-dist_definitionsgrib1_localConcepts_enmiDATA \
-	install-dist_definitionsgrib1_localConcepts_eswiDATA \
-	install-dist_definitionsgrib1_localConcepts_kwbcDATA \
-	install-dist_definitionsgrib1_localConcepts_lfpwDATA \
-	install-dist_definitionsgrib1_localConcepts_lowmDATA \
-	install-dist_definitionsgrib1_localConcepts_rjtdDATA \
-	install-dist_definitionsgrib1_localConcepts_sbsjDATA \
-	install-dist_definitionsgrib1_local_ecmfDATA \
-	install-dist_definitionsgrib1_local_edzwDATA \
-	install-dist_definitionsgrib1_local_rjtdDATA \
-	install-dist_definitionsgrib2DATA \
-	install-dist_definitionsgrib2_localConcepts_cnmcDATA \
-	install-dist_definitionsgrib2_localConcepts_ecmfDATA \
-	install-dist_definitionsgrib2_localConcepts_edzwDATA \
-	install-dist_definitionsgrib2_localConcepts_efklDATA \
-	install-dist_definitionsgrib2_localConcepts_egrrDATA \
-	install-dist_definitionsgrib2_localConcepts_ekmiDATA \
-	install-dist_definitionsgrib2_localConcepts_eswiDATA \
-	install-dist_definitionsgrib2_localConcepts_kwbcDATA \
-	install-dist_definitionsgrib2_localConcepts_lfpw1DATA \
-	install-dist_definitionsgrib2_localConcepts_lfpwDATA \
-	install-dist_definitionsgrib2_localConcepts_lsswDATA \
-	install-dist_definitionsgrib2_localDATA \
-	install-dist_definitionsgrib2_local_1098DATA \
-	install-dist_definitionsgrib2_local_edzwDATA \
-	install-dist_definitionsgrib2_tablesDATA \
-	install-dist_definitionsgrib2_tables_0DATA \
-	install-dist_definitionsgrib2_tables_10DATA \
-	install-dist_definitionsgrib2_tables_11DATA \
-	install-dist_definitionsgrib2_tables_12DATA \
-	install-dist_definitionsgrib2_tables_13DATA \
-	install-dist_definitionsgrib2_tables_14DATA \
-	install-dist_definitionsgrib2_tables_15DATA \
-	install-dist_definitionsgrib2_tables_16DATA \
-	install-dist_definitionsgrib2_tables_17DATA \
-	install-dist_definitionsgrib2_tables_1DATA \
-	install-dist_definitionsgrib2_tables_2DATA \
-	install-dist_definitionsgrib2_tables_3DATA \
-	install-dist_definitionsgrib2_tables_4DATA \
-	install-dist_definitionsgrib2_tables_5DATA \
-	install-dist_definitionsgrib2_tables_6DATA \
-	install-dist_definitionsgrib2_tables_7DATA \
-	install-dist_definitionsgrib2_tables_8DATA \
-	install-dist_definitionsgrib2_tables_9DATA \
-	install-dist_definitionsgrib2_tables_local_ecmfDATA \
-	install-dist_definitionsgrib2_tables_local_ecmf_4DATA \
-	install-dist_definitionsgtsDATA \
-	install-dist_definitionshdf5DATA \
-	install-dist_definitionsmarsDATA \
-	install-dist_definitionsmars_eswiDATA \
-	install-dist_definitionsmetarDATA \
-	install-dist_definitionsmetar_stationsDATA \
-	install-dist_definitionstafDATA \
-	install-dist_definitionstaf_stationsDATA \
-	install-dist_definitionstideDATA \
-	install-dist_definitionswrapDATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-dist_definitionsDATA \
-	uninstall-dist_definitionsbudgDATA \
-	uninstall-dist_definitionsbufrDATA \
-	uninstall-dist_definitionsbufr_tablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_local_101_98_0DATA \
-	uninstall-dist_definitionsbufr_tables_0_local_101_98_0_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_local_1_98_0DATA \
-	uninstall-dist_definitionsbufr_tables_0_local_1_98_0_6DATA \
-	uninstall-dist_definitionsbufr_tables_0_local_1_98_0_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_local_2_98_0DATA \
-	uninstall-dist_definitionsbufr_tables_0_local_2_98_0_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_local_3_98_0DATA \
-	uninstall-dist_definitionsbufr_tables_0_local_3_98_0_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_10DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_10_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_11DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_11_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_12DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_12_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_13DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_13_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_14DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_14_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_15DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_15_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_16DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_16_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_17DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_17_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_18DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_18_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_19DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_19_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_20DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_20_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_21DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_21_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_22DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_22_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_23DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_23_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_24DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_24_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_25DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_25_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_26DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_26_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_6DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_6_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_7DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_7_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_8DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_8_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_9DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_9_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_3_local_1_98_0DATA \
-	uninstall-dist_definitionsbufr_tables_3_wmo_11DATA \
-	uninstall-dist_definitionsbufr_tables_3_wmo_6DATA \
-	uninstall-dist_definitionsbufr_templatesDATA \
-	uninstall-dist_definitionsbufr_templates_localDATA \
-	uninstall-dist_definitionscdfDATA \
-	uninstall-dist_definitionscommonDATA \
-	uninstall-dist_definitionsgrib1DATA \
-	uninstall-dist_definitionsgrib1_localConcepts_ammcDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_cnmcDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_ecmfDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_edzwDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_efklDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_eidbDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_ekmiDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_enmiDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_eswiDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_kwbcDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_lfpwDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_lowmDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_rjtdDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_sbsjDATA \
-	uninstall-dist_definitionsgrib1_local_ecmfDATA \
-	uninstall-dist_definitionsgrib1_local_edzwDATA \
-	uninstall-dist_definitionsgrib1_local_rjtdDATA \
-	uninstall-dist_definitionsgrib2DATA \
-	uninstall-dist_definitionsgrib2_localConcepts_cnmcDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_ecmfDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_edzwDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_efklDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_egrrDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_ekmiDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_eswiDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_kwbcDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_lfpw1DATA \
-	uninstall-dist_definitionsgrib2_localConcepts_lfpwDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_lsswDATA \
-	uninstall-dist_definitionsgrib2_localDATA \
-	uninstall-dist_definitionsgrib2_local_1098DATA \
-	uninstall-dist_definitionsgrib2_local_edzwDATA \
-	uninstall-dist_definitionsgrib2_tablesDATA \
-	uninstall-dist_definitionsgrib2_tables_0DATA \
-	uninstall-dist_definitionsgrib2_tables_10DATA \
-	uninstall-dist_definitionsgrib2_tables_11DATA \
-	uninstall-dist_definitionsgrib2_tables_12DATA \
-	uninstall-dist_definitionsgrib2_tables_13DATA \
-	uninstall-dist_definitionsgrib2_tables_14DATA \
-	uninstall-dist_definitionsgrib2_tables_15DATA \
-	uninstall-dist_definitionsgrib2_tables_16DATA \
-	uninstall-dist_definitionsgrib2_tables_17DATA \
-	uninstall-dist_definitionsgrib2_tables_1DATA \
-	uninstall-dist_definitionsgrib2_tables_2DATA \
-	uninstall-dist_definitionsgrib2_tables_3DATA \
-	uninstall-dist_definitionsgrib2_tables_4DATA \
-	uninstall-dist_definitionsgrib2_tables_5DATA \
-	uninstall-dist_definitionsgrib2_tables_6DATA \
-	uninstall-dist_definitionsgrib2_tables_7DATA \
-	uninstall-dist_definitionsgrib2_tables_8DATA \
-	uninstall-dist_definitionsgrib2_tables_9DATA \
-	uninstall-dist_definitionsgrib2_tables_local_ecmfDATA \
-	uninstall-dist_definitionsgrib2_tables_local_ecmf_4DATA \
-	uninstall-dist_definitionsgtsDATA \
-	uninstall-dist_definitionshdf5DATA \
-	uninstall-dist_definitionsmarsDATA \
-	uninstall-dist_definitionsmars_eswiDATA \
-	uninstall-dist_definitionsmetarDATA \
-	uninstall-dist_definitionsmetar_stationsDATA \
-	uninstall-dist_definitionstafDATA \
-	uninstall-dist_definitionstaf_stationsDATA \
-	uninstall-dist_definitionstideDATA \
-	uninstall-dist_definitionswrapDATA
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	cscopelist-am ctags-am distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-dist_definitionsDATA install-dist_definitionsbudgDATA \
-	install-dist_definitionsbufrDATA \
-	install-dist_definitionsbufr_tablesDATA \
-	install-dist_definitionsbufr_tables_0_local_101_98_0DATA \
-	install-dist_definitionsbufr_tables_0_local_101_98_0_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_local_1_98_0DATA \
-	install-dist_definitionsbufr_tables_0_local_1_98_0_6DATA \
-	install-dist_definitionsbufr_tables_0_local_1_98_0_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_local_2_98_0DATA \
-	install-dist_definitionsbufr_tables_0_local_2_98_0_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_local_3_98_0DATA \
-	install-dist_definitionsbufr_tables_0_local_3_98_0_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_10DATA \
-	install-dist_definitionsbufr_tables_0_wmo_10_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_11DATA \
-	install-dist_definitionsbufr_tables_0_wmo_11_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_12DATA \
-	install-dist_definitionsbufr_tables_0_wmo_12_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_13DATA \
-	install-dist_definitionsbufr_tables_0_wmo_13_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_14DATA \
-	install-dist_definitionsbufr_tables_0_wmo_14_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_15DATA \
-	install-dist_definitionsbufr_tables_0_wmo_15_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_16DATA \
-	install-dist_definitionsbufr_tables_0_wmo_16_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_17DATA \
-	install-dist_definitionsbufr_tables_0_wmo_17_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_18DATA \
-	install-dist_definitionsbufr_tables_0_wmo_18_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_19DATA \
-	install-dist_definitionsbufr_tables_0_wmo_19_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_20DATA \
-	install-dist_definitionsbufr_tables_0_wmo_20_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_21DATA \
-	install-dist_definitionsbufr_tables_0_wmo_21_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_22DATA \
-	install-dist_definitionsbufr_tables_0_wmo_22_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_23DATA \
-	install-dist_definitionsbufr_tables_0_wmo_23_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_24DATA \
-	install-dist_definitionsbufr_tables_0_wmo_24_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_25DATA \
-	install-dist_definitionsbufr_tables_0_wmo_25_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_26DATA \
-	install-dist_definitionsbufr_tables_0_wmo_26_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_6DATA \
-	install-dist_definitionsbufr_tables_0_wmo_6_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_7DATA \
-	install-dist_definitionsbufr_tables_0_wmo_7_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_8DATA \
-	install-dist_definitionsbufr_tables_0_wmo_8_codetablesDATA \
-	install-dist_definitionsbufr_tables_0_wmo_9DATA \
-	install-dist_definitionsbufr_tables_0_wmo_9_codetablesDATA \
-	install-dist_definitionsbufr_tables_3_local_1_98_0DATA \
-	install-dist_definitionsbufr_tables_3_wmo_11DATA \
-	install-dist_definitionsbufr_tables_3_wmo_6DATA \
-	install-dist_definitionsbufr_templatesDATA \
-	install-dist_definitionsbufr_templates_localDATA \
-	install-dist_definitionscdfDATA \
-	install-dist_definitionscommonDATA \
-	install-dist_definitionsgrib1DATA \
-	install-dist_definitionsgrib1_localConcepts_ammcDATA \
-	install-dist_definitionsgrib1_localConcepts_cnmcDATA \
-	install-dist_definitionsgrib1_localConcepts_ecmfDATA \
-	install-dist_definitionsgrib1_localConcepts_edzwDATA \
-	install-dist_definitionsgrib1_localConcepts_efklDATA \
-	install-dist_definitionsgrib1_localConcepts_eidbDATA \
-	install-dist_definitionsgrib1_localConcepts_ekmiDATA \
-	install-dist_definitionsgrib1_localConcepts_enmiDATA \
-	install-dist_definitionsgrib1_localConcepts_eswiDATA \
-	install-dist_definitionsgrib1_localConcepts_kwbcDATA \
-	install-dist_definitionsgrib1_localConcepts_lfpwDATA \
-	install-dist_definitionsgrib1_localConcepts_lowmDATA \
-	install-dist_definitionsgrib1_localConcepts_rjtdDATA \
-	install-dist_definitionsgrib1_localConcepts_sbsjDATA \
-	install-dist_definitionsgrib1_local_ecmfDATA \
-	install-dist_definitionsgrib1_local_edzwDATA \
-	install-dist_definitionsgrib1_local_rjtdDATA \
-	install-dist_definitionsgrib2DATA \
-	install-dist_definitionsgrib2_localConcepts_cnmcDATA \
-	install-dist_definitionsgrib2_localConcepts_ecmfDATA \
-	install-dist_definitionsgrib2_localConcepts_edzwDATA \
-	install-dist_definitionsgrib2_localConcepts_efklDATA \
-	install-dist_definitionsgrib2_localConcepts_egrrDATA \
-	install-dist_definitionsgrib2_localConcepts_ekmiDATA \
-	install-dist_definitionsgrib2_localConcepts_eswiDATA \
-	install-dist_definitionsgrib2_localConcepts_kwbcDATA \
-	install-dist_definitionsgrib2_localConcepts_lfpw1DATA \
-	install-dist_definitionsgrib2_localConcepts_lfpwDATA \
-	install-dist_definitionsgrib2_localConcepts_lsswDATA \
-	install-dist_definitionsgrib2_localDATA \
-	install-dist_definitionsgrib2_local_1098DATA \
-	install-dist_definitionsgrib2_local_edzwDATA \
-	install-dist_definitionsgrib2_tablesDATA \
-	install-dist_definitionsgrib2_tables_0DATA \
-	install-dist_definitionsgrib2_tables_10DATA \
-	install-dist_definitionsgrib2_tables_11DATA \
-	install-dist_definitionsgrib2_tables_12DATA \
-	install-dist_definitionsgrib2_tables_13DATA \
-	install-dist_definitionsgrib2_tables_14DATA \
-	install-dist_definitionsgrib2_tables_15DATA \
-	install-dist_definitionsgrib2_tables_16DATA \
-	install-dist_definitionsgrib2_tables_17DATA \
-	install-dist_definitionsgrib2_tables_1DATA \
-	install-dist_definitionsgrib2_tables_2DATA \
-	install-dist_definitionsgrib2_tables_3DATA \
-	install-dist_definitionsgrib2_tables_4DATA \
-	install-dist_definitionsgrib2_tables_5DATA \
-	install-dist_definitionsgrib2_tables_6DATA \
-	install-dist_definitionsgrib2_tables_7DATA \
-	install-dist_definitionsgrib2_tables_8DATA \
-	install-dist_definitionsgrib2_tables_9DATA \
-	install-dist_definitionsgrib2_tables_local_ecmfDATA \
-	install-dist_definitionsgrib2_tables_local_ecmf_4DATA \
-	install-dist_definitionsgtsDATA \
-	install-dist_definitionshdf5DATA \
-	install-dist_definitionsmarsDATA \
-	install-dist_definitionsmars_eswiDATA \
-	install-dist_definitionsmetarDATA \
-	install-dist_definitionsmetar_stationsDATA \
-	install-dist_definitionstafDATA \
-	install-dist_definitionstaf_stationsDATA \
-	install-dist_definitionstideDATA \
-	install-dist_definitionswrapDATA install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
-	uninstall-am uninstall-dist_definitionsDATA \
-	uninstall-dist_definitionsbudgDATA \
-	uninstall-dist_definitionsbufrDATA \
-	uninstall-dist_definitionsbufr_tablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_local_101_98_0DATA \
-	uninstall-dist_definitionsbufr_tables_0_local_101_98_0_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_local_1_98_0DATA \
-	uninstall-dist_definitionsbufr_tables_0_local_1_98_0_6DATA \
-	uninstall-dist_definitionsbufr_tables_0_local_1_98_0_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_local_2_98_0DATA \
-	uninstall-dist_definitionsbufr_tables_0_local_2_98_0_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_local_3_98_0DATA \
-	uninstall-dist_definitionsbufr_tables_0_local_3_98_0_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_10DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_10_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_11DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_11_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_12DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_12_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_13DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_13_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_14DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_14_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_15DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_15_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_16DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_16_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_17DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_17_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_18DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_18_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_19DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_19_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_20DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_20_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_21DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_21_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_22DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_22_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_23DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_23_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_24DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_24_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_25DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_25_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_26DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_26_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_6DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_6_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_7DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_7_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_8DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_8_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_9DATA \
-	uninstall-dist_definitionsbufr_tables_0_wmo_9_codetablesDATA \
-	uninstall-dist_definitionsbufr_tables_3_local_1_98_0DATA \
-	uninstall-dist_definitionsbufr_tables_3_wmo_11DATA \
-	uninstall-dist_definitionsbufr_tables_3_wmo_6DATA \
-	uninstall-dist_definitionsbufr_templatesDATA \
-	uninstall-dist_definitionsbufr_templates_localDATA \
-	uninstall-dist_definitionscdfDATA \
-	uninstall-dist_definitionscommonDATA \
-	uninstall-dist_definitionsgrib1DATA \
-	uninstall-dist_definitionsgrib1_localConcepts_ammcDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_cnmcDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_ecmfDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_edzwDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_efklDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_eidbDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_ekmiDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_enmiDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_eswiDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_kwbcDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_lfpwDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_lowmDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_rjtdDATA \
-	uninstall-dist_definitionsgrib1_localConcepts_sbsjDATA \
-	uninstall-dist_definitionsgrib1_local_ecmfDATA \
-	uninstall-dist_definitionsgrib1_local_edzwDATA \
-	uninstall-dist_definitionsgrib1_local_rjtdDATA \
-	uninstall-dist_definitionsgrib2DATA \
-	uninstall-dist_definitionsgrib2_localConcepts_cnmcDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_ecmfDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_edzwDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_efklDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_egrrDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_ekmiDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_eswiDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_kwbcDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_lfpw1DATA \
-	uninstall-dist_definitionsgrib2_localConcepts_lfpwDATA \
-	uninstall-dist_definitionsgrib2_localConcepts_lsswDATA \
-	uninstall-dist_definitionsgrib2_localDATA \
-	uninstall-dist_definitionsgrib2_local_1098DATA \
-	uninstall-dist_definitionsgrib2_local_edzwDATA \
-	uninstall-dist_definitionsgrib2_tablesDATA \
-	uninstall-dist_definitionsgrib2_tables_0DATA \
-	uninstall-dist_definitionsgrib2_tables_10DATA \
-	uninstall-dist_definitionsgrib2_tables_11DATA \
-	uninstall-dist_definitionsgrib2_tables_12DATA \
-	uninstall-dist_definitionsgrib2_tables_13DATA \
-	uninstall-dist_definitionsgrib2_tables_14DATA \
-	uninstall-dist_definitionsgrib2_tables_15DATA \
-	uninstall-dist_definitionsgrib2_tables_16DATA \
-	uninstall-dist_definitionsgrib2_tables_17DATA \
-	uninstall-dist_definitionsgrib2_tables_1DATA \
-	uninstall-dist_definitionsgrib2_tables_2DATA \
-	uninstall-dist_definitionsgrib2_tables_3DATA \
-	uninstall-dist_definitionsgrib2_tables_4DATA \
-	uninstall-dist_definitionsgrib2_tables_5DATA \
-	uninstall-dist_definitionsgrib2_tables_6DATA \
-	uninstall-dist_definitionsgrib2_tables_7DATA \
-	uninstall-dist_definitionsgrib2_tables_8DATA \
-	uninstall-dist_definitionsgrib2_tables_9DATA \
-	uninstall-dist_definitionsgrib2_tables_local_ecmfDATA \
-	uninstall-dist_definitionsgrib2_tables_local_ecmf_4DATA \
-	uninstall-dist_definitionsgtsDATA \
-	uninstall-dist_definitionshdf5DATA \
-	uninstall-dist_definitionsmarsDATA \
-	uninstall-dist_definitionsmars_eswiDATA \
-	uninstall-dist_definitionsmetarDATA \
-	uninstall-dist_definitionsmetar_stationsDATA \
-	uninstall-dist_definitionstafDATA \
-	uninstall-dist_definitionstaf_stationsDATA \
-	uninstall-dist_definitionstideDATA \
-	uninstall-dist_definitionswrapDATA
-
-
-include $(DEVEL_RULES)
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/definitions/boot.def b/definitions/boot.def
index 8829089..4140a4d 100644
--- a/definitions/boot.def
+++ b/definitions/boot.def
@@ -11,13 +11,13 @@ constant definitionFilesVersion="2.0.0.0" : hidden;
 constant internalVersion=30 : hidden;
 meta checkInternalVersion check_internal_version(internalVersion) : hidden;
 
-UseEcmfConventions = getenv("ECCODES_USE_ECMF_CONVENTIONS","1");
+UseEcmfConventions = getenv("ECCODES_USE_ECMF_CONVENTIONS","1") :hidden ;
 
 constant defaultTypeOfLevel="unknown" : hidden;
 
 # GRIBEX special boustrophedonic mode. See GRIB-472
 # If the environment variable is not defined, the key will be 0
-GRIBEX_boustrophedonic = getenv("ECCODES_GRIBEX_BOUSTROPHEDONIC","0");
+GRIBEX_boustrophedonic = getenv("ECCODES_GRIBEX_BOUSTROPHEDONIC","0")  :hidden;
 
 
 constant zero=0 : hidden;
@@ -45,8 +45,8 @@ transient truncateDegrees=0 : hidden;
 transient dummy = 1 :hidden;
 constant unknown="unknown" : hidden;
 constant oneConstant=1 : hidden;
-constant thousand=1000;
-constant hundred=100;
+constant thousand=1000 :hidden;
+constant hundred=100 :hidden;
 constant oneMillionConstant=1000000 : hidden;
 constant grib1divider = 1000 : hidden;
 meta offset offset_file() : hidden;
diff --git a/definitions/budg/boot.def b/definitions/budg/boot.def
index ecd5ba0..6ecb862 100644
--- a/definitions/budg/boot.def
+++ b/definitions/budg/boot.def
@@ -8,23 +8,21 @@
 #
 
 position startOfHeaders;
-ascii[4]      identifier                             ;
+ascii[4]      identifier;
 
 alias ls.identifier=identifier;
-transient     missingValue   = 9999                  ;
-constant ieeeFloats   = 0: edition_specific;
+transient     missingValue = 9999;
+constant ieeeFloats = 0: edition_specific;
 constant zero=0:hidden;
 
-
-
-template      section1 "budg/section.1.def"          ;
-template      mars_labeling "budg/mars_labeling.def" ;
-template      section4 "budg/section.4.def"          ;
-ascii[4]      endMark                                ;
+template      section1 "budg/section.1.def";
+template      mars_labeling "budg/mars_labeling.def";
+template      section4 "budg/section.4.def";
+ascii[4]      endMark;
 position      totalLength;
 
 
 # This needs to be there for the MARS server, so the totalLength is processed correctly
-position      endOfHeadersMaker                      ;
-meta lengthOfHeaders evaluate( endOfHeadersMaker-startOfHeaders);
+position      endOfHeadersMarker;
+meta lengthOfHeaders evaluate( endOfHeadersMarker-startOfHeaders);
 meta md5Headers md5(startOfHeaders,lengthOfHeaders);
diff --git a/definitions/bufr/boot.def b/definitions/bufr/boot.def
index 28669b0..d803ea7 100644
--- a/definitions/bufr/boot.def
+++ b/definitions/bufr/boot.def
@@ -8,25 +8,65 @@
 #
 
 lookup[1] ed       (7,editionNumber);
-transient missingValue=999999;
+transient missingValue=999999 : hidden;
 
 #negative value=not used
-transient inputDelayedDescriptorReplicationFactor={-1};
+transient inputDelayedDescriptorReplicationFactor={-1} : hidden;
 #negative value=not used
-transient inputExtendedDelayedDescriptorReplicationFactor={-1};
+transient inputExtendedDelayedDescriptorReplicationFactor={-1} : hidden;
 #negative value=not used
-transient inputShortDelayedDescriptorReplicationFactor={-1};
+transient inputShortDelayedDescriptorReplicationFactor={-1} : hidden;
 
-transient inputDataPresentIndicator={-1};
+transient inputDataPresentIndicator={-1} : hidden;
 
-transient extractSubset=-1;
-transient extractSubset=-1;
-transient extractSubset=-1;
-transient extractSubsetIntervalStart=-1;
-transient extractSubsetIntervalEnd=-1;
+transient extractSubset=-1 : hidden;
+transient extractSubsetList={-1} : hidden;
+transient extractSubsetIntervalStart=-1 : hidden;
+transient extractSubsetIntervalEnd=-1 : hidden;
 
+meta doExtractSubsets bufr_extract_subsets(numericValues,pack,numberOfSubsets,extractSubset,extractSubsetIntervalStart,extractSubsetIntervalEnd,extractSubsetList)=0 : hidden;
 
-meta doExtractSubsets bufr_extract_subsets(numericValues,pack,numberOfSubsets,extractSubset,extractSubsetIntervalStart,extractSubsetIntervalEnd);
+transient extractAreaWestLongitude=1.1 : hidden;
+transient extractAreaEastLongitude=1.1 : hidden;
+transient extractAreaNorthLatitude=1.1 : hidden;
+transient extractAreaSouthLatitude=1.1 : hidden;
+transient extractAreaLatitudeRank=1 : hidden;
+transient extractAreaLongitudeRank=1 : hidden;
+transient extractedAreaNumberOfSubsets=0 : hidden;
+
+meta doExtractArea bufr_extract_area_subsets(
+    doExtractSubsets,numberOfSubsets,extractSubsetList,extractAreaWestLongitude,extractAreaEastLongitude,
+    extractAreaNorthLatitude,extractAreaSouthLatitude,extractAreaLongitudeRank,extractAreaLatitudeRank,
+    extractedAreaNumberOfSubsets)=0 : hidden;
+
+transient extractDateTimeYearStart=2016 : hidden;
+transient extractDateTimeMonthStart=1 : hidden;
+transient extractDateTimeDayStart=1 : hidden;
+transient extractDateTimeHourStart=1 : hidden;
+transient extractDateTimeMinuteStart=1 : hidden;
+transient extractDateTimeSecondStart=1 : hidden;
+
+transient extractDateTimeYearEnd=2016 : hidden;
+transient extractDateTimeMonthEnd=1 : hidden;
+transient extractDateTimeDayEnd=1 : hidden;
+transient extractDateTimeHourEnd=1 : hidden;
+transient extractDateTimeMinuteEnd=1 : hidden;
+transient extractDateTimeSecondEnd=1 : hidden;
+
+transient extractDateTimeYearRank=1 : hidden;
+transient extractDateTimeMonthRank=1 : hidden;
+transient extractDateTimeDayRank=1 : hidden;
+transient extractDateTimeHourRank=1 : hidden;
+transient extractDateTimeMinuteRank=1 : hidden;
+transient extractDateTimeSecondRank=1 : hidden;
+transient extractedDateTimeNumberOfSubsets=0 : hidden;
+
+meta doExtractDateTime bufr_extract_datetime_subsets(doExtractSubsets,numberOfSubsets,extractSubsetList)=0 : hidden;
+
+transient simpleThinningStart=1 : hidden;
+transient simpleThinningMissingRadius=0 : hidden;
+transient simpleThinningSkip=1 : hidden;
+meta doSimpleThinning bufr_simple_thinning(doExtractSubsets,numberOfSubsets,extractSubsetList,simpleThinningStart,simpleThinningMissingRadius,simpleThinningSkip)=0 : hidden;
 
 template boot_edition "bufr/boot_edition_[ed:l].def";
 
diff --git a/definitions/bufr/boot_edition_1.def b/definitions/bufr/boot_edition_0.def
similarity index 85%
copy from definitions/bufr/boot_edition_1.def
copy to definitions/bufr/boot_edition_0.def
index 3e5d55b..13eb1f2 100644
--- a/definitions/bufr/boot_edition_1.def
+++ b/definitions/bufr/boot_edition_0.def
@@ -12,14 +12,16 @@ alias identifier=identifier;
 
 unsigned[3] section1Length;
 
-unsigned[1] edition = 2;
+unsigned[1] edition = 0 : dump;
 alias editionNumber=edition;
 
 template    section_1 "bufr/section.1.1.def"   ;
 
-flagbit section2Present(section1Flags,7) = 1;
+flagbit localSectionPresent(section1Flags,7) = 1;
+alias section2Present=localSectionPresent;
 
-if(section2Present){
+
+if(localSectionPresent){
    template section_2 "bufr/section.2.def"     ;
 }
 else {
diff --git a/definitions/bufr/boot_edition_1.def b/definitions/bufr/boot_edition_1.def
index 3e5d55b..e268bae 100644
--- a/definitions/bufr/boot_edition_1.def
+++ b/definitions/bufr/boot_edition_1.def
@@ -12,14 +12,16 @@ alias identifier=identifier;
 
 unsigned[3] section1Length;
 
-unsigned[1] edition = 2;
+unsigned[1] edition = 1 : dump;
 alias editionNumber=edition;
 
 template    section_1 "bufr/section.1.1.def"   ;
 
-flagbit section2Present(section1Flags,7) = 1;
+flagbit localSectionPresent(section1Flags,7) = 1;
+alias section2Present=localSectionPresent;
 
-if(section2Present){
+
+if(localSectionPresent){
    template section_2 "bufr/section.2.def"     ;
 }
 else {
diff --git a/definitions/bufr/boot_edition_2.def b/definitions/bufr/boot_edition_2.def
index c8d14bf..0f5a614 100644
--- a/definitions/bufr/boot_edition_2.def
+++ b/definitions/bufr/boot_edition_2.def
@@ -13,14 +13,15 @@ alias identifier=identifier;
 
 unsigned[3]   totalLength ;
 
-unsigned[1] edition = 2;
+unsigned[1] edition = 2 : dump;
 alias editionNumber=edition;
 
 template    section_1 "bufr/section.1.2.def"   ;
 
-flagbit section2Present(section1Flags,7) = 1;
+flagbit localSectionPresent(section1Flags,7) = 1;
+alias section2Present=localSectionPresent;
 
-if(section2Present){
+if(localSectionPresent){
    template section_2 "bufr/section.2.def"     ;
 }
 else {
diff --git a/definitions/bufr/boot_edition_3.def b/definitions/bufr/boot_edition_3.def
index 5483796..be7f885 100644
--- a/definitions/bufr/boot_edition_3.def
+++ b/definitions/bufr/boot_edition_3.def
@@ -12,14 +12,16 @@ alias identifier=identifier;
 
 section_length[3]   totalLength ;
 
-unsigned[1] edition = 3;
+unsigned[1] edition = 3 : dump;
 alias editionNumber=edition;
 
 template    section_1 "bufr/section.1.3.def"   ;
 
-flagbit section2Present(section1Flags,7) = 1;
+flagbit localSectionPresent(section1Flags,7) = 1;
+alias section2Present=localSectionPresent;
 
-if(section2Present){
+
+if(localSectionPresent){
    template section_2 "bufr/section.2.def"     ;
 }
 else {
diff --git a/definitions/bufr/boot_edition_4.def b/definitions/bufr/boot_edition_4.def
index da577b4..a5eacbb 100644
--- a/definitions/bufr/boot_edition_4.def
+++ b/definitions/bufr/boot_edition_4.def
@@ -12,14 +12,16 @@ alias identifier=identifier;
 
 section_length[3]   totalLength ;
 
-unsigned[1] edition = 4;
+unsigned[1] edition = 4 : dump;
 alias editionNumber=edition;
 
 template    section_1 "bufr/section.1.4.def"   ;
 
-flagbit section2Present(section1Flags,7) = 1;
+flagbit localSectionPresent(section1Flags,7) = 1;
+alias section2Present=localSectionPresent;
 
-if(section2Present){
+
+if(localSectionPresent){
    template section_2 "bufr/section.2.def"     ;
 } else {
    transient section2Length = 0;
diff --git a/definitions/bufr/rdb_key.def b/definitions/bufr/rdb_key.def
index 93d9929..56308f8 100644
--- a/definitions/bufr/rdb_key.def
+++ b/definitions/bufr/rdb_key.def
@@ -14,8 +14,6 @@ meta localMinute bits(keyData,27,6) : long_type,no_copy;
 meta localSecond bits(keyData,33,6) : long_type,no_copy;
 meta spare  bits(keyData,39,1) : no_copy; # 40 bits = 10 bytes
 
-meta ls.typicalDate sprintf("%.4d%.2d%.2d",localYear,localMonth,localDay) : dump,no_copy;
-meta ls.typicalTime sprintf("%.2d%.2d%.2d",localHour,localMinute,localSecond) :dump,no_copy;
 
 # isSatellite and other stuff moved to section 3
 ascii[8]    keyMore : hidden; 
diff --git a/definitions/bufr/section.1.3.def b/definitions/bufr/section.1.3.def
index b4ab000..8316aa1 100644
--- a/definitions/bufr/section.1.3.def
+++ b/definitions/bufr/section.1.3.def
@@ -11,12 +11,12 @@
 position offsetSection1;
 section_length[3] section1Length ;
 
-unsigned[1]  masterTableNumber;
+unsigned[1]  masterTableNumber :dump;
 
 codetable[1] bufrHeaderSubCentre 'grib1/0.table' : dump;
 unsigned[1] bufrHeaderCentre            : dump;
 
-unsigned[1]  updateSequenceNumber;
+unsigned[1]  updateSequenceNumber :dump;
 
 flags[1]     section1Flags 'bufr/section1_flags.table' = 128 : hidden ; # = section 2 present
 
@@ -35,6 +35,11 @@ unsigned[1] typicalDay : dump;
 unsigned[1] typicalHour : dump;
 unsigned[1] typicalMinute : dump;
 unsigned[1] spare; # ???
+transient typicalSecond=0;
+
+meta ls.typicalDate sprintf("%.4d%.2d%.2d",typicalYear,typicalMonth,typicalDay) : dump,no_copy,read_only;
+meta ls.typicalTime sprintf("%.2d%.2d%.2d",typicalHour,typicalMinute,typicalSecond) :dump,no_copy,read_only;
+
 
 alias ls.centre=bufrHeaderCentre;
 alias ls.masterTablesVersionNumber=masterTablesVersionNumber;
diff --git a/definitions/bufr/section.1.4.def b/definitions/bufr/section.1.4.def
index ff74402..7fbfbcf 100644
--- a/definitions/bufr/section.1.4.def
+++ b/definitions/bufr/section.1.4.def
@@ -11,13 +11,13 @@
 position offsetSection1;
 section_length[3] section1Length ;
 
-unsigned[1]  masterTableNumber;
+unsigned[1]  masterTableNumber : dump ;
 
 codetable[2] bufrHeaderCentre 							'grib1/0.table' : dump;
 unsigned[2] bufrHeaderSubCentre            : dump;
 alias ls.centre=bufrHeaderCentre;
 
-unsigned[1]  updateSequenceNumber;
+unsigned[1]  updateSequenceNumber : dump;
 
 flags[1]     section1Flags 'bufr/section1_flags.table' = 128 : hidden ; # = section 2 present
 
@@ -37,6 +37,9 @@ unsigned[1] typicalHour : dump;
 unsigned[1] typicalMinute : dump;
 unsigned[1] typicalSecond : dump;
 
+meta ls.typicalDate sprintf("%.4d%.2d%.2d",typicalYear,typicalMonth,typicalDay) : dump,no_copy,read_only;
+meta ls.typicalTime sprintf("%.2d%.2d%.2d",typicalHour,typicalMinute,typicalSecond) :dump,no_copy,read_only;
+
 alias ls.masterTablesVersionNumber=masterTablesVersionNumber;
 alias ls.localTablesVersionNumber=localTablesVersionNumber;
 
diff --git a/definitions/bufr/section.3.def b/definitions/bufr/section.3.def
index e808cf1..6eeba63 100644
--- a/definitions/bufr/section.3.def
+++ b/definitions/bufr/section.3.def
@@ -54,10 +54,10 @@ if (section2Present && bufrHeaderCentre==98 && section2Length==52) {
 				if (numberOfSubsets>255 || 
 						( rdbSubtype>=121 && rdbSubtype <=130 ) || 
 						rdbSubtype==31) {
-						meta ls.numberOfObservations bits(keySat,0,16) : dump,long_type,no_copy;
+						meta ls.localNumberOfObservations bits(keySat,0,16) : dump,long_type,no_copy;
 						meta ls.satelliteID bits(keySat,16,16) : dump,long_type,no_copy;
 				} else {
-						meta ls.numberOfObservations bits(keySat,0,8) : dump,long_type,no_copy;
+						meta ls.localNumberOfObservations bits(keySat,0,8) : dump,long_type,no_copy;
 						meta ls.satelliteID bits(keySat,8,16) : dump,long_type,no_copy;
 				}
 		} else {
diff --git a/definitions/grib1/2.98.140.table b/definitions/grib1/2.98.140.table
index c0378f1..d5cbc20 100644
--- a/definitions/grib1/2.98.140.table
+++ b/definitions/grib1/2.98.140.table
@@ -1,66 +1,74 @@
 # This file was automatically generated by ./param.pl
-80 wx1 Wave experimental parameter 1
-81 wx2 Wave experimental parameter 2
-82 wx3 Wave experimental parameter 3
-83 wx4 Wave experimental parameter 4
-84 wx5 Wave experimental parameter 5
-120 sh10 SH10 Significant wave height of all waves with period larger than 10s (m)
-121 swh1 Significant wave height of first swell partition
-122 mwd1 Mean wave direction of first swell partition
-123 mwp1 Mean wave period of first swell partition
-124 swh2 Significant wave height of second swell partition
-125 mwd2 Mean wave direction of second swell partition
-126 mwp2 Mean wave period of second swell partition
-127 swh3 Significant wave height of third swell partition
-128 mwd3 Mean wave direction of third swell partition
-129 mwp3 Mean wave period of third swell partition
-200 maxswh Maximum of significant wave height
-207 wss Wave Spectral Skewness (dimensionless)
-208 wstar Free convective velocity over the oceans
-209 rhoao Air density over the oceans
-210 mswsi Mean square wave strain in sea ice
-211 phiaw Normalized energy flux into waves
-212 phioc Normalized energy flux into ocean
-213 tla Turbulent Langmuir number
-214 tauoc Normalized stress into ocean
-215 ust U-component stokes drift
-216 vst V-component stokes drift m s**-1
-217 tmax Period corresponding to maximum individual wave height
-218 hmax Maximum individual wave height m
-219 wmb Model bathymetry m
-220 mp1 Mean wave period based on first moment s
-221 mp2 Mean wave period based on second moment s
-222 wdw Wave spectral directional width
-223 p1ww Mean wave period based on first moment for wind waves s
-224 p2ww Mean wave period based on second moment for wind waves s
-225 dwww Wave spectral directional width for wind waves
-226 p1ps Mean wave period based on first moment for swell s
-227 p2ps Mean wave period based on second moment for swell s
-228 dwps Wave spectral directional width for swell
-229 swh Significant height of combined wind waves and swell (m)
-230 mwd Mean wave direction degrees
-231 pp1d Peak period of 1D spectra s
-232 mwp  Mean wave period s
-233 cdww Coefficient of drag with waves
-234 shww Significant height of wind waves m
-235 mdww Mean direction of wind waves degrees
-236 mpww Mean period of wind waves s
-237 shts Significant height of total swell m
-238 mdts Mean direction of total swell degrees
-239 mpts Mean period of total swell s
-240 sdhs Standard deviation wave height m
-241 mu10 Mean of 10 metre wind speed m s**-1
-242 mdwi Mean wind direction degrees
-243 sdu  Standard deviation of 10 metre wind speed m s**-1
-244 msqs Mean square slope of waves dimensionless
-245 wind 10 metre wind speed m s**-1
-246 awh  Altimeter wave height m
-247 acwh Altimeter corrected wave height m
-248 arrc Altimeter range relative correction
-249 dwi  10 metre wind direction degrees
-250 2dsp 2D wave spectra (multiple) m**2 s radian**-1
-251 2dfd 2D wave spectra (single) m**2 s radian**-1
-252 wsk  Wave spectral kurtosis
-253 bfi  Benjamin-Feir index
-254 wsp  Wave spectral peakedness s**-1
+80 80 WX1 Wave experimental parameter 1 (~)
+81 81 WX2 Wave experimental parameter 2 (~)
+82 82 WX3 Wave experimental parameter 3 (~)
+83 83 WX4 Wave experimental parameter 4 (~)
+84 84 WX5 Wave experimental parameter 5 (~)
+112 112 WEFXM Wave energy flux magnitude (W m**-1)
+113 113 WEFXD Wave energy flux mean direction (Degree true)
+114 114 H1012 Significant wave height of all waves with periods within the inclusive range from 10 to 12 seconds (m)
+115 115 H1214 Significant wave height of all waves with periods within the inclusive range from 12 to 14 seconds (m)
+116 116 H1417 Significant wave height of all waves with periods within the inclusive range from 14 to 17 seconds (m)
+117 117 H1721 Significant wave height of all waves with periods within the inclusive range from 17 to 21 seconds (m)
+118 118 H2125 Significant wave height of all waves with periods within the inclusive range from 21 to 25 seconds (m)
+119 119 H2530 Significant wave height of all waves with periods within the inclusive range from 25 to 30 seconds (m)
+120 120 SH10 Significant wave height of all waves with period larger than 10s (m)
+121 121 SWH1 Significant wave height of first swell partition (m)
+122 122 MWD1 Mean wave direction of first swell partition (degrees)
+123 123 MWP1 Mean wave period of first swell partition (s)
+124 124 SWH2 Significant wave height of second swell partition (m)
+125 125 MWD2 Mean wave direction of second swell partition (degrees)
+126 126 MWP2 Mean wave period of second swell partition (s)
+127 127 SWH3 Significant wave height of third swell partition (m)
+128 128 MWD3 Mean wave direction of third swell partition (degrees)
+129 129 MWP3 Mean wave period of third swell partition (s)
+200 200 MAXSWH Maximum of significant wave height (m)
+207 207 WSS Wave Spectral Skewness (dimensionless)
+208 208 WSTAR Free convective velocity over the oceans (m s**-1)
+209 209 RHOAO Air density over the oceans (kg m**-3)
+210 210 MSWSI Mean square wave strain in sea ice (~)
+211 211 PHIAW Normalized energy flux into waves (dimensionless)
+212 212 PHIOC Normalized energy flux into ocean (dimensionless)
+213 213 TLA Turbulent Langmuir number (~)
+214 214 TAUOC Normalized stress into ocean (dimensionless)
+215 215 UST U-component stokes drift (m s**-1)
+216 216 VST V-component stokes drift (m s**-1)
+217 217 TMAX Period corresponding to maximum individual wave height (s)
+218 218 HMAX Maximum individual wave height (m)
+219 219 WMB Model bathymetry (m)
+220 220 MP1 Mean wave period based on first moment (s)
+221 221 MP2 Mean wave period based on second moment (s)
+222 222 WDW Wave spectral directional width (dimensionless)
+223 223 P1WW Mean wave period based on first moment for wind waves (s)
+224 224 P2WW Mean wave period based on second moment for wind waves (s)
+225 225 DWWW Wave spectral directional width for wind waves (dimensionless)
+226 226 P1PS Mean wave period based on first moment for swell (s)
+227 227 P2PS Mean wave period based on second moment for swell (s)
+228 228 DWPS Wave spectral directional width for swell (dimensionless)
+229 229 SWH Significant height of combined wind waves and swell (m)
+230 230 MWD Mean wave direction (Degree true)
+231 231 PP1D Peak period of 1D spectra (s)
+232 232 MWP Mean wave period (s)
+233 233 CDWW Coefficient of drag with waves (dimensionless)
+234 234 SHWW Significant height of wind waves (m)
+235 235 MDWW Mean direction of wind waves (degrees)
+236 236 MPWW Mean period of wind waves (s)
+237 237 SHTS Significant height of total swell (m)
+238 238 MDTS Mean direction of total swell (degrees)
+239 239 MPTS Mean period of total swell (s)
+240 240 SDHS Standard deviation wave height (m)
+241 241 MU10 Mean of 10 metre wind speed (m s**-1)
+242 242 MDWI Mean wind direction (degrees)
+243 243 SDU Standard deviation of 10 metre wind speed (m s**-1)
+244 244 MSQS Mean square slope of waves (dimensionless)
+245 245 WIND 10 metre wind speed (m s**-1)
+246 246 AWH Altimeter wave height (m)
+247 247 ACWH Altimeter corrected wave height (m)
+248 248 ARRC Altimeter range relative correction (~)
+249 249 DWI 10 metre wind direction (degrees)
+250 250 2DSP 2D wave spectra (multiple) (m**2 s radian**-1)
+251 251 2DFD 2D wave spectra (single) (m**2 s radian**-1)
+252 252 WSK Wave spectral kurtosis (dimensionless)
+253 253 BFI Benjamin-Feir index (dimensionless)
+254 254 WSP Wave spectral peakedness (dimensionless)
 255 255 - Indicates a missing value
diff --git a/definitions/grib1/2.98.213.table b/definitions/grib1/2.98.213.table
new file mode 100644
index 0000000..430b240
--- /dev/null
+++ b/definitions/grib1/2.98.213.table
@@ -0,0 +1,56 @@
+# This file was automatically generated by ./param.pl
+1 1 SPPT1 Random pattern 1 for sppt (dimensionless)
+2 2 SPPT2 Random pattern 2 for sppt (dimensionless)
+3 3 SPPT3 Random pattern 3 for sppt (dimensionless)
+4 4 SPPT4 Random pattern 4 for sppt (dimensionless)
+5 5 SPPT5 Random pattern 5 for sppt (dimensionless)
+101 101 SPP1 Random pattern 1 for SPP scheme (dimensionless)
+102 102 SPP2 Random pattern 2 for SPP scheme (dimensionless)
+103 103 SPP3 Random pattern 3 for SPP scheme (dimensionless)
+104 104 SPP4 Random pattern 4 for SPP scheme (dimensionless)
+105 105 SPP5 Random pattern 5 for SPP scheme (dimensionless)
+106 106 SPP6 Random pattern 6 for SPP scheme (dimensionless)
+107 107 SPP7 Random pattern 7 for SPP scheme (dimensionless)
+108 108 SPP8 Random pattern 8 for SPP scheme (dimensionless)
+109 109 SPP9 Random pattern 9 for SPP scheme (dimensionless)
+110 110 SPP10 Random pattern 10 for SPP scheme (dimensionless)
+111 111 SPP11 Random pattern 11 for SPP scheme (dimensionless)
+112 112 SPP12 Random pattern 12 for SPP scheme (dimensionless)
+113 113 SPP13 Random pattern 13 for SPP scheme (dimensionless)
+114 114 SPP14 Random pattern 14 for SPP scheme (dimensionless)
+115 115 SPP15 Random pattern 15 for SPP scheme (dimensionless)
+116 116 SPP16 Random pattern 16 for SPP scheme (dimensionless)
+117 117 SPP17 Random pattern 17 for SPP scheme (dimensionless)
+118 118 SPP18 Random pattern 18 for SPP scheme (dimensionless)
+119 119 SPP19 Random pattern 19 for SPP scheme (dimensionless)
+120 120 SPP20 Random pattern 20 for SPP scheme (dimensionless)
+121 121 SPP21 Random pattern 21 for SPP scheme (dimensionless)
+122 122 SPP22 Random pattern 22 for SPP scheme (dimensionless)
+123 123 SPP23 Random pattern 23 for SPP scheme (dimensionless)
+124 124 SPP24 Random pattern 24 for SPP scheme (dimensionless)
+125 125 SPP25 Random pattern 25 for SPP scheme (dimensionless)
+126 126 SPP26 Random pattern 26 for SPP scheme (dimensionless)
+127 127 SPP27 Random pattern 27 for SPP scheme (dimensionless)
+128 128 SPP28 Random pattern 28 for SPP scheme (dimensionless)
+129 129 SPP29 Random pattern 29 for SPP scheme (dimensionless)
+130 130 SPP30 Random pattern 30 for SPP scheme (dimensionless)
+131 131 SPP31 Random pattern 31 for SPP scheme (dimensionless)
+132 132 SPP32 Random pattern 32 for SPP scheme (dimensionless)
+133 133 SPP33 Random pattern 33 for SPP scheme (dimensionless)
+134 134 SPP34 Random pattern 34 for SPP scheme (dimensionless)
+135 135 SPP35 Random pattern 35 for SPP scheme (dimensionless)
+136 136 SPP36 Random pattern 36 for SPP scheme (dimensionless)
+137 137 SPP37 Random pattern 37 for SPP scheme (dimensionless)
+138 138 SPP38 Random pattern 38 for SPP scheme (dimensionless)
+139 139 SPP39 Random pattern 39 for SPP scheme (dimensionless)
+140 140 SPP40 Random pattern 40 for SPP scheme (dimensionless)
+141 141 SPP41 Random pattern 41 for SPP scheme (dimensionless)
+142 142 SPP42 Random pattern 42 for SPP scheme (dimensionless)
+143 143 SPP43 Random pattern 43 for SPP scheme (dimensionless)
+144 144 SPP44 Random pattern 44 for SPP scheme (dimensionless)
+145 145 SPP45 Random pattern 45 for SPP scheme (dimensionless)
+146 146 SPP46 Random pattern 46 for SPP scheme (dimensionless)
+147 147 SPP47 Random pattern 47 for SPP scheme (dimensionless)
+148 148 SPP48 Random pattern 48 for SPP scheme (dimensionless)
+149 149 SPP49 Random pattern 49 for SPP scheme (dimensionless)
+150 150 SPP50 Random pattern 50 for SPP scheme (dimensionless)
diff --git a/definitions/grib1/boot.def b/definitions/grib1/boot.def
index a852fba..5860eab 100644
--- a/definitions/grib1/boot.def
+++ b/definitions/grib1/boot.def
@@ -48,28 +48,27 @@ alias geography.bitmapPresent=bitmapPresent;
 transient angularPrecision=1000;  # milli degrees
 
 if(gridDescriptionSectionPresent){
-   template section_2 "grib1/section.2.def"     ;
+  template section_2 "grib1/section.2.def"     ;
 } else {
   template predefined_grid "grib1/predefined_grid.def";
 }
 
-
 # Used to mark end of headers. Can be accessed with grib_get_offset()
-position   endOfHeadersMaker;
+position   endOfHeadersMarker;
 
-meta lengthOfHeaders evaluate( endOfHeadersMaker-startOfHeaders);
+meta lengthOfHeaders evaluate( endOfHeadersMarker-startOfHeaders);
 meta md5Headers md5(startOfHeaders,lengthOfHeaders);
 
 if (!headersOnly) {
-transient  missingValue   = 9999 : dump;
+  transient  missingValue   = 9999 : dump;
 
-if(bitmapPresent) {
-    template   section3 "grib1/section.3.def"     ;
-} else {
-   constant   tableReference = 0;
-}
+  if(bitmapPresent) {
+    template   section3 "grib1/section.3.def";
+  } else {
+    constant   tableReference = 0;
+  }
 
-template     section_4 "grib1/section.4.def"     ;
+  template     section_4 "grib1/section.4.def";
 
-template     section_5 "grib1/section.5.def"     ;
+  template     section_5 "grib1/section.5.def";
 }
diff --git a/definitions/grib1/cfName.def b/definitions/grib1/cfName.def
index 532e988..92225ce 100644
--- a/definitions/grib1/cfName.def
+++ b/definitions/grib1/cfName.def
@@ -41,7 +41,7 @@
 	 table2Version = 3 ;
 	}
 #Boundary layer dissipation
-'dissipation_in_atmosphere_boundary_layer' = {
+'kinetic_energy_dissipation_in_atmosphere_boundary_layer' = {
 	 indicatorOfParameter = 123 ;
 	 table2Version = 3 ;
 	}
@@ -144,7 +144,7 @@
 	 table2Version = 2 ;
 	}
 #Boundary layer dissipation
-'dissipation_in_atmosphere_boundary_layer' = {
+'kinetic_energy_dissipation_in_atmosphere_boundary_layer' = {
 	 indicatorOfParameter = 123 ;
 	 table2Version = 2 ;
 	}
@@ -247,7 +247,7 @@
 	 table2Version = 1 ;
 	}
 #Boundary layer dissipation
-'dissipation_in_atmosphere_boundary_layer' = {
+'kinetic_energy_dissipation_in_atmosphere_boundary_layer' = {
 	 indicatorOfParameter = 123 ;
 	 table2Version = 1 ;
 	}
diff --git a/definitions/grib1/cfVarName.def b/definitions/grib1/cfVarName.def
index f6c336e..7aeff37 100644
--- a/definitions/grib1/cfVarName.def
+++ b/definitions/grib1/cfVarName.def
@@ -142,11 +142,6 @@
 	 table2Version = 3 ;
 	 indicatorOfParameter = 83 ;
 	}
-#Albedo
-'al' = {
-	 table2Version = 3 ;
-	 indicatorOfParameter = 84 ;
-	}
 #Evaporation
 'e' = {
 	 table2Version = 3 ;
@@ -173,7 +168,7 @@
 	 indicatorOfParameter = 62 ;
 	}
 #Snow depth
-'sd' = {
+'sde' = {
 	 table2Version = 3 ;
 	 indicatorOfParameter = 66 ;
 	}
@@ -843,11 +838,6 @@
 	 table2Version = 2 ;
 	 indicatorOfParameter = 83 ;
 	}
-#Albedo
-'al' = {
-	 table2Version = 2 ;
-	 indicatorOfParameter = 84 ;
-	}
 #Evaporation
 'e' = {
 	 table2Version = 2 ;
@@ -1529,11 +1519,6 @@
 	 table2Version = 1 ;
 	 indicatorOfParameter = 83 ;
 	}
-#Albedo
-'al' = {
-	 table2Version = 1 ;
-	 indicatorOfParameter = 84 ;
-	}
 #Evaporation
 'e' = {
 	 table2Version = 1 ;
diff --git a/definitions/grib1/local/edzw/5.table b/definitions/grib1/local/edzw/5.table
old mode 100644
new mode 100755
diff --git a/definitions/grib1/localConcepts/ecmf/cfName.def b/definitions/grib1/localConcepts/ecmf/cfName.def
index 10abe95..a4a64bf 100644
--- a/definitions/grib1/localConcepts/ecmf/cfName.def
+++ b/definitions/grib1/localConcepts/ecmf/cfName.def
@@ -35,7 +35,7 @@
 	 table2Version = 128 ;
 	}
 #Total column water vapour
-'lwe_thickness_of_atmosphere_water_vapor_content' = {
+'lwe_thickness_of_atmosphere_mass_content_of_water_vapor' = {
 	 indicatorOfParameter = 137 ;
 	 table2Version = 128 ;
 	}
@@ -60,7 +60,7 @@
 	 table2Version = 128 ;
 	}
 #Stratiform precipitation (Large-scale precipitation)
-'lwe_thickness_of_large_scale_precipitation_amount' = {
+'lwe_thickness_of_stratiform_precipitation_amount' = {
 	 indicatorOfParameter = 142 ;
 	 table2Version = 128 ;
 	}
@@ -75,7 +75,7 @@
 	 table2Version = 128 ;
 	}
 #Boundary layer dissipation
-'dissipation_in_atmosphere_boundary_layer' = {
+'kinetic_energy_dissipation_in_atmosphere_boundary_layer' = {
 	 indicatorOfParameter = 145 ;
 	 table2Version = 128 ;
 	}
@@ -190,7 +190,7 @@
 	 table2Version = 128 ;
 	}
 #Temperature of snow layer
-'snow_temperature' = {
+'temperature_in_surface_snow' = {
 	 indicatorOfParameter = 238 ;
 	 table2Version = 128 ;
 }
diff --git a/definitions/grib1/localConcepts/ecmf/cfVarName.def b/definitions/grib1/localConcepts/ecmf/cfVarName.def
index 4bb0fe3..a6b8bb7 100644
--- a/definitions/grib1/localConcepts/ecmf/cfVarName.def
+++ b/definitions/grib1/localConcepts/ecmf/cfVarName.def
@@ -3354,6 +3354,46 @@
 	 table2Version = 140 ;
 	 indicatorOfParameter = 84 ;
 	}
+#Wave energy flux magnitude
+'wefxm' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 112 ;
+	}
+#Wave energy flux mean direction
+'wefxd' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 113 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 10 to 12 seconds
+'h1012' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 114 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 12 to 14 seconds
+'h1214' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 115 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 14 to 17 seconds
+'h1417' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 116 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 17 to 21 seconds
+'h1721' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 117 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 21 to 25 seconds
+'h2125' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 118 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 25 to 30 seconds
+'h2530' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 119 ;
+	}
 #Significant wave height of all waves with period larger than 10s
 'sh10' = {
 	 table2Version = 140 ;
@@ -5419,6 +5459,256 @@
 	 table2Version = 213 ;
 	 indicatorOfParameter = 5 ;
 	}
+#Random pattern 1 for SPP scheme
+'spp1' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 101 ;
+	}
+#Random pattern 2 for SPP scheme
+'spp2' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 102 ;
+	}
+#Random pattern 3 for SPP scheme
+'spp3' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 103 ;
+	}
+#Random pattern 4 for SPP scheme
+'spp4' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 104 ;
+	}
+#Random pattern 5 for SPP scheme
+'spp5' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 105 ;
+	}
+#Random pattern 6 for SPP scheme
+'spp6' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 106 ;
+	}
+#Random pattern 7 for SPP scheme
+'spp7' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 107 ;
+	}
+#Random pattern 8 for SPP scheme
+'spp8' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 108 ;
+	}
+#Random pattern 9 for SPP scheme
+'spp9' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 109 ;
+	}
+#Random pattern 10 for SPP scheme
+'spp10' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 110 ;
+	}
+#Random pattern 11 for SPP scheme
+'spp11' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 111 ;
+	}
+#Random pattern 12 for SPP scheme
+'spp12' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 112 ;
+	}
+#Random pattern 13 for SPP scheme
+'spp13' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 113 ;
+	}
+#Random pattern 14 for SPP scheme
+'spp14' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 114 ;
+	}
+#Random pattern 15 for SPP scheme
+'spp15' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 115 ;
+	}
+#Random pattern 16 for SPP scheme
+'spp16' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 116 ;
+	}
+#Random pattern 17 for SPP scheme
+'spp17' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 117 ;
+	}
+#Random pattern 18 for SPP scheme
+'spp18' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 118 ;
+	}
+#Random pattern 19 for SPP scheme
+'spp19' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 119 ;
+	}
+#Random pattern 20 for SPP scheme
+'spp20' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 120 ;
+	}
+#Random pattern 21 for SPP scheme
+'spp21' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 121 ;
+	}
+#Random pattern 22 for SPP scheme
+'spp22' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 122 ;
+	}
+#Random pattern 23 for SPP scheme
+'spp23' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 123 ;
+	}
+#Random pattern 24 for SPP scheme
+'spp24' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 124 ;
+	}
+#Random pattern 25 for SPP scheme
+'spp25' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 125 ;
+	}
+#Random pattern 26 for SPP scheme
+'spp26' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 126 ;
+	}
+#Random pattern 27 for SPP scheme
+'spp27' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 127 ;
+	}
+#Random pattern 28 for SPP scheme
+'spp28' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 128 ;
+	}
+#Random pattern 29 for SPP scheme
+'spp29' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 129 ;
+	}
+#Random pattern 30 for SPP scheme
+'spp30' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 130 ;
+	}
+#Random pattern 31 for SPP scheme
+'spp31' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 131 ;
+	}
+#Random pattern 32 for SPP scheme
+'spp32' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 132 ;
+	}
+#Random pattern 33 for SPP scheme
+'spp33' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 133 ;
+	}
+#Random pattern 34 for SPP scheme
+'spp34' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 134 ;
+	}
+#Random pattern 35 for SPP scheme
+'spp35' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 135 ;
+	}
+#Random pattern 36 for SPP scheme
+'spp36' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 136 ;
+	}
+#Random pattern 37 for SPP scheme
+'spp37' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 137 ;
+	}
+#Random pattern 38 for SPP scheme
+'spp38' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 138 ;
+	}
+#Random pattern 39 for SPP scheme
+'spp39' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 139 ;
+	}
+#Random pattern 40 for SPP scheme
+'spp40' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 140 ;
+	}
+#Random pattern 41 for SPP scheme
+'spp41' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 141 ;
+	}
+#Random pattern 42 for SPP scheme
+'spp42' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 142 ;
+	}
+#Random pattern 43 for SPP scheme
+'spp43' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 143 ;
+	}
+#Random pattern 44 for SPP scheme
+'spp44' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 144 ;
+	}
+#Random pattern 45 for SPP scheme
+'spp45' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 145 ;
+	}
+#Random pattern 46 for SPP scheme
+'spp46' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 146 ;
+	}
+#Random pattern 47 for SPP scheme
+'spp47' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 147 ;
+	}
+#Random pattern 48 for SPP scheme
+'spp48' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 148 ;
+	}
+#Random pattern 49 for SPP scheme
+'spp49' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 149 ;
+	}
+#Random pattern 50 for SPP scheme
+'spp50' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 150 ;
+	}
 # Cosine of solar zenith angle
 'uvcossza' = {
 	 table2Version = 214 ;
diff --git a/definitions/grib1/localConcepts/ecmf/name.def b/definitions/grib1/localConcepts/ecmf/name.def
index 5c7d6c8..62cd253 100644
--- a/definitions/grib1/localConcepts/ecmf/name.def
+++ b/definitions/grib1/localConcepts/ecmf/name.def
@@ -3354,6 +3354,46 @@
 	 table2Version = 140 ;
 	 indicatorOfParameter = 84 ;
 	}
+#Wave energy flux magnitude
+'Wave energy flux magnitude' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 112 ;
+	}
+#Wave energy flux mean direction
+'Wave energy flux mean direction' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 113 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 10 to 12 seconds
+'Significant wave height of all waves with periods within the inclusive range from 10 to 12 seconds' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 114 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 12 to 14 seconds
+'Significant wave height of all waves with periods within the inclusive range from 12 to 14 seconds' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 115 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 14 to 17 seconds
+'Significant wave height of all waves with periods within the inclusive range from 14 to 17 seconds' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 116 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 17 to 21 seconds
+'Significant wave height of all waves with periods within the inclusive range from 17 to 21 seconds' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 117 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 21 to 25 seconds
+'Significant wave height of all waves with periods within the inclusive range from 21 to 25 seconds' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 118 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 25 to 30 seconds
+'Significant wave height of all waves with periods within the inclusive range from 25 to 30 seconds' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 119 ;
+	}
 #Significant wave height of all waves with period larger than 10s
 'Significant wave height of all waves with period larger than 10s' = {
 	 table2Version = 140 ;
@@ -5419,6 +5459,256 @@
 	 table2Version = 213 ;
 	 indicatorOfParameter = 5 ;
 	}
+#Random pattern 1 for SPP scheme
+'Random pattern 1 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 101 ;
+	}
+#Random pattern 2 for SPP scheme
+'Random pattern 2 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 102 ;
+	}
+#Random pattern 3 for SPP scheme
+'Random pattern 3 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 103 ;
+	}
+#Random pattern 4 for SPP scheme
+'Random pattern 4 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 104 ;
+	}
+#Random pattern 5 for SPP scheme
+'Random pattern 5 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 105 ;
+	}
+#Random pattern 6 for SPP scheme
+'Random pattern 6 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 106 ;
+	}
+#Random pattern 7 for SPP scheme
+'Random pattern 7 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 107 ;
+	}
+#Random pattern 8 for SPP scheme
+'Random pattern 8 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 108 ;
+	}
+#Random pattern 9 for SPP scheme
+'Random pattern 9 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 109 ;
+	}
+#Random pattern 10 for SPP scheme
+'Random pattern 10 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 110 ;
+	}
+#Random pattern 11 for SPP scheme
+'Random pattern 11 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 111 ;
+	}
+#Random pattern 12 for SPP scheme
+'Random pattern 12 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 112 ;
+	}
+#Random pattern 13 for SPP scheme
+'Random pattern 13 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 113 ;
+	}
+#Random pattern 14 for SPP scheme
+'Random pattern 14 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 114 ;
+	}
+#Random pattern 15 for SPP scheme
+'Random pattern 15 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 115 ;
+	}
+#Random pattern 16 for SPP scheme
+'Random pattern 16 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 116 ;
+	}
+#Random pattern 17 for SPP scheme
+'Random pattern 17 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 117 ;
+	}
+#Random pattern 18 for SPP scheme
+'Random pattern 18 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 118 ;
+	}
+#Random pattern 19 for SPP scheme
+'Random pattern 19 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 119 ;
+	}
+#Random pattern 20 for SPP scheme
+'Random pattern 20 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 120 ;
+	}
+#Random pattern 21 for SPP scheme
+'Random pattern 21 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 121 ;
+	}
+#Random pattern 22 for SPP scheme
+'Random pattern 22 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 122 ;
+	}
+#Random pattern 23 for SPP scheme
+'Random pattern 23 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 123 ;
+	}
+#Random pattern 24 for SPP scheme
+'Random pattern 24 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 124 ;
+	}
+#Random pattern 25 for SPP scheme
+'Random pattern 25 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 125 ;
+	}
+#Random pattern 26 for SPP scheme
+'Random pattern 26 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 126 ;
+	}
+#Random pattern 27 for SPP scheme
+'Random pattern 27 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 127 ;
+	}
+#Random pattern 28 for SPP scheme
+'Random pattern 28 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 128 ;
+	}
+#Random pattern 29 for SPP scheme
+'Random pattern 29 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 129 ;
+	}
+#Random pattern 30 for SPP scheme
+'Random pattern 30 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 130 ;
+	}
+#Random pattern 31 for SPP scheme
+'Random pattern 31 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 131 ;
+	}
+#Random pattern 32 for SPP scheme
+'Random pattern 32 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 132 ;
+	}
+#Random pattern 33 for SPP scheme
+'Random pattern 33 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 133 ;
+	}
+#Random pattern 34 for SPP scheme
+'Random pattern 34 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 134 ;
+	}
+#Random pattern 35 for SPP scheme
+'Random pattern 35 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 135 ;
+	}
+#Random pattern 36 for SPP scheme
+'Random pattern 36 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 136 ;
+	}
+#Random pattern 37 for SPP scheme
+'Random pattern 37 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 137 ;
+	}
+#Random pattern 38 for SPP scheme
+'Random pattern 38 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 138 ;
+	}
+#Random pattern 39 for SPP scheme
+'Random pattern 39 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 139 ;
+	}
+#Random pattern 40 for SPP scheme
+'Random pattern 40 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 140 ;
+	}
+#Random pattern 41 for SPP scheme
+'Random pattern 41 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 141 ;
+	}
+#Random pattern 42 for SPP scheme
+'Random pattern 42 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 142 ;
+	}
+#Random pattern 43 for SPP scheme
+'Random pattern 43 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 143 ;
+	}
+#Random pattern 44 for SPP scheme
+'Random pattern 44 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 144 ;
+	}
+#Random pattern 45 for SPP scheme
+'Random pattern 45 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 145 ;
+	}
+#Random pattern 46 for SPP scheme
+'Random pattern 46 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 146 ;
+	}
+#Random pattern 47 for SPP scheme
+'Random pattern 47 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 147 ;
+	}
+#Random pattern 48 for SPP scheme
+'Random pattern 48 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 148 ;
+	}
+#Random pattern 49 for SPP scheme
+'Random pattern 49 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 149 ;
+	}
+#Random pattern 50 for SPP scheme
+'Random pattern 50 for SPP scheme' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 150 ;
+	}
 # Cosine of solar zenith angle
 ' Cosine of solar zenith angle' = {
 	 table2Version = 214 ;
diff --git a/definitions/grib1/localConcepts/ecmf/paramId.def b/definitions/grib1/localConcepts/ecmf/paramId.def
index fcdf1df..8894182 100644
--- a/definitions/grib1/localConcepts/ecmf/paramId.def
+++ b/definitions/grib1/localConcepts/ecmf/paramId.def
@@ -3354,6 +3354,46 @@
 	 table2Version = 140 ;
 	 indicatorOfParameter = 84 ;
 	}
+#Wave energy flux magnitude
+'140112' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 112 ;
+	}
+#Wave energy flux mean direction
+'140113' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 113 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 10 to 12 seconds
+'140114' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 114 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 12 to 14 seconds
+'140115' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 115 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 14 to 17 seconds
+'140116' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 116 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 17 to 21 seconds
+'140117' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 117 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 21 to 25 seconds
+'140118' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 118 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 25 to 30 seconds
+'140119' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 119 ;
+	}
 #Significant wave height of all waves with period larger than 10s
 '140120' = {
 	 table2Version = 140 ;
@@ -5419,6 +5459,256 @@
 	 table2Version = 213 ;
 	 indicatorOfParameter = 5 ;
 	}
+#Random pattern 1 for SPP scheme
+'213101' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 101 ;
+	}
+#Random pattern 2 for SPP scheme
+'213102' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 102 ;
+	}
+#Random pattern 3 for SPP scheme
+'213103' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 103 ;
+	}
+#Random pattern 4 for SPP scheme
+'213104' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 104 ;
+	}
+#Random pattern 5 for SPP scheme
+'213105' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 105 ;
+	}
+#Random pattern 6 for SPP scheme
+'213106' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 106 ;
+	}
+#Random pattern 7 for SPP scheme
+'213107' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 107 ;
+	}
+#Random pattern 8 for SPP scheme
+'213108' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 108 ;
+	}
+#Random pattern 9 for SPP scheme
+'213109' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 109 ;
+	}
+#Random pattern 10 for SPP scheme
+'213110' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 110 ;
+	}
+#Random pattern 11 for SPP scheme
+'213111' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 111 ;
+	}
+#Random pattern 12 for SPP scheme
+'213112' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 112 ;
+	}
+#Random pattern 13 for SPP scheme
+'213113' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 113 ;
+	}
+#Random pattern 14 for SPP scheme
+'213114' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 114 ;
+	}
+#Random pattern 15 for SPP scheme
+'213115' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 115 ;
+	}
+#Random pattern 16 for SPP scheme
+'213116' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 116 ;
+	}
+#Random pattern 17 for SPP scheme
+'213117' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 117 ;
+	}
+#Random pattern 18 for SPP scheme
+'213118' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 118 ;
+	}
+#Random pattern 19 for SPP scheme
+'213119' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 119 ;
+	}
+#Random pattern 20 for SPP scheme
+'213120' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 120 ;
+	}
+#Random pattern 21 for SPP scheme
+'213121' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 121 ;
+	}
+#Random pattern 22 for SPP scheme
+'213122' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 122 ;
+	}
+#Random pattern 23 for SPP scheme
+'213123' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 123 ;
+	}
+#Random pattern 24 for SPP scheme
+'213124' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 124 ;
+	}
+#Random pattern 25 for SPP scheme
+'213125' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 125 ;
+	}
+#Random pattern 26 for SPP scheme
+'213126' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 126 ;
+	}
+#Random pattern 27 for SPP scheme
+'213127' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 127 ;
+	}
+#Random pattern 28 for SPP scheme
+'213128' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 128 ;
+	}
+#Random pattern 29 for SPP scheme
+'213129' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 129 ;
+	}
+#Random pattern 30 for SPP scheme
+'213130' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 130 ;
+	}
+#Random pattern 31 for SPP scheme
+'213131' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 131 ;
+	}
+#Random pattern 32 for SPP scheme
+'213132' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 132 ;
+	}
+#Random pattern 33 for SPP scheme
+'213133' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 133 ;
+	}
+#Random pattern 34 for SPP scheme
+'213134' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 134 ;
+	}
+#Random pattern 35 for SPP scheme
+'213135' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 135 ;
+	}
+#Random pattern 36 for SPP scheme
+'213136' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 136 ;
+	}
+#Random pattern 37 for SPP scheme
+'213137' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 137 ;
+	}
+#Random pattern 38 for SPP scheme
+'213138' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 138 ;
+	}
+#Random pattern 39 for SPP scheme
+'213139' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 139 ;
+	}
+#Random pattern 40 for SPP scheme
+'213140' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 140 ;
+	}
+#Random pattern 41 for SPP scheme
+'213141' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 141 ;
+	}
+#Random pattern 42 for SPP scheme
+'213142' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 142 ;
+	}
+#Random pattern 43 for SPP scheme
+'213143' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 143 ;
+	}
+#Random pattern 44 for SPP scheme
+'213144' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 144 ;
+	}
+#Random pattern 45 for SPP scheme
+'213145' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 145 ;
+	}
+#Random pattern 46 for SPP scheme
+'213146' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 146 ;
+	}
+#Random pattern 47 for SPP scheme
+'213147' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 147 ;
+	}
+#Random pattern 48 for SPP scheme
+'213148' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 148 ;
+	}
+#Random pattern 49 for SPP scheme
+'213149' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 149 ;
+	}
+#Random pattern 50 for SPP scheme
+'213150' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 150 ;
+	}
 # Cosine of solar zenith angle
 '214001' = {
 	 table2Version = 214 ;
diff --git a/definitions/grib1/localConcepts/ecmf/shortName.def b/definitions/grib1/localConcepts/ecmf/shortName.def
index ab11242..bae073d 100644
--- a/definitions/grib1/localConcepts/ecmf/shortName.def
+++ b/definitions/grib1/localConcepts/ecmf/shortName.def
@@ -3354,6 +3354,46 @@
 	 table2Version = 140 ;
 	 indicatorOfParameter = 84 ;
 	}
+#Wave energy flux magnitude
+'wefxm' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 112 ;
+	}
+#Wave energy flux mean direction
+'wefxd' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 113 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 10 to 12 seconds
+'h1012' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 114 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 12 to 14 seconds
+'h1214' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 115 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 14 to 17 seconds
+'h1417' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 116 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 17 to 21 seconds
+'h1721' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 117 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 21 to 25 seconds
+'h2125' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 118 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 25 to 30 seconds
+'h2530' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 119 ;
+	}
 #Significant wave height of all waves with period larger than 10s
 'sh10' = {
 	 table2Version = 140 ;
@@ -5419,6 +5459,256 @@
 	 table2Version = 213 ;
 	 indicatorOfParameter = 5 ;
 	}
+#Random pattern 1 for SPP scheme
+'spp1' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 101 ;
+	}
+#Random pattern 2 for SPP scheme
+'spp2' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 102 ;
+	}
+#Random pattern 3 for SPP scheme
+'spp3' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 103 ;
+	}
+#Random pattern 4 for SPP scheme
+'spp4' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 104 ;
+	}
+#Random pattern 5 for SPP scheme
+'spp5' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 105 ;
+	}
+#Random pattern 6 for SPP scheme
+'spp6' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 106 ;
+	}
+#Random pattern 7 for SPP scheme
+'spp7' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 107 ;
+	}
+#Random pattern 8 for SPP scheme
+'spp8' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 108 ;
+	}
+#Random pattern 9 for SPP scheme
+'spp9' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 109 ;
+	}
+#Random pattern 10 for SPP scheme
+'spp10' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 110 ;
+	}
+#Random pattern 11 for SPP scheme
+'spp11' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 111 ;
+	}
+#Random pattern 12 for SPP scheme
+'spp12' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 112 ;
+	}
+#Random pattern 13 for SPP scheme
+'spp13' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 113 ;
+	}
+#Random pattern 14 for SPP scheme
+'spp14' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 114 ;
+	}
+#Random pattern 15 for SPP scheme
+'spp15' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 115 ;
+	}
+#Random pattern 16 for SPP scheme
+'spp16' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 116 ;
+	}
+#Random pattern 17 for SPP scheme
+'spp17' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 117 ;
+	}
+#Random pattern 18 for SPP scheme
+'spp18' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 118 ;
+	}
+#Random pattern 19 for SPP scheme
+'spp19' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 119 ;
+	}
+#Random pattern 20 for SPP scheme
+'spp20' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 120 ;
+	}
+#Random pattern 21 for SPP scheme
+'spp21' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 121 ;
+	}
+#Random pattern 22 for SPP scheme
+'spp22' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 122 ;
+	}
+#Random pattern 23 for SPP scheme
+'spp23' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 123 ;
+	}
+#Random pattern 24 for SPP scheme
+'spp24' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 124 ;
+	}
+#Random pattern 25 for SPP scheme
+'spp25' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 125 ;
+	}
+#Random pattern 26 for SPP scheme
+'spp26' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 126 ;
+	}
+#Random pattern 27 for SPP scheme
+'spp27' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 127 ;
+	}
+#Random pattern 28 for SPP scheme
+'spp28' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 128 ;
+	}
+#Random pattern 29 for SPP scheme
+'spp29' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 129 ;
+	}
+#Random pattern 30 for SPP scheme
+'spp30' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 130 ;
+	}
+#Random pattern 31 for SPP scheme
+'spp31' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 131 ;
+	}
+#Random pattern 32 for SPP scheme
+'spp32' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 132 ;
+	}
+#Random pattern 33 for SPP scheme
+'spp33' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 133 ;
+	}
+#Random pattern 34 for SPP scheme
+'spp34' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 134 ;
+	}
+#Random pattern 35 for SPP scheme
+'spp35' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 135 ;
+	}
+#Random pattern 36 for SPP scheme
+'spp36' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 136 ;
+	}
+#Random pattern 37 for SPP scheme
+'spp37' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 137 ;
+	}
+#Random pattern 38 for SPP scheme
+'spp38' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 138 ;
+	}
+#Random pattern 39 for SPP scheme
+'spp39' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 139 ;
+	}
+#Random pattern 40 for SPP scheme
+'spp40' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 140 ;
+	}
+#Random pattern 41 for SPP scheme
+'spp41' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 141 ;
+	}
+#Random pattern 42 for SPP scheme
+'spp42' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 142 ;
+	}
+#Random pattern 43 for SPP scheme
+'spp43' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 143 ;
+	}
+#Random pattern 44 for SPP scheme
+'spp44' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 144 ;
+	}
+#Random pattern 45 for SPP scheme
+'spp45' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 145 ;
+	}
+#Random pattern 46 for SPP scheme
+'spp46' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 146 ;
+	}
+#Random pattern 47 for SPP scheme
+'spp47' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 147 ;
+	}
+#Random pattern 48 for SPP scheme
+'spp48' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 148 ;
+	}
+#Random pattern 49 for SPP scheme
+'spp49' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 149 ;
+	}
+#Random pattern 50 for SPP scheme
+'spp50' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 150 ;
+	}
 # Cosine of solar zenith angle
 'uvcossza' = {
 	 table2Version = 214 ;
diff --git a/definitions/grib1/localConcepts/ecmf/typeOfLevel.def b/definitions/grib1/localConcepts/ecmf/typeOfLevel.def
old mode 100755
new mode 100644
diff --git a/definitions/grib1/localConcepts/ecmf/units.def b/definitions/grib1/localConcepts/ecmf/units.def
index 738a2c1..f6b8840 100644
--- a/definitions/grib1/localConcepts/ecmf/units.def
+++ b/definitions/grib1/localConcepts/ecmf/units.def
@@ -285,7 +285,7 @@
 	 indicatorOfParameter = 46 ;
 	}
 #Direct solar radiation
-'W m**-2' = {
+'J m**-2' = {
 	 table2Version = 128 ;
 	 indicatorOfParameter = 47 ;
 	}
@@ -3354,6 +3354,46 @@
 	 table2Version = 140 ;
 	 indicatorOfParameter = 84 ;
 	}
+#Wave energy flux magnitude
+'W m**-1' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 112 ;
+	}
+#Wave energy flux mean direction
+'Degree true' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 113 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 10 to 12 seconds
+'m' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 114 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 12 to 14 seconds
+'m' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 115 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 14 to 17 seconds
+'m' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 116 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 17 to 21 seconds
+'m' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 117 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 21 to 25 seconds
+'m' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 118 ;
+	}
+#Significant wave height of all waves with periods within the inclusive range from 25 to 30 seconds
+'m' = {
+	 table2Version = 140 ;
+	 indicatorOfParameter = 119 ;
+	}
 #Significant wave height of all waves with period larger than 10s
 'm' = {
 	 table2Version = 140 ;
@@ -5419,6 +5459,256 @@
 	 table2Version = 213 ;
 	 indicatorOfParameter = 5 ;
 	}
+#Random pattern 1 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 101 ;
+	}
+#Random pattern 2 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 102 ;
+	}
+#Random pattern 3 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 103 ;
+	}
+#Random pattern 4 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 104 ;
+	}
+#Random pattern 5 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 105 ;
+	}
+#Random pattern 6 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 106 ;
+	}
+#Random pattern 7 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 107 ;
+	}
+#Random pattern 8 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 108 ;
+	}
+#Random pattern 9 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 109 ;
+	}
+#Random pattern 10 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 110 ;
+	}
+#Random pattern 11 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 111 ;
+	}
+#Random pattern 12 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 112 ;
+	}
+#Random pattern 13 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 113 ;
+	}
+#Random pattern 14 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 114 ;
+	}
+#Random pattern 15 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 115 ;
+	}
+#Random pattern 16 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 116 ;
+	}
+#Random pattern 17 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 117 ;
+	}
+#Random pattern 18 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 118 ;
+	}
+#Random pattern 19 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 119 ;
+	}
+#Random pattern 20 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 120 ;
+	}
+#Random pattern 21 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 121 ;
+	}
+#Random pattern 22 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 122 ;
+	}
+#Random pattern 23 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 123 ;
+	}
+#Random pattern 24 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 124 ;
+	}
+#Random pattern 25 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 125 ;
+	}
+#Random pattern 26 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 126 ;
+	}
+#Random pattern 27 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 127 ;
+	}
+#Random pattern 28 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 128 ;
+	}
+#Random pattern 29 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 129 ;
+	}
+#Random pattern 30 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 130 ;
+	}
+#Random pattern 31 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 131 ;
+	}
+#Random pattern 32 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 132 ;
+	}
+#Random pattern 33 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 133 ;
+	}
+#Random pattern 34 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 134 ;
+	}
+#Random pattern 35 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 135 ;
+	}
+#Random pattern 36 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 136 ;
+	}
+#Random pattern 37 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 137 ;
+	}
+#Random pattern 38 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 138 ;
+	}
+#Random pattern 39 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 139 ;
+	}
+#Random pattern 40 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 140 ;
+	}
+#Random pattern 41 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 141 ;
+	}
+#Random pattern 42 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 142 ;
+	}
+#Random pattern 43 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 143 ;
+	}
+#Random pattern 44 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 144 ;
+	}
+#Random pattern 45 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 145 ;
+	}
+#Random pattern 46 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 146 ;
+	}
+#Random pattern 47 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 147 ;
+	}
+#Random pattern 48 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 148 ;
+	}
+#Random pattern 49 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 149 ;
+	}
+#Random pattern 50 for SPP scheme
+'dimensionless' = {
+	 table2Version = 213 ;
+	 indicatorOfParameter = 150 ;
+	}
 # Cosine of solar zenith angle
 '~' = {
 	 table2Version = 214 ;
diff --git a/definitions/grib1/localConcepts/edzw/name.def b/definitions/grib1/localConcepts/edzw/name.def
index 9bb9e9b..fe1608b 100755
--- a/definitions/grib1/localConcepts/edzw/name.def
+++ b/definitions/grib1/localConcepts/edzw/name.def
@@ -1,4 +1,4 @@
-# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-06-03 11:40
+# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-08-11 07:00
 #paramId: 500000
 #Pressure (S) (not reduced)
 'Pressure (S) (not reduced)' = {
diff --git a/definitions/grib1/localConcepts/edzw/paramId.def b/definitions/grib1/localConcepts/edzw/paramId.def
index 23fa920..c373f52 100755
--- a/definitions/grib1/localConcepts/edzw/paramId.def
+++ b/definitions/grib1/localConcepts/edzw/paramId.def
@@ -1,4 +1,4 @@
-# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE,do not edit! 2016-06-03 11:40
+# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE,do not edit! 2016-08-11 07:00
 #paramId: 500000
 #Pressure (S) (not reduced)
 '500000' = {
diff --git a/definitions/grib1/localConcepts/edzw/shortName.def b/definitions/grib1/localConcepts/edzw/shortName.def
index 3fc0356..a5a21b8 100755
--- a/definitions/grib1/localConcepts/edzw/shortName.def
+++ b/definitions/grib1/localConcepts/edzw/shortName.def
@@ -1,4 +1,4 @@
-# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-06-03 11:40
+# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-08-11 07:00
 #paramId: 500000
 #Pressure (S) (not reduced)
 'PS' = {
diff --git a/definitions/grib1/localConcepts/edzw/units.def b/definitions/grib1/localConcepts/edzw/units.def
index a35694a..c0ab8cb 100755
--- a/definitions/grib1/localConcepts/edzw/units.def
+++ b/definitions/grib1/localConcepts/edzw/units.def
@@ -1,4 +1,4 @@
-# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-06-03 11:40
+# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-08-11 07:00
 #paramId: 500000
 #Pressure (S) (not reduced)
 'Pa' = {
diff --git a/definitions/grib1/name.def b/definitions/grib1/name.def
index aa119b5..9e7a0b2 100644
--- a/definitions/grib1/name.def
+++ b/definitions/grib1/name.def
@@ -142,11 +142,6 @@
 	 table2Version = 3 ;
 	 indicatorOfParameter = 83 ;
 	}
-#Albedo
-'Albedo' = {
-	 table2Version = 3 ;
-	 indicatorOfParameter = 84 ;
-	}
 #Evaporation
 'Evaporation' = {
 	 table2Version = 3 ;
@@ -843,11 +838,6 @@
 	 table2Version = 2 ;
 	 indicatorOfParameter = 83 ;
 	}
-#Albedo
-'Albedo' = {
-	 table2Version = 2 ;
-	 indicatorOfParameter = 84 ;
-	}
 #Evaporation
 'Evaporation' = {
 	 table2Version = 2 ;
@@ -1529,11 +1519,6 @@
 	 table2Version = 1 ;
 	 indicatorOfParameter = 83 ;
 	}
-#Albedo
-'Albedo' = {
-	 table2Version = 1 ;
-	 indicatorOfParameter = 84 ;
-	}
 #Evaporation
 'Evaporation' = {
 	 table2Version = 1 ;
diff --git a/definitions/grib1/paramId.def b/definitions/grib1/paramId.def
index 5db4caf..ed38711 100644
--- a/definitions/grib1/paramId.def
+++ b/definitions/grib1/paramId.def
@@ -142,11 +142,6 @@
 	 table2Version = 3 ;
 	 indicatorOfParameter = 83 ;
 	}
-#Albedo
-'174' = {
-	 table2Version = 3 ;
-	 indicatorOfParameter = 84 ;
-	}
 #Evaporation
 '182' = {
 	 table2Version = 3 ;
@@ -843,11 +838,6 @@
 	 table2Version = 2 ;
 	 indicatorOfParameter = 83 ;
 	}
-#Albedo
-'174' = {
-	 table2Version = 2 ;
-	 indicatorOfParameter = 84 ;
-	}
 #Evaporation
 '182' = {
 	 table2Version = 2 ;
@@ -1529,11 +1519,6 @@
 	 table2Version = 1 ;
 	 indicatorOfParameter = 83 ;
 	}
-#Albedo
-'174' = {
-	 table2Version = 1 ;
-	 indicatorOfParameter = 84 ;
-	}
 #Evaporation
 '182' = {
 	 table2Version = 1 ;
diff --git a/definitions/grib1/shortName.def b/definitions/grib1/shortName.def
index 6e60178..9e902d6 100644
--- a/definitions/grib1/shortName.def
+++ b/definitions/grib1/shortName.def
@@ -142,11 +142,6 @@
 	 table2Version = 3 ;
 	 indicatorOfParameter = 83 ;
 	}
-#Albedo
-'al' = {
-	 table2Version = 3 ;
-	 indicatorOfParameter = 84 ;
-	}
 #Evaporation
 'e' = {
 	 table2Version = 3 ;
@@ -843,11 +838,6 @@
 	 table2Version = 2 ;
 	 indicatorOfParameter = 83 ;
 	}
-#Albedo
-'al' = {
-	 table2Version = 2 ;
-	 indicatorOfParameter = 84 ;
-	}
 #Evaporation
 'e' = {
 	 table2Version = 2 ;
@@ -1529,11 +1519,6 @@
 	 table2Version = 1 ;
 	 indicatorOfParameter = 83 ;
 	}
-#Albedo
-'al' = {
-	 table2Version = 1 ;
-	 indicatorOfParameter = 84 ;
-	}
 #Evaporation
 'e' = {
 	 table2Version = 1 ;
diff --git a/definitions/grib1/units.def b/definitions/grib1/units.def
index 7bb2a40..4472eec 100644
--- a/definitions/grib1/units.def
+++ b/definitions/grib1/units.def
@@ -142,11 +142,6 @@
 	 table2Version = 3 ;
 	 indicatorOfParameter = 83 ;
 	}
-#Albedo
-'(0 - 1)' = {
-	 table2Version = 3 ;
-	 indicatorOfParameter = 84 ;
-	}
 #Evaporation
 'm of water equivalent' = {
 	 table2Version = 3 ;
@@ -843,11 +838,6 @@
 	 table2Version = 2 ;
 	 indicatorOfParameter = 83 ;
 	}
-#Albedo
-'(0 - 1)' = {
-	 table2Version = 2 ;
-	 indicatorOfParameter = 84 ;
-	}
 #Evaporation
 'm of water equivalent' = {
 	 table2Version = 2 ;
@@ -1529,11 +1519,6 @@
 	 table2Version = 1 ;
 	 indicatorOfParameter = 83 ;
 	}
-#Albedo
-'(0 - 1)' = {
-	 table2Version = 1 ;
-	 indicatorOfParameter = 84 ;
-	}
 #Evaporation
 'm of water equivalent' = {
 	 table2Version = 1 ;
diff --git a/definitions/grib2/cfName.def b/definitions/grib2/cfName.def
index 08a610c..75ddf02 100644
--- a/definitions/grib2/cfName.def
+++ b/definitions/grib2/cfName.def
@@ -49,7 +49,7 @@
 	 parameterCategory = 2 ;
 	}
 #Boundary layer dissipation
-'dissipation_in_atmosphere_boundary_layer' = {
+'kinetic_energy_dissipation_in_atmosphere_boundary_layer' = {
 	 discipline = 0 ;
 	 parameterNumber = 20 ;
 	 parameterCategory = 2 ;
diff --git a/definitions/grib2/localConcepts/ecmf/cfName.def b/definitions/grib2/localConcepts/ecmf/cfName.def
index 7b670f3..1487e83 100644
--- a/definitions/grib2/localConcepts/ecmf/cfName.def
+++ b/definitions/grib2/localConcepts/ecmf/cfName.def
@@ -26,7 +26,7 @@
 	 unitsFactor = 1000 ;
 	}
 #Boundary layer dissipation
-'dissipation_in_atmosphere_boundary_layer' = {
+'kinetic_energy_dissipation_in_atmosphere_boundary_layer' = {
 	 discipline = 0 ;
 	 parameterNumber = 20 ;
 	 parameterCategory = 2 ;
@@ -50,7 +50,7 @@
 	 parameterCategory = 0 ;
 }
 #Total column water vapour
-'lwe_thickness_of_atmosphere_water_vapor_content' = {
+'lwe_thickness_of_atmosphere_mass_content_of_water_vapor' = {
 	 discipline = 192 ;
 	 parameterCategory = 128 ;
 	 parameterNumber = 137 ;
@@ -74,7 +74,7 @@
 	 parameterNumber = 11 ;
 	}
 #Large-scale precipitation
-'lwe_thickness_of_large_scale_precipitation_amount' = {
+'lwe_thickness_of_stratiform_precipitation_amount' = {
 	 discipline = 192 ;
 	 parameterCategory = 128 ;
 	 parameterNumber = 142 ;
@@ -140,7 +140,7 @@
 	 parameterNumber = 211 ;
 	}
 #Temperature of snow layer
-'snow_temperature' = {
+'temperature_in_surface_snow' = {
 	 discipline = 192 ;
 	 parameterCategory = 128 ;
 	 parameterNumber = 238 ;
diff --git a/definitions/grib2/localConcepts/ecmf/units.def b/definitions/grib2/localConcepts/ecmf/units.def
index 25665b3..050f224 100644
--- a/definitions/grib2/localConcepts/ecmf/units.def
+++ b/definitions/grib2/localConcepts/ecmf/units.def
@@ -282,7 +282,7 @@
 	 parameterNumber = 46 ;
 	}
 #Direct solar radiation
-'W m**-2' = {
+'J m**-2' = {
 	 discipline = 192 ;
 	 parameterCategory = 128 ;
 	 parameterNumber = 47 ;
diff --git a/definitions/grib2/localConcepts/edzw/name.def b/definitions/grib2/localConcepts/edzw/name.def
index 0e26f67..49723fd 100755
--- a/definitions/grib2/localConcepts/edzw/name.def
+++ b/definitions/grib2/localConcepts/edzw/name.def
@@ -1,4 +1,4 @@
-# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-06-03 11:40
+# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-08-11 07:00
 #paramId: 500000
 #Pressure (S) (not reduced)
 'Pressure (S) (not reduced)' = {
@@ -11411,3 +11411,11 @@
 	 parameterNumber = 197 ;
 	}
 
+#paramId: 503292
+#sea ice albedo - diffusive solar (0.3 - 5.0 m-6)
+'sea ice albedo - diffusive solar (0.3 - 5.0 m-6) ' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 234 ;
+	}
+
diff --git a/definitions/grib2/localConcepts/edzw/paramId.def b/definitions/grib2/localConcepts/edzw/paramId.def
index d76ff24..51b5ff4 100755
--- a/definitions/grib2/localConcepts/edzw/paramId.def
+++ b/definitions/grib2/localConcepts/edzw/paramId.def
@@ -1,4 +1,4 @@
-# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-06-03 11:40
+# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-08-11 07:00
 #paramId: 500000
 #Pressure (S) (not reduced)
 '500000' = {
@@ -11950,3 +11950,11 @@
 	 parameterNumber = 197 ;
 	}
 
+#paramId: 503292
+#sea ice albedo - diffusive solar (0.3 - 5.0 m-6)
+'503292' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 234 ;
+	}
+
diff --git a/definitions/grib2/localConcepts/edzw/shortName.def b/definitions/grib2/localConcepts/edzw/shortName.def
index 4312316..540dd41 100755
--- a/definitions/grib2/localConcepts/edzw/shortName.def
+++ b/definitions/grib2/localConcepts/edzw/shortName.def
@@ -1,4 +1,4 @@
-# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-06-03 11:40
+# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-08-11 07:00
 #paramId: 500000
 #Pressure (S) (not reduced)
 'PS' = {
@@ -11411,3 +11411,11 @@
 	 parameterNumber = 197 ;
 	}
 
+#paramId: 503292
+#sea ice albedo - diffusive solar (0.3 - 5.0 m-6)
+'ALB_SEAICE' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 234 ;
+	}
+
diff --git a/definitions/grib2/localConcepts/edzw/units.def b/definitions/grib2/localConcepts/edzw/units.def
index 8dbd96c..c4ac711 100755
--- a/definitions/grib2/localConcepts/edzw/units.def
+++ b/definitions/grib2/localConcepts/edzw/units.def
@@ -1,4 +1,4 @@
-# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-06-03 11:40
+# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER at MIRAKEL.DWD.DE, do not edit! 2016-08-11 07:00
 #paramId: 500000
 #Pressure (S) (not reduced)
 'Pa' = {
@@ -11411,3 +11411,11 @@
 	 parameterNumber = 197 ;
 	}
 
+#paramId: 503292
+#sea ice albedo - diffusive solar (0.3 - 5.0 m-6)
+'%' = {
+	 discipline = 0 ;
+	 parameterCategory = 19 ;
+	 parameterNumber = 234 ;
+	}
+
diff --git a/definitions/grib2/localConcepts/egrr/name.def b/definitions/grib2/localConcepts/egrr/name.def
index 97a67b6..e61e185 100644
--- a/definitions/grib2/localConcepts/egrr/name.def
+++ b/definitions/grib2/localConcepts/egrr/name.def
@@ -1,4 +1,26 @@
 # Automatically generated by ./create_def.pl, do not edit
+#Maximum temperature at 2 metres since previous post-processing
+'Maximum temperature at 2 metres since previous post-processing' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 0 ;
+	 is_uerra = 1 ;
+	 scaledValueOfFirstFixedSurface = 15 ;
+	 scaleFactorOfFirstFixedSurface = 1 ;
+	 typeOfStatisticalProcessing = 2 ;
+	 typeOfFirstFixedSurface = 103 ;
+	}
+#Minimum temperature at 2 metres since previous post-processing
+'Minimum temperature at 2 metres since previous post-processing' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 0 ;
+	 scaledValueOfFirstFixedSurface = 15 ;
+	 scaleFactorOfFirstFixedSurface = 1 ;
+	 typeOfStatisticalProcessing = 3 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 is_uerra = 1 ;
+	}
 #Maximum temperature at 2 metres in the last 6 hours
 'Maximum temperature at 2 metres in the last 6 hours' = {
 	 discipline = 0 ;
@@ -41,3 +63,12 @@
 	 scaleFactorOfFirstFixedSurface = 1 ;
 	 scaledValueOfFirstFixedSurface = 15 ;
 	}
+#Surface air relative humidity
+'Surface air relative humidity' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 1 ;
+	 scaledValueOfFirstFixedSurface = 15 ;
+	 scaleFactorOfFirstFixedSurface = 1 ;
+	 typeOfFirstFixedSurface = 103 ;
+	}
diff --git a/definitions/grib2/localConcepts/egrr/paramId.def b/definitions/grib2/localConcepts/egrr/paramId.def
index fc84a5e..8d0d492 100644
--- a/definitions/grib2/localConcepts/egrr/paramId.def
+++ b/definitions/grib2/localConcepts/egrr/paramId.def
@@ -1,4 +1,26 @@
 # Automatically generated by ./create_def.pl, do not edit
+#Maximum temperature at 2 metres since previous post-processing
+'201' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 0 ;
+	 scaledValueOfFirstFixedSurface = 15 ;
+	 typeOfStatisticalProcessing = 2 ;
+	 is_uerra = 1 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 1 ;
+	}
+#Minimum temperature at 2 metres since previous post-processing
+'202' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 0 ;
+	 is_uerra = 1 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 1 ;
+	 scaledValueOfFirstFixedSurface = 15 ;
+	 typeOfStatisticalProcessing = 3 ;
+	}
 #Maximum temperature at 2 metres in the last 6 hours
 '121' = {
 	 discipline = 0 ;
@@ -41,3 +63,12 @@
 	 scaleFactorOfFirstFixedSurface = 1 ;
 	 scaledValueOfFirstFixedSurface = 15 ;
 	}
+#Surface air relative humidity
+'260242' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 1 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaledValueOfFirstFixedSurface = 15 ;
+	 scaleFactorOfFirstFixedSurface = 1 ;
+	}
diff --git a/definitions/grib2/localConcepts/egrr/shortName.def b/definitions/grib2/localConcepts/egrr/shortName.def
index f6c54f7..82a54ee 100644
--- a/definitions/grib2/localConcepts/egrr/shortName.def
+++ b/definitions/grib2/localConcepts/egrr/shortName.def
@@ -1,4 +1,26 @@
 # Automatically generated by ./create_def.pl, do not edit
+#Maximum temperature at 2 metres since previous post-processing
+'mx2t' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 0 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 1 ;
+	 scaledValueOfFirstFixedSurface = 15 ;
+	 typeOfStatisticalProcessing = 2 ;
+	 is_uerra = 1 ;
+	}
+#Minimum temperature at 2 metres since previous post-processing
+'mn2t' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 0 ;
+	 typeOfStatisticalProcessing = 3 ;
+	 is_uerra = 1 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaleFactorOfFirstFixedSurface = 1 ;
+	 scaledValueOfFirstFixedSurface = 15 ;
+	}
 #Maximum temperature at 2 metres in the last 6 hours
 'mx2t6' = {
 	 discipline = 0 ;
@@ -41,3 +63,12 @@
 	 scaleFactorOfFirstFixedSurface = 1 ;
 	 scaledValueOfFirstFixedSurface = 15 ;
 	}
+#Surface air relative humidity
+'2r' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 1 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 scaledValueOfFirstFixedSurface = 15 ;
+	 scaleFactorOfFirstFixedSurface = 1 ;
+	}
diff --git a/definitions/grib2/localConcepts/egrr/units.def b/definitions/grib2/localConcepts/egrr/units.def
index 31652c4..ee4c1a8 100644
--- a/definitions/grib2/localConcepts/egrr/units.def
+++ b/definitions/grib2/localConcepts/egrr/units.def
@@ -1,4 +1,26 @@
 # Automatically generated by ./create_def.pl, do not edit
+#Maximum temperature at 2 metres since previous post-processing
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 0 ;
+	 is_uerra = 1 ;
+	 scaledValueOfFirstFixedSurface = 15 ;
+	 scaleFactorOfFirstFixedSurface = 1 ;
+	 typeOfStatisticalProcessing = 2 ;
+	 typeOfFirstFixedSurface = 103 ;
+	}
+#Minimum temperature at 2 metres since previous post-processing
+'K' = {
+	 discipline = 0 ;
+	 parameterCategory = 0 ;
+	 parameterNumber = 0 ;
+	 scaledValueOfFirstFixedSurface = 15 ;
+	 scaleFactorOfFirstFixedSurface = 1 ;
+	 typeOfStatisticalProcessing = 3 ;
+	 typeOfFirstFixedSurface = 103 ;
+	 is_uerra = 1 ;
+	}
 #Maximum temperature at 2 metres in the last 6 hours
 'K' = {
 	 discipline = 0 ;
@@ -41,3 +63,12 @@
 	 scaleFactorOfFirstFixedSurface = 1 ;
 	 scaledValueOfFirstFixedSurface = 15 ;
 	}
+#Surface air relative humidity
+'%' = {
+	 discipline = 0 ;
+	 parameterCategory = 1 ;
+	 parameterNumber = 1 ;
+	 scaledValueOfFirstFixedSurface = 15 ;
+	 scaleFactorOfFirstFixedSurface = 1 ;
+	 typeOfFirstFixedSurface = 103 ;
+	}
diff --git a/definitions/grib2/products_uerra.def b/definitions/grib2/products_uerra.def
index 8f64a3a..5fb37c3 100644
--- a/definitions/grib2/products_uerra.def
+++ b/definitions/grib2/products_uerra.def
@@ -41,14 +41,6 @@ alias mars.class  = marsClass;
 alias mars.param = paramId;
 alias mars.origin = centre;
 
-# Tigge-LAM rules
-if (section2Used == 1) {
-    constant marsLamModel = 'lam';
-    alias mars.model = marsLamModel;    # model redefined. It is not 'glob'
-    alias mars.origin = tiggeSuiteID;   # origin is the suiteName for Tigge-LAM
-    unalias mars.domain;                # No mars domain needed
-}
-
 # See GRIB-911 re typeOfProcessedData values in UERRA
 concept marsType {
 
diff --git a/definitions/grib2/sections.def b/definitions/grib2/sections.def
index 6858e0d..fd40883 100644
--- a/definitions/grib2/sections.def
+++ b/definitions/grib2/sections.def
@@ -41,9 +41,9 @@
    }
 
    # Used to mark end of headers. Can be accessed with grib_get_offset()
-   position   endOfHeadersMaker;
+   position   endOfHeadersMarker;
 
-   meta lengthOfHeaders evaluate( endOfHeadersMaker-startOfHeaders);
+   meta lengthOfHeaders evaluate( endOfHeadersMarker-startOfHeaders);
    meta md5Headers md5(startOfHeaders,lengthOfHeaders);
 
    lookup[1]    sectionNumber(4) ;
diff --git a/definitions/grib2/tables/15/4.5.table b/definitions/grib2/tables/15/4.5.table
index ccd3251..8a184f4 100644
--- a/definitions/grib2/tables/15/4.5.table
+++ b/definitions/grib2/tables/15/4.5.table
@@ -50,7 +50,7 @@
 174 174 Top surface of ice on sea, lake or river 
 175 175 Top surface of ice, under snow cover, on sea, lake or river 
 176 176 Bottom surface (underside) ice on sea, lake or river 
-177 177 Deep soil (of indefinite depth) 
+177 sfc Deep soil (of indefinite depth) 
 178 178 Reserved 
 179 179 Top surface of glacier ice and inland ice 
 180 180 Deep inland or glacier ice (of indefinite depth) 
diff --git a/definitions/grib2/tables/16/4.5.table b/definitions/grib2/tables/16/4.5.table
index 25aeff0..9cabf1f 100644
--- a/definitions/grib2/tables/16/4.5.table
+++ b/definitions/grib2/tables/16/4.5.table
@@ -49,7 +49,7 @@
 174 174 Top surface of ice on sea, lake or river 
 175 175 Top surface of ice, under snow cover, on sea, lake or river 
 176 176 Bottom surface (underside) ice on sea, lake or river 
-177 177 Deep soil (of indefinite depth) 
+177 sfc Deep soil (of indefinite depth) 
 178 178 Reserved 
 179 179 Top surface of glacier ice and inland ice 
 180 180 Deep inland or glacier ice (of indefinite depth) 
diff --git a/definitions/grib2/tables/17/4.225.table b/definitions/grib2/tables/17/4.225.table
index 9d933fd..537f110 100644
--- a/definitions/grib2/tables/17/4.225.table
+++ b/definitions/grib2/tables/17/4.225.table
@@ -1,4 +1,4 @@
-# Code table 4.225 - Weather (see FM 94 BUFR/FM 95 CREX Code table 0 20 003 - Present weather) 
+# Code table 4.225 - Weather (see FM 94 BUFR/FM 95 CREX Code table 0 20 003 - Present weather)
 00 00 Cloud development not observed or not observable
 01 01 Clouds generally dissolving or becoming less developed
 02 02 State of sky on the whole unchanged
diff --git a/definitions/grib2/tables/17/4.5.table b/definitions/grib2/tables/17/4.5.table
index 357c15e..1387725 100644
--- a/definitions/grib2/tables/17/4.5.table
+++ b/definitions/grib2/tables/17/4.5.table
@@ -40,7 +40,7 @@
 119 hpl Hybrid pressure level (-)
 # 120-149 Reserved 
 150 150 Generalized vertical height coordinate 
-151 151 Soil level (Numeric)
+151 sol Soil level (Numeric)
 # 152-159 Reserved 
 160 160 Depth below sea level (m)
 161 161 Depth below water surface (m)
@@ -54,7 +54,7 @@
 174 174 Top surface of ice on sea, lake or river
 175 175 Top surface of ice, under snow cover, on sea, lake or river
 176 176 Bottom surface (underside) ice on sea, lake or river
-177 177 Deep soil (of indefinite depth)
+177 sfc Deep soil (of indefinite depth)
 178 178 Reserved
 179 179 Top surface of glacier ice and inland ice
 180 180 Deep inland or glacier ice (of indefinite depth)
diff --git a/definitions/grib2/template.4.parameter_aerosol_optical.def b/definitions/grib2/template.4.parameter_aerosol_optical.def
index 7b257ac..8ef09ad 100644
--- a/definitions/grib2/template.4.parameter_aerosol_optical.def
+++ b/definitions/grib2/template.4.parameter_aerosol_optical.def
@@ -29,7 +29,7 @@ signed[1] scaleFactorOfSecondSize = missing() : can_be_missing,dump;
 signed[4] scaledValueOfSecondSize = missing() : can_be_missing,dump;
 
 codetable[1] typeOfWavelengthInterval ('4.91.table',masterDir,localDir) : dump;
-alias typeOfIntervalForFirstAndSecondWavelength=typeOfSizeInterval;
+alias typeOfIntervalForFirstAndSecondWavelength=typeOfWavelengthInterval;
 
 # wavelengths in metres
 signed[1] scaleFactorOfFirstWavelength : dump;
diff --git a/definitions/grib2/template.5.42.def b/definitions/grib2/template.5.42.def
index 21bcb3e..22d4998 100644
--- a/definitions/grib2/template.5.42.def
+++ b/definitions/grib2/template.5.42.def
@@ -15,7 +15,12 @@ include "grib2/template.5.original_values.def";
 unsigned[1] ccsdsFlags : dump;
 
 flagbit AEC_DATA_SIGNED_OPTION_MASK(ccsdsFlags,0)     = 0;
-flagbit AEC_DATA_3BYTE_OPTION_MASK(ccsdsFlags,1)      = 0;
+
+# AEC_DATA_3BYTE_OPTION_MASK was switched on in order to allow data stored
+# with 17 <=bitsPerValue<= 24 to be stored in 3 rather than 4 bytes.
+# This eliminates discretization errors that were occuring when it was off.
+flagbit AEC_DATA_3BYTE_OPTION_MASK(ccsdsFlags,1)      = 1;
+
 flagbit AEC_DATA_MSB_OPTION_MASK(ccsdsFlags,2)        = 1;
 flagbit AEC_DATA_PREPROCESS_OPTION_MASK(ccsdsFlags,3) = 1;
 flagbit AEC_RESTRICTED_OPTION_MASK(ccsdsFlags,4)      = 0;
diff --git a/definitions/gts/boot.def b/definitions/gts/boot.def
index d91bf8b..dafdce2 100644
--- a/definitions/gts/boot.def
+++ b/definitions/gts/boot.def
@@ -9,7 +9,7 @@
 
 position startOfHeaders;
 
-ascii[4] SOH : hidden         ;
+ascii[4] SOH : hidden;
 ascii[3] nnn : dump;
 ascii[3] crcrlf : hidden;
 ascii[2] TT : dump;
@@ -22,12 +22,12 @@ ascii[2] YY : dump;
 ascii[2] GG : dump;
 ascii[2] gg : dump;
 
-lookup[2] lBB (29,BB) ; 
+lookup[2] lBB (29,BB);
 if (lBB is 'RR' || lBB is 'CC' || lBB is 'AA' ) {
-	ascii[1] sp3 : hidden;
-	ascii[3] BBB : dump;
+    ascii[1] sp3 : hidden;
+    ascii[3] BBB : dump;
 } else {
-	constant BBB="NNN";
+    constant BBB="NNN";
 }
 alias ls.BBB=BBB;
 
@@ -39,15 +39,14 @@ alias ls.CCCC=CCCC;
 alias ls.YY=YY;
 alias ls.GG=GG;
 alias ls.gg=gg;
-position   endOfHeadersMaker;
+position   endOfHeadersMarker;
 
 message[4] theMessage;
 
-meta lengthOfHeaders evaluate( endOfHeadersMaker-startOfHeaders);
+meta lengthOfHeaders evaluate( endOfHeadersMarker-startOfHeaders);
 meta md5Headers md5(startOfHeaders,lengthOfHeaders);
 
-ascii[4]  endMark  ;
+ascii[4]  endMark;
 position totalLength; 
 alias ls.totalLength=totalLength;
 
-
diff --git a/definitions/mars/grib.moda.fc.def b/definitions/mars/grib.edmm.4v.def
similarity index 55%
copy from definitions/mars/grib.moda.fc.def
copy to definitions/mars/grib.edmm.4v.def
index 1a53683..a67edbf 100644
--- a/definitions/mars/grib.moda.fc.def
+++ b/definitions/mars/grib.edmm.4v.def
@@ -1,13 +1,6 @@
 # assert(local=1)
-
 meta verificationDate        g1verificationdate(dataDate, dataTime, endStep) : read_only;
 meta monthlyVerificationDate g1monthlydate(verificationDate) : dump,no_copy;
 alias mars.date            = monthlyVerificationDate;
-alias mars.step            = startStep;
 
-# class 3 is "er" which is 15 year re-analysis (ERA15)
-# Only ERA15 has time and step
-if(class != 3) {
-    unalias mars.time;
-    unalias mars.step;
-}
+alias mars.number=perturbationNumber;
diff --git a/definitions/mars/grib.edmo.4v.def b/definitions/mars/grib.edmo.4v.def
new file mode 100644
index 0000000..74b72a8
--- /dev/null
+++ b/definitions/mars/grib.edmo.4v.def
@@ -0,0 +1,9 @@
+# assert(local=1)
+meta  verificationDate       g1verificationdate(dataDate, dataTime, endStep) : read_only;
+meta monthlyVerificationDate g1monthlydate(verificationDate) : dump,no_copy;
+alias mars.date            = monthlyVerificationDate;
+
+unalias mars.time;
+unalias mars.step;
+
+alias mars.number=perturbationNumber;
diff --git a/definitions/mars/grib.moda.fc.def b/definitions/mars/grib.mnth.4v.def
similarity index 55%
copy from definitions/mars/grib.moda.fc.def
copy to definitions/mars/grib.mnth.4v.def
index 1a53683..2c0567b 100644
--- a/definitions/mars/grib.moda.fc.def
+++ b/definitions/mars/grib.mnth.4v.def
@@ -1,13 +1,4 @@
 # assert(local=1)
-
 meta verificationDate        g1verificationdate(dataDate, dataTime, endStep) : read_only;
 meta monthlyVerificationDate g1monthlydate(verificationDate) : dump,no_copy;
 alias mars.date            = monthlyVerificationDate;
-alias mars.step            = startStep;
-
-# class 3 is "er" which is 15 year re-analysis (ERA15)
-# Only ERA15 has time and step
-if(class != 3) {
-    unalias mars.time;
-    unalias mars.step;
-}
diff --git a/definitions/mars/grib.moda.fc.def b/definitions/mars/grib.moda.4v.def
similarity index 55%
copy from definitions/mars/grib.moda.fc.def
copy to definitions/mars/grib.moda.4v.def
index 1a53683..dd11a59 100644
--- a/definitions/mars/grib.moda.fc.def
+++ b/definitions/mars/grib.moda.4v.def
@@ -1,13 +1,7 @@
 # assert(local=1)
-
 meta verificationDate        g1verificationdate(dataDate, dataTime, endStep) : read_only;
 meta monthlyVerificationDate g1monthlydate(verificationDate) : dump,no_copy;
 alias mars.date            = monthlyVerificationDate;
-alias mars.step            = startStep;
 
-# class 3 is "er" which is 15 year re-analysis (ERA15)
-# Only ERA15 has time and step
-if(class != 3) {
-    unalias mars.time;
-    unalias mars.step;
-}
+unalias mars.time;
+unalias mars.step;
diff --git a/definitions/mars/grib.moda.fc.def b/definitions/mars/grib.moda.fc.def
index 1a53683..5c38769 100644
--- a/definitions/mars/grib.moda.fc.def
+++ b/definitions/mars/grib.moda.fc.def
@@ -3,7 +3,6 @@
 meta verificationDate        g1verificationdate(dataDate, dataTime, endStep) : read_only;
 meta monthlyVerificationDate g1monthlydate(verificationDate) : dump,no_copy;
 alias mars.date            = monthlyVerificationDate;
-alias mars.step            = startStep;
 
 # class 3 is "er" which is 15 year re-analysis (ERA15)
 # Only ERA15 has time and step
diff --git a/definitions/metar/cccc.def b/definitions/metar/cccc.def
index 1701a05..6cc426f 100644
--- a/definitions/metar/cccc.def
+++ b/definitions/metar/cccc.def
@@ -1,15 +1,15 @@
     rename(g,CCCC);
-    modify CCCC : dump,json,xml;
+    modify CCCC : dump;
     group g : dump ; non_alpha na;
     if (is_in_dict(CCCC,"metar/nsd_cccc.txt")) {
         constant coordinatesPresent=one : dump;
         latitudeSexagesimal=dict_search("metar/nsd_cccc.txt",CCCC,7) : string_type,hidden ;
         longitudeSexagesimal=dict_search("metar/nsd_cccc.txt",CCCC,8) : string_type,hidden ;
-        latitude = sexagesimal2decimal(latitudeSexagesimal) : dump,json;
-        longitude = sexagesimal2decimal(longitudeSexagesimal) : dump,json;
-        elevation=dict_search("metar/nsd_cccc.txt",CCCC,11) : dump,json ;
-        name=dict_search("metar/nsd_cccc.txt",CCCC,3) : string_type,dump,json ;
-        country=dict_search("metar/nsd_cccc.txt",CCCC,5) : string_type,dump,json ;
+        latitude = sexagesimal2decimal(latitudeSexagesimal) : dump;
+        longitude = sexagesimal2decimal(longitudeSexagesimal) : dump;
+        elevation=dict_search("metar/nsd_cccc.txt",CCCC,11) : dump ;
+        name=dict_search("metar/nsd_cccc.txt",CCCC,3) : string_type,dump ;
+        country=dict_search("metar/nsd_cccc.txt",CCCC,5) : string_type,dump ;
     } else {
         constant coordinatesPresent=zero : dump;
     }
diff --git a/definitions/parameters_version.def b/definitions/parameters_version.def
index a301ba8..3bc23be 100644
--- a/definitions/parameters_version.def
+++ b/definitions/parameters_version.def
@@ -1 +1 @@
-transient parametersVersion=1;
+transient parametersVersion=1 :hidden;
diff --git a/definitions/taf/cccc.def b/definitions/taf/cccc.def
index 10bc07a..7cf3b49 100644
--- a/definitions/taf/cccc.def
+++ b/definitions/taf/cccc.def
@@ -1,15 +1,15 @@
     rename(g,CCCC);
-		modify CCCC : dump,json,xml;
+		modify CCCC : dump;
     group g : dump ; non_alpha na;
     if (is_in_dict(CCCC,"metar/nsd_cccc.txt")) {
         constant coordinatesPresent=one : dump;
         latitudeSexagesimal=dict_search("metar/nsd_cccc.txt",CCCC,7) : string_type,hidden ;
         longitudeSexagesimal=dict_search("metar/nsd_cccc.txt",CCCC,8) : string_type,hidden ;
-				latitude = sexagesimal2decimal(latitudeSexagesimal) : dump,json;
-				longitude = sexagesimal2decimal(longitudeSexagesimal) : dump,json;
-        elevation=dict_search("metar/nsd_cccc.txt",CCCC,11) : dump,json ;
-        name=dict_search("metar/nsd_cccc.txt",CCCC,3) : string_type,dump,json ;
-        country=dict_search("metar/nsd_cccc.txt",CCCC,5) : string_type,dump,json ;
+				latitude = sexagesimal2decimal(latitudeSexagesimal) : dump;
+				longitude = sexagesimal2decimal(longitudeSexagesimal) : dump;
+        elevation=dict_search("metar/nsd_cccc.txt",CCCC,11) : dump ;
+        name=dict_search("metar/nsd_cccc.txt",CCCC,3) : string_type,dump ;
+        country=dict_search("metar/nsd_cccc.txt",CCCC,5) : string_type,dump ;
     } else {
         constant coordinatesPresent=zero : dump;
     }
diff --git a/definitions/tide/boot.def b/definitions/tide/boot.def
index e795d8a..dde71f2 100644
--- a/definitions/tide/boot.def
+++ b/definitions/tide/boot.def
@@ -8,21 +8,20 @@
 #
 
 position startOfHeaders;
-ascii[4] identifier               ;
+ascii[4] identifier;
 
 alias ls.identifier=identifier;
 transient missingValue   = 9999;
 constant  ieeeFloats   = 0;
-template  section1 "tide/section.1.def"        ;
-template  mars     "tide/mars_labeling.def"    ;
+template  section1 "tide/section.1.def";
+template  mars     "tide/mars_labeling.def";
 
 # Used to mark end of headers. Can be accessed with grib_get_offset()
-position   endOfHeadersMaker;
-meta lengthOfHeaders evaluate( endOfHeadersMaker-startOfHeaders);
+position   endOfHeadersMarker;
+meta lengthOfHeaders evaluate( endOfHeadersMarker-startOfHeaders);
 meta md5Headers md5(startOfHeaders,lengthOfHeaders);
 
+template  section4 "tide/section.4.def";
+ascii[4]  endMark;
 
-template  section4 "tide/section.4.def"        ;
-ascii[4]  endMark  ;
-
-position   totalLength; 
+position   totalLength;
diff --git a/definitions/wrap/boot.def b/definitions/wrap/boot.def
index 80e45a2..d6364ba 100644
--- a/definitions/wrap/boot.def
+++ b/definitions/wrap/boot.def
@@ -17,9 +17,9 @@ uint8    spare;
 
 template  metadata "wrap/metadata.[version].def";
 
-position   endOfHeadersMaker;
+position   endOfHeadersMarker;
 
-constant dataLength = (totalLength - endOfHeadersMaker - 4);
+constant dataLength = (totalLength - endOfHeadersMarker - 4);
 blob data[dataLength]  : dump;
 
 ascii[4]  endMark = `7777`  : dump;
diff --git a/examples/C/Makefile.in b/examples/C/Makefile.in
deleted file mode 100644
index 0cdb62a..0000000
--- a/examples/C/Makefile.in
+++ /dev/null
@@ -1,1701 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-noinst_PROGRAMS = c_grib_nearest$(EXEEXT) c_grib_set_bitmap$(EXEEXT) \
-	c_grib_iterator$(EXEEXT) c_grib_get_keys$(EXEEXT) \
-	c_grib_print_data$(EXEEXT) c_grib_set_keys$(EXEEXT) \
-	c_set_missing$(EXEEXT) c_grib_keys_iterator$(EXEEXT) \
-	c_grib_set_data$(EXEEXT) c_grib_index$(EXEEXT) \
-	c_mars_param$(EXEEXT) c_values_check$(EXEEXT) c_box$(EXEEXT) \
-	c_grib_multi$(EXEEXT) c_multi2$(EXEEXT) \
-	c_grib_multi_write$(EXEEXT) c_grib_precision$(EXEEXT) \
-	c_grib_set_pv$(EXEEXT) c_grib_list$(EXEEXT) \
-	c_sections_copy$(EXEEXT) c_large_grib1$(EXEEXT) \
-	c_grib_get_data$(EXEEXT) c_grib_iterator_bitmap$(EXEEXT) \
-	c_grib_clone$(EXEEXT) c_new_sample$(EXEEXT) \
-	c_grib_ensemble_index$(EXEEXT) c_points$(EXEEXT) \
-	c_bufr_attributes$(EXEEXT) c_bufr_clone$(EXEEXT) \
-	c_bufr_expanded$(EXEEXT) c_bufr_get_keys$(EXEEXT) \
-	c_bufr_read_header$(EXEEXT) c_bufr_read_scatterometer$(EXEEXT) \
-	c_bufr_read_synop$(EXEEXT) c_bufr_get_keys$(EXEEXT) \
-	c_bufr_subset$(EXEEXT) c_bufr_keys_iterator$(EXEEXT) \
-	c_bufr_set_keys$(EXEEXT) c_bufr_missing$(EXEEXT) \
-	c_bufr_read_temp$(EXEEXT) c_get_product_kind$(EXEEXT)
-subdir = examples/C
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/config/depcomp $(top_srcdir)/config/test-driver
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_c_box_OBJECTS = box.$(OBJEXT)
-c_box_OBJECTS = $(am_c_box_OBJECTS)
-c_box_LDADD = $(LDADD)
-c_box_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-am_c_bufr_attributes_OBJECTS = bufr_attributes.$(OBJEXT)
-c_bufr_attributes_OBJECTS = $(am_c_bufr_attributes_OBJECTS)
-c_bufr_attributes_LDADD = $(LDADD)
-c_bufr_attributes_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_clone_OBJECTS = bufr_clone.$(OBJEXT)
-c_bufr_clone_OBJECTS = $(am_c_bufr_clone_OBJECTS)
-c_bufr_clone_LDADD = $(LDADD)
-c_bufr_clone_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_expanded_OBJECTS = bufr_expanded.$(OBJEXT)
-c_bufr_expanded_OBJECTS = $(am_c_bufr_expanded_OBJECTS)
-c_bufr_expanded_LDADD = $(LDADD)
-c_bufr_expanded_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_get_keys_OBJECTS = bufr_get_keys.$(OBJEXT)
-c_bufr_get_keys_OBJECTS = $(am_c_bufr_get_keys_OBJECTS)
-c_bufr_get_keys_LDADD = $(LDADD)
-c_bufr_get_keys_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_keys_iterator_OBJECTS = bufr_keys_iterator.$(OBJEXT)
-c_bufr_keys_iterator_OBJECTS = $(am_c_bufr_keys_iterator_OBJECTS)
-c_bufr_keys_iterator_LDADD = $(LDADD)
-c_bufr_keys_iterator_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_missing_OBJECTS = bufr_missing.$(OBJEXT)
-c_bufr_missing_OBJECTS = $(am_c_bufr_missing_OBJECTS)
-c_bufr_missing_LDADD = $(LDADD)
-c_bufr_missing_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_read_header_OBJECTS = bufr_read_header.$(OBJEXT)
-c_bufr_read_header_OBJECTS = $(am_c_bufr_read_header_OBJECTS)
-c_bufr_read_header_LDADD = $(LDADD)
-c_bufr_read_header_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_read_scatterometer_OBJECTS =  \
-	bufr_read_scatterometer.$(OBJEXT)
-c_bufr_read_scatterometer_OBJECTS =  \
-	$(am_c_bufr_read_scatterometer_OBJECTS)
-c_bufr_read_scatterometer_LDADD = $(LDADD)
-c_bufr_read_scatterometer_DEPENDENCIES =  \
-	$(top_builddir)/src/libeccodes.la
-am_c_bufr_read_synop_OBJECTS = bufr_read_synop.$(OBJEXT)
-c_bufr_read_synop_OBJECTS = $(am_c_bufr_read_synop_OBJECTS)
-c_bufr_read_synop_LDADD = $(LDADD)
-c_bufr_read_synop_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_read_temp_OBJECTS = bufr_read_temp.$(OBJEXT)
-c_bufr_read_temp_OBJECTS = $(am_c_bufr_read_temp_OBJECTS)
-c_bufr_read_temp_LDADD = $(LDADD)
-c_bufr_read_temp_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_set_keys_OBJECTS = bufr_set_keys.$(OBJEXT)
-c_bufr_set_keys_OBJECTS = $(am_c_bufr_set_keys_OBJECTS)
-c_bufr_set_keys_LDADD = $(LDADD)
-c_bufr_set_keys_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_bufr_subset_OBJECTS = bufr_subset.$(OBJEXT)
-c_bufr_subset_OBJECTS = $(am_c_bufr_subset_OBJECTS)
-c_bufr_subset_LDADD = $(LDADD)
-c_bufr_subset_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_get_product_kind_OBJECTS = get_product_kind.$(OBJEXT)
-c_get_product_kind_OBJECTS = $(am_c_get_product_kind_OBJECTS)
-c_get_product_kind_LDADD = $(LDADD)
-c_get_product_kind_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_clone_OBJECTS = grib_clone.$(OBJEXT)
-c_grib_clone_OBJECTS = $(am_c_grib_clone_OBJECTS)
-c_grib_clone_LDADD = $(LDADD)
-c_grib_clone_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_ensemble_index_OBJECTS = grib_ensemble_index.$(OBJEXT)
-c_grib_ensemble_index_OBJECTS = $(am_c_grib_ensemble_index_OBJECTS)
-c_grib_ensemble_index_LDADD = $(LDADD)
-c_grib_ensemble_index_DEPENDENCIES =  \
-	$(top_builddir)/src/libeccodes.la
-am_c_grib_get_data_OBJECTS = grib_get_data.$(OBJEXT)
-c_grib_get_data_OBJECTS = $(am_c_grib_get_data_OBJECTS)
-c_grib_get_data_LDADD = $(LDADD)
-c_grib_get_data_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_get_keys_OBJECTS = grib_get_keys.$(OBJEXT)
-c_grib_get_keys_OBJECTS = $(am_c_grib_get_keys_OBJECTS)
-c_grib_get_keys_LDADD = $(LDADD)
-c_grib_get_keys_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_index_OBJECTS = grib_index.$(OBJEXT)
-c_grib_index_OBJECTS = $(am_c_grib_index_OBJECTS)
-c_grib_index_LDADD = $(LDADD)
-c_grib_index_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_iterator_OBJECTS = grib_iterator.$(OBJEXT)
-c_grib_iterator_OBJECTS = $(am_c_grib_iterator_OBJECTS)
-c_grib_iterator_LDADD = $(LDADD)
-c_grib_iterator_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_iterator_bitmap_OBJECTS = grib_iterator_bitmap.$(OBJEXT)
-c_grib_iterator_bitmap_OBJECTS = $(am_c_grib_iterator_bitmap_OBJECTS)
-c_grib_iterator_bitmap_LDADD = $(LDADD)
-c_grib_iterator_bitmap_DEPENDENCIES =  \
-	$(top_builddir)/src/libeccodes.la
-am_c_grib_keys_iterator_OBJECTS = grib_keys_iterator.$(OBJEXT)
-c_grib_keys_iterator_OBJECTS = $(am_c_grib_keys_iterator_OBJECTS)
-c_grib_keys_iterator_LDADD = $(LDADD)
-c_grib_keys_iterator_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_list_OBJECTS = grib_list.$(OBJEXT)
-c_grib_list_OBJECTS = $(am_c_grib_list_OBJECTS)
-c_grib_list_LDADD = $(LDADD)
-c_grib_list_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_multi_OBJECTS = grib_multi.$(OBJEXT)
-c_grib_multi_OBJECTS = $(am_c_grib_multi_OBJECTS)
-c_grib_multi_LDADD = $(LDADD)
-c_grib_multi_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_multi_write_OBJECTS = grib_multi_write.$(OBJEXT)
-c_grib_multi_write_OBJECTS = $(am_c_grib_multi_write_OBJECTS)
-c_grib_multi_write_LDADD = $(LDADD)
-c_grib_multi_write_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_nearest_OBJECTS = grib_nearest.$(OBJEXT)
-c_grib_nearest_OBJECTS = $(am_c_grib_nearest_OBJECTS)
-c_grib_nearest_LDADD = $(LDADD)
-c_grib_nearest_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_precision_OBJECTS = grib_precision.$(OBJEXT)
-c_grib_precision_OBJECTS = $(am_c_grib_precision_OBJECTS)
-c_grib_precision_LDADD = $(LDADD)
-c_grib_precision_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_print_data_OBJECTS = grib_print_data.$(OBJEXT)
-c_grib_print_data_OBJECTS = $(am_c_grib_print_data_OBJECTS)
-c_grib_print_data_LDADD = $(LDADD)
-c_grib_print_data_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_set_bitmap_OBJECTS = grib_set_bitmap.$(OBJEXT)
-c_grib_set_bitmap_OBJECTS = $(am_c_grib_set_bitmap_OBJECTS)
-c_grib_set_bitmap_LDADD = $(LDADD)
-c_grib_set_bitmap_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_set_data_OBJECTS = grib_set_data.$(OBJEXT)
-c_grib_set_data_OBJECTS = $(am_c_grib_set_data_OBJECTS)
-c_grib_set_data_LDADD = $(LDADD)
-c_grib_set_data_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_set_keys_OBJECTS = grib_set_keys.$(OBJEXT)
-c_grib_set_keys_OBJECTS = $(am_c_grib_set_keys_OBJECTS)
-c_grib_set_keys_LDADD = $(LDADD)
-c_grib_set_keys_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_grib_set_pv_OBJECTS = grib_set_pv.$(OBJEXT)
-c_grib_set_pv_OBJECTS = $(am_c_grib_set_pv_OBJECTS)
-c_grib_set_pv_LDADD = $(LDADD)
-c_grib_set_pv_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_large_grib1_OBJECTS = large_grib1.$(OBJEXT)
-c_large_grib1_OBJECTS = $(am_c_large_grib1_OBJECTS)
-c_large_grib1_LDADD = $(LDADD)
-c_large_grib1_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_mars_param_OBJECTS = mars_param.$(OBJEXT)
-c_mars_param_OBJECTS = $(am_c_mars_param_OBJECTS)
-c_mars_param_LDADD = $(LDADD)
-c_mars_param_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_multi2_OBJECTS = multi2.$(OBJEXT)
-c_multi2_OBJECTS = $(am_c_multi2_OBJECTS)
-c_multi2_LDADD = $(LDADD)
-c_multi2_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_new_sample_OBJECTS = new_sample.$(OBJEXT)
-c_new_sample_OBJECTS = $(am_c_new_sample_OBJECTS)
-c_new_sample_LDADD = $(LDADD)
-c_new_sample_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_points_OBJECTS = points.$(OBJEXT)
-c_points_OBJECTS = $(am_c_points_OBJECTS)
-c_points_LDADD = $(LDADD)
-c_points_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_sections_copy_OBJECTS = sections_copy.$(OBJEXT)
-c_sections_copy_OBJECTS = $(am_c_sections_copy_OBJECTS)
-c_sections_copy_LDADD = $(LDADD)
-c_sections_copy_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_set_missing_OBJECTS = set_missing.$(OBJEXT)
-c_set_missing_OBJECTS = $(am_c_set_missing_OBJECTS)
-c_set_missing_LDADD = $(LDADD)
-c_set_missing_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_c_values_check_OBJECTS = values_check.$(OBJEXT)
-c_values_check_OBJECTS = $(am_c_values_check_OBJECTS)
-c_values_check_LDADD = $(LDADD)
-c_values_check_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(c_box_SOURCES) $(c_bufr_attributes_SOURCES) \
-	$(c_bufr_clone_SOURCES) $(c_bufr_expanded_SOURCES) \
-	$(c_bufr_get_keys_SOURCES) $(c_bufr_keys_iterator_SOURCES) \
-	$(c_bufr_missing_SOURCES) $(c_bufr_read_header_SOURCES) \
-	$(c_bufr_read_scatterometer_SOURCES) \
-	$(c_bufr_read_synop_SOURCES) $(c_bufr_read_temp_SOURCES) \
-	$(c_bufr_set_keys_SOURCES) $(c_bufr_subset_SOURCES) \
-	$(c_get_product_kind_SOURCES) $(c_grib_clone_SOURCES) \
-	$(c_grib_ensemble_index_SOURCES) $(c_grib_get_data_SOURCES) \
-	$(c_grib_get_keys_SOURCES) $(c_grib_index_SOURCES) \
-	$(c_grib_iterator_SOURCES) $(c_grib_iterator_bitmap_SOURCES) \
-	$(c_grib_keys_iterator_SOURCES) $(c_grib_list_SOURCES) \
-	$(c_grib_multi_SOURCES) $(c_grib_multi_write_SOURCES) \
-	$(c_grib_nearest_SOURCES) $(c_grib_precision_SOURCES) \
-	$(c_grib_print_data_SOURCES) $(c_grib_set_bitmap_SOURCES) \
-	$(c_grib_set_data_SOURCES) $(c_grib_set_keys_SOURCES) \
-	$(c_grib_set_pv_SOURCES) $(c_large_grib1_SOURCES) \
-	$(c_mars_param_SOURCES) $(c_multi2_SOURCES) \
-	$(c_new_sample_SOURCES) $(c_points_SOURCES) \
-	$(c_sections_copy_SOURCES) $(c_set_missing_SOURCES) \
-	$(c_values_check_SOURCES)
-DIST_SOURCES = $(c_box_SOURCES) $(c_bufr_attributes_SOURCES) \
-	$(c_bufr_clone_SOURCES) $(c_bufr_expanded_SOURCES) \
-	$(c_bufr_get_keys_SOURCES) $(c_bufr_keys_iterator_SOURCES) \
-	$(c_bufr_missing_SOURCES) $(c_bufr_read_header_SOURCES) \
-	$(c_bufr_read_scatterometer_SOURCES) \
-	$(c_bufr_read_synop_SOURCES) $(c_bufr_read_temp_SOURCES) \
-	$(c_bufr_set_keys_SOURCES) $(c_bufr_subset_SOURCES) \
-	$(c_get_product_kind_SOURCES) $(c_grib_clone_SOURCES) \
-	$(c_grib_ensemble_index_SOURCES) $(c_grib_get_data_SOURCES) \
-	$(c_grib_get_keys_SOURCES) $(c_grib_index_SOURCES) \
-	$(c_grib_iterator_SOURCES) $(c_grib_iterator_bitmap_SOURCES) \
-	$(c_grib_keys_iterator_SOURCES) $(c_grib_list_SOURCES) \
-	$(c_grib_multi_SOURCES) $(c_grib_multi_write_SOURCES) \
-	$(c_grib_nearest_SOURCES) $(c_grib_precision_SOURCES) \
-	$(c_grib_print_data_SOURCES) $(c_grib_set_bitmap_SOURCES) \
-	$(c_grib_set_data_SOURCES) $(c_grib_set_keys_SOURCES) \
-	$(c_grib_set_pv_SOURCES) $(c_large_grib1_SOURCES) \
-	$(c_mars_param_SOURCES) $(c_multi2_SOURCES) \
-	$(c_new_sample_SOURCES) $(c_points_SOURCES) \
-	$(c_sections_copy_SOURCES) $(c_set_missing_SOURCES) \
-	$(c_values_check_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__tty_colors_dummy = \
-  mgn= red= grn= lgn= blu= brg= std=; \
-  am__color_tests=no
-am__tty_colors = { \
-  $(am__tty_colors_dummy); \
-  if test "X$(AM_COLOR_TESTS)" = Xno; then \
-    am__color_tests=no; \
-  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
-    am__color_tests=yes; \
-  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
-    am__color_tests=yes; \
-  fi; \
-  if test $$am__color_tests = yes; then \
-    red=''; \
-    grn=''; \
-    lgn=''; \
-    blu=''; \
-    mgn=''; \
-    brg=''; \
-    std=''; \
-  fi; \
-}
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__recheck_rx = ^[ 	]*:recheck:[ 	]*
-am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
-am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
-# A command that, given a newline-separated list of test names on the
-# standard input, print the name of the tests that are to be re-run
-# upon "make recheck".
-am__list_recheck_tests = $(AWK) '{ \
-  recheck = 1; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-        { \
-          if ((getline line2 < ($$0 ".log")) < 0) \
-	    recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
-        { \
-          recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
-        { \
-          break; \
-        } \
-    }; \
-  if (recheck) \
-    print $$0; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# A command that, given a newline-separated list of test names on the
-# standard input, create the global log from their .trs and .log files.
-am__create_global_log = $(AWK) ' \
-function fatal(msg) \
-{ \
-  print "fatal: making $@: " msg | "cat >&2"; \
-  exit 1; \
-} \
-function rst_section(header) \
-{ \
-  print header; \
-  len = length(header); \
-  for (i = 1; i <= len; i = i + 1) \
-    printf "="; \
-  printf "\n\n"; \
-} \
-{ \
-  copy_in_global_log = 1; \
-  global_test_result = "RUN"; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-         fatal("failed to read from " $$0 ".trs"); \
-      if (line ~ /$(am__global_test_result_rx)/) \
-        { \
-          sub("$(am__global_test_result_rx)", "", line); \
-          sub("[ 	]*$$", "", line); \
-          global_test_result = line; \
-        } \
-      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
-        copy_in_global_log = 0; \
-    }; \
-  if (copy_in_global_log) \
-    { \
-      rst_section(global_test_result ": " $$0); \
-      while ((rc = (getline line < ($$0 ".log"))) != 0) \
-      { \
-        if (rc < 0) \
-          fatal("failed to read from " $$0 ".log"); \
-        print line; \
-      }; \
-      printf "\n"; \
-    }; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# Restructured Text title.
-am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-# Solaris 10 'make', and several other traditional 'make' implementations,
-# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
-# by disabling -e (using the XSI extension "set +e") if it's set.
-am__sh_e_setup = case $$- in *e*) set +e;; esac
-# Default flags passed to test drivers.
-am__common_driver_flags = \
-  --color-tests "$$am__color_tests" \
-  --enable-hard-errors "$$am__enable_hard_errors" \
-  --expect-failure "$$am__expect_failure"
-# To be inserted before the command running the test.  Creates the
-# directory for the log if needed.  Stores in $dir the directory
-# containing $f, in $tst the test, in $log the log.  Executes the
-# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
-# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
-# will run the test scripts (or their associated LOG_COMPILER, if
-# thy have one).
-am__check_pre = \
-$(am__sh_e_setup);					\
-$(am__vpath_adj_setup) $(am__vpath_adj)			\
-$(am__tty_colors);					\
-srcdir=$(srcdir); export srcdir;			\
-case "$@" in						\
-  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
-    *) am__odir=.;; 					\
-esac;							\
-test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
-  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
-if test -f "./$$f"; then dir=./;			\
-elif test -f "$$f"; then dir=;				\
-else dir="$(srcdir)/"; fi;				\
-tst=$$dir$$f; log='$@'; 				\
-if test -n '$(DISABLE_HARD_ERRORS)'; then		\
-  am__enable_hard_errors=no; 				\
-else							\
-  am__enable_hard_errors=yes; 				\
-fi; 							\
-case " $(XFAIL_TESTS) " in				\
-  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
-    am__expect_failure=yes;;				\
-  *)							\
-    am__expect_failure=no;;				\
-esac; 							\
-$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-# A shell command to get the names of the tests scripts with any registered
-# extension removed (i.e., equivalently, the names of the test logs, with
-# the '.log' extension removed).  The result is saved in the shell variable
-# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
-# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
-# since that might cause problem with VPATH rewrites for suffix-less tests.
-# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
-am__set_TESTS_bases = \
-  bases='$(TEST_LOGS)'; \
-  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
-  bases=`echo $$bases`
-RECHECK_LOGS = $(TEST_LOGS)
-AM_RECURSIVE_TARGETS = check recheck
-TEST_SUITE_LOG = test-suite.log
-TEST_EXTENSIONS = @EXEEXT@ .test
-LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
-LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
-am__set_b = \
-  case '$@' in \
-    */*) \
-      case '$*' in \
-        */*) b='$*';; \
-          *) b=`echo '$@' | sed 's/\.log$$//'`; \
-       esac;; \
-    *) \
-      b='$*';; \
-  esac
-am__test_logs1 = $(TESTS:=.log)
-am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
-TEST_LOGS = $(am__test_logs2:.test.log=.log)
-TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
-TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
-	$(TEST_LOG_FLAGS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AEC_DIR = @AEC_DIR@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CCSDS_TEST = @CCSDS_TEST@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEVEL_RULES = @DEVEL_RULES@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECCODES_AGE = @ECCODES_AGE@
-ECCODES_CURRENT = @ECCODES_CURRENT@
-ECCODES_DEFINITION_PATH = @ECCODES_DEFINITION_PATH@
-ECCODES_MAIN_VERSION = @ECCODES_MAIN_VERSION@
-ECCODES_MAJOR_VERSION = @ECCODES_MAJOR_VERSION@
-ECCODES_MINOR_VERSION = @ECCODES_MINOR_VERSION@
-ECCODES_PATCH_VERSION = @ECCODES_PATCH_VERSION@
-ECCODES_REVISION = @ECCODES_REVISION@
-ECCODES_SAMPLES_PATH = @ECCODES_SAMPLES_PATH@
-ECCODES_VERSION_STR = @ECCODES_VERSION_STR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB = @EMOS_LIB@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-F90_CHECK = @F90_CHECK@
-F90_MODULE_FLAG = @F90_MODULE_FLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FORTRAN_MOD = @FORTRAN_MOD@
-GREP = @GREP@
-GRIB_API_INC = @GRIB_API_INC@
-GRIB_API_LIB = @GRIB_API_LIB@
-GRIB_DEVEL = @GRIB_DEVEL@
-IFS_SAMPLES_DIR = @IFS_SAMPLES_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JASPER_DIR = @JASPER_DIR@
-JPEG_TEST = @JPEG_TEST@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_AEC = @LIB_AEC@
-LIB_JASPER = @LIB_JASPER@
-LIB_OPENJPEG = @LIB_OPENJPEG@
-LIB_PNG = @LIB_PNG@
-LINUX_DISTRIBUTION_NAME = @LINUX_DISTRIBUTION_NAME@
-LINUX_DISTRIBUTION_VERSION = @LINUX_DISTRIBUTION_VERSION@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENJPEG_DIR = @OPENJPEG_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PERLDIR = @PERLDIR@
-PERL_INSTALL_OPTIONS = @PERL_INSTALL_OPTIONS@
-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_CHECK = @PYTHON_CHECK@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_DATA_HANDLER = @PYTHON_DATA_HANDLER@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RM = @RM@
-RPM_CONFIGURE_ARGS = @RPM_CONFIGURE_ARGS@
-RPM_HOST_CPU = @RPM_HOST_CPU@
-RPM_HOST_OS = @RPM_HOST_OS@
-RPM_HOST_VENDOR = @RPM_HOST_VENDOR@
-RPM_RELEASE = @RPM_RELEASE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_PEDANTIC = @WARN_PEDANTIC@
-WERROR = @WERROR@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AM_CFLAGS = @WARN_PEDANTIC@ @WERROR@
-TESTS = grib_iterator.sh \
-        grib_get_keys.sh \
-        grib_print_data.sh \
-        grib_set_keys.sh \
-        grib_keys_iterator.sh \
-        grib_multi.sh \
-        grib_multi_write.sh \
-        grib_precision.sh \
-        grib_list.sh \
-        large_grib1.sh \
-        grib_get_data.sh \
-        sections_copy.sh \
-        set_missing.sh \
-        grib_clone.sh \
-        grib_set_pv.sh \
-        grib_set_bitmap.sh \
-        bufr_attributes.sh \
-        bufr_clone.sh \
-        bufr_expanded.sh \
-        bufr_get_keys.sh \
-        bufr_read_header.sh \
-        bufr_read_scatterometer.sh \
-        bufr_read_synop.sh \
-        bufr_set_keys.sh \
-        bufr_subset.sh \
-        bufr_keys_iterator.sh \
-        bufr_missing.sh \
-        bufr_read_temp.sh \
-        get_product_kind.sh
-
-
-#bin_PROGRAMS            = points
-c_box_SOURCES = box.c
-c_grib_set_data_SOURCES = grib_set_data.c
-c_mars_param_SOURCES = mars_param.c
-c_values_check_SOURCES = values_check.c
-c_grib_nearest_SOURCES = grib_nearest.c
-c_grib_multi_write_SOURCES = grib_multi_write.c
-c_grib_get_keys_SOURCES = grib_get_keys.c
-c_grib_print_data_SOURCES = grib_print_data.c
-c_grib_set_keys_SOURCES = grib_set_keys.c
-c_set_missing_SOURCES = set_missing.c
-c_grib_index_SOURCES = grib_index.c
-c_grib_set_bitmap_SOURCES = grib_set_bitmap.c
-c_grib_multi_SOURCES = grib_multi.c
-c_multi2_SOURCES = multi2.c
-c_grib_keys_iterator_SOURCES = grib_keys_iterator.c
-c_grib_iterator_SOURCES = grib_iterator.c
-c_grib_iterator_bitmap_SOURCES = grib_iterator_bitmap.c
-c_grib_set_pv_SOURCES = grib_set_pv.c
-c_points_SOURCES = points.c
-c_grib_list_SOURCES = grib_list.c
-c_sections_copy_SOURCES = sections_copy.c
-c_large_grib1_SOURCES = large_grib1.c
-c_grib_precision_SOURCES = grib_precision.c
-c_grib_get_data_SOURCES = grib_get_data.c
-c_grib_clone_SOURCES = grib_clone.c
-c_new_sample_SOURCES = new_sample.c
-c_grib_ensemble_index_SOURCES = grib_ensemble_index.c
-c_bufr_attributes_SOURCES = bufr_attributes.c
-c_bufr_clone_SOURCES = bufr_clone.c
-c_bufr_expanded_SOURCES = bufr_expanded.c
-c_bufr_get_keys_SOURCES = bufr_get_keys.c
-c_bufr_keys_iterator_SOURCES = bufr_keys_iterator.c
-c_bufr_missing_SOURCES = bufr_missing.c
-c_bufr_read_header_SOURCES = bufr_read_header.c
-c_bufr_read_scatterometer_SOURCES = bufr_read_scatterometer.c
-c_bufr_read_synop_SOURCES = bufr_read_synop.c
-c_bufr_read_temp_SOURCES = bufr_read_temp.c
-c_bufr_set_keys_SOURCES = bufr_set_keys.c
-c_bufr_subset_SOURCES = bufr_subset.c
-c_get_product_kind_SOURCES = get_product_kind.c
-INCLUDES = -I$(top_builddir)/src
-LDADD = $(top_builddir)/src/libeccodes.la
-DEPENDENCIES = $(LDADD)
-EXTRA_DIST = $(TESTS) include.sh CMakeLists.txt include.ctest.sh.in
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/C/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu examples/C/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-
-c_box$(EXEEXT): $(c_box_OBJECTS) $(c_box_DEPENDENCIES) $(EXTRA_c_box_DEPENDENCIES) 
-	@rm -f c_box$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_box_OBJECTS) $(c_box_LDADD) $(LIBS)
-
-c_bufr_attributes$(EXEEXT): $(c_bufr_attributes_OBJECTS) $(c_bufr_attributes_DEPENDENCIES) $(EXTRA_c_bufr_attributes_DEPENDENCIES) 
-	@rm -f c_bufr_attributes$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_attributes_OBJECTS) $(c_bufr_attributes_LDADD) $(LIBS)
-
-c_bufr_clone$(EXEEXT): $(c_bufr_clone_OBJECTS) $(c_bufr_clone_DEPENDENCIES) $(EXTRA_c_bufr_clone_DEPENDENCIES) 
-	@rm -f c_bufr_clone$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_clone_OBJECTS) $(c_bufr_clone_LDADD) $(LIBS)
-
-c_bufr_expanded$(EXEEXT): $(c_bufr_expanded_OBJECTS) $(c_bufr_expanded_DEPENDENCIES) $(EXTRA_c_bufr_expanded_DEPENDENCIES) 
-	@rm -f c_bufr_expanded$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_expanded_OBJECTS) $(c_bufr_expanded_LDADD) $(LIBS)
-
-c_bufr_get_keys$(EXEEXT): $(c_bufr_get_keys_OBJECTS) $(c_bufr_get_keys_DEPENDENCIES) $(EXTRA_c_bufr_get_keys_DEPENDENCIES) 
-	@rm -f c_bufr_get_keys$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_get_keys_OBJECTS) $(c_bufr_get_keys_LDADD) $(LIBS)
-
-c_bufr_keys_iterator$(EXEEXT): $(c_bufr_keys_iterator_OBJECTS) $(c_bufr_keys_iterator_DEPENDENCIES) $(EXTRA_c_bufr_keys_iterator_DEPENDENCIES) 
-	@rm -f c_bufr_keys_iterator$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_keys_iterator_OBJECTS) $(c_bufr_keys_iterator_LDADD) $(LIBS)
-
-c_bufr_missing$(EXEEXT): $(c_bufr_missing_OBJECTS) $(c_bufr_missing_DEPENDENCIES) $(EXTRA_c_bufr_missing_DEPENDENCIES) 
-	@rm -f c_bufr_missing$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_missing_OBJECTS) $(c_bufr_missing_LDADD) $(LIBS)
-
-c_bufr_read_header$(EXEEXT): $(c_bufr_read_header_OBJECTS) $(c_bufr_read_header_DEPENDENCIES) $(EXTRA_c_bufr_read_header_DEPENDENCIES) 
-	@rm -f c_bufr_read_header$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_read_header_OBJECTS) $(c_bufr_read_header_LDADD) $(LIBS)
-
-c_bufr_read_scatterometer$(EXEEXT): $(c_bufr_read_scatterometer_OBJECTS) $(c_bufr_read_scatterometer_DEPENDENCIES) $(EXTRA_c_bufr_read_scatterometer_DEPENDENCIES) 
-	@rm -f c_bufr_read_scatterometer$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_read_scatterometer_OBJECTS) $(c_bufr_read_scatterometer_LDADD) $(LIBS)
-
-c_bufr_read_synop$(EXEEXT): $(c_bufr_read_synop_OBJECTS) $(c_bufr_read_synop_DEPENDENCIES) $(EXTRA_c_bufr_read_synop_DEPENDENCIES) 
-	@rm -f c_bufr_read_synop$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_read_synop_OBJECTS) $(c_bufr_read_synop_LDADD) $(LIBS)
-
-c_bufr_read_temp$(EXEEXT): $(c_bufr_read_temp_OBJECTS) $(c_bufr_read_temp_DEPENDENCIES) $(EXTRA_c_bufr_read_temp_DEPENDENCIES) 
-	@rm -f c_bufr_read_temp$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_read_temp_OBJECTS) $(c_bufr_read_temp_LDADD) $(LIBS)
-
-c_bufr_set_keys$(EXEEXT): $(c_bufr_set_keys_OBJECTS) $(c_bufr_set_keys_DEPENDENCIES) $(EXTRA_c_bufr_set_keys_DEPENDENCIES) 
-	@rm -f c_bufr_set_keys$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_set_keys_OBJECTS) $(c_bufr_set_keys_LDADD) $(LIBS)
-
-c_bufr_subset$(EXEEXT): $(c_bufr_subset_OBJECTS) $(c_bufr_subset_DEPENDENCIES) $(EXTRA_c_bufr_subset_DEPENDENCIES) 
-	@rm -f c_bufr_subset$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_bufr_subset_OBJECTS) $(c_bufr_subset_LDADD) $(LIBS)
-
-c_get_product_kind$(EXEEXT): $(c_get_product_kind_OBJECTS) $(c_get_product_kind_DEPENDENCIES) $(EXTRA_c_get_product_kind_DEPENDENCIES) 
-	@rm -f c_get_product_kind$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_get_product_kind_OBJECTS) $(c_get_product_kind_LDADD) $(LIBS)
-
-c_grib_clone$(EXEEXT): $(c_grib_clone_OBJECTS) $(c_grib_clone_DEPENDENCIES) $(EXTRA_c_grib_clone_DEPENDENCIES) 
-	@rm -f c_grib_clone$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_clone_OBJECTS) $(c_grib_clone_LDADD) $(LIBS)
-
-c_grib_ensemble_index$(EXEEXT): $(c_grib_ensemble_index_OBJECTS) $(c_grib_ensemble_index_DEPENDENCIES) $(EXTRA_c_grib_ensemble_index_DEPENDENCIES) 
-	@rm -f c_grib_ensemble_index$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_ensemble_index_OBJECTS) $(c_grib_ensemble_index_LDADD) $(LIBS)
-
-c_grib_get_data$(EXEEXT): $(c_grib_get_data_OBJECTS) $(c_grib_get_data_DEPENDENCIES) $(EXTRA_c_grib_get_data_DEPENDENCIES) 
-	@rm -f c_grib_get_data$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_get_data_OBJECTS) $(c_grib_get_data_LDADD) $(LIBS)
-
-c_grib_get_keys$(EXEEXT): $(c_grib_get_keys_OBJECTS) $(c_grib_get_keys_DEPENDENCIES) $(EXTRA_c_grib_get_keys_DEPENDENCIES) 
-	@rm -f c_grib_get_keys$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_get_keys_OBJECTS) $(c_grib_get_keys_LDADD) $(LIBS)
-
-c_grib_index$(EXEEXT): $(c_grib_index_OBJECTS) $(c_grib_index_DEPENDENCIES) $(EXTRA_c_grib_index_DEPENDENCIES) 
-	@rm -f c_grib_index$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_index_OBJECTS) $(c_grib_index_LDADD) $(LIBS)
-
-c_grib_iterator$(EXEEXT): $(c_grib_iterator_OBJECTS) $(c_grib_iterator_DEPENDENCIES) $(EXTRA_c_grib_iterator_DEPENDENCIES) 
-	@rm -f c_grib_iterator$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_iterator_OBJECTS) $(c_grib_iterator_LDADD) $(LIBS)
-
-c_grib_iterator_bitmap$(EXEEXT): $(c_grib_iterator_bitmap_OBJECTS) $(c_grib_iterator_bitmap_DEPENDENCIES) $(EXTRA_c_grib_iterator_bitmap_DEPENDENCIES) 
-	@rm -f c_grib_iterator_bitmap$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_iterator_bitmap_OBJECTS) $(c_grib_iterator_bitmap_LDADD) $(LIBS)
-
-c_grib_keys_iterator$(EXEEXT): $(c_grib_keys_iterator_OBJECTS) $(c_grib_keys_iterator_DEPENDENCIES) $(EXTRA_c_grib_keys_iterator_DEPENDENCIES) 
-	@rm -f c_grib_keys_iterator$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_keys_iterator_OBJECTS) $(c_grib_keys_iterator_LDADD) $(LIBS)
-
-c_grib_list$(EXEEXT): $(c_grib_list_OBJECTS) $(c_grib_list_DEPENDENCIES) $(EXTRA_c_grib_list_DEPENDENCIES) 
-	@rm -f c_grib_list$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_list_OBJECTS) $(c_grib_list_LDADD) $(LIBS)
-
-c_grib_multi$(EXEEXT): $(c_grib_multi_OBJECTS) $(c_grib_multi_DEPENDENCIES) $(EXTRA_c_grib_multi_DEPENDENCIES) 
-	@rm -f c_grib_multi$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_multi_OBJECTS) $(c_grib_multi_LDADD) $(LIBS)
-
-c_grib_multi_write$(EXEEXT): $(c_grib_multi_write_OBJECTS) $(c_grib_multi_write_DEPENDENCIES) $(EXTRA_c_grib_multi_write_DEPENDENCIES) 
-	@rm -f c_grib_multi_write$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_multi_write_OBJECTS) $(c_grib_multi_write_LDADD) $(LIBS)
-
-c_grib_nearest$(EXEEXT): $(c_grib_nearest_OBJECTS) $(c_grib_nearest_DEPENDENCIES) $(EXTRA_c_grib_nearest_DEPENDENCIES) 
-	@rm -f c_grib_nearest$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_nearest_OBJECTS) $(c_grib_nearest_LDADD) $(LIBS)
-
-c_grib_precision$(EXEEXT): $(c_grib_precision_OBJECTS) $(c_grib_precision_DEPENDENCIES) $(EXTRA_c_grib_precision_DEPENDENCIES) 
-	@rm -f c_grib_precision$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_precision_OBJECTS) $(c_grib_precision_LDADD) $(LIBS)
-
-c_grib_print_data$(EXEEXT): $(c_grib_print_data_OBJECTS) $(c_grib_print_data_DEPENDENCIES) $(EXTRA_c_grib_print_data_DEPENDENCIES) 
-	@rm -f c_grib_print_data$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_print_data_OBJECTS) $(c_grib_print_data_LDADD) $(LIBS)
-
-c_grib_set_bitmap$(EXEEXT): $(c_grib_set_bitmap_OBJECTS) $(c_grib_set_bitmap_DEPENDENCIES) $(EXTRA_c_grib_set_bitmap_DEPENDENCIES) 
-	@rm -f c_grib_set_bitmap$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_set_bitmap_OBJECTS) $(c_grib_set_bitmap_LDADD) $(LIBS)
-
-c_grib_set_data$(EXEEXT): $(c_grib_set_data_OBJECTS) $(c_grib_set_data_DEPENDENCIES) $(EXTRA_c_grib_set_data_DEPENDENCIES) 
-	@rm -f c_grib_set_data$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_set_data_OBJECTS) $(c_grib_set_data_LDADD) $(LIBS)
-
-c_grib_set_keys$(EXEEXT): $(c_grib_set_keys_OBJECTS) $(c_grib_set_keys_DEPENDENCIES) $(EXTRA_c_grib_set_keys_DEPENDENCIES) 
-	@rm -f c_grib_set_keys$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_set_keys_OBJECTS) $(c_grib_set_keys_LDADD) $(LIBS)
-
-c_grib_set_pv$(EXEEXT): $(c_grib_set_pv_OBJECTS) $(c_grib_set_pv_DEPENDENCIES) $(EXTRA_c_grib_set_pv_DEPENDENCIES) 
-	@rm -f c_grib_set_pv$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_grib_set_pv_OBJECTS) $(c_grib_set_pv_LDADD) $(LIBS)
-
-c_large_grib1$(EXEEXT): $(c_large_grib1_OBJECTS) $(c_large_grib1_DEPENDENCIES) $(EXTRA_c_large_grib1_DEPENDENCIES) 
-	@rm -f c_large_grib1$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_large_grib1_OBJECTS) $(c_large_grib1_LDADD) $(LIBS)
-
-c_mars_param$(EXEEXT): $(c_mars_param_OBJECTS) $(c_mars_param_DEPENDENCIES) $(EXTRA_c_mars_param_DEPENDENCIES) 
-	@rm -f c_mars_param$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_mars_param_OBJECTS) $(c_mars_param_LDADD) $(LIBS)
-
-c_multi2$(EXEEXT): $(c_multi2_OBJECTS) $(c_multi2_DEPENDENCIES) $(EXTRA_c_multi2_DEPENDENCIES) 
-	@rm -f c_multi2$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_multi2_OBJECTS) $(c_multi2_LDADD) $(LIBS)
-
-c_new_sample$(EXEEXT): $(c_new_sample_OBJECTS) $(c_new_sample_DEPENDENCIES) $(EXTRA_c_new_sample_DEPENDENCIES) 
-	@rm -f c_new_sample$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_new_sample_OBJECTS) $(c_new_sample_LDADD) $(LIBS)
-
-c_points$(EXEEXT): $(c_points_OBJECTS) $(c_points_DEPENDENCIES) $(EXTRA_c_points_DEPENDENCIES) 
-	@rm -f c_points$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_points_OBJECTS) $(c_points_LDADD) $(LIBS)
-
-c_sections_copy$(EXEEXT): $(c_sections_copy_OBJECTS) $(c_sections_copy_DEPENDENCIES) $(EXTRA_c_sections_copy_DEPENDENCIES) 
-	@rm -f c_sections_copy$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_sections_copy_OBJECTS) $(c_sections_copy_LDADD) $(LIBS)
-
-c_set_missing$(EXEEXT): $(c_set_missing_OBJECTS) $(c_set_missing_DEPENDENCIES) $(EXTRA_c_set_missing_DEPENDENCIES) 
-	@rm -f c_set_missing$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_set_missing_OBJECTS) $(c_set_missing_LDADD) $(LIBS)
-
-c_values_check$(EXEEXT): $(c_values_check_OBJECTS) $(c_values_check_DEPENDENCIES) $(EXTRA_c_values_check_DEPENDENCIES) 
-	@rm -f c_values_check$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(c_values_check_OBJECTS) $(c_values_check_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/box.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_attributes.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_clone.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_expanded.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_get_keys.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_keys_iterator.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_missing.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_read_header.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_read_scatterometer.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_read_synop.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_read_temp.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_set_keys.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_subset.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/get_product_kind.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_clone.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_ensemble_index.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_get_data.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_get_keys.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_index.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_iterator.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_iterator_bitmap.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_keys_iterator.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_list.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_multi.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_multi_write.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_nearest.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_precision.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_print_data.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_set_bitmap.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_set_data.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_set_keys.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_set_pv.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/large_grib1.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mars_param.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/multi2.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/new_sample.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/points.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sections_copy.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/set_missing.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/values_check.Po at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-# Recover from deleted '.trs' file; this should ensure that
-# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
-# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
-# to avoid problems with "make -n".
-.log.trs:
-	rm -f $< $@
-	$(MAKE) $(AM_MAKEFLAGS) $<
-
-# Leading 'am--fnord' is there to ensure the list of targets does not
-# expand to empty, as could happen e.g. with make check TESTS=''.
-am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
-am--force-recheck:
-	@:
-
-$(TEST_SUITE_LOG): $(TEST_LOGS)
-	@$(am__set_TESTS_bases); \
-	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
-	redo_bases=`for i in $$bases; do \
-	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
-	            done`; \
-	if test -n "$$redo_bases"; then \
-	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
-	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
-	  if $(am__make_dryrun); then :; else \
-	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
-	  fi; \
-	fi; \
-	if test -n "$$am__remaking_logs"; then \
-	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
-	       "recursion detected" >&2; \
-	else \
-	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
-	fi; \
-	if $(am__make_dryrun); then :; else \
-	  st=0;  \
-	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
-	  for i in $$redo_bases; do \
-	    test -f $$i.trs && test -r $$i.trs \
-	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
-	    test -f $$i.log && test -r $$i.log \
-	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
-	  done; \
-	  test $$st -eq 0 || exit 1; \
-	fi
-	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
-	ws='[ 	]'; \
-	results=`for b in $$bases; do echo $$b.trs; done`; \
-	test -n "$$results" || results=/dev/null; \
-	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
-	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
-	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
-	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
-	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
-	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
-	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
-	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
-	  success=true; \
-	else \
-	  success=false; \
-	fi; \
-	br='==================='; br=$$br$$br$$br$$br; \
-	result_count () \
-	{ \
-	    if test x"$$1" = x"--maybe-color"; then \
-	      maybe_colorize=yes; \
-	    elif test x"$$1" = x"--no-color"; then \
-	      maybe_colorize=no; \
-	    else \
-	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
-	    fi; \
-	    shift; \
-	    desc=$$1 count=$$2; \
-	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
-	      color_start=$$3 color_end=$$std; \
-	    else \
-	      color_start= color_end=; \
-	    fi; \
-	    echo "$${color_start}# $$desc $$count$${color_end}"; \
-	}; \
-	create_testsuite_report () \
-	{ \
-	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
-	  result_count $$1 "PASS: " $$pass  "$$grn"; \
-	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
-	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
-	  result_count $$1 "FAIL: " $$fail  "$$red"; \
-	  result_count $$1 "XPASS:" $$xpass "$$red"; \
-	  result_count $$1 "ERROR:" $$error "$$mgn"; \
-	}; \
-	{								\
-	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
-	    $(am__rst_title);						\
-	  create_testsuite_report --no-color;				\
-	  echo;								\
-	  echo ".. contents:: :depth: 2";				\
-	  echo;								\
-	  for b in $$bases; do echo $$b; done				\
-	    | $(am__create_global_log);					\
-	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
-	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
-	if $$success; then						\
-	  col="$$grn";							\
-	 else								\
-	  col="$$red";							\
-	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
-	fi;								\
-	echo "$${col}$$br$${std}"; 					\
-	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
-	echo "$${col}$$br$${std}"; 					\
-	create_testsuite_report --maybe-color;				\
-	echo "$$col$$br$$std";						\
-	if $$success; then :; else					\
-	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
-	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
-	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
-	  fi;								\
-	  echo "$$col$$br$$std";					\
-	fi;								\
-	$$success || exit 1
-
-check-TESTS:
-	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
-	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
-	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
-	exit $$?;
-recheck: all 
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	bases=`for i in $$bases; do echo $$i; done \
-	         | $(am__list_recheck_tests)` || exit 1; \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	log_list=`echo $$log_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
-	        am__force_recheck=am--force-recheck \
-	        TEST_LOGS="$$log_list"; \
-	exit $$?
-grib_iterator.sh.log: grib_iterator.sh
-	@p='grib_iterator.sh'; \
-	b='grib_iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_get_keys.sh.log: grib_get_keys.sh
-	@p='grib_get_keys.sh'; \
-	b='grib_get_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_print_data.sh.log: grib_print_data.sh
-	@p='grib_print_data.sh'; \
-	b='grib_print_data.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_set_keys.sh.log: grib_set_keys.sh
-	@p='grib_set_keys.sh'; \
-	b='grib_set_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_keys_iterator.sh.log: grib_keys_iterator.sh
-	@p='grib_keys_iterator.sh'; \
-	b='grib_keys_iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_multi.sh.log: grib_multi.sh
-	@p='grib_multi.sh'; \
-	b='grib_multi.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_multi_write.sh.log: grib_multi_write.sh
-	@p='grib_multi_write.sh'; \
-	b='grib_multi_write.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_precision.sh.log: grib_precision.sh
-	@p='grib_precision.sh'; \
-	b='grib_precision.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_list.sh.log: grib_list.sh
-	@p='grib_list.sh'; \
-	b='grib_list.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-large_grib1.sh.log: large_grib1.sh
-	@p='large_grib1.sh'; \
-	b='large_grib1.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_get_data.sh.log: grib_get_data.sh
-	@p='grib_get_data.sh'; \
-	b='grib_get_data.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-sections_copy.sh.log: sections_copy.sh
-	@p='sections_copy.sh'; \
-	b='sections_copy.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-set_missing.sh.log: set_missing.sh
-	@p='set_missing.sh'; \
-	b='set_missing.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_clone.sh.log: grib_clone.sh
-	@p='grib_clone.sh'; \
-	b='grib_clone.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_set_pv.sh.log: grib_set_pv.sh
-	@p='grib_set_pv.sh'; \
-	b='grib_set_pv.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_set_bitmap.sh.log: grib_set_bitmap.sh
-	@p='grib_set_bitmap.sh'; \
-	b='grib_set_bitmap.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_attributes.sh.log: bufr_attributes.sh
-	@p='bufr_attributes.sh'; \
-	b='bufr_attributes.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_clone.sh.log: bufr_clone.sh
-	@p='bufr_clone.sh'; \
-	b='bufr_clone.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_expanded.sh.log: bufr_expanded.sh
-	@p='bufr_expanded.sh'; \
-	b='bufr_expanded.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_get_keys.sh.log: bufr_get_keys.sh
-	@p='bufr_get_keys.sh'; \
-	b='bufr_get_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_header.sh.log: bufr_read_header.sh
-	@p='bufr_read_header.sh'; \
-	b='bufr_read_header.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_scatterometer.sh.log: bufr_read_scatterometer.sh
-	@p='bufr_read_scatterometer.sh'; \
-	b='bufr_read_scatterometer.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_synop.sh.log: bufr_read_synop.sh
-	@p='bufr_read_synop.sh'; \
-	b='bufr_read_synop.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_set_keys.sh.log: bufr_set_keys.sh
-	@p='bufr_set_keys.sh'; \
-	b='bufr_set_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_subset.sh.log: bufr_subset.sh
-	@p='bufr_subset.sh'; \
-	b='bufr_subset.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_keys_iterator.sh.log: bufr_keys_iterator.sh
-	@p='bufr_keys_iterator.sh'; \
-	b='bufr_keys_iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_missing.sh.log: bufr_missing.sh
-	@p='bufr_missing.sh'; \
-	b='bufr_missing.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_temp.sh.log: bufr_read_temp.sh
-	@p='bufr_read_temp.sh'; \
-	b='bufr_read_temp.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-get_product_kind.sh.log: get_product_kind.sh
-	@p='get_product_kind.sh'; \
-	b='get_product_kind.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-.test.log:
-	@p='$<'; \
-	$(am__set_b); \
-	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
- at am__EXEEXT_TRUE@.test$(EXEEXT).log:
- at am__EXEEXT_TRUE@	@p='$<'; \
- at am__EXEEXT_TRUE@	$(am__set_b); \
- at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
- at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
- at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
- at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
-	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
-	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
-	ctags ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	recheck tags tags-am uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/examples/C/bufr_clone.c b/examples/C/bufr_clone.c
index bab56d7..42e0e50 100644
--- a/examples/C/bufr_clone.c
+++ b/examples/C/bufr_clone.c
@@ -88,7 +88,7 @@ int main(int argc, char *argv[])
             return 1;
         }
 
-        /* relase the clone's handle */
+        /* release the clone's handle */
         codes_handle_delete(clone_handle);
     }
 
diff --git a/examples/C/bufr_expanded.c b/examples/C/bufr_expanded.c
index a3b9d4b..5e5711e 100644
--- a/examples/C/bufr_expanded.c
+++ b/examples/C/bufr_expanded.c
@@ -11,7 +11,7 @@
 /*
  * C Implementation: bufr_expanded
  *
- * Description: how to read all the exapanded data values from BUFR messages.
+ * Description: how to read all the expanded data values from BUFR messages.
  *
  */
 
@@ -62,7 +62,7 @@ int main(int argc,char* argv[])
         /* allocate array for data values */
         values = (double*)malloc(values_len*sizeof(double));
 
-        /* get the exapanded data values*/
+        /* get the expanded data values*/
         CODES_CHECK(codes_get_double_array(h, "numericValues", values, &values_len),0);
 
         for(i = 0; i < values_len; i++)
diff --git a/examples/C/bufr_read_scatterometer.sh b/examples/C/bufr_read_scatterometer.sh
index 0994e3a..dc66e13 100755
--- a/examples/C/bufr_read_scatterometer.sh
+++ b/examples/C/bufr_read_scatterometer.sh
@@ -11,24 +11,22 @@
 . ./include.sh
 
 
-#Define a common label for all the tmp files
+# Define a common label for all the tmp files
 label="bufr_read_scatterometer_c"
 
-#Define tmp file
+# Define tmp file
 fTmp=${label}.tmp.txt
-rm -f $fTmp | true
+rm -f $fTmp
 
-#We check "asca_139.bufr". The path is
-#hardcoded in the example
+# We check "asca_139.bufr". The path is hardcoded in the example
 
 REDIRECT=/dev/null
 
-#Write the key values into a file
-${examples_dir}c_bufr_read_scatterometer #2> $REDIRECT > $fTmp
+# Write the key values into a file
+${examples_dir}c_bufr_read_scatterometer 2> $REDIRECT > $fTmp
 
-#TODO: check the results
+# Check the results
+grep -q "Number of values: 2016" $fTmp
 
-#cat  $fTmp
-
-#Clean up
-rm -f $fTmp | true
+# Clean up
+rm -f $fTmp
diff --git a/examples/C/grib_get_data.c b/examples/C/grib_get_data.c
index a4ada5b..36f0dcb 100644
--- a/examples/C/grib_get_data.c
+++ b/examples/C/grib_get_data.c
@@ -65,7 +65,7 @@ int main (int argc, char **argv)
         return 1;
     }
 
-    CODES_CHECK (codes_grib_get_data (h, lats, lons, values, NULL), 0);
+    CODES_CHECK (codes_grib_get_data (h, lats, lons, values), 0);
 
     for (i = 0; i < numberOfPoints; ++i) {
         if (values[i] != missing) {
diff --git a/examples/C/grib_get_keys.c b/examples/C/grib_get_keys.c
index 0bd7dd9..b6811ab 100644
--- a/examples/C/grib_get_keys.c
+++ b/examples/C/grib_get_keys.c
@@ -130,6 +130,16 @@ int main(int argc, char** argv)
         if (eq != 0) assert(!"file and filename not equal");
     }
 
+    {
+        /* Example of getting bytes */
+        char* name = "reservedNeedNotBePresent";
+        unsigned char* byte_val = NULL ;
+        size_t keySize = 0;
+        CODES_CHECK(grib_get_size(h, name, &keySize), 0);
+        byte_val = malloc(keySize*sizeof(char));
+        GRIB_CHECK(grib_get_bytes(h, name, byte_val, &keySize), name);
+    }
+    
     codes_handle_delete(h);
 
     return 0;
diff --git a/examples/C/grib_pthreads.c b/examples/C/grib_pthreads.c
index 5c08d2c..ca27ecd 100644
--- a/examples/C/grib_pthreads.c
+++ b/examples/C/grib_pthreads.c
@@ -27,7 +27,7 @@ static void* process_grib(void* threadID)
     double pv[4]={1,2,3,4};
     const size_t pvsize=4;
 
-    codes_handle* h = codes_handle_new_from_samples(0, "regular_ll_pl_grib2");
+    codes_handle* h = codes_grib_handle_new_from_samples(0, "regular_ll_pl_grib2");
     assert(h);
     printf("Thread %ld running\n", tid);
 
diff --git a/examples/C/grib_set_data.c b/examples/C/grib_set_data.c
index 5779e62..4bd3829 100644
--- a/examples/C/grib_set_data.c
+++ b/examples/C/grib_set_data.c
@@ -45,7 +45,7 @@ int main(int argc, char** argv)
     if (argc!=2) usage(argv[0]);
     /* create new handle from message in sample file */
     printf("Using samples path: %s\n", samples_path);
-    h = codes_handle_new_from_samples(0, sample_filename);
+    h = codes_grib_handle_new_from_samples(0, sample_filename);
     if (h == NULL) {
         printf("Error: unable to create handle from sample file %s\n", sample_filename);
         exit(1);
diff --git a/examples/C/large_grib1.c b/examples/C/large_grib1.c
index a7f61d4..9426980 100644
--- a/examples/C/large_grib1.c
+++ b/examples/C/large_grib1.c
@@ -33,7 +33,7 @@ int main()
         values[i] = 10*rand;
     }
 
-    h = codes_handle_new_from_samples(0, "GRIB1");
+    h = codes_grib_handle_new_from_samples(0, "GRIB1");
 
     CODES_CHECK(codes_set_long(h, "Ni", ni), 0);
     CODES_CHECK(codes_set_long(h, "Nj", nj), 0);
diff --git a/examples/C/new_sample.c b/examples/C/new_sample.c
index 8e2379b..c822051 100644
--- a/examples/C/new_sample.c
+++ b/examples/C/new_sample.c
@@ -26,7 +26,7 @@ int main(int argc,const char** argv)
         exit(1);
     }
 
-    h = codes_handle_new_from_samples(NULL,"GRIB2");
+    h = codes_grib_handle_new_from_samples(NULL,"GRIB2");
     if(!h) {
         fprintf(stderr,"Cannot create grib handle\n");
         exit(1);
diff --git a/examples/F90/CMakeLists.txt b/examples/F90/CMakeLists.txt
index 29ba0be..ea68fe6 100644
--- a/examples/F90/CMakeLists.txt
+++ b/examples/F90/CMakeLists.txt
@@ -9,10 +9,10 @@ execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_S
 ################################################
 list( APPEND tests
       grib_index
-      copy_message
+      grib_copy_message
       bufr_copy_message
       grib_get_keys
-      get_data
+      grib_get_data
       get_pl
       get_pv
       grib_keys_iterator
@@ -23,9 +23,9 @@ list( APPEND tests
       grib_print_data
       grib_set_keys
       grib_set_bitmap
-      set_missing
+      grib_set_missing
       grib_set_pv
-      samples
+      grib_samples
       grib_count_messages
       grib_count_messages_multi
       read_message
diff --git a/examples/F90/Makefile.am b/examples/F90/Makefile.am
index c83dd95..2219244 100644
--- a/examples/F90/Makefile.am
+++ b/examples/F90/Makefile.am
@@ -1,10 +1,10 @@
 
 AM_CFLAGS =  @WARN_PEDANTIC@ @WERROR@ @FORCE_32_CFLAGS@
 
-TESTS = copy_message.sh grib_get_keys.sh get_data.sh get_pl.sh get_pv.sh grib_keys_iterator.sh \
+TESTS = grib_copy_message.sh grib_get_keys.sh grib_get_data.sh get_pl.sh get_pv.sh grib_keys_iterator.sh \
         grib_nearest.sh grib_precision.sh grib_multi_write.sh grib_multi.sh \
         grib_print_data.sh grib_set_keys.sh \
-        grib_set_bitmap.sh set_missing.sh grib_set_pv.sh samples.sh grib_count_messages.sh \
+        grib_set_bitmap.sh grib_set_missing.sh grib_set_pv.sh grib_samples.sh grib_count_messages.sh \
         read_message.sh grib_count_messages_multi.sh \
         read_from_file.sh grib_index.sh get_set_uuid.sh \
         bufr_attributes.sh grib_clone.sh bufr_clone.sh \
@@ -15,9 +15,9 @@ TESTS = copy_message.sh grib_get_keys.sh get_data.sh get_pl.sh get_pv.sh grib_ke
         bufr_read_tropical_cyclone.sh bufr_read_scatterometer.sh
 
 noinst_PROGRAMS  = eccodes_f_grib_index \
-                   eccodes_f_copy_message \
+                   eccodes_f_grib_copy_message \
                    eccodes_f_grib_get_keys \
-                   eccodes_f_get_data \
+                   eccodes_f_grib_get_data \
                    eccodes_f_get_pl \
                    eccodes_f_get_pv \
                    eccodes_f_grib_keys_iterator \
@@ -29,9 +29,9 @@ noinst_PROGRAMS  = eccodes_f_grib_index \
                    eccodes_f_grib_print_data_static \
                    eccodes_f_grib_set_keys \
                    eccodes_f_grib_set_bitmap \
-                   eccodes_f_set_missing \
+                   eccodes_f_grib_set_missing \
                    eccodes_f_grib_set_pv \
-                   eccodes_f_samples \
+                   eccodes_f_grib_samples \
                    eccodes_f_grib_count_messages \
                    eccodes_f_grib_count_messages_multi \
                    eccodes_f_read_message \
@@ -57,9 +57,9 @@ noinst_PROGRAMS  = eccodes_f_grib_index \
                    eccodes_f_bufr_read_scatterometer
 
 eccodes_f_grib_index_SOURCES=grib_index.f90
-eccodes_f_copy_message_SOURCES=copy_message.f90
+eccodes_f_grib_copy_message_SOURCES=grib_copy_message.f90
 eccodes_f_grib_get_keys_SOURCES=grib_get_keys.f90
-eccodes_f_get_data_SOURCES=get_data.f90
+eccodes_f_grib_get_data_SOURCES=grib_get_data.f90
 eccodes_f_get_pl_SOURCES=get_pl.f90
 eccodes_f_get_pv_SOURCES=get_pv.f90
 eccodes_f_grib_keys_iterator_SOURCES=grib_keys_iterator.f90
@@ -71,9 +71,9 @@ eccodes_f_grib_print_data_SOURCES=grib_print_data.f90
 eccodes_f_grib_print_data_static_SOURCES=grib_print_data_static.f90
 eccodes_f_grib_set_keys_SOURCES=grib_set_keys.f90
 eccodes_f_grib_set_bitmap_SOURCES=grib_set_bitmap.f90
-eccodes_f_set_missing_SOURCES=set_missing.f90
+eccodes_f_grib_set_missing_SOURCES=grib_set_missing.f90
 eccodes_f_grib_set_pv_SOURCES=grib_set_pv.f90
-eccodes_f_samples_SOURCES=samples.f90
+eccodes_f_grib_samples_SOURCES=grib_samples.f90
 eccodes_f_grib_count_messages_SOURCES=grib_count_messages.f90
 eccodes_f_grib_count_messages_multi_SOURCES=grib_count_messages_multi.f90
 eccodes_f_read_message_SOURCES=read_message.f90
diff --git a/examples/F90/Makefile.in b/examples/F90/Makefile.in
deleted file mode 100644
index 0bec8c7..0000000
--- a/examples/F90/Makefile.in
+++ /dev/null
@@ -1,1846 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-noinst_PROGRAMS = eccodes_f_grib_index$(EXEEXT) \
-	eccodes_f_copy_message$(EXEEXT) \
-	eccodes_f_grib_get_keys$(EXEEXT) eccodes_f_get_data$(EXEEXT) \
-	eccodes_f_get_pl$(EXEEXT) eccodes_f_get_pv$(EXEEXT) \
-	eccodes_f_grib_keys_iterator$(EXEEXT) \
-	eccodes_f_grib_multi_write$(EXEEXT) \
-	eccodes_f_grib_multi$(EXEEXT) eccodes_f_grib_nearest$(EXEEXT) \
-	eccodes_f_grib_precision$(EXEEXT) \
-	eccodes_f_grib_print_data$(EXEEXT) \
-	eccodes_f_grib_print_data_static$(EXEEXT) \
-	eccodes_f_grib_set_keys$(EXEEXT) \
-	eccodes_f_grib_set_bitmap$(EXEEXT) \
-	eccodes_f_set_missing$(EXEEXT) eccodes_f_grib_set_pv$(EXEEXT) \
-	eccodes_f_samples$(EXEEXT) \
-	eccodes_f_grib_count_messages$(EXEEXT) \
-	eccodes_f_grib_count_messages_multi$(EXEEXT) \
-	eccodes_f_read_message$(EXEEXT) \
-	eccodes_f_read_from_file$(EXEEXT) \
-	eccodes_f_new_from_file$(EXEEXT) \
-	eccodes_f_copy_namespace$(EXEEXT) \
-	eccodes_f_get_set_uuid$(EXEEXT) \
-	eccodes_f_grib_set_gvc$(EXEEXT) eccodes_f_grib_clone$(EXEEXT) \
-	eccodes_f_bufr_clone$(EXEEXT) eccodes_f_bufr_expanded$(EXEEXT) \
-	eccodes_f_bufr_get_keys$(EXEEXT) \
-	eccodes_f_bufr_get_string_array$(EXEEXT) \
-	eccodes_f_bufr_read_header$(EXEEXT) \
-	eccodes_f_bufr_read_synop$(EXEEXT) \
-	eccodes_f_bufr_set_keys$(EXEEXT) \
-	eccodes_f_bufr_keys_iterator$(EXEEXT) \
-	eccodes_f_bufr_subset$(EXEEXT) \
-	eccodes_f_bufr_attributes$(EXEEXT) \
-	eccodes_f_get_product_kind$(EXEEXT) \
-	eccodes_f_bufr_read_temp$(EXEEXT) \
-	eccodes_f_bufr_read_tropical_cyclone$(EXEEXT) \
-	eccodes_f_bufr_read_scatterometer$(EXEEXT)
-subdir = examples/F90
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/config/test-driver
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_eccodes_f_bufr_attributes_OBJECTS = bufr_attributes.$(OBJEXT)
-eccodes_f_bufr_attributes_OBJECTS =  \
-	$(am_eccodes_f_bufr_attributes_OBJECTS)
-eccodes_f_bufr_attributes_LDADD = $(LDADD)
-eccodes_f_bufr_attributes_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-am_eccodes_f_bufr_clone_OBJECTS = bufr_clone.$(OBJEXT)
-eccodes_f_bufr_clone_OBJECTS = $(am_eccodes_f_bufr_clone_OBJECTS)
-eccodes_f_bufr_clone_LDADD = $(LDADD)
-eccodes_f_bufr_clone_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_bufr_expanded_OBJECTS = bufr_expanded.$(OBJEXT)
-eccodes_f_bufr_expanded_OBJECTS =  \
-	$(am_eccodes_f_bufr_expanded_OBJECTS)
-eccodes_f_bufr_expanded_LDADD = $(LDADD)
-eccodes_f_bufr_expanded_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_bufr_get_keys_OBJECTS = bufr_get_keys.$(OBJEXT)
-eccodes_f_bufr_get_keys_OBJECTS =  \
-	$(am_eccodes_f_bufr_get_keys_OBJECTS)
-eccodes_f_bufr_get_keys_LDADD = $(LDADD)
-eccodes_f_bufr_get_keys_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_bufr_get_string_array_OBJECTS =  \
-	bufr_get_string_array.$(OBJEXT)
-eccodes_f_bufr_get_string_array_OBJECTS =  \
-	$(am_eccodes_f_bufr_get_string_array_OBJECTS)
-eccodes_f_bufr_get_string_array_LDADD = $(LDADD)
-eccodes_f_bufr_get_string_array_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_bufr_keys_iterator_OBJECTS =  \
-	bufr_keys_iterator.$(OBJEXT)
-eccodes_f_bufr_keys_iterator_OBJECTS =  \
-	$(am_eccodes_f_bufr_keys_iterator_OBJECTS)
-eccodes_f_bufr_keys_iterator_LDADD = $(LDADD)
-eccodes_f_bufr_keys_iterator_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_bufr_read_header_OBJECTS = bufr_read_header.$(OBJEXT)
-eccodes_f_bufr_read_header_OBJECTS =  \
-	$(am_eccodes_f_bufr_read_header_OBJECTS)
-eccodes_f_bufr_read_header_LDADD = $(LDADD)
-eccodes_f_bufr_read_header_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_bufr_read_scatterometer_OBJECTS =  \
-	bufr_read_scatterometer.$(OBJEXT)
-eccodes_f_bufr_read_scatterometer_OBJECTS =  \
-	$(am_eccodes_f_bufr_read_scatterometer_OBJECTS)
-eccodes_f_bufr_read_scatterometer_LDADD = $(LDADD)
-eccodes_f_bufr_read_scatterometer_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_bufr_read_synop_OBJECTS = bufr_read_synop.$(OBJEXT)
-eccodes_f_bufr_read_synop_OBJECTS =  \
-	$(am_eccodes_f_bufr_read_synop_OBJECTS)
-eccodes_f_bufr_read_synop_LDADD = $(LDADD)
-eccodes_f_bufr_read_synop_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_bufr_read_temp_OBJECTS = bufr_read_temp.$(OBJEXT)
-eccodes_f_bufr_read_temp_OBJECTS =  \
-	$(am_eccodes_f_bufr_read_temp_OBJECTS)
-eccodes_f_bufr_read_temp_LDADD = $(LDADD)
-eccodes_f_bufr_read_temp_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_bufr_read_tropical_cyclone_OBJECTS =  \
-	bufr_read_tropical_cyclone.$(OBJEXT)
-eccodes_f_bufr_read_tropical_cyclone_OBJECTS =  \
-	$(am_eccodes_f_bufr_read_tropical_cyclone_OBJECTS)
-eccodes_f_bufr_read_tropical_cyclone_LDADD = $(LDADD)
-eccodes_f_bufr_read_tropical_cyclone_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_bufr_set_keys_OBJECTS = bufr_set_keys.$(OBJEXT)
-eccodes_f_bufr_set_keys_OBJECTS =  \
-	$(am_eccodes_f_bufr_set_keys_OBJECTS)
-eccodes_f_bufr_set_keys_LDADD = $(LDADD)
-eccodes_f_bufr_set_keys_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_bufr_subset_OBJECTS = bufr_subset.$(OBJEXT)
-eccodes_f_bufr_subset_OBJECTS = $(am_eccodes_f_bufr_subset_OBJECTS)
-eccodes_f_bufr_subset_LDADD = $(LDADD)
-eccodes_f_bufr_subset_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_copy_message_OBJECTS = copy_message.$(OBJEXT)
-eccodes_f_copy_message_OBJECTS = $(am_eccodes_f_copy_message_OBJECTS)
-eccodes_f_copy_message_LDADD = $(LDADD)
-eccodes_f_copy_message_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_copy_namespace_OBJECTS = copy_namespace.$(OBJEXT)
-eccodes_f_copy_namespace_OBJECTS =  \
-	$(am_eccodes_f_copy_namespace_OBJECTS)
-eccodes_f_copy_namespace_LDADD = $(LDADD)
-eccodes_f_copy_namespace_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_get_data_OBJECTS = get_data.$(OBJEXT)
-eccodes_f_get_data_OBJECTS = $(am_eccodes_f_get_data_OBJECTS)
-eccodes_f_get_data_LDADD = $(LDADD)
-eccodes_f_get_data_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_get_pl_OBJECTS = get_pl.$(OBJEXT)
-eccodes_f_get_pl_OBJECTS = $(am_eccodes_f_get_pl_OBJECTS)
-eccodes_f_get_pl_LDADD = $(LDADD)
-eccodes_f_get_pl_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_get_product_kind_OBJECTS = get_product_kind.$(OBJEXT)
-eccodes_f_get_product_kind_OBJECTS =  \
-	$(am_eccodes_f_get_product_kind_OBJECTS)
-eccodes_f_get_product_kind_LDADD = $(LDADD)
-eccodes_f_get_product_kind_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_get_pv_OBJECTS = get_pv.$(OBJEXT)
-eccodes_f_get_pv_OBJECTS = $(am_eccodes_f_get_pv_OBJECTS)
-eccodes_f_get_pv_LDADD = $(LDADD)
-eccodes_f_get_pv_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_get_set_uuid_OBJECTS = get_set_uuid.$(OBJEXT)
-eccodes_f_get_set_uuid_OBJECTS = $(am_eccodes_f_get_set_uuid_OBJECTS)
-eccodes_f_get_set_uuid_LDADD = $(LDADD)
-eccodes_f_get_set_uuid_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_grib_clone_OBJECTS = grib_clone.$(OBJEXT)
-eccodes_f_grib_clone_OBJECTS = $(am_eccodes_f_grib_clone_OBJECTS)
-eccodes_f_grib_clone_LDADD = $(LDADD)
-eccodes_f_grib_clone_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_grib_count_messages_OBJECTS =  \
-	grib_count_messages.$(OBJEXT)
-eccodes_f_grib_count_messages_OBJECTS =  \
-	$(am_eccodes_f_grib_count_messages_OBJECTS)
-eccodes_f_grib_count_messages_LDADD = $(LDADD)
-eccodes_f_grib_count_messages_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_grib_count_messages_multi_OBJECTS =  \
-	grib_count_messages_multi.$(OBJEXT)
-eccodes_f_grib_count_messages_multi_OBJECTS =  \
-	$(am_eccodes_f_grib_count_messages_multi_OBJECTS)
-eccodes_f_grib_count_messages_multi_LDADD = $(LDADD)
-eccodes_f_grib_count_messages_multi_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_grib_get_keys_OBJECTS = grib_get_keys.$(OBJEXT)
-eccodes_f_grib_get_keys_OBJECTS =  \
-	$(am_eccodes_f_grib_get_keys_OBJECTS)
-eccodes_f_grib_get_keys_LDADD = $(LDADD)
-eccodes_f_grib_get_keys_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_grib_index_OBJECTS = grib_index.$(OBJEXT)
-eccodes_f_grib_index_OBJECTS = $(am_eccodes_f_grib_index_OBJECTS)
-eccodes_f_grib_index_LDADD = $(LDADD)
-eccodes_f_grib_index_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_grib_keys_iterator_OBJECTS =  \
-	grib_keys_iterator.$(OBJEXT)
-eccodes_f_grib_keys_iterator_OBJECTS =  \
-	$(am_eccodes_f_grib_keys_iterator_OBJECTS)
-eccodes_f_grib_keys_iterator_LDADD = $(LDADD)
-eccodes_f_grib_keys_iterator_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_grib_multi_OBJECTS = grib_multi.$(OBJEXT)
-eccodes_f_grib_multi_OBJECTS = $(am_eccodes_f_grib_multi_OBJECTS)
-eccodes_f_grib_multi_LDADD = $(LDADD)
-eccodes_f_grib_multi_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_grib_multi_write_OBJECTS = grib_multi_write.$(OBJEXT)
-eccodes_f_grib_multi_write_OBJECTS =  \
-	$(am_eccodes_f_grib_multi_write_OBJECTS)
-eccodes_f_grib_multi_write_LDADD = $(LDADD)
-eccodes_f_grib_multi_write_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_grib_nearest_OBJECTS = grib_nearest.$(OBJEXT)
-eccodes_f_grib_nearest_OBJECTS = $(am_eccodes_f_grib_nearest_OBJECTS)
-eccodes_f_grib_nearest_LDADD = $(LDADD)
-eccodes_f_grib_nearest_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_grib_precision_OBJECTS = grib_precision.$(OBJEXT)
-eccodes_f_grib_precision_OBJECTS =  \
-	$(am_eccodes_f_grib_precision_OBJECTS)
-eccodes_f_grib_precision_LDADD = $(LDADD)
-eccodes_f_grib_precision_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_grib_print_data_OBJECTS = grib_print_data.$(OBJEXT)
-eccodes_f_grib_print_data_OBJECTS =  \
-	$(am_eccodes_f_grib_print_data_OBJECTS)
-eccodes_f_grib_print_data_LDADD = $(LDADD)
-eccodes_f_grib_print_data_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_grib_print_data_static_OBJECTS =  \
-	grib_print_data_static.$(OBJEXT)
-eccodes_f_grib_print_data_static_OBJECTS =  \
-	$(am_eccodes_f_grib_print_data_static_OBJECTS)
-eccodes_f_grib_print_data_static_LDADD = $(LDADD)
-eccodes_f_grib_print_data_static_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_grib_set_bitmap_OBJECTS = grib_set_bitmap.$(OBJEXT)
-eccodes_f_grib_set_bitmap_OBJECTS =  \
-	$(am_eccodes_f_grib_set_bitmap_OBJECTS)
-eccodes_f_grib_set_bitmap_LDADD = $(LDADD)
-eccodes_f_grib_set_bitmap_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_grib_set_gvc_OBJECTS = grib_set_gvc.$(OBJEXT)
-eccodes_f_grib_set_gvc_OBJECTS = $(am_eccodes_f_grib_set_gvc_OBJECTS)
-eccodes_f_grib_set_gvc_LDADD = $(LDADD)
-eccodes_f_grib_set_gvc_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_grib_set_keys_OBJECTS = grib_set_keys.$(OBJEXT)
-eccodes_f_grib_set_keys_OBJECTS =  \
-	$(am_eccodes_f_grib_set_keys_OBJECTS)
-eccodes_f_grib_set_keys_LDADD = $(LDADD)
-eccodes_f_grib_set_keys_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_grib_set_pv_OBJECTS = grib_set_pv.$(OBJEXT)
-eccodes_f_grib_set_pv_OBJECTS = $(am_eccodes_f_grib_set_pv_OBJECTS)
-eccodes_f_grib_set_pv_LDADD = $(LDADD)
-eccodes_f_grib_set_pv_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_new_from_file_OBJECTS = new_from_file.$(OBJEXT)
-eccodes_f_new_from_file_OBJECTS =  \
-	$(am_eccodes_f_new_from_file_OBJECTS)
-eccodes_f_new_from_file_LDADD = $(LDADD)
-eccodes_f_new_from_file_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_read_from_file_OBJECTS = read_from_file.$(OBJEXT)
-eccodes_f_read_from_file_OBJECTS =  \
-	$(am_eccodes_f_read_from_file_OBJECTS)
-eccodes_f_read_from_file_LDADD = $(LDADD)
-eccodes_f_read_from_file_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_read_message_OBJECTS = read_message.$(OBJEXT)
-eccodes_f_read_message_OBJECTS = $(am_eccodes_f_read_message_OBJECTS)
-eccodes_f_read_message_LDADD = $(LDADD)
-eccodes_f_read_message_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_samples_OBJECTS = samples.$(OBJEXT)
-eccodes_f_samples_OBJECTS = $(am_eccodes_f_samples_OBJECTS)
-eccodes_f_samples_LDADD = $(LDADD)
-eccodes_f_samples_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-am_eccodes_f_set_missing_OBJECTS = set_missing.$(OBJEXT)
-eccodes_f_set_missing_OBJECTS = $(am_eccodes_f_set_missing_OBJECTS)
-eccodes_f_set_missing_LDADD = $(LDADD)
-eccodes_f_set_missing_DEPENDENCIES =  \
-	$(top_builddir)/fortran/libeccodes_f90.la \
-	$(top_builddir)/src/libeccodes.la
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-LTFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-AM_V_FC = $(am__v_FC_ at AM_V@)
-am__v_FC_ = $(am__v_FC_ at AM_DEFAULT_V@)
-am__v_FC_0 = @echo "  FC      " $@;
-am__v_FC_1 = 
-FCLD = $(FC)
-FCLINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
-am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
-am__v_FCLD_0 = @echo "  FCLD    " $@;
-am__v_FCLD_1 = 
-SOURCES = $(eccodes_f_bufr_attributes_SOURCES) \
-	$(eccodes_f_bufr_clone_SOURCES) \
-	$(eccodes_f_bufr_expanded_SOURCES) \
-	$(eccodes_f_bufr_get_keys_SOURCES) \
-	$(eccodes_f_bufr_get_string_array_SOURCES) \
-	$(eccodes_f_bufr_keys_iterator_SOURCES) \
-	$(eccodes_f_bufr_read_header_SOURCES) \
-	$(eccodes_f_bufr_read_scatterometer_SOURCES) \
-	$(eccodes_f_bufr_read_synop_SOURCES) \
-	$(eccodes_f_bufr_read_temp_SOURCES) \
-	$(eccodes_f_bufr_read_tropical_cyclone_SOURCES) \
-	$(eccodes_f_bufr_set_keys_SOURCES) \
-	$(eccodes_f_bufr_subset_SOURCES) \
-	$(eccodes_f_copy_message_SOURCES) \
-	$(eccodes_f_copy_namespace_SOURCES) \
-	$(eccodes_f_get_data_SOURCES) $(eccodes_f_get_pl_SOURCES) \
-	$(eccodes_f_get_product_kind_SOURCES) \
-	$(eccodes_f_get_pv_SOURCES) $(eccodes_f_get_set_uuid_SOURCES) \
-	$(eccodes_f_grib_clone_SOURCES) \
-	$(eccodes_f_grib_count_messages_SOURCES) \
-	$(eccodes_f_grib_count_messages_multi_SOURCES) \
-	$(eccodes_f_grib_get_keys_SOURCES) \
-	$(eccodes_f_grib_index_SOURCES) \
-	$(eccodes_f_grib_keys_iterator_SOURCES) \
-	$(eccodes_f_grib_multi_SOURCES) \
-	$(eccodes_f_grib_multi_write_SOURCES) \
-	$(eccodes_f_grib_nearest_SOURCES) \
-	$(eccodes_f_grib_precision_SOURCES) \
-	$(eccodes_f_grib_print_data_SOURCES) \
-	$(eccodes_f_grib_print_data_static_SOURCES) \
-	$(eccodes_f_grib_set_bitmap_SOURCES) \
-	$(eccodes_f_grib_set_gvc_SOURCES) \
-	$(eccodes_f_grib_set_keys_SOURCES) \
-	$(eccodes_f_grib_set_pv_SOURCES) \
-	$(eccodes_f_new_from_file_SOURCES) \
-	$(eccodes_f_read_from_file_SOURCES) \
-	$(eccodes_f_read_message_SOURCES) $(eccodes_f_samples_SOURCES) \
-	$(eccodes_f_set_missing_SOURCES)
-DIST_SOURCES = $(eccodes_f_bufr_attributes_SOURCES) \
-	$(eccodes_f_bufr_clone_SOURCES) \
-	$(eccodes_f_bufr_expanded_SOURCES) \
-	$(eccodes_f_bufr_get_keys_SOURCES) \
-	$(eccodes_f_bufr_get_string_array_SOURCES) \
-	$(eccodes_f_bufr_keys_iterator_SOURCES) \
-	$(eccodes_f_bufr_read_header_SOURCES) \
-	$(eccodes_f_bufr_read_scatterometer_SOURCES) \
-	$(eccodes_f_bufr_read_synop_SOURCES) \
-	$(eccodes_f_bufr_read_temp_SOURCES) \
-	$(eccodes_f_bufr_read_tropical_cyclone_SOURCES) \
-	$(eccodes_f_bufr_set_keys_SOURCES) \
-	$(eccodes_f_bufr_subset_SOURCES) \
-	$(eccodes_f_copy_message_SOURCES) \
-	$(eccodes_f_copy_namespace_SOURCES) \
-	$(eccodes_f_get_data_SOURCES) $(eccodes_f_get_pl_SOURCES) \
-	$(eccodes_f_get_product_kind_SOURCES) \
-	$(eccodes_f_get_pv_SOURCES) $(eccodes_f_get_set_uuid_SOURCES) \
-	$(eccodes_f_grib_clone_SOURCES) \
-	$(eccodes_f_grib_count_messages_SOURCES) \
-	$(eccodes_f_grib_count_messages_multi_SOURCES) \
-	$(eccodes_f_grib_get_keys_SOURCES) \
-	$(eccodes_f_grib_index_SOURCES) \
-	$(eccodes_f_grib_keys_iterator_SOURCES) \
-	$(eccodes_f_grib_multi_SOURCES) \
-	$(eccodes_f_grib_multi_write_SOURCES) \
-	$(eccodes_f_grib_nearest_SOURCES) \
-	$(eccodes_f_grib_precision_SOURCES) \
-	$(eccodes_f_grib_print_data_SOURCES) \
-	$(eccodes_f_grib_print_data_static_SOURCES) \
-	$(eccodes_f_grib_set_bitmap_SOURCES) \
-	$(eccodes_f_grib_set_gvc_SOURCES) \
-	$(eccodes_f_grib_set_keys_SOURCES) \
-	$(eccodes_f_grib_set_pv_SOURCES) \
-	$(eccodes_f_new_from_file_SOURCES) \
-	$(eccodes_f_read_from_file_SOURCES) \
-	$(eccodes_f_read_message_SOURCES) $(eccodes_f_samples_SOURCES) \
-	$(eccodes_f_set_missing_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__tty_colors_dummy = \
-  mgn= red= grn= lgn= blu= brg= std=; \
-  am__color_tests=no
-am__tty_colors = { \
-  $(am__tty_colors_dummy); \
-  if test "X$(AM_COLOR_TESTS)" = Xno; then \
-    am__color_tests=no; \
-  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
-    am__color_tests=yes; \
-  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
-    am__color_tests=yes; \
-  fi; \
-  if test $$am__color_tests = yes; then \
-    red=''; \
-    grn=''; \
-    lgn=''; \
-    blu=''; \
-    mgn=''; \
-    brg=''; \
-    std=''; \
-  fi; \
-}
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__recheck_rx = ^[ 	]*:recheck:[ 	]*
-am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
-am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
-# A command that, given a newline-separated list of test names on the
-# standard input, print the name of the tests that are to be re-run
-# upon "make recheck".
-am__list_recheck_tests = $(AWK) '{ \
-  recheck = 1; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-        { \
-          if ((getline line2 < ($$0 ".log")) < 0) \
-	    recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
-        { \
-          recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
-        { \
-          break; \
-        } \
-    }; \
-  if (recheck) \
-    print $$0; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# A command that, given a newline-separated list of test names on the
-# standard input, create the global log from their .trs and .log files.
-am__create_global_log = $(AWK) ' \
-function fatal(msg) \
-{ \
-  print "fatal: making $@: " msg | "cat >&2"; \
-  exit 1; \
-} \
-function rst_section(header) \
-{ \
-  print header; \
-  len = length(header); \
-  for (i = 1; i <= len; i = i + 1) \
-    printf "="; \
-  printf "\n\n"; \
-} \
-{ \
-  copy_in_global_log = 1; \
-  global_test_result = "RUN"; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-         fatal("failed to read from " $$0 ".trs"); \
-      if (line ~ /$(am__global_test_result_rx)/) \
-        { \
-          sub("$(am__global_test_result_rx)", "", line); \
-          sub("[ 	]*$$", "", line); \
-          global_test_result = line; \
-        } \
-      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
-        copy_in_global_log = 0; \
-    }; \
-  if (copy_in_global_log) \
-    { \
-      rst_section(global_test_result ": " $$0); \
-      while ((rc = (getline line < ($$0 ".log"))) != 0) \
-      { \
-        if (rc < 0) \
-          fatal("failed to read from " $$0 ".log"); \
-        print line; \
-      }; \
-      printf "\n"; \
-    }; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# Restructured Text title.
-am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-# Solaris 10 'make', and several other traditional 'make' implementations,
-# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
-# by disabling -e (using the XSI extension "set +e") if it's set.
-am__sh_e_setup = case $$- in *e*) set +e;; esac
-# Default flags passed to test drivers.
-am__common_driver_flags = \
-  --color-tests "$$am__color_tests" \
-  --enable-hard-errors "$$am__enable_hard_errors" \
-  --expect-failure "$$am__expect_failure"
-# To be inserted before the command running the test.  Creates the
-# directory for the log if needed.  Stores in $dir the directory
-# containing $f, in $tst the test, in $log the log.  Executes the
-# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
-# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
-# will run the test scripts (or their associated LOG_COMPILER, if
-# thy have one).
-am__check_pre = \
-$(am__sh_e_setup);					\
-$(am__vpath_adj_setup) $(am__vpath_adj)			\
-$(am__tty_colors);					\
-srcdir=$(srcdir); export srcdir;			\
-case "$@" in						\
-  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
-    *) am__odir=.;; 					\
-esac;							\
-test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
-  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
-if test -f "./$$f"; then dir=./;			\
-elif test -f "$$f"; then dir=;				\
-else dir="$(srcdir)/"; fi;				\
-tst=$$dir$$f; log='$@'; 				\
-if test -n '$(DISABLE_HARD_ERRORS)'; then		\
-  am__enable_hard_errors=no; 				\
-else							\
-  am__enable_hard_errors=yes; 				\
-fi; 							\
-case " $(XFAIL_TESTS) " in				\
-  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
-    am__expect_failure=yes;;				\
-  *)							\
-    am__expect_failure=no;;				\
-esac; 							\
-$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-# A shell command to get the names of the tests scripts with any registered
-# extension removed (i.e., equivalently, the names of the test logs, with
-# the '.log' extension removed).  The result is saved in the shell variable
-# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
-# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
-# since that might cause problem with VPATH rewrites for suffix-less tests.
-# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
-am__set_TESTS_bases = \
-  bases='$(TEST_LOGS)'; \
-  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
-  bases=`echo $$bases`
-RECHECK_LOGS = $(TEST_LOGS)
-AM_RECURSIVE_TARGETS = check recheck
-TEST_SUITE_LOG = test-suite.log
-TEST_EXTENSIONS = @EXEEXT@ .test
-LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
-LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
-am__set_b = \
-  case '$@' in \
-    */*) \
-      case '$*' in \
-        */*) b='$*';; \
-          *) b=`echo '$@' | sed 's/\.log$$//'`; \
-       esac;; \
-    *) \
-      b='$*';; \
-  esac
-am__test_logs1 = $(TESTS:=.log)
-am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
-TEST_LOGS = $(am__test_logs2:.test.log=.log)
-TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
-TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
-	$(TEST_LOG_FLAGS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AEC_DIR = @AEC_DIR@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CCSDS_TEST = @CCSDS_TEST@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEVEL_RULES = @DEVEL_RULES@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECCODES_AGE = @ECCODES_AGE@
-ECCODES_CURRENT = @ECCODES_CURRENT@
-ECCODES_DEFINITION_PATH = @ECCODES_DEFINITION_PATH@
-ECCODES_MAIN_VERSION = @ECCODES_MAIN_VERSION@
-ECCODES_MAJOR_VERSION = @ECCODES_MAJOR_VERSION@
-ECCODES_MINOR_VERSION = @ECCODES_MINOR_VERSION@
-ECCODES_PATCH_VERSION = @ECCODES_PATCH_VERSION@
-ECCODES_REVISION = @ECCODES_REVISION@
-ECCODES_SAMPLES_PATH = @ECCODES_SAMPLES_PATH@
-ECCODES_VERSION_STR = @ECCODES_VERSION_STR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB = @EMOS_LIB@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-F90_CHECK = @F90_CHECK@
-F90_MODULE_FLAG = @F90_MODULE_FLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FORTRAN_MOD = @FORTRAN_MOD@
-GREP = @GREP@
-GRIB_API_INC = @GRIB_API_INC@
-GRIB_API_LIB = @GRIB_API_LIB@
-GRIB_DEVEL = @GRIB_DEVEL@
-IFS_SAMPLES_DIR = @IFS_SAMPLES_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JASPER_DIR = @JASPER_DIR@
-JPEG_TEST = @JPEG_TEST@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_AEC = @LIB_AEC@
-LIB_JASPER = @LIB_JASPER@
-LIB_OPENJPEG = @LIB_OPENJPEG@
-LIB_PNG = @LIB_PNG@
-LINUX_DISTRIBUTION_NAME = @LINUX_DISTRIBUTION_NAME@
-LINUX_DISTRIBUTION_VERSION = @LINUX_DISTRIBUTION_VERSION@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENJPEG_DIR = @OPENJPEG_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PERLDIR = @PERLDIR@
-PERL_INSTALL_OPTIONS = @PERL_INSTALL_OPTIONS@
-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_CHECK = @PYTHON_CHECK@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_DATA_HANDLER = @PYTHON_DATA_HANDLER@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RM = @RM@
-RPM_CONFIGURE_ARGS = @RPM_CONFIGURE_ARGS@
-RPM_HOST_CPU = @RPM_HOST_CPU@
-RPM_HOST_OS = @RPM_HOST_OS@
-RPM_HOST_VENDOR = @RPM_HOST_VENDOR@
-RPM_RELEASE = @RPM_RELEASE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_PEDANTIC = @WARN_PEDANTIC@
-WERROR = @WERROR@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AM_CFLAGS = @WARN_PEDANTIC@ @WERROR@ @FORCE_32_CFLAGS@
-TESTS = copy_message.sh grib_get_keys.sh get_data.sh get_pl.sh get_pv.sh grib_keys_iterator.sh \
-        grib_nearest.sh grib_precision.sh grib_multi_write.sh grib_multi.sh \
-        grib_print_data.sh grib_set_keys.sh \
-        grib_set_bitmap.sh set_missing.sh grib_set_pv.sh samples.sh grib_count_messages.sh \
-        read_message.sh grib_count_messages_multi.sh \
-        read_from_file.sh grib_index.sh get_set_uuid.sh \
-        bufr_attributes.sh grib_clone.sh bufr_clone.sh \
-        bufr_expanded.sh bufr_get_keys.sh bufr_get_string_array.sh \
-        bufr_read_header.sh bufr_read_synop.sh \
-        bufr_set_keys.sh bufr_keys_iterator.sh bufr_subset.sh \
-        get_product_kind.sh bufr_read_temp.sh \
-        bufr_read_tropical_cyclone.sh bufr_read_scatterometer.sh
-
-eccodes_f_grib_index_SOURCES = grib_index.f90
-eccodes_f_copy_message_SOURCES = copy_message.f90
-eccodes_f_grib_get_keys_SOURCES = grib_get_keys.f90
-eccodes_f_get_data_SOURCES = get_data.f90
-eccodes_f_get_pl_SOURCES = get_pl.f90
-eccodes_f_get_pv_SOURCES = get_pv.f90
-eccodes_f_grib_keys_iterator_SOURCES = grib_keys_iterator.f90
-eccodes_f_grib_multi_write_SOURCES = grib_multi_write.f90
-eccodes_f_grib_multi_SOURCES = grib_multi.f90
-eccodes_f_grib_nearest_SOURCES = grib_nearest.f90
-eccodes_f_grib_precision_SOURCES = grib_precision.f90
-eccodes_f_grib_print_data_SOURCES = grib_print_data.f90
-eccodes_f_grib_print_data_static_SOURCES = grib_print_data_static.f90
-eccodes_f_grib_set_keys_SOURCES = grib_set_keys.f90
-eccodes_f_grib_set_bitmap_SOURCES = grib_set_bitmap.f90
-eccodes_f_set_missing_SOURCES = set_missing.f90
-eccodes_f_grib_set_pv_SOURCES = grib_set_pv.f90
-eccodes_f_samples_SOURCES = samples.f90
-eccodes_f_grib_count_messages_SOURCES = grib_count_messages.f90
-eccodes_f_grib_count_messages_multi_SOURCES = grib_count_messages_multi.f90
-eccodes_f_read_message_SOURCES = read_message.f90
-eccodes_f_read_from_file_SOURCES = read_from_file.f90
-eccodes_f_new_from_file_SOURCES = new_from_file.f90
-eccodes_f_copy_namespace_SOURCES = copy_namespace.f90
-eccodes_f_get_set_uuid_SOURCES = get_set_uuid.f90
-eccodes_f_grib_set_gvc_SOURCES = grib_set_gvc.f90
-eccodes_f_grib_clone_SOURCES = grib_clone.f90
-eccodes_f_bufr_attributes_SOURCES = bufr_attributes.f90
-eccodes_f_bufr_clone_SOURCES = bufr_clone.f90
-eccodes_f_bufr_expanded_SOURCES = bufr_expanded.f90
-eccodes_f_bufr_get_keys_SOURCES = bufr_get_keys.f90
-eccodes_f_bufr_get_string_array_SOURCES = bufr_get_string_array.f90
-eccodes_f_bufr_keys_iterator_SOURCES = bufr_keys_iterator.f90
-eccodes_f_bufr_read_header_SOURCES = bufr_read_header.f90
-eccodes_f_bufr_read_scatterometer_SOURCES = bufr_read_scatterometer.f90
-eccodes_f_bufr_read_synop_SOURCES = bufr_read_synop.f90
-eccodes_f_bufr_read_temp_SOURCES = bufr_read_temp.f90
-eccodes_f_bufr_set_keys_SOURCES = bufr_set_keys.f90
-eccodes_f_bufr_subset_SOURCES = bufr_subset.f90
-eccodes_f_get_product_kind_SOURCES = get_product_kind.f90
-eccodes_f_bufr_read_tropical_cyclone_SOURCES = bufr_read_tropical_cyclone.f90
-INCLUDES = -I$(top_builddir)/src
-AM_FCFLAGS = $(F90_MODULE_FLAG)$(top_builddir)/fortran
-LDADD = $(top_builddir)/fortran/libeccodes_f90.la $(top_builddir)/src/libeccodes.la
-DEPENDENCIES = $(LDADD)
-EXTRA_DIST = $(TESTS) include.sh CMakeLists.txt include.ctest.sh.in
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .f90 .lo .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/F90/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu examples/F90/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-
-eccodes_f_bufr_attributes$(EXEEXT): $(eccodes_f_bufr_attributes_OBJECTS) $(eccodes_f_bufr_attributes_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_attributes_DEPENDENCIES) 
-	@rm -f eccodes_f_bufr_attributes$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_attributes_OBJECTS) $(eccodes_f_bufr_attributes_LDADD) $(LIBS)
-
-eccodes_f_bufr_clone$(EXEEXT): $(eccodes_f_bufr_clone_OBJECTS) $(eccodes_f_bufr_clone_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_clone_DEPENDENCIES) 
-	@rm -f eccodes_f_bufr_clone$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_clone_OBJECTS) $(eccodes_f_bufr_clone_LDADD) $(LIBS)
-
-eccodes_f_bufr_expanded$(EXEEXT): $(eccodes_f_bufr_expanded_OBJECTS) $(eccodes_f_bufr_expanded_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_expanded_DEPENDENCIES) 
-	@rm -f eccodes_f_bufr_expanded$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_expanded_OBJECTS) $(eccodes_f_bufr_expanded_LDADD) $(LIBS)
-
-eccodes_f_bufr_get_keys$(EXEEXT): $(eccodes_f_bufr_get_keys_OBJECTS) $(eccodes_f_bufr_get_keys_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_get_keys_DEPENDENCIES) 
-	@rm -f eccodes_f_bufr_get_keys$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_get_keys_OBJECTS) $(eccodes_f_bufr_get_keys_LDADD) $(LIBS)
-
-eccodes_f_bufr_get_string_array$(EXEEXT): $(eccodes_f_bufr_get_string_array_OBJECTS) $(eccodes_f_bufr_get_string_array_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_get_string_array_DEPENDENCIES) 
-	@rm -f eccodes_f_bufr_get_string_array$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_get_string_array_OBJECTS) $(eccodes_f_bufr_get_string_array_LDADD) $(LIBS)
-
-eccodes_f_bufr_keys_iterator$(EXEEXT): $(eccodes_f_bufr_keys_iterator_OBJECTS) $(eccodes_f_bufr_keys_iterator_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_keys_iterator_DEPENDENCIES) 
-	@rm -f eccodes_f_bufr_keys_iterator$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_keys_iterator_OBJECTS) $(eccodes_f_bufr_keys_iterator_LDADD) $(LIBS)
-
-eccodes_f_bufr_read_header$(EXEEXT): $(eccodes_f_bufr_read_header_OBJECTS) $(eccodes_f_bufr_read_header_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_read_header_DEPENDENCIES) 
-	@rm -f eccodes_f_bufr_read_header$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_read_header_OBJECTS) $(eccodes_f_bufr_read_header_LDADD) $(LIBS)
-
-eccodes_f_bufr_read_scatterometer$(EXEEXT): $(eccodes_f_bufr_read_scatterometer_OBJECTS) $(eccodes_f_bufr_read_scatterometer_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_read_scatterometer_DEPENDENCIES) 
-	@rm -f eccodes_f_bufr_read_scatterometer$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_read_scatterometer_OBJECTS) $(eccodes_f_bufr_read_scatterometer_LDADD) $(LIBS)
-
-eccodes_f_bufr_read_synop$(EXEEXT): $(eccodes_f_bufr_read_synop_OBJECTS) $(eccodes_f_bufr_read_synop_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_read_synop_DEPENDENCIES) 
-	@rm -f eccodes_f_bufr_read_synop$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_read_synop_OBJECTS) $(eccodes_f_bufr_read_synop_LDADD) $(LIBS)
-
-eccodes_f_bufr_read_temp$(EXEEXT): $(eccodes_f_bufr_read_temp_OBJECTS) $(eccodes_f_bufr_read_temp_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_read_temp_DEPENDENCIES) 
-	@rm -f eccodes_f_bufr_read_temp$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_read_temp_OBJECTS) $(eccodes_f_bufr_read_temp_LDADD) $(LIBS)
-
-eccodes_f_bufr_read_tropical_cyclone$(EXEEXT): $(eccodes_f_bufr_read_tropical_cyclone_OBJECTS) $(eccodes_f_bufr_read_tropical_cyclone_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_read_tropical_cyclone_DEPENDENCIES) 
-	@rm -f eccodes_f_bufr_read_tropical_cyclone$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_read_tropical_cyclone_OBJECTS) $(eccodes_f_bufr_read_tropical_cyclone_LDADD) $(LIBS)
-
-eccodes_f_bufr_set_keys$(EXEEXT): $(eccodes_f_bufr_set_keys_OBJECTS) $(eccodes_f_bufr_set_keys_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_set_keys_DEPENDENCIES) 
-	@rm -f eccodes_f_bufr_set_keys$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_set_keys_OBJECTS) $(eccodes_f_bufr_set_keys_LDADD) $(LIBS)
-
-eccodes_f_bufr_subset$(EXEEXT): $(eccodes_f_bufr_subset_OBJECTS) $(eccodes_f_bufr_subset_DEPENDENCIES) $(EXTRA_eccodes_f_bufr_subset_DEPENDENCIES) 
-	@rm -f eccodes_f_bufr_subset$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_bufr_subset_OBJECTS) $(eccodes_f_bufr_subset_LDADD) $(LIBS)
-
-eccodes_f_copy_message$(EXEEXT): $(eccodes_f_copy_message_OBJECTS) $(eccodes_f_copy_message_DEPENDENCIES) $(EXTRA_eccodes_f_copy_message_DEPENDENCIES) 
-	@rm -f eccodes_f_copy_message$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_copy_message_OBJECTS) $(eccodes_f_copy_message_LDADD) $(LIBS)
-
-eccodes_f_copy_namespace$(EXEEXT): $(eccodes_f_copy_namespace_OBJECTS) $(eccodes_f_copy_namespace_DEPENDENCIES) $(EXTRA_eccodes_f_copy_namespace_DEPENDENCIES) 
-	@rm -f eccodes_f_copy_namespace$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_copy_namespace_OBJECTS) $(eccodes_f_copy_namespace_LDADD) $(LIBS)
-
-eccodes_f_get_data$(EXEEXT): $(eccodes_f_get_data_OBJECTS) $(eccodes_f_get_data_DEPENDENCIES) $(EXTRA_eccodes_f_get_data_DEPENDENCIES) 
-	@rm -f eccodes_f_get_data$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_get_data_OBJECTS) $(eccodes_f_get_data_LDADD) $(LIBS)
-
-eccodes_f_get_pl$(EXEEXT): $(eccodes_f_get_pl_OBJECTS) $(eccodes_f_get_pl_DEPENDENCIES) $(EXTRA_eccodes_f_get_pl_DEPENDENCIES) 
-	@rm -f eccodes_f_get_pl$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_get_pl_OBJECTS) $(eccodes_f_get_pl_LDADD) $(LIBS)
-
-eccodes_f_get_product_kind$(EXEEXT): $(eccodes_f_get_product_kind_OBJECTS) $(eccodes_f_get_product_kind_DEPENDENCIES) $(EXTRA_eccodes_f_get_product_kind_DEPENDENCIES) 
-	@rm -f eccodes_f_get_product_kind$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_get_product_kind_OBJECTS) $(eccodes_f_get_product_kind_LDADD) $(LIBS)
-
-eccodes_f_get_pv$(EXEEXT): $(eccodes_f_get_pv_OBJECTS) $(eccodes_f_get_pv_DEPENDENCIES) $(EXTRA_eccodes_f_get_pv_DEPENDENCIES) 
-	@rm -f eccodes_f_get_pv$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_get_pv_OBJECTS) $(eccodes_f_get_pv_LDADD) $(LIBS)
-
-eccodes_f_get_set_uuid$(EXEEXT): $(eccodes_f_get_set_uuid_OBJECTS) $(eccodes_f_get_set_uuid_DEPENDENCIES) $(EXTRA_eccodes_f_get_set_uuid_DEPENDENCIES) 
-	@rm -f eccodes_f_get_set_uuid$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_get_set_uuid_OBJECTS) $(eccodes_f_get_set_uuid_LDADD) $(LIBS)
-
-eccodes_f_grib_clone$(EXEEXT): $(eccodes_f_grib_clone_OBJECTS) $(eccodes_f_grib_clone_DEPENDENCIES) $(EXTRA_eccodes_f_grib_clone_DEPENDENCIES) 
-	@rm -f eccodes_f_grib_clone$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_clone_OBJECTS) $(eccodes_f_grib_clone_LDADD) $(LIBS)
-
-eccodes_f_grib_count_messages$(EXEEXT): $(eccodes_f_grib_count_messages_OBJECTS) $(eccodes_f_grib_count_messages_DEPENDENCIES) $(EXTRA_eccodes_f_grib_count_messages_DEPENDENCIES) 
-	@rm -f eccodes_f_grib_count_messages$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_count_messages_OBJECTS) $(eccodes_f_grib_count_messages_LDADD) $(LIBS)
-
-eccodes_f_grib_count_messages_multi$(EXEEXT): $(eccodes_f_grib_count_messages_multi_OBJECTS) $(eccodes_f_grib_count_messages_multi_DEPENDENCIES) $(EXTRA_eccodes_f_grib_count_messages_multi_DEPENDENCIES) 
-	@rm -f eccodes_f_grib_count_messages_multi$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_count_messages_multi_OBJECTS) $(eccodes_f_grib_count_messages_multi_LDADD) $(LIBS)
-
-eccodes_f_grib_get_keys$(EXEEXT): $(eccodes_f_grib_get_keys_OBJECTS) $(eccodes_f_grib_get_keys_DEPENDENCIES) $(EXTRA_eccodes_f_grib_get_keys_DEPENDENCIES) 
-	@rm -f eccodes_f_grib_get_keys$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_get_keys_OBJECTS) $(eccodes_f_grib_get_keys_LDADD) $(LIBS)
-
-eccodes_f_grib_index$(EXEEXT): $(eccodes_f_grib_index_OBJECTS) $(eccodes_f_grib_index_DEPENDENCIES) $(EXTRA_eccodes_f_grib_index_DEPENDENCIES) 
-	@rm -f eccodes_f_grib_index$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_index_OBJECTS) $(eccodes_f_grib_index_LDADD) $(LIBS)
-
-eccodes_f_grib_keys_iterator$(EXEEXT): $(eccodes_f_grib_keys_iterator_OBJECTS) $(eccodes_f_grib_keys_iterator_DEPENDENCIES) $(EXTRA_eccodes_f_grib_keys_iterator_DEPENDENCIES) 
-	@rm -f eccodes_f_grib_keys_iterator$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_keys_iterator_OBJECTS) $(eccodes_f_grib_keys_iterator_LDADD) $(LIBS)
-
-eccodes_f_grib_multi$(EXEEXT): $(eccodes_f_grib_multi_OBJECTS) $(eccodes_f_grib_multi_DEPENDENCIES) $(EXTRA_eccodes_f_grib_multi_DEPENDENCIES) 
-	@rm -f eccodes_f_grib_multi$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_multi_OBJECTS) $(eccodes_f_grib_multi_LDADD) $(LIBS)
-
-eccodes_f_grib_multi_write$(EXEEXT): $(eccodes_f_grib_multi_write_OBJECTS) $(eccodes_f_grib_multi_write_DEPENDENCIES) $(EXTRA_eccodes_f_grib_multi_write_DEPENDENCIES) 
-	@rm -f eccodes_f_grib_multi_write$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_multi_write_OBJECTS) $(eccodes_f_grib_multi_write_LDADD) $(LIBS)
-
-eccodes_f_grib_nearest$(EXEEXT): $(eccodes_f_grib_nearest_OBJECTS) $(eccodes_f_grib_nearest_DEPENDENCIES) $(EXTRA_eccodes_f_grib_nearest_DEPENDENCIES) 
-	@rm -f eccodes_f_grib_nearest$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_nearest_OBJECTS) $(eccodes_f_grib_nearest_LDADD) $(LIBS)
-
-eccodes_f_grib_precision$(EXEEXT): $(eccodes_f_grib_precision_OBJECTS) $(eccodes_f_grib_precision_DEPENDENCIES) $(EXTRA_eccodes_f_grib_precision_DEPENDENCIES) 
-	@rm -f eccodes_f_grib_precision$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_precision_OBJECTS) $(eccodes_f_grib_precision_LDADD) $(LIBS)
-
-eccodes_f_grib_print_data$(EXEEXT): $(eccodes_f_grib_print_data_OBJECTS) $(eccodes_f_grib_print_data_DEPENDENCIES) $(EXTRA_eccodes_f_grib_print_data_DEPENDENCIES) 
-	@rm -f eccodes_f_grib_print_data$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_print_data_OBJECTS) $(eccodes_f_grib_print_data_LDADD) $(LIBS)
-
-eccodes_f_grib_print_data_static$(EXEEXT): $(eccodes_f_grib_print_data_static_OBJECTS) $(eccodes_f_grib_print_data_static_DEPENDENCIES) $(EXTRA_eccodes_f_grib_print_data_static_DEPENDENCIES) 
-	@rm -f eccodes_f_grib_print_data_static$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_print_data_static_OBJECTS) $(eccodes_f_grib_print_data_static_LDADD) $(LIBS)
-
-eccodes_f_grib_set_bitmap$(EXEEXT): $(eccodes_f_grib_set_bitmap_OBJECTS) $(eccodes_f_grib_set_bitmap_DEPENDENCIES) $(EXTRA_eccodes_f_grib_set_bitmap_DEPENDENCIES) 
-	@rm -f eccodes_f_grib_set_bitmap$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_set_bitmap_OBJECTS) $(eccodes_f_grib_set_bitmap_LDADD) $(LIBS)
-
-eccodes_f_grib_set_gvc$(EXEEXT): $(eccodes_f_grib_set_gvc_OBJECTS) $(eccodes_f_grib_set_gvc_DEPENDENCIES) $(EXTRA_eccodes_f_grib_set_gvc_DEPENDENCIES) 
-	@rm -f eccodes_f_grib_set_gvc$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_set_gvc_OBJECTS) $(eccodes_f_grib_set_gvc_LDADD) $(LIBS)
-
-eccodes_f_grib_set_keys$(EXEEXT): $(eccodes_f_grib_set_keys_OBJECTS) $(eccodes_f_grib_set_keys_DEPENDENCIES) $(EXTRA_eccodes_f_grib_set_keys_DEPENDENCIES) 
-	@rm -f eccodes_f_grib_set_keys$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_set_keys_OBJECTS) $(eccodes_f_grib_set_keys_LDADD) $(LIBS)
-
-eccodes_f_grib_set_pv$(EXEEXT): $(eccodes_f_grib_set_pv_OBJECTS) $(eccodes_f_grib_set_pv_DEPENDENCIES) $(EXTRA_eccodes_f_grib_set_pv_DEPENDENCIES) 
-	@rm -f eccodes_f_grib_set_pv$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_grib_set_pv_OBJECTS) $(eccodes_f_grib_set_pv_LDADD) $(LIBS)
-
-eccodes_f_new_from_file$(EXEEXT): $(eccodes_f_new_from_file_OBJECTS) $(eccodes_f_new_from_file_DEPENDENCIES) $(EXTRA_eccodes_f_new_from_file_DEPENDENCIES) 
-	@rm -f eccodes_f_new_from_file$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_new_from_file_OBJECTS) $(eccodes_f_new_from_file_LDADD) $(LIBS)
-
-eccodes_f_read_from_file$(EXEEXT): $(eccodes_f_read_from_file_OBJECTS) $(eccodes_f_read_from_file_DEPENDENCIES) $(EXTRA_eccodes_f_read_from_file_DEPENDENCIES) 
-	@rm -f eccodes_f_read_from_file$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_read_from_file_OBJECTS) $(eccodes_f_read_from_file_LDADD) $(LIBS)
-
-eccodes_f_read_message$(EXEEXT): $(eccodes_f_read_message_OBJECTS) $(eccodes_f_read_message_DEPENDENCIES) $(EXTRA_eccodes_f_read_message_DEPENDENCIES) 
-	@rm -f eccodes_f_read_message$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_read_message_OBJECTS) $(eccodes_f_read_message_LDADD) $(LIBS)
-
-eccodes_f_samples$(EXEEXT): $(eccodes_f_samples_OBJECTS) $(eccodes_f_samples_DEPENDENCIES) $(EXTRA_eccodes_f_samples_DEPENDENCIES) 
-	@rm -f eccodes_f_samples$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_samples_OBJECTS) $(eccodes_f_samples_LDADD) $(LIBS)
-
-eccodes_f_set_missing$(EXEEXT): $(eccodes_f_set_missing_OBJECTS) $(eccodes_f_set_missing_DEPENDENCIES) $(EXTRA_eccodes_f_set_missing_DEPENDENCIES) 
-	@rm -f eccodes_f_set_missing$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(eccodes_f_set_missing_OBJECTS) $(eccodes_f_set_missing_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-.f90.o:
-	$(AM_V_FC)$(FCCOMPILE) -c -o $@ $<
-
-.f90.obj:
-	$(AM_V_FC)$(FCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.f90.lo:
-	$(AM_V_FC)$(LTFCCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-# Recover from deleted '.trs' file; this should ensure that
-# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
-# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
-# to avoid problems with "make -n".
-.log.trs:
-	rm -f $< $@
-	$(MAKE) $(AM_MAKEFLAGS) $<
-
-# Leading 'am--fnord' is there to ensure the list of targets does not
-# expand to empty, as could happen e.g. with make check TESTS=''.
-am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
-am--force-recheck:
-	@:
-
-$(TEST_SUITE_LOG): $(TEST_LOGS)
-	@$(am__set_TESTS_bases); \
-	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
-	redo_bases=`for i in $$bases; do \
-	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
-	            done`; \
-	if test -n "$$redo_bases"; then \
-	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
-	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
-	  if $(am__make_dryrun); then :; else \
-	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
-	  fi; \
-	fi; \
-	if test -n "$$am__remaking_logs"; then \
-	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
-	       "recursion detected" >&2; \
-	else \
-	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
-	fi; \
-	if $(am__make_dryrun); then :; else \
-	  st=0;  \
-	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
-	  for i in $$redo_bases; do \
-	    test -f $$i.trs && test -r $$i.trs \
-	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
-	    test -f $$i.log && test -r $$i.log \
-	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
-	  done; \
-	  test $$st -eq 0 || exit 1; \
-	fi
-	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
-	ws='[ 	]'; \
-	results=`for b in $$bases; do echo $$b.trs; done`; \
-	test -n "$$results" || results=/dev/null; \
-	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
-	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
-	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
-	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
-	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
-	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
-	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
-	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
-	  success=true; \
-	else \
-	  success=false; \
-	fi; \
-	br='==================='; br=$$br$$br$$br$$br; \
-	result_count () \
-	{ \
-	    if test x"$$1" = x"--maybe-color"; then \
-	      maybe_colorize=yes; \
-	    elif test x"$$1" = x"--no-color"; then \
-	      maybe_colorize=no; \
-	    else \
-	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
-	    fi; \
-	    shift; \
-	    desc=$$1 count=$$2; \
-	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
-	      color_start=$$3 color_end=$$std; \
-	    else \
-	      color_start= color_end=; \
-	    fi; \
-	    echo "$${color_start}# $$desc $$count$${color_end}"; \
-	}; \
-	create_testsuite_report () \
-	{ \
-	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
-	  result_count $$1 "PASS: " $$pass  "$$grn"; \
-	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
-	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
-	  result_count $$1 "FAIL: " $$fail  "$$red"; \
-	  result_count $$1 "XPASS:" $$xpass "$$red"; \
-	  result_count $$1 "ERROR:" $$error "$$mgn"; \
-	}; \
-	{								\
-	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
-	    $(am__rst_title);						\
-	  create_testsuite_report --no-color;				\
-	  echo;								\
-	  echo ".. contents:: :depth: 2";				\
-	  echo;								\
-	  for b in $$bases; do echo $$b; done				\
-	    | $(am__create_global_log);					\
-	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
-	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
-	if $$success; then						\
-	  col="$$grn";							\
-	 else								\
-	  col="$$red";							\
-	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
-	fi;								\
-	echo "$${col}$$br$${std}"; 					\
-	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
-	echo "$${col}$$br$${std}"; 					\
-	create_testsuite_report --maybe-color;				\
-	echo "$$col$$br$$std";						\
-	if $$success; then :; else					\
-	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
-	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
-	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
-	  fi;								\
-	  echo "$$col$$br$$std";					\
-	fi;								\
-	$$success || exit 1
-
-check-TESTS:
-	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
-	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
-	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
-	exit $$?;
-recheck: all 
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	bases=`for i in $$bases; do echo $$i; done \
-	         | $(am__list_recheck_tests)` || exit 1; \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	log_list=`echo $$log_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
-	        am__force_recheck=am--force-recheck \
-	        TEST_LOGS="$$log_list"; \
-	exit $$?
-copy_message.sh.log: copy_message.sh
-	@p='copy_message.sh'; \
-	b='copy_message.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_get_keys.sh.log: grib_get_keys.sh
-	@p='grib_get_keys.sh'; \
-	b='grib_get_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-get_data.sh.log: get_data.sh
-	@p='get_data.sh'; \
-	b='get_data.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-get_pl.sh.log: get_pl.sh
-	@p='get_pl.sh'; \
-	b='get_pl.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-get_pv.sh.log: get_pv.sh
-	@p='get_pv.sh'; \
-	b='get_pv.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_keys_iterator.sh.log: grib_keys_iterator.sh
-	@p='grib_keys_iterator.sh'; \
-	b='grib_keys_iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_nearest.sh.log: grib_nearest.sh
-	@p='grib_nearest.sh'; \
-	b='grib_nearest.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_precision.sh.log: grib_precision.sh
-	@p='grib_precision.sh'; \
-	b='grib_precision.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_multi_write.sh.log: grib_multi_write.sh
-	@p='grib_multi_write.sh'; \
-	b='grib_multi_write.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_multi.sh.log: grib_multi.sh
-	@p='grib_multi.sh'; \
-	b='grib_multi.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_print_data.sh.log: grib_print_data.sh
-	@p='grib_print_data.sh'; \
-	b='grib_print_data.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_set_keys.sh.log: grib_set_keys.sh
-	@p='grib_set_keys.sh'; \
-	b='grib_set_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_set_bitmap.sh.log: grib_set_bitmap.sh
-	@p='grib_set_bitmap.sh'; \
-	b='grib_set_bitmap.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-set_missing.sh.log: set_missing.sh
-	@p='set_missing.sh'; \
-	b='set_missing.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_set_pv.sh.log: grib_set_pv.sh
-	@p='grib_set_pv.sh'; \
-	b='grib_set_pv.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-samples.sh.log: samples.sh
-	@p='samples.sh'; \
-	b='samples.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_count_messages.sh.log: grib_count_messages.sh
-	@p='grib_count_messages.sh'; \
-	b='grib_count_messages.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-read_message.sh.log: read_message.sh
-	@p='read_message.sh'; \
-	b='read_message.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_count_messages_multi.sh.log: grib_count_messages_multi.sh
-	@p='grib_count_messages_multi.sh'; \
-	b='grib_count_messages_multi.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-read_from_file.sh.log: read_from_file.sh
-	@p='read_from_file.sh'; \
-	b='read_from_file.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_index.sh.log: grib_index.sh
-	@p='grib_index.sh'; \
-	b='grib_index.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-get_set_uuid.sh.log: get_set_uuid.sh
-	@p='get_set_uuid.sh'; \
-	b='get_set_uuid.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_attributes.sh.log: bufr_attributes.sh
-	@p='bufr_attributes.sh'; \
-	b='bufr_attributes.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_clone.sh.log: grib_clone.sh
-	@p='grib_clone.sh'; \
-	b='grib_clone.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_clone.sh.log: bufr_clone.sh
-	@p='bufr_clone.sh'; \
-	b='bufr_clone.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_expanded.sh.log: bufr_expanded.sh
-	@p='bufr_expanded.sh'; \
-	b='bufr_expanded.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_get_keys.sh.log: bufr_get_keys.sh
-	@p='bufr_get_keys.sh'; \
-	b='bufr_get_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_get_string_array.sh.log: bufr_get_string_array.sh
-	@p='bufr_get_string_array.sh'; \
-	b='bufr_get_string_array.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_header.sh.log: bufr_read_header.sh
-	@p='bufr_read_header.sh'; \
-	b='bufr_read_header.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_synop.sh.log: bufr_read_synop.sh
-	@p='bufr_read_synop.sh'; \
-	b='bufr_read_synop.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_set_keys.sh.log: bufr_set_keys.sh
-	@p='bufr_set_keys.sh'; \
-	b='bufr_set_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_keys_iterator.sh.log: bufr_keys_iterator.sh
-	@p='bufr_keys_iterator.sh'; \
-	b='bufr_keys_iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_subset.sh.log: bufr_subset.sh
-	@p='bufr_subset.sh'; \
-	b='bufr_subset.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-get_product_kind.sh.log: get_product_kind.sh
-	@p='get_product_kind.sh'; \
-	b='get_product_kind.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_temp.sh.log: bufr_read_temp.sh
-	@p='bufr_read_temp.sh'; \
-	b='bufr_read_temp.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_tropical_cyclone.sh.log: bufr_read_tropical_cyclone.sh
-	@p='bufr_read_tropical_cyclone.sh'; \
-	b='bufr_read_tropical_cyclone.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_scatterometer.sh.log: bufr_read_scatterometer.sh
-	@p='bufr_read_scatterometer.sh'; \
-	b='bufr_read_scatterometer.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-.test.log:
-	@p='$<'; \
-	$(am__set_b); \
-	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
- at am__EXEEXT_TRUE@.test$(EXEEXT).log:
- at am__EXEEXT_TRUE@	@p='$<'; \
- at am__EXEEXT_TRUE@	$(am__set_b); \
- at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
- at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
- at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
- at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
-	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
-	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
-	ctags ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	recheck tags tags-am uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/examples/F90/bufr_attributes.f90 b/examples/F90/bufr_attributes.f90
index f35dbd3..7cac425 100644
--- a/examples/F90/bufr_attributes.f90
+++ b/examples/F90/bufr_attributes.f90
@@ -8,7 +8,7 @@
 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 !
 !
-! FOTRAN 90 Implementation: bufr_attributes
+! FORTRAN 90 Implementation: bufr_attributes
 !
 ! Description: how to read attributes of keys in BUFR messages.
 !
diff --git a/examples/F90/bufr_expanded.f90 b/examples/F90/bufr_expanded.f90
index 303a30a..ba05560 100644
--- a/examples/F90/bufr_expanded.f90
+++ b/examples/F90/bufr_expanded.f90
@@ -10,7 +10,7 @@
 !
 ! FORTRAN 90 Implementation: bufr_expanded
 !
-! Description: how to read all the exapanded data values from BUFR messages.
+! Description: how to read all the expanded data values from BUFR messages.
 !
 !
 program bufr_expanded
@@ -31,19 +31,19 @@ real(kind=8), dimension(:), allocatable       :: values
   call codes_bufr_new_from_file(ifile,ibufr,iret)
 
   do while (iret/=CODES_END_OF_FILE)
-    
+
     ! get and print some keys form the BUFR header 
     write(*,*) 'message: ',count
 
     ! we need to instruct ecCodes to expand all the descriptors 
     ! i.e. unpack the data values
     call codes_set(ibufr,"unpack",1);
-    
-    ! get the exapanded data values
+
+    ! get the expanded data values
     call codes_get(ibufr,'numericValues',values)
 
     numberOfValues=size(values)
- 
+
     do i=1,numberOfValues
         write(*,*) '  ',i,values(i)
     enddo
@@ -53,16 +53,16 @@ real(kind=8), dimension(:), allocatable       :: values
 
     ! load the next bufr message
     call codes_bufr_new_from_file(ifile,ibufr,iret)
-    
-    ! free array 
+
+    ! free array
     deallocate(values)
-        
+
     count=count+1
-    
-  end do  
 
-! close file  
+  end do
+
+! close file
   call codes_close_file(ifile)
- 
+
 
 end program bufr_expanded
diff --git a/examples/F90/bufr_get_keys.f90 b/examples/F90/bufr_get_keys.f90
index e20ef14..5a0aa0c 100644
--- a/examples/F90/bufr_get_keys.f90
+++ b/examples/F90/bufr_get_keys.f90
@@ -8,7 +8,7 @@
 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 !
 !
-! FOTRAN 90 Implementation: bufr_get_keys
+! FORTRAN 90 Implementation: bufr_get_keys
 !
 ! Description: how to read values of different type of keys from BUFR messages.
 !
@@ -33,7 +33,7 @@ character(len=9)   :: typicalDate
   call codes_bufr_new_from_file(ifile,ibufr,iret)
 
   do while (iret/=CODES_END_OF_FILE)
-    
+
     ! For debugging
     call codes_dump(ibufr)
 
@@ -43,46 +43,46 @@ character(len=9)   :: typicalDate
     ! we need to instruct ecCodes to expand all the descriptors 
     ! i.e. unpack the data values
     call codes_set(ibufr,"unpack",1);
-    
+
     ! get as character
     call codes_get(ibufr,'typicalDate',typicalDate)
     write(*,*) '  typicalDate:',typicalDate
-   
+
     ! get as integer
     call codes_get(ibufr,'blockNumber',blockNumber);
     write(*,*) '  blockNumber:',blockNumber
-    
+
     ! get as integer
     call codes_get(ibufr,'stationNumber',stationNumber);
     write(*,*) '  stationNumber:',stationNumber
-    
+
     ! get as real
     call codes_get(ibufr,'airTemperatureAt2M',t2m);
     write(*,*) '  airTemperatureAt2M:',t2m
-   
+
     ! ---- array of integer ----------------
-     
-    ! get the exapanded descriptors
+
+    ! get the expanded descriptors
     call codes_get(ibufr,'bufrdcExpandedDescriptors',descriptors)
- 
+
     do i=1,size(descriptors)
         write(*,*) '  ',i,descriptors(i)
-    enddo  
-   
+    enddo
+
     ! ---- array of real ----------------
-     
-    ! get the exapanded data values
+
+    ! get the expanded data values
     call codes_get(ibufr,'numericValues',values)
- 
+
     do i=1,size(values)
         write(*,*) '  ',i,values(i)
     enddo
-   
+
     ! get as character
     call codes_get(ibufr,'typicalDate',typicalDate)
     write(*,*) '  typicalDate:',typicalDate
-   
-    ! free arrays 
+
+    ! free arrays
     deallocate(values)
     deallocate(descriptors)
 
@@ -91,13 +91,13 @@ character(len=9)   :: typicalDate
 
     ! load the next bufr message
     call codes_bufr_new_from_file(ifile,ibufr,iret)
-    
+
     count=count+1
-    
-  end do  
 
-! close file  
+  end do
+
+  ! close file
   call codes_close_file(ifile)
- 
+
 
 end program bufr_get_keys
diff --git a/examples/F90/bufr_get_string_array.f90 b/examples/F90/bufr_get_string_array.f90
index c822def..c754883 100644
--- a/examples/F90/bufr_get_string_array.f90
+++ b/examples/F90/bufr_get_string_array.f90
@@ -8,29 +8,28 @@
 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 !
 !
-! FOTRAN 90 Implementation: bufr_get_string_array
+! FORTRAN 90 Implementation: bufr_get_string_array
 !
 ! Description: how to get an array of strings from a BUFR message.
  
 program bufr_get_string_array
-use eccodes
-implicit none
-integer            :: ifile
-integer            :: iret,i,n
-integer            :: ibufr
-integer            :: strsize
-integer, parameter  :: max_strsize = 20
-character(len=max_strsize) , dimension(:),allocatable   :: stationOrSiteName 
+  use eccodes
+  implicit none
+  integer            :: ifile
+  integer            :: iret,i,n
+  integer            :: ibufr
+  integer            :: strsize
+  integer, parameter  :: max_strsize = 20
+  character(len=max_strsize) , dimension(:),allocatable   :: stationOrSiteName 
 
   call codes_open_file(ifile,'../../data/bufr/pgps_110.bufr','r')
 
   call codes_bufr_new_from_file(ifile,ibufr,iret)
 
-
   ! unpack the data values
   call codes_set(ibufr,'unpack',1)
 
-  ! get the width of the strings which is te same for all of them
+  ! get the width of the strings which is the same for all of them
   call codes_get(ibufr,'stationOrSiteName->width',strsize)
 
   ! the width is given in bits
@@ -42,7 +41,7 @@ character(len=max_strsize) , dimension(:),allocatable   :: stationOrSiteName
     print *,'stationOrSiteName array dimension is ',max_strsize,' and should be ',strsize
     call exit(1)
   end if
-    
+
   ! allocating the array of strings to be passed to codes_get_string_array is mandatory
   call codes_get_size(ibufr,'stationOrSiteName',n)
   allocate(stationOrSiteName(n))
@@ -55,14 +54,12 @@ character(len=max_strsize) , dimension(:),allocatable   :: stationOrSiteName
 
   !remember to deallocate 
   deallocate(stationOrSiteName)
-    
+
   ! release memory associated with bufr handle
-  ! ibufr won't be accessible any more from codes_release on
+  ! ibufr won't be accessible after this
   call codes_release(ibufr)
 
   ! close file  
   call codes_close_file(ifile)
- 
 
 end program bufr_get_string_array
-
diff --git a/examples/F90/bufr_read_scatterometer.f90 b/examples/F90/bufr_read_scatterometer.f90
index e0c88ef..acabc97 100644
--- a/examples/F90/bufr_read_scatterometer.f90
+++ b/examples/F90/bufr_read_scatterometer.f90
@@ -8,7 +8,7 @@
 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 !
 !
-! FOTRAN 90 Implementation: bufr_read_scatterometer
+! FORTRAN 90 Implementation: bufr_read_scatterometer
 !
 ! Description: how to read data for a given beam from scatterometer BUFR messages.
 ! 
diff --git a/examples/F90/bufr_read_scatterometer.sh b/examples/F90/bufr_read_scatterometer.sh
index b270cd6..ead99ee 100755
--- a/examples/F90/bufr_read_scatterometer.sh
+++ b/examples/F90/bufr_read_scatterometer.sh
@@ -11,21 +11,21 @@
 . ./include.sh
 
 
-#Define a common label for all the tmp files
+# Define a common label for all the tmp files
 label="bufr_read_scatterometer_f"
 
-#Define tmp file
+# Define tmp file
 fTmp=${label}.tmp.txt
-rm -f $fTmp | true
+rm -f $fTmp
 
-#We check "asca_139.bufr". The path is hardcoded in the example
+# We check "asca_139.bufr". The path is hardcoded in the example
 
 REDIRECT=/dev/null
 
-#Write the key values into a file
+# Write the key values into a file
 ${examples_dir}/eccodes_f_bufr_read_scatterometer 2> $REDIRECT > $fTmp
 
-# check the results
+# Check the results
 REFERENCE_FILE=bufr_read_scatterometer_f.ref
 diff $REFERENCE_FILE $fTmp
 
diff --git a/examples/F90/bufr_read_synop.f90 b/examples/F90/bufr_read_synop.f90
index 749b57e..a18d8d9 100644
--- a/examples/F90/bufr_read_synop.f90
+++ b/examples/F90/bufr_read_synop.f90
@@ -8,7 +8,7 @@
 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 !
 !
-! FOTRAN 90 Implementation: bufr_read_synop
+! FORTRAN 90 Implementation: bufr_read_synop
 !
 ! Description: how to read SYNOP BUFR messages.
  
diff --git a/examples/F90/bufr_read_tropical_cyclone.f90 b/examples/F90/bufr_read_tropical_cyclone.f90
index 90b139b..4929967 100644
--- a/examples/F90/bufr_read_tropical_cyclone.f90
+++ b/examples/F90/bufr_read_tropical_cyclone.f90
@@ -8,7 +8,7 @@
 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 !
 !
-! FOTRAN 90 Implementation: bufr_read_tropical_cyclone
+! FORTRAN 90 Implementation: bufr_read_tropical_cyclone
 !
 ! Description: how to read data for a tropical cyclone BUFR message.
 ! 
diff --git a/examples/F90/bufr_read_tropical_cyclone.sh b/examples/F90/bufr_read_tropical_cyclone.sh
index d4188ea..332b674 100755
--- a/examples/F90/bufr_read_tropical_cyclone.sh
+++ b/examples/F90/bufr_read_tropical_cyclone.sh
@@ -16,19 +16,18 @@ label="bufr_read_tropical_cyclone_f"
 
 #Define tmp file
 fTmp=${label}".tmp.txt"
-rm -f $fTmp | true
+rm -f $fTmp
 
-#We check "tropical_cyclone.bufr". The path is
-#hardcoded in the example
+#We check "tropical_cyclone.bufr". The path is hardcoded in the example
 
 REDIRECT=/dev/null
 
 #Write the values into a file and compare with reference
-${examples_dir}/eccodes_f_bufr_read_tropical_cyclone #2> $REDIRECT > $fTmp
+${examples_dir}/eccodes_f_bufr_read_tropical_cyclone 2> $REDIRECT > $fTmp
 
-#TODO: check the output
-
-#cat  $fTmp
+# Check the output
+grep -q "Date and time: 18.11.2015  0:0" $fTmp
+grep -q "== Member  52" $fTmp
 
 #Clean up
-rm -f $fTmp | true
+rm -f $fTmp
diff --git a/examples/F90/bufr_set_keys.f90 b/examples/F90/bufr_set_keys.f90
index a2a77e2..51b1607 100644
--- a/examples/F90/bufr_set_keys.f90
+++ b/examples/F90/bufr_set_keys.f90
@@ -19,13 +19,13 @@ program bufr_set_keys
   integer                                       :: ibufr
   integer                                       :: count=0
   integer(kind=4)                               :: centre, centreNew
-  
-  ! open input file 
+
+  ! open input file
   call codes_open_file(infile,'../../data/bufr/syno_multi.bufr','r')
-  
+
   ! open output file
   call codes_open_file(outfile,'bufr_set_keys_test_f.tmp.bufr','w')
-  
+
   ! the first bufr message is loaded from file
   ! ibufr is the bufr id to be used in subsequent calls
   call codes_bufr_new_from_file(infile,ibufr,iret)
@@ -33,33 +33,33 @@ program bufr_set_keys
   do while (iret/=CODES_END_OF_FILE)
 
     write(*,*) 'message: ',count
-    
+
     ! This is the place where you may wish to modify the message 
     ! E.g. we change the centre
-    
+
     ! set centre
     centre=222
     call codes_set(ibufr,'bufrHeaderCentre',222)
     write(*,*) '  set bufrHeaderCentre to:',centre
-    
+
     ! check centre's new value
     centreNew=0
     call codes_get(ibufr,'bufrHeaderCentre',centreNew)
     write(*,*) '  bufrHeaderCentre''s new value:',centreNew
- 
+
     ! write modified message to a file
     call codes_write(ibufr,outfile)
-  
-    ! relase the handle
+
+    ! release the handle
     call codes_release(ibufr)
-    
+
     ! next message from source
     call codes_bufr_new_from_file(infile,ibufr,iret)
-    
+
     count=count+1
-    
+
   end do
-    
+
   call codes_close_file(infile)
   call codes_close_file(outfile)
 
diff --git a/examples/F90/bufr_set_keys.sh b/examples/F90/bufr_set_keys.sh
index 4c2e71d..a5645bf 100755
--- a/examples/F90/bufr_set_keys.sh
+++ b/examples/F90/bufr_set_keys.sh
@@ -14,7 +14,7 @@ label="bufr_set_keys_test_f"
 
 #Prepare tmp file
 fBufrTmp=${label}.tmp.bufr
-rm -f $fBufrTmp | true
+rm -f $fBufrTmp
 
 #The  bufr file to change
 f=${data_dir}/bufr/syno_multi.bufr
@@ -22,11 +22,11 @@ f=${data_dir}/bufr/syno_multi.bufr
 REDIRECT=/dev/null
 
 #The input ($f) and output ($fBufrTmp) are hardcoded in the f90 example!!!
-${examples_dir}/eccodes_f_bufr_set_keys >$REDIRECT 2> $REDIRECT
+${examples_dir}/eccodes_f_bufr_set_keys >$REDIRECT
 
-#Compare modified file  to the original
+#Compare modified file to the original
 set +e
-${tools_dir}/bufr_compare $f $fBufrTmp >$REDIRECT 2> $REDIRECT
+${tools_dir}/bufr_compare $f $fBufrTmp >$REDIRECT
 
 #Check if they are different
 if [ $? -eq 0 ]; then
@@ -40,4 +40,4 @@ set -e
 [ `${tools_dir}/bufr_count $f` = `${tools_dir}/bufr_count ${fBufrTmp}` ]
 
 #Clean up
-rm -f ${fBufrTmp} | true
+rm -f ${fBufrTmp}
diff --git a/examples/F90/get_product_kind.f90 b/examples/F90/get_product_kind.f90
index 0dd8607..198dd36 100644
--- a/examples/F90/get_product_kind.f90
+++ b/examples/F90/get_product_kind.f90
@@ -8,22 +8,23 @@
 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 !
 !
-! FOTRAN 90 Implementation: get_product_kind
+! FORTRAN 90 Implementation: get_product_kind
 !
 ! Description: how to process a file containing a mix of messages
 !              and print the kind of product (e.g. GRIB, BUFR etc)
 !
 program get_product_kind
-use eccodes
-implicit none
-integer            :: ifile
-integer            :: iret
-integer            :: ihandle
-integer            :: count=0
-character(len=32)  :: product_kind
-character(len=120) :: infile_name
+  use eccodes
+  implicit none
+  integer            :: ifile
+  integer            :: iret
+  integer            :: ihandle
+  integer            :: count=0
+  character(len=32)  :: product_kind
+  character(len=120) :: infile_name
 
   call getarg(1, infile_name)
+  write(*,*) 'infile_name|',infile_name,'|'
   call codes_open_file(ifile,infile_name,'r')
 
 ! the first message is loaded from file
diff --git a/examples/F90/grib_clone.f90 b/examples/F90/grib_clone.f90
index c9e5406..775d53a 100644
--- a/examples/F90/grib_clone.f90
+++ b/examples/F90/grib_clone.f90
@@ -7,7 +7,7 @@
 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 !
 !
-!  FOTRAN 90 Implementation: grib_clone
+!  FORTRAN 90 Implementation: grib_clone
 !
 !  Description: how to create a new GRIB message by cloning 
 !               an existing message.
diff --git a/examples/F90/copy_message.f90 b/examples/F90/grib_copy_message.f90
similarity index 100%
rename from examples/F90/copy_message.f90
rename to examples/F90/grib_copy_message.f90
diff --git a/examples/F90/copy_message.sh b/examples/F90/grib_copy_message.sh
similarity index 90%
rename from examples/F90/copy_message.sh
rename to examples/F90/grib_copy_message.sh
index a924517..b98c505 100755
--- a/examples/F90/copy_message.sh
+++ b/examples/F90/grib_copy_message.sh
@@ -12,7 +12,7 @@
 INPUT="../../data/constant_field.grib1"
 OUTPUT=out.copy.grib1
 
-${examples_dir}eccodes_f_copy_message > /dev/null
+${examples_dir}eccodes_f_grib_copy_message > /dev/null
 ${tools_dir}/grib_compare -b centre $INPUT $OUTPUT
 
 rm -f $OUTPUT
diff --git a/examples/F90/get_data.f90 b/examples/F90/grib_get_data.f90
similarity index 100%
rename from examples/F90/get_data.f90
rename to examples/F90/grib_get_data.f90
diff --git a/examples/F90/get_data.sh b/examples/F90/grib_get_data.sh
similarity index 88%
rename from examples/F90/get_data.sh
rename to examples/F90/grib_get_data.sh
index 37c24f2..4708d11 100755
--- a/examples/F90/get_data.sh
+++ b/examples/F90/grib_get_data.sh
@@ -9,4 +9,4 @@
 
 . ./include.sh
 
-${examples_dir}eccodes_f_get_data > /dev/null
+${examples_dir}eccodes_f_grib_get_data > /dev/null
diff --git a/examples/F90/grib_get_keys.f90 b/examples/F90/grib_get_keys.f90
index ed175ac..de9b9e3 100644
--- a/examples/F90/grib_get_keys.f90
+++ b/examples/F90/grib_get_keys.f90
@@ -34,8 +34,8 @@ program grib_get_keys
   
   ! Loop on all the messages in a file.
 
-  !     a new grib message is loaded from file
-  !     igrib is the grib id to be used in subsequent calls
+  ! A new GRIB message is loaded from file
+  ! igrib is the grib id to be used in subsequent calls
   call  codes_grib_new_from_file(ifile,igrib, iret) 
 
   LOOP: DO WHILE (iret /= CODES_END_OF_FILE)
@@ -43,11 +43,11 @@ program grib_get_keys
     ! For debugging
     call grib_dump(igrib)
 
-    !check if the value of the key is MISSING
+    ! Check if the value of the key is MISSING
     is_missing=0;
     call codes_is_missing(igrib,'Ni',is_missing);
     if ( is_missing /= 1 ) then
-        !     get as a integer
+        ! Key value is not missing so get as an integer
         call codes_get(igrib,'Ni',numberOfPointsAlongAParallel) 
         write(*,*) 'numberOfPointsAlongAParallel=', &
              numberOfPointsAlongAParallel
@@ -55,55 +55,55 @@ program grib_get_keys
         write(*,*) 'numberOfPointsAlongAParallel is missing'
     endif     
 
-    !     get as a integer
+    ! Get as an integer
     call codes_get(igrib,'Nj',numberOfPointsAlongAMeridian) 
     write(*,*) 'numberOfPointsAlongAMeridian=', &
          numberOfPointsAlongAMeridian
 
-    !     get as a real
+    ! Get as a real
     call codes_get(igrib, 'latitudeOfFirstGridPointInDegrees', &
           latitudeOfFirstPointInDegrees) 
     write(*,*) 'latitudeOfFirstGridPointInDegrees=', &
           latitudeOfFirstPointInDegrees
 
-    !     get as a real
+    ! Get as a real
     call codes_get(igrib, 'longitudeOfFirstGridPointInDegrees', &
           longitudeOfFirstPointInDegrees) 
     write(*,*) 'longitudeOfFirstGridPointInDegrees=', &
           longitudeOfFirstPointInDegrees
 
-    !     get as a real
+    ! Get as a real
     call codes_get(igrib, 'latitudeOfLastGridPointInDegrees', &
           latitudeOfLastPointInDegrees) 
     write(*,*) 'latitudeOfLastGridPointInDegrees=', &
           latitudeOfLastPointInDegrees
 
-    !     get as a real
+    ! Get as a real
     call codes_get(igrib, 'longitudeOfLastGridPointInDegrees', &
           longitudeOfLastPointInDegrees) 
     write(*,*) 'longitudeOfLastGridPointInDegrees=', &
           longitudeOfLastPointInDegrees
 
-    !     get the size of the values array
+    ! Get the size of the values array
     call codes_get_size(igrib,'values',numberOfValues)
     write(*,*) 'numberOfValues=',numberOfValues
 
     allocate(values(numberOfValues), stat=iret)
-    !     get data values
+    ! Get data values
     call codes_get(igrib,'values',values)
     call codes_get(igrib,'min',min_val) ! can also be obtained through minval(values)
     call codes_get(igrib,'max',max_val) ! can also be obtained through maxval(values)
     call codes_get(igrib,'average',average) ! can also be obtained through maxval(values)
 
     deallocate(values)
-          
+
     write(*,*)'There are ',numberOfValues, &
           ' average is ',average, &
           ' min is ',  min_val, &
           ' max is ',  max_val
-     
+
     call codes_release(igrib)
-     
+
     call codes_grib_new_from_file(ifile,igrib, iret)
 
   end do LOOP
diff --git a/examples/F90/samples.f90 b/examples/F90/grib_samples.f90
similarity index 95%
rename from examples/F90/samples.f90
rename to examples/F90/grib_samples.f90
index ed7d5d3..859c780 100644
--- a/examples/F90/samples.f90
+++ b/examples/F90/grib_samples.f90
@@ -33,9 +33,9 @@ program sample
   !     Samples are searched in a default sample path (use codes_info
   !     to see where that is). The default sample path can be changed by
   !     setting the environment variable ECCODES_SAMPLES_PATH
-  call codes_new_from_samples(igribsample, "regular_latlon_surface.grib1")
+  call codes_grib_new_from_samples(igribsample, "regular_latlon_surface.grib1")
 
-  call codes_open_file(outfile, 'out.samples.grib1','w')
+  call codes_open_file(outfile, 'f_out.samples.grib1','w')
   call codes_open_file(datafile,'../../data/tp_ecmwf.grib','r')
 
   call codes_grib_new_from_file(datafile,igribdata,err)
diff --git a/examples/F90/samples.sh b/examples/F90/grib_samples.sh
similarity index 88%
rename from examples/F90/samples.sh
rename to examples/F90/grib_samples.sh
index e6cc72b..82a0e3f 100755
--- a/examples/F90/samples.sh
+++ b/examples/F90/grib_samples.sh
@@ -16,12 +16,12 @@ cp ${data_dir}/regular_latlon_surface.grib1 ${data_dir}/regular_latlon_surface.g
 # Change the ECCODES_SAMPLES_PATH: put the data dir first
 ECCODES_SAMPLES_PATH=${data_dir}:${samples_dir}
 export ECCODES_SAMPLES_PATH
-${examples_dir}eccodes_f_samples > /dev/null
+${examples_dir}eccodes_f_grib_samples > /dev/null
 
 # Extend the ECCODES_SAMPLES_PATH: put the data dir second
 ECCODES_SAMPLES_PATH=${samples_dir}:${data_dir}
 export ECCODES_SAMPLES_PATH
-${examples_dir}eccodes_f_samples > /dev/null
+${examples_dir}eccodes_f_grib_samples > /dev/null
 
-rm -f out.samples.grib1
+rm -f f_out.samples.grib1
 rm -f ${data_dir}/regular_latlon_surface.grib1.tmpl
diff --git a/examples/F90/grib_set_keys.f90 b/examples/F90/grib_set_keys.f90
index c718bb3..f8a3600 100644
--- a/examples/F90/grib_set_keys.f90
+++ b/examples/F90/grib_set_keys.f90
@@ -16,34 +16,32 @@ program set
   integer(kind = 4)    :: centre, date1
   integer              :: infile,outfile
   integer              :: igrib
+  character(len=12)    :: marsType = 'ses'
 
   centre = 80
   call current_date(date1)
-  call codes_open_file(infile, &
-       '../../data/regular_latlon_surface_constant.grib1','r')
+  call codes_open_file(infile, '../../data/regular_latlon_surface_constant.grib1','r')
+  call codes_open_file(outfile, 'out.set.grib1','w')
 
-  call codes_open_file(outfile, &
-       'out.set.grib1','w')
-
-  !     a new grib message is loaded from file
-  !     igrib is the grib id to be used in subsequent calls
+  ! A new GRIB message is loaded from file
+  ! igrib is the grib id to be used in subsequent calls
   call codes_grib_new_from_file(infile,igrib)
 
   call codes_set(igrib,'dataDate',date1)
+  call codes_set(igrib,'type', marsType)
+
   !     set centre as a integer */
   call codes_set(igrib,'centre',centre)
 
-! check if it is correct in the actual GRIB message
-
+  ! Check if it is correct in the actual GRIB message
   call check_settings(igrib)
 
-  !     write modified message to a file
+  ! Write modified message to a file
   call codes_write(igrib,outfile)
 
   call codes_release(igrib)
 
   call codes_close_file(infile)
-
   call codes_close_file(outfile)
 
 contains
diff --git a/examples/F90/grib_set_keys.sh b/examples/F90/grib_set_keys.sh
index 8fc574f..113770e 100755
--- a/examples/F90/grib_set_keys.sh
+++ b/examples/F90/grib_set_keys.sh
@@ -10,6 +10,8 @@
 . ./include.sh
 
 ${examples_dir}eccodes_f_grib_set_keys > /dev/null
+res=`${tools_dir}/grib_get -p centre out.set.grib1`
+[ "$res" = "cnmc" ]
 
 ${examples_dir}eccodes_f_grib_set_gvc > /dev/null
 res=`${tools_dir}/grib_get -p typeOfLevel,NV out_gvc.grib2`
diff --git a/examples/F90/set_missing.f90 b/examples/F90/grib_set_missing.f90
similarity index 97%
rename from examples/F90/set_missing.f90
rename to examples/F90/grib_set_missing.f90
index c244fe6..397d15b 100644
--- a/examples/F90/set_missing.f90
+++ b/examples/F90/grib_set_missing.f90
@@ -25,7 +25,7 @@ program set
        '../../data/reduced_gaussian_pressure_level.grib2','r')
 
   call codes_open_file(outfile, &
-       'out_surface_level.grib2','w')
+       'f_out_surface_level.grib2','w')
 
   !     a new grib message is loaded from file
   !     igrib is the grib id to be used in subsequent calls
diff --git a/examples/F90/set_missing.sh b/examples/F90/grib_set_missing.sh
similarity index 82%
rename from examples/F90/set_missing.sh
rename to examples/F90/grib_set_missing.sh
index ccfb399..14cbc47 100755
--- a/examples/F90/set_missing.sh
+++ b/examples/F90/grib_set_missing.sh
@@ -9,5 +9,5 @@
 
 . ./include.sh
 
-${examples_dir}eccodes_f_set_missing > /dev/null
-rm -f out_surface_level.grib2
+${examples_dir}eccodes_f_grib_set_missing > /dev/null
+rm -f f_out_surface_level.grib2
diff --git a/examples/F90/grib_set_pv.f90 b/examples/F90/grib_set_pv.f90
index 642c6ac..0d67bc4 100644
--- a/examples/F90/grib_set_pv.f90
+++ b/examples/F90/grib_set_pv.f90
@@ -48,7 +48,7 @@ program grib_set_pv
   
   !     a new grib message is loaded from file
   !     igrib is the grib id to be used in subsequent calls
-  call codes_new_from_samples(igrib, "reduced_gg_sfc_grib1")
+  call codes_grib_new_from_samples(igrib, "reduced_gg_sfc_grib1")
 
   !     set levtype to ml (model level)
   call codes_set(igrib,'typeOfLevel','hybrid')
diff --git a/examples/Makefile.am b/examples/Makefile.am
deleted file mode 100644
index dcab980..0000000
--- a/examples/Makefile.am
+++ /dev/null
@@ -1,37 +0,0 @@
-
-AM_CFLAGS =  @WARN_PEDANTIC@ @WERROR@ @FORCE_32_CFLAGS@
-
-TESTS = iterator.sh get.sh print_data.sh set.sh keys_iterator.sh multi.sh precision.sh \
-        iterator_fortran.sh get_fortran.sh print_data_fortran.sh set_fortran.sh keys_iterator_fortran.sh \
-		multi_fortran.sh precision_fortran.sh
-
-noinst_PROGRAMS        =  nearest set_bitmap iterator get print_data set keys_iterator multi precision set_pv\
-                       iterator_fortran get_fortran print_data_fortran set_fortran keys_iterator_fortran \
-					   multi_fortran precision_fortran set_pv_fortran
-
-nearest_SOURCES               =   nearest.c
-get_SOURCES               =   get.c
-print_data_SOURCES        =   print_data.c
-set_SOURCES               =   set.c
-set_bitmap_SOURCES        =   set_bitmap.c
-multi_SOURCES             =   multi.c
-keys_iterator_SOURCES     =   keys_iterator.c
-iterator_SOURCES          =   iterator.c
-set_pv_SOURCES          =   set_pv.c
-
-get_fortran_SOURCES               =   get_fortran.F
-print_data_fortran_SOURCES        =   print_data_fortran.F
-set_fortran_SOURCES               =   set_fortran.F
-iterator_fortran_SOURCES          =   iterator_fortran.F
-keys_iterator_fortran_SOURCES     =   keys_iterator_fortran.F
-multi_fortran_SOURCES             =   multi_fortran.F
-precision_fortran_SOURCES         =   precision_fortran.F
-set_pv_fortran_SOURCES          =   set_pv_fortran.F
-
-INCLUDES =  -I$(top_builddir)/src
-
-LDADD = $(top_builddir)/src/libgrib_api.la
-DEPENDENCIES = $(LDADD)
-
-EXTRA_DIST =$(TESTS) include.sh CMakeLists.txt
-
diff --git a/examples/ecmwf_link.sh b/examples/ecmwf_link.sh
deleted file mode 100755
index ab901a9..0000000
--- a/examples/ecmwf_link.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-set -ex
-
-CC=xlc
-FC=xlf
-
-jasper_lib="-I/usr/local/lib/metaps/lib/grib_api/jasper/include -L/usr/local/lib/metaps/lib/grib_api/jasper/lib -ljasper" 
-grib_api_lib="-I/usr/local/lib/metaps/lib/grib_api/new/include -L/usr/local/lib/metaps/lib/grib_api/new/lib -lgrib_api"
-
-$CC -o multi multi.c $jasper_lib $grib_api_lib -lm
-
-./multi > /dev/null
-
-$FC -o multi_fortran multi_fortran.F $jasper_lib $grib_api_lib
-
-./multi_fortran > /dev/null
-
-
diff --git a/examples/fieldset.c b/examples/fieldset.c
deleted file mode 100644
index 99a3844..0000000
--- a/examples/fieldset.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2005-2016 ECMWF.
- *
- * This software is licensed under the terms of the Apache Licence Version 2.0
- * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
- *
- * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
- * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
- */
-
-/*
- * C Implementation: fieldset
- *
- * Description: how to use a fieldset.
- *
- *
- *
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "grib_api.h"
-
-void usage(char* prog) {
-  printf("Usage: %s order_by grib_file grib_file ...\n",prog);
-  exit(1);
-}
-
-int main(int argc, char** argv) {
-  int err = 0;
-  long step,levelType;
-  char** filenames;
-  size_t nkeys,nfiles;
-  int i=0;
-  char* keys[]={"step","date","param","levelType"};
-  grib_fieldset* set;
-  grib_handle* h;
-  char param[20]={0,};
-  char date[10]={0,};
-  size_t datelen=10;
-  size_t len=20;
-  char* order_by=0;
-
-  if (argc != 3) usage(argv[0]);
-
-  nkeys=sizeof(keys)/sizeof(*keys);
-  order_by=strdup(argv[1]);
-
-  nfiles=argc-2;
-  filenames=(char**)malloc(sizeof(char*)*nfiles);
-  for (i=0;i<nfiles;i++)
-    filenames[i]=(char*)strdup(argv[i+2]);
-
-  set=grib_fieldset_new_from_files(0,filenames,nfiles,keys,nkeys,0,0,&err);
-  GRIB_CHECK(err,0);
-
-  /* not jet implemented */
-  /* err=grib_fieldset_apply_where(set,"(centre=='ecmf') && number==1 || step==6 "); */
-  /* GRIB_CHECK(err,0); */
-
-  grib_fieldset_apply_order_by(set,order_by);
-  GRIB_CHECK(err,0);
-
-  printf("\nordering by %s\n",order_by);
-  printf("\n%d fields in the fieldset\n",grib_fieldset_count(set));
-  printf("step,date,levelType,levelType\n");
-  while ((h=grib_fieldset_next_handle(set,&err))!=NULL) {
-    GRIB_CHECK(grib_get_long(h,"step",&step),0);
-    GRIB_CHECK(grib_get_string(h,"date",date,&datelen),0);
-    GRIB_CHECK(grib_get_string(h,"param",param,&len),0);
-    GRIB_CHECK(grib_get_long(h,"levelType",&levelType),0);
-
-    printf("%ld %s %ld %s\n",step,date,levelType,param);
-    grib_handle_delete(h);
-  }
-
-  grib_fieldset_delete(set);
-  grib_handle_delete(h);
-
-  return 0;
-}
diff --git a/examples/get.c b/examples/get.c
deleted file mode 100644
index 591b624..0000000
--- a/examples/get.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2005-2016 ECMWF.
- *
- * This software is licensed under the terms of the Apache Licence Version 2.0
- * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
- *
- * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
- * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
- */
-
-/*
- * C Implementation: get
- *
- * Description: how to get values using keys.
- *
- *
- *
- */
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "grib_api.h"
-
-int main(int argc, char** argv) {
-  int err = 0;
-  double *values = NULL;
-  size_t values_len= 0;
-
-  size_t i = 0;
-
-  double latitudeOfFirstGridPointInDegrees;
-  double longitudeOfFirstGridPointInDegrees;
-  double latitudeOfLastGridPointInDegrees;
-  double longitudeOfLastGridPointInDegrees;
-
-  double jDirectionIncrementInDegrees;
-  double iDirectionIncrementInDegrees;
-
-  long numberOfPointsAlongAParallel;
-  long numberOfPointsAlongAMeridian;
-
-  double average = 0;
-
-  FILE* in = NULL;
-  char* filename = "../data/regular_latlon_surface.grib1";
-  grib_handle *h = NULL;
-
-  in = fopen(filename,"r");
-  if(!in) {
-    printf("ERROR: unable to open file %s\n",filename);
-    return 1;
-  }
-
-  /* create new handle from a message in a file*/
-  h = grib_handle_new_from_file(0,in,&err);
-  if (h == NULL) {
-    printf("Error: unable to create handle from file %s\n",filename);
-  }
-
-  /* get as a long*/
-  GRIB_CHECK(grib_get_long(h,"numberOfPointsAlongAParallel",&numberOfPointsAlongAParallel),0);
-  printf("numberOfPointsAlongAParallel=%ld\n",numberOfPointsAlongAParallel);
-
-  /* get as a long*/
-  GRIB_CHECK(grib_get_long(h,"numberOfPointsAlongAMeridian",&numberOfPointsAlongAMeridian),0);
-  printf("numberOfPointsAlongAMeridian=%ld\n",numberOfPointsAlongAMeridian);
-
-  /* get as a double*/
-  GRIB_CHECK(grib_get_double(h,"latitudeOfFirstGridPointInDegrees",&latitudeOfFirstGridPointInDegrees),0);
-  printf("latitudeOfFirstGridPointInDegrees=%g\n",latitudeOfFirstGridPointInDegrees);
-
-  /* get as a double*/
-  GRIB_CHECK(grib_get_double(h,"longitudeOfFirstGridPointInDegrees",&longitudeOfFirstGridPointInDegrees),0);
-  printf("longitudeOfFirstGridPointInDegrees=%g\n",longitudeOfFirstGridPointInDegrees);
-
-  /* get as a double*/
-  GRIB_CHECK(grib_get_double(h,"latitudeOfLastGridPointInDegrees",&latitudeOfLastGridPointInDegrees),0);
-  printf("latitudeOfLastGridPointInDegrees=%g\n",latitudeOfLastGridPointInDegrees);
-
-  /* get as a double*/
-  GRIB_CHECK(grib_get_double(h,"longitudeOfLastGridPointInDegrees",&longitudeOfLastGridPointInDegrees),0);
-  printf("longitudeOfLastGridPointInDegrees=%g\n",longitudeOfLastGridPointInDegrees);
-
-  /* get as a double*/
-  GRIB_CHECK(grib_get_double(h,"jDirectionIncrementInDegrees",&jDirectionIncrementInDegrees),0);
-  printf("jDirectionIncrementInDegrees=%g\n",jDirectionIncrementInDegrees);
-
-  /* get as a double*/
-  GRIB_CHECK(grib_get_double(h,"iDirectionIncrementInDegrees",&iDirectionIncrementInDegrees),0);
-  printf("iDirectionIncrementInDegrees=%g\n",iDirectionIncrementInDegrees);
-
-  /* get the size of the values array*/
-  GRIB_CHECK(grib_get_size(h,"values",&values_len),0);
-
-  values = malloc(values_len*sizeof(double));
-
-  /* get data values*/
-  GRIB_CHECK(grib_get_double_array(h,"values",values,&values_len),0);
-
-  average = 0;
-  for(i = 0; i < values_len; i++)
-    average += values[i];
-
-  average /=(double)values_len;
-
-  free(values);
-
-  printf("There are %d values, average is %g\n",(int)values_len,average);
-
-  grib_handle_delete(h);
-
-  fclose(in);
-  return 0;
-}
diff --git a/examples/get.sh b/examples/get.sh
deleted file mode 100755
index 264ff00..0000000
--- a/examples/get.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-. ./include.sh
-
-${examples_dir}get > /dev/null
-
-
diff --git a/examples/get_fortran.F b/examples/get_fortran.F
deleted file mode 100644
index 645a375..0000000
--- a/examples/get_fortran.F
+++ /dev/null
@@ -1,130 +0,0 @@
-C Copyright 2005-2016 ECMWF.
-C
-C This software is licensed under the terms of the Apache Licence Version 2.0
-C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-C 
-C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-C
-C
-C  Fortran 77  Implementation: get_fortran
-C
-C  Description: how to get values using keys.
-C
-C
-C
-C
-      program get
-      implicit none
-      integer maxNumberOfValues
-      parameter( maxNumberOfValues = 10000 )
-      include 'grib_api_fortran.h'
-      integer ifile
-      integer iret
-      integer igrib
-      integer i
-      real*8 latitudeOfFirstPointInDegrees
-      real*8 longitudeOfFirstPointInDegrees
-      real*8 latitudeOfLastPointInDegrees
-      real*8 longitudeOfLastPointInDegrees
-      real*8 jDirectionIncrementInDegrees
-      real*8 iDirectionIncrementInDegrees
-      integer*4 numberOfPointsAlongAParallel
-      integer*4 numberOfPointsAlongAMeridian
-      real*8 values(maxNumberOfValues)
-      integer*4 numberOfValues
-      real*8 average
-      character*256 error
-      integer*4 size
-
-      size=maxNumberOfValues
-      ifile=5
-
-      iret=grib_open_file(ifile
-     X,'../data/reduced_latlon_surface.grib1','r')
-      call grib_check(iret)
-
-C     a new grib message is loaded from file
-C     igrib is the grib id to be used in subsequent calls
-      call grib_check( grib_new_from_file(ifile,igrib) )
-
-C     get as a integer
-      call grib_check(grib_get_int(igrib,'numberOfPointsAlongAParallel'
-     X,numberOfPointsAlongAParallel) )
-      write(*,*) 'numberOfPointsAlongAParallel='
-     X,numberOfPointsAlongAParallel
-
-C     get as a integer
-      call grib_check( grib_get_int(igrib,'numberOfPointsAlongAMeridian'
-     X,numberOfPointsAlongAMeridian) )
-      write(*,*) 'numberOfPointsAlongAMeridian='
-     X,numberOfPointsAlongAMeridian
-
-C     get as a real8
-      call grib_check( grib_get_real8(igrib
-     X,'latitudeOfFirstGridPointInDegrees'
-     X,latitudeOfFirstPointInDegrees) )
-       write(*,*) 'latitudeOfFirstGridPointInDegrees='
-     X,latitudeOfFirstPointInDegrees
-
-C     get as a real8
-      call grib_check( grib_get_real8(igrib
-     X,'longitudeOfFirstGridPointInDegrees'
-     X,longitudeOfFirstPointInDegrees) )
-       write(*,*) 'longitudeOfFirstGridPointInDegrees='
-     X,longitudeOfFirstPointInDegrees
-
-C     get as a real8
-      call grib_check( grib_get_real8(igrib
-     X,'latitudeOfLastGridPointInDegrees'
-     X,latitudeOfLastPointInDegrees) )
-       write(*,*) 'latitudeOfLastGridPointInDegrees='
-     X,latitudeOfLastPointInDegrees
-
-C     get as a real8
-      call grib_check( grib_get_real8(igrib
-     X,'longitudeOfLastGridPointInDegrees'
-     X,longitudeOfLastPointInDegrees) )
-      write(*,*) 'longitudeOfLastGridPointInDegrees='
-     X,longitudeOfLastPointInDegrees
-
-C     get as a real8
-      call grib_check( grib_get_real8(igrib
-     X,'jDirectionIncrementInDegrees'
-     X,jDirectionIncrementInDegrees) )
-      write(*,*) 'jDirectionIncrementInDegrees='
-     X,jDirectionIncrementInDegrees
-
-C     get as a real8
-      call grib_check( grib_get_real8(igrib
-     X,'iDirectionIncrementInDegrees'
-     X,iDirectionIncrementInDegrees) )
-      write(*,*) 'iDirectionIncrementInDegrees='
-     X,iDirectionIncrementInDegrees
-
-C     get the size of the values array
-      call grib_check(grib_get_size(igrib,'values',numberOfValues))
-      write(*,*) 'numberOfValues=',numberOfValues
-
-C     get data values
-      call grib_check(grib_get_real8_array(igrib,'values',values,size))
-      if ( size .ne. numberOfValues ) then
-        write(*,*) 'ERROR: wrong numberOfValues'
-        stop
-      endif
-
-      average = 0
-      do i=1,numberOfValues
-        average = average + values(i);
-      enddo
-
-      average =average / numberOfValues
-
-      write(*,*)'There are ',numberOfValues
-     X,' average is ',average
-
-      call grib_check(grib_release(igrib))
-
-      call grib_check(grib_close_file(ifile))
-
-      end
diff --git a/examples/get_fortran.sh b/examples/get_fortran.sh
deleted file mode 100755
index cc9817b..0000000
--- a/examples/get_fortran.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-. ./include.sh
-
-${examples_dir}get_fortran > /dev/null
-
-
diff --git a/examples/grib_precipitation.c b/examples/grib_precipitation.c
deleted file mode 100644
index db6263a..0000000
--- a/examples/grib_precipitation.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2005-2016 ECMWF.
- *
- * This software is licensed under the terms of the Apache Licence Version 2.0
- * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
- *
- * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
- * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
- */
-
-/*
- * C Implementation: grib_precipitation
- *
- * Description: convert fields accumulated from 0 step in  
- *              fields accumulated in the interval between 
- *			    a field and another. In the input file the fields 
- *              must be in ascending order in the step.
- *              step must be the most external loop (slower varying index)
- *
- *
- *
- */
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "grib_api.h"
-
-void usage(char* prog) {
-  printf("usage: %s filename\n",prog);
-  exit(1);
-}
-
-int main(int argc, char** argv) {
-  int err = 0,i;
-  double *values = NULL;
-  double max,min,average;
-  size_t values_len= 0;
-
-  FILE* in = NULL;
-  char* filename ;
-  grib_handle *h = NULL;
-
-  if (argc<2) usage(argv[0]);
-  filename=argv[1];
-
-  in = fopen(filename,"r");
-  if(!in) {
-    printf("ERROR: unable to open file %s\n",filename);
-    return 1;
-  }
-
-  /* create new handle from a message in a file*/
-  while((h = grib_handle_new_from_file(0,f,&err)) != NULL) {
-
-    /* get the size of the values array*/
-    GRIB_CHECK(grib_get_size(h,"values",&values_len),0);
-
-    values = malloc(values_len*sizeof(double));
-
-    /* get data values*/
-    GRIB_CHECK(grib_get_double_array(h,"values",values,&values_len),0);
-
-    for(i = 0; i < values_len; i++)
-      printf("%d  %.10e\n",i+1,values[i]);
-
-    free(values);
-
-    grib_handle_delete(h);
-  }
-
-  fclose(in);
-  return 0;
-}
diff --git a/examples/include.sh b/examples/include.sh
deleted file mode 100644
index b6f85e3..0000000
--- a/examples/include.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-set -ea
-
-echo
-echo "TEST: $0"
-
-if [ -z "${data_dir}" ]
-then
-  cd ../
-  cpath=`pwd`
-  ECCODES_DEFINITION_PATH=$cpath/definitions
-  export ECCODES_DEFINITION_PATH
-  ECCODES_SAMPLES_PATH=$cpath/templates
-  export ECCODES_SAMPLES_PATH
-  tools_dir=$cpath/tools/
-  examples_dir=$cpath/examples/
-  data_dir=$cpath/data
-else
-  echo "Skipping test $0"
-  exit
-fi
-
-cd ${examples_dir}
-
-if [ -z "${GRIB_API_INCLUDE}" ]
-then 
-  GRIB_API_INCLUDE=`pwd`/src
-fi
-
-if [ -z "${GRIB_API_LIB}" ]
-then 
-  GRIB_API_LIB=`pwd`/src
-fi
-
-#${tools_dir}codes_info
-
-set -u
-
diff --git a/examples/iterator.c b/examples/iterator.c
deleted file mode 100644
index a1922c1..0000000
--- a/examples/iterator.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2005-2016 ECMWF.
- *
- * This software is licensed under the terms of the Apache Licence Version 2.0
- * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
- *
- * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
- * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
- */
-
-/*
- * C Implementation: iterator
- *
- * Description: how to use an iterator on lat/lon/values.
- *
- *
- *
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "grib_api.h"  
-
-void usage(char* prog) {
-  printf("Usage: %s grib_file\n",prog);
-  exit(1);
-}
-
-int main(int argc, char** argv) {
-  FILE* in = NULL;
-  int err = 0;
-  double lat,lon,value,missingValue=0;
-  int n=0;
-  char* filename = NULL;
-
-  /* Message handle. Required in all the grib_api calls acting on a message.*/
-  grib_handle *h = NULL;   
-  /* Iterator on lat/lon/values.*/
-  grib_iterator* iter=NULL;  
-  
-  if (argc != 2) usage(argv[0]);
-
-  filename=strdup(argv[1]);
-
-  in = fopen(filename,"r");
-  if(!in) {
-    printf("ERROR: unable to open file %s\n",filename);
-    return 1;
-  }
-
-  /* Loop on all the messages in a file.*/
-  while ((h = grib_handle_new_from_file(0,in,&err)) != NULL ) { 
-	/* Check of errors after reading a message. */
-    if (err != GRIB_SUCCESS) GRIB_CHECK(err,0);                       
-
-	/* Get the double representing the missing value in the field. */
-	GRIB_CHECK(grib_get_double(h,"missingValue",&missingValue),0);  
-
-	/* A new iterator on lat/lon/values is created from the message handle h. */
-	iter=grib_iterator_new(h,0,&err);                                     
-    if (err != GRIB_SUCCESS) GRIB_CHECK(err,0);                       
-
-    n = 0;
-	/* Loop on all the lat/lon/values. */
-    while(grib_iterator_next(iter,&lat,&lon,&value)) {   
-	  /* You can now print lat and lon,  */
-      printf("- %d - lat=%f lon=%f value=",n,lat,lon);   
-	  /* decide what to print if a missing value is found. */
-      if (value == missingValue ) printf("missing\n");   
-	  /* and print the value if is not missing. */
-	  else printf("%f\n",value);
-      n++;
-    }
-
-	/* At the end the iterator is deleted to free memory. */
-    grib_iterator_delete(iter);               
-
-    /* At the end the grib_handle is deleted to free memory. */
-    grib_handle_delete(h);            
-  }
-
-
-  fclose(in);
-
-  return 0;
-}
diff --git a/examples/iterator.sh b/examples/iterator.sh
deleted file mode 100755
index a314f93..0000000
--- a/examples/iterator.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-. ./include.sh
-
-${examples_dir}iterator ${data_dir}/reduced_gaussian_model_level.grib1 > /dev/null
-
-${examples_dir}iterator ${data_dir}/regular_gaussian_model_level.grib1 > /dev/null
-
diff --git a/examples/iterator_fortran.F b/examples/iterator_fortran.F
deleted file mode 100644
index d40bce7..0000000
--- a/examples/iterator_fortran.F
+++ /dev/null
@@ -1,82 +0,0 @@
-C Copyright 2005-2016 ECMWF.
-C
-C This software is licensed under the terms of the Apache Licence Version 2.0
-C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-C 
-C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-C
-C
-C
-C  Fortran 77 Implementation: iterator_fortran
-C
-C  Description: how to use an iterator on lat/lon/values.
-C
-C
-C
-C
-C
-      program iterator
-      implicit none
-      include 'grib_api_fortran.h'
-      integer ifile
-      integer iret,iter
-      real*8 lat,lon,value,missingValue
-      integer n,flags
-      character*256 filename
-      character*256 error
-
-C     Message identifier.
-      integer igrib
-
-      ifile=5
-
-      call grib_check(grib_open_file(ifile,
-     X'../data/regular_latlon_surface.grib1','r'))
-
-C     Loop on all the messages in a file.
-  10  iret=grib_new_from_file(ifile,igrib)
-      if (igrib .eq. -1 )  then
-        if (iret .ne.0) then
-           call grib_check(iret)
-        endif
-        stop
-      endif
-
-C     get as a real8
-      call grib_check(grib_get_real8(igrib
-     X,'missingValue',missingValue))
-      write(*,*) 'missingValue=',missingValue
-
-C     A new iterator on lat/lon/values is created from the message igrib
-      flags = 0
-      call grib_check(grib_iterator_new(igrib,iter,flags))
-
-      n = 0
-C     Loop on all the lat/lon/values.
-  20  iret = grib_iterator_next(iter,lat,lon,value)
-      if ( iret .eq. 0 ) goto 30
-C     You can now print lat and lon,
-      if ( value .eq. missingValue ) then
-C     decide what to print if a missing value is found.
-        write(*,*) "- ",n," - lat=",lat," lon=",lon," value=missing"
-      else
-C     or print the value if is not missing.
-        write(*,*) " ",n," lat=",lat," lon=",lon," value=",value
-      endif
-
-      n=n+1
-
-      goto 20
-  30  continue
-
-C     At the end the iterator is deleted to free memory.
-      call grib_check(grib_iterator_delete(iter))
-
-      goto 10
-
-      call grib_check(grib_release(igrib))
-
-      call grib_check(grib_close_file(ifile))
-
-      end
diff --git a/examples/iterator_fortran.sh b/examples/iterator_fortran.sh
deleted file mode 100755
index ec38d52..0000000
--- a/examples/iterator_fortran.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-. ./include.sh
-
-${examples_dir}iterator_fortran > /dev/null
-
-
diff --git a/examples/keys_iterator.c b/examples/keys_iterator.c
deleted file mode 100644
index 258cb4a..0000000
--- a/examples/keys_iterator.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2005-2016 ECMWF.
- *
- * This software is licensed under the terms of the Apache Licence Version 2.0
- * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
- *
- * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
- * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
- */
-
-/*
- * C Implementation: keys_iterator
- *
- * Description:
- * Example on how to use keys_iterator functions and the
- * grib_keys_iterator structure to get all the available
- * keys in a message.
- *
- *
- *
- */
-
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <string.h>
-
-#include "grib_api.h"
-
-#define MAX_KEY_LEN  255
-#define MAX_VAL_LEN  1024
-
-static void usage(char* progname);
-
-int main(int argc, char *argv[])
-{
-  /* To skip read only and not coded keys
-     unsigned long key_iterator_filter_flags=GRIB_KEYS_ITERATOR_SKIP_READ_ONLY ||
-     GRIB_KEYS_ITERATOR_SKIP_COMPUTED;
-  */
-  unsigned long key_iterator_filter_flags=GRIB_KEYS_ITERATOR_ALL_KEYS;
-
-  /* valid name_spaces are ls and mars */
-  char* name_space="ls";
-
-  /* name_space=NULL to get all the keys */
-  /* char* name_space=0; */
-
-  FILE* f;
-  grib_handle* h=NULL;
-  grib_keys_iterator* kiter=NULL;
-  int err=0;
-  int grib_count=0;
-
-  char value[MAX_VAL_LEN];
-  size_t vlen=MAX_VAL_LEN;
-
-  if (argc != 2) usage(argv[0]);
-
-  f = fopen(argv[1],"r");
-  if(!f) {
-    perror(argv[1]);
-    exit(1);
-  }
-
-  while((h = grib_handle_new_from_file(0,f,&err)) != NULL) {
-
-    grib_count++;
-    printf("-- GRIB N. %d --\n",grib_count);
-    if(!h) {
-      printf("ERROR: Unable to create grib handle\n");
-      exit(1);
-    }
-
-    kiter=grib_keys_iterator_new(h,key_iterator_filter_flags,name_space);
-    if (!kiter) {
-      printf("ERROR: Unable to create keys iterator\n");
-      exit(1);
-    }
-
-    while(grib_keys_iterator_next(kiter))
-    {
-      const char* name = grib_keys_iterator_get_name(kiter);
-      vlen=MAX_VAL_LEN;
-      bzero(value,vlen);
-      GRIB_CHECK(grib_get_string(h,name,value,&vlen),name);
-      printf("%s = %s\n",name,value);
-    }
-
-    grib_keys_iterator_delete(kiter);
-
-  }
-
-  return 0;
-
-}
-
-static void usage(char* progname) {
-  printf("\nUsage: %s grib_file\n",progname);
-  exit(1);
-}
-
diff --git a/examples/keys_iterator.sh b/examples/keys_iterator.sh
deleted file mode 100755
index cf83dc1..0000000
--- a/examples/keys_iterator.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-. ./include.sh
-
-${examples_dir}keys_iterator ${data_dir}/reduced_latlon_surface.grib1 > /dev/null
-
-${examples_dir}keys_iterator ${data_dir}/regular_gaussian_model_level.grib1 > /dev/null
-
diff --git a/examples/keys_iterator_fortran.F b/examples/keys_iterator_fortran.F
deleted file mode 100644
index ff006b6..0000000
--- a/examples/keys_iterator_fortran.F
+++ /dev/null
@@ -1,78 +0,0 @@
-C Copyright 2005-2016 ECMWF.
-C
-C This software is licensed under the terms of the Apache Licence Version 2.0
-C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-C 
-C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-C
-C
-C
-C  Fortran 77 Implementation: keys_iterator
-C
-C  Description:
-C  Example on how to use keys_iterator functions and the
-C  grib_keys_iterator structure to get all the available
-C  keys in a message.
-C
-C
-C
-C
-      program keys_iterator
-      implicit none
-      include 'grib_api_fortran.h'
-      character*20 name_space
-      integer kiter,ifile,igrib,iret
-      character*256 key
-      character*256 value
-      character*512 all
-      integer len,strlen
-      integer grib_count
-      len=256
-
-      ifile=5
-
-      call grib_check(grib_open_file(ifile,
-     X'../data/regular_latlon_surface.grib1','r'))
-
-C     Loop on all the messages in a file.
-  10  iret=grib_new_from_file(ifile,igrib)
-      if (igrib .eq. -1 )  then
-        if (iret .ne.0) then
-           call grib_check(iret)
-        endif
-        stop
-      endif
-
-      grib_count=grib_count+1
-      write(*,*) '-- GRIB N. ',grib_count,' --'
-
-C     valid name_spaces are ls and mars
-      name_space='ls'
-C     name_space=' ' to get all the keys */
-C     name_space=' '
-
-      strlen = index(name_space,' ') - 1
-      call grib_check(
-     Xgrib_keys_iterator_new(igrib,kiter,name_space(1:strlen)))
-C     call grib_check(grib_keys_iterator_skip_read_only(kiter))
-C     call grib_check(grib_keys_iterator_skip_function(kiter))
-C     call grib_check(grib_keys_iterator_skip_not_coded(kiter))
-
-  20  if (grib_keys_iterator_next(kiter) .ne. 1) goto 10
-
-      call grib_check(grib_keys_iterator_get_name(kiter,key,strlen))
-      call grib_check(grib_get_string(igrib,key(1:strlen),value))
-      all=key// ' = ' // value
-      write(*,*) all
-
-      goto 20
-
-      call grib_check(grib_keys_iterator_delete(kiter))
-
-      call grib_check(grib_release(igrib))
-
-      call grib_check(grib_close_file(ifile))
-
-      end
-
diff --git a/examples/keys_iterator_fortran.sh b/examples/keys_iterator_fortran.sh
deleted file mode 100755
index 57ac528..0000000
--- a/examples/keys_iterator_fortran.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-. ./include.sh
-
-${examples_dir}keys_iterator_fortran > /dev/null
-
-
diff --git a/examples/multi.c b/examples/multi.c
deleted file mode 100644
index eef04e0..0000000
--- a/examples/multi.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2005-2016 ECMWF.
- *
- * This software is licensed under the terms of the Apache Licence Version 2.0
- * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
- *
- * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
- * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
- */
-
-/*
- * C Implementation: multi  
- *
- * Description: How to decode grib messages containing multiple
- *              fields. Try to turn on and off multi support to
- *              see the difference. Default is OFF.
- *  			For all the tools defalut is multi support ON.
- *
- *
- *
- *
- */
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "grib_api.h"
-
-int main(int argc, char** argv) {
-  int err = 0;
-  long parameterCategory=0,parameterNumber=0,discipline=0;
-  FILE* in = NULL;
-  char* filename = "../data/multi.grib2";
-  grib_handle *h = NULL;
-
-  /* turn on support for multi fields messages */
-  grib_multi_support_on(0);
-
-  /* turn off support for multi fields messages */
-  /* grib_multi_support_off(0); */
-
-  in = fopen(filename,"r");
-  if(!in) {
-    printf("ERROR: unable to open file %s\n",filename);
-    return 1;
-  }
-
-
-  while ((h = grib_handle_new_from_file(0,in,&err)) != NULL ) {
-
-    GRIB_CHECK(err,0);
-
-    GRIB_CHECK(grib_get_long(h,"discipline",&discipline),0);
-    printf("discipline=%ld\n",discipline);
-
-    GRIB_CHECK(grib_get_long(h,"parameterCategory",&parameterCategory),0);
-    printf("parameterCategory=%ld\n",parameterCategory);
-
-    GRIB_CHECK(grib_get_long(h,"parameterNumber",&parameterNumber),0);
-    printf("parameterNumber=%ld\n",parameterNumber);
-
-    if ( discipline == 0 && parameterCategory==2) {
-    if (parameterNumber == 2) printf("-------- u -------\n");
-    if (parameterNumber == 3) printf("-------- v -------\n");
-    }
-  }
-
-  grib_handle_delete(h);
-
-  fclose(in);
-  return 0;
-}
diff --git a/examples/multi.sh b/examples/multi.sh
deleted file mode 100755
index e4f691d..0000000
--- a/examples/multi.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-. ./include.sh
-
-if [ ! -f "${data_dir}/multi.grib2" ] 
-then
-  echo SKIP: $0
-  exit
-fi
-${examples_dir}multi > /dev/null
-
-
diff --git a/examples/multi_fortran.F b/examples/multi_fortran.F
deleted file mode 100644
index 430bd65..0000000
--- a/examples/multi_fortran.F
+++ /dev/null
@@ -1,78 +0,0 @@
-C Copyright 2005-2016 ECMWF.
-C
-C This software is licensed under the terms of the Apache Licence Version 2.0
-C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-C 
-C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-C
-C
-C
-C  Fortran 77 Implementation: multi_fortran
-C
-C  Description: How to decode grib messages containing multiple
-C               fields. Try to turn on and off multi support to
-C               see the difference. Default is OFF.
-C         For all the tools defalut is multi support ON.
-C
-C
-C
-C
-C
-      program multi
-      implicit none
-      include 'grib_api_fortran.h'
-      integer iret
-      character*256 error
-      integer*4 parameterCategory,parameterNumber,discipline
-      integer ifile,igrib
-
-      call grib_check( grib_open_file(ifile
-     X,'../data/multi.grib2','r'))
-
-C     turn on support for multi fields messages */
-      call grib_check(grib_multi_support_on())
-
-C     turn off support for multi fields messages */
-C     call grib_check(grib_multi_support_off())
-
-C     Loop on all the messages in a file.
-  10  iret=grib_new_from_file(ifile,igrib)
-      if (igrib .eq. -1 )  then
-        if (iret .ne.0) then
-       call grib_check(iret)
-        endif
-        stop
-      endif
-
-C     get as a integer*4
-      call grib_check(grib_get_int(igrib,'discipline',discipline))
-      write(*,*) 'discipline=',discipline
-
-C     get as a integer*4
-      call grib_check(grib_get_int(igrib,'parameterCategory'
-     X,parameterCategory))
-      write(*,*) 'parameterCategory=',parameterCategory
-
-C     get as a integer*4
-      call grib_check(grib_get_int(igrib,'parameterNumber'
-     X,parameterNumber))
-      write(*,*) 'parameterNumber=',parameterNumber
-
-      if ( discipline .eq. 0 .and. parameterCategory .eq. 2) then
-        if (parameterNumber .eq. 2) then
-           write(*,*) "-------- u -------"
-        endif
-        if (parameterNumber .eq. 3) then
-           write(*,*) "-------- v -------"
-        endif
-      endif
-
-      goto 10
-
-      call grib_check(grib_release(igrib))
-
-      call grib_check(grib_close_file(ifile))
-
-      end
-
diff --git a/examples/multi_fortran.sh b/examples/multi_fortran.sh
deleted file mode 100755
index 38d3c9d..0000000
--- a/examples/multi_fortran.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-. ./include.sh
-
-if [ ! -f "${data_dir}/multi.grib2" ] 
-then
-  echo SKIP: $0
-  exit
-fi
-
-${examples_dir}multi_fortran > /dev/null
-
-
diff --git a/examples/nearest.c b/examples/nearest.c
deleted file mode 100644
index da29172..0000000
--- a/examples/nearest.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2005-2016 ECMWF.
- *
- * This software is licensed under the terms of the Apache Licence Version 2.0
- * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
- *
- * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
- * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
- */
-
-/*
- * C Implementation: fieldset
- *
- * Description: how to use a fieldset.
- *
- *
- *
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "grib_api.h"
-
-void usage(char* prog) {
-  printf("Usage: %s grib_file grib_file ...\n",prog);
-  exit(1);
-}
-
-int main(int argc, char** argv) {
-  int err = 0;
-  long step=0;
-  size_t nfiles;
-  int i=0;
-  grib_fieldset* set=NULL;
-  grib_handle* h=NULL;
-  char param[20]={0,};
-  size_t len=20;
-  double lats[4]={0,};
-  double lons[4]={0,};
-  double values[4]={0,};
-  double distances[4]={0,};
-  size_t indexes[4]={0,};
-  char* order_by="param,step";
-
-  size_t size=4;
-  double lat=-40,lon=15;
-  int mode=0;
-  int count;
-  char** filenames;
-  grib_nearest* nearest=NULL;
-
-  if (argc < 2) usage(argv[0]);
-
-  nfiles=argc-1;
-  filenames=(char**)malloc(sizeof(char*)*nfiles);
-  for (i=0;i<nfiles;i++)
-    filenames[i]=(char*)strdup(argv[i+1]);
-
-  set=grib_fieldset_new_from_files(0,filenames,nfiles,0,0,0,order_by,&err);
-  GRIB_CHECK(err,0);
-
-  printf("\nordering by %s\n",order_by);
-  printf("\n%d fields in the fieldset\n",grib_fieldset_count(set));
-  printf("n,step,param\n");
-
-  mode=GRIB_NEAREST_SAME_GRID |  GRIB_NEAREST_SAME_POINT;
-  count=1;
-  while ((h=grib_fieldset_next_handle(set,&err))!=NULL) {
-    GRIB_CHECK(grib_get_long(h,"step",&step),0);
-    GRIB_CHECK(grib_get_string(h,"param",param,&len),0);
-
-    printf("%d %ld %s  ",count,step,param);
-    if (!nearest) nearest=grib_nearest_new(h,&err);
-    GRIB_CHECK(err,0);
-    GRIB_CHECK(grib_nearest_find(nearest,h,lat,lon,mode,lats,lons,values,distances,indexes,&size),0);
-    for (i=0;i<4;i++) printf("%d %.2f %.2f %g %g - ",
-         (int)indexes[i],lats[i],lons[i],distances[i],values[i]);
-    printf("\n");
-
-    grib_handle_delete(h);
-    count++;
-  }
-
-  if (nearest) grib_nearest_delete(nearest);
-
-  if (set) grib_fieldset_delete(set);
-
-  return 0;
-}
diff --git a/examples/precision.c b/examples/precision.c
deleted file mode 100644
index 68d3a92..0000000
--- a/examples/precision.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright 2005-2016 ECMWF.
- *
- * This software is licensed under the terms of the Apache Licence Version 2.0
- * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
- *
- * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
- * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
- */
-
-/*
- * C Implementation: precision
- *
- * Description: how to control decimal precision when packing fields.
- *
- *
- *
- *
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-
-#include "grib_api.h"
-
-int main(int argc, char** argv) {
-  int err = 0;
-  size_t size=0;
-
-  FILE* in = NULL;
-  char* infile = "../data/regular_latlon_surface.grib1";
-  FILE* out = NULL;
-  char* outfile = "out.grib1";
-  grib_handle *h = NULL;
-  const void* buffer = NULL;
-  double* values1=NULL;
-  double* values2=NULL;
-  double maxa=0,a=0;
-  double maxv=0,minv=0;
-  double maxr=0,r=0;
-  long decimalPrecision;
-  long bitsPerValue1=0, bitsPerValue2=0;
-  int i=0;
-
-  in = fopen(infile,"r");
-  if(!in) {
-    printf("ERROR: unable to open file %s\n",infile);
-    return 1;
-  }
-
-  out = fopen(outfile,"w");
-  if(!in) {
-    printf("ERROR: unable to open file %s\n",outfile);
-    return 1;
-  }
-
-  /* create a new handle from a message in a file */
-  h = grib_handle_new_from_file(0,in,&err);
-  if (h == NULL) {
-    printf("Error: unable to create handle from file %s\n",infile);
-  }
-
-  /* bitsPerValue before changing the packing parameters */
-  GRIB_CHECK(grib_get_long(h,"bitsPerValue",&bitsPerValue1),0);
-
-  /* get the size of the values array*/
-  GRIB_CHECK(grib_get_size(h,"values",&size),0);
-
-  values1 = malloc(size*sizeof(double));
-  /* get data values before changing the packing parameters*/
-  GRIB_CHECK(grib_get_double_array(h,"values",values1,&size),0);
-
-  /* setting decimal precision=2 means that 2 decimal digits
-     are preserved when packing.  */
-  decimalPrecision=2;
-  GRIB_CHECK(grib_set_long(h,"setDecimalPrecision",decimalPrecision),0);
-   
-  /* bitsPerValue after changing the packing parameters */
-  GRIB_CHECK(grib_get_long(h,"bitsPerValue",&bitsPerValue2),0);
-
-  values2 = malloc(size*sizeof(double));
-  /* get data values after changing the packing parameters*/
-  GRIB_CHECK(grib_get_double_array(h,"values",values2,&size),0);
-
-  /* computing error */
-  maxa=0;
-  maxr=0;
-  maxv=values2[0];
-  minv=maxv;
-  for (i=0;i<size;i++) {
-     a=fabs(values2[i]-values1[i]);
-     if ( values2[i] > maxv ) maxv=values2[i];
-     if ( values2[i] < maxv ) minv=values2[i];
-     if ( values2[i] !=0 ) r=fabs((values2[i]-values1[i])/values2[i]);
-     if ( a > maxa ) maxa=a;
-     if ( r > maxr ) maxr=r;
-  }
-  printf("max absolute error = %g\n",maxa);
-  printf("max relative error = %g\n",maxr);
-  printf("min value = %g\n",minv);
-  printf("max value = %g\n",maxv);
-
-  printf("old number of bits per value=%ld\n",(long)bitsPerValue1);
-  printf("new number of bits per value=%ld\n",(long)bitsPerValue2);
-
-  /* get the coded message in a buffer */
-  GRIB_CHECK(grib_get_message(h,&buffer,&size),0);
-
-  /* write the buffer in a file*/
-  if(fwrite(buffer,1,size,out) != size) 
-  {
-     perror(argv[1]);
-     exit(1);
-  }
-
-  /* delete handle */
-  grib_handle_delete(h);
-
-  fclose(in);
-  fclose(out);
-
-  return 0;
-}
-
diff --git a/examples/precision.sh b/examples/precision.sh
deleted file mode 100755
index 7dcb0c5..0000000
--- a/examples/precision.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-. ./include.sh
-
-${examples_dir}precision > /dev/null
-
-
diff --git a/examples/precision_fortran.F b/examples/precision_fortran.F
deleted file mode 100644
index 559f509..0000000
--- a/examples/precision_fortran.F
+++ /dev/null
@@ -1,97 +0,0 @@
-C Copyright 2005-2016 ECMWF.
-C
-C This software is licensed under the terms of the Apache Licence Version 2.0
-C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-C 
-C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-C
-C
-C
-C  Fortran 77 Implementation: precision
-C
-C  Description: how to control decimal precision when packing fields.
-C
-C
-C
-C
-C
-      program precision
-      implicit none
-      integer maxNumberOfValues
-      parameter (maxNumberOfValues=10000)
-      include 'grib_api_fortran.h'
-      integer*4 size
-      integer infile,outfile
-      integer igrib
-      real*8 values1(maxNumberOfValues)
-      real*8 values2(maxNumberOfValues)
-      real*8 maxa,a,maxv,minv,maxr,r
-      integer*4 decimalPrecision,bitsPerValue1,bitsPerValue2
-      integer i
-
-      call grib_check(grib_open_file(infile
-     X,'../data/regular_latlon_surface.grib1','r'))
-
-      call grib_check(grib_open_file(outfile
-     X,'../data/regular_latlon_surface_prec.grib1','w'))
-
-C     a new grib message is loaded from file
-C     igrib is the grib id to be used in subsequent calls
-      call grib_check(grib_new_from_file(infile,igrib))
-
-C     bitsPerValue before changing the packing parameters
-      call grib_check(grib_get_int(igrib,'bitsPerValue',bitsPerValue1))
-
-C     get the size of the values array
-      call grib_check(grib_get_size(igrib,"values",size))
-
-C     get data values before changing the packing parameters*/
-      call grib_check(grib_get_real8_array(igrib,"values",values1,size))
-
-C     setting decimal precision=2 means that 2 decimal digits
-C     are preserved when packing.
-      decimalPrecision=2
-      call grib_check(grib_set_int(igrib,"setDecimalPrecision"
-     X,decimalPrecision))
-
-C     bitsPerValue after changing the packing parameters
-      call grib_check(grib_get_int(igrib,"bitsPerValue",bitsPerValue2))
-
-C     get data values after changing the packing parameters
-      call grib_check(grib_get_real8_array(igrib,"values",values2,size))
-
-C     computing error
-      maxa=0
-      maxr=0
-      maxv=values2(1)
-      minv=maxv
-      do i=1,size
-        a=abs(values2(i)-values1(i))
-        if ( values2(i) .gt. maxv ) maxv=values2(i)
-        if ( values2(i) .lt. maxv ) minv=values2(i)
-        if ( values2(i) .ne. 0 ) then
-         r=abs((values2(i)-values1(i))/values2(i))
-        endif
-        if ( a .gt. maxa ) maxa=a
-        if ( r .gt. maxr ) maxr=r
-      enddo
-      write(*,*) "max absolute error = ",maxa
-      write(*,*) "max relative error = ",maxr
-      write(*,*) "min value = ",minv
-      write(*,*) "max value = ",maxv
-
-      write(*,*) "old number of bits per value=",bitsPerValue1
-      write(*,*) "new number of bits per value=",bitsPerValue2
-
-C     write modified message to a file
-      call grib_check(grib_write(igrib,outfile))
-
-      call grib_check(grib_release(igrib))
-
-      call grib_check(grib_close_file(infile))
-
-      call grib_check(grib_close_file(outfile))
-
-      end
-
diff --git a/examples/precision_fortran.sh b/examples/precision_fortran.sh
deleted file mode 100755
index 6b17b45..0000000
--- a/examples/precision_fortran.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-. ./include.sh
-
-${examples_dir}precision_fortran > /dev/null
-
-
diff --git a/examples/print_data.c b/examples/print_data.c
deleted file mode 100644
index 4e85e53..0000000
--- a/examples/print_data.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2005-2016 ECMWF.
- *
- * This software is licensed under the terms of the Apache Licence Version 2.0
- * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
- *
- * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
- * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
- */
-
-/*
- * C Implementation: print_data
- *
- * Description: prints all the data contained in a grib file
- *
- *
- *
- */
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "grib_api.h"
-
-void usage(char* prog) {
-  printf("usage: %s filename\n",prog);
-  exit(1);
-}
-
-int main(int argc, char** argv) {
-  int err = 0,i;
-  double *values = NULL;
-  double max,min,average;
-  size_t values_len= 0;
-
-  FILE* in = NULL;
-  char* filename ;
-  grib_handle *h = NULL;
-
-  if (argc<2) usage(argv[0]);
-  filename=argv[1];
-
-  in = fopen(filename,"r");
-  if(!in) {
-    printf("ERROR: unable to open file %s\n",filename);
-    return 1;
-  }
-
-  /* create new handle from a message in a file*/
-  h = grib_handle_new_from_file(0,in,&err);
-  if (h == NULL) {
-    printf("Error: unable to create handle from file %s\n",filename);
-  }
-
-
-  /* get the size of the values array*/
-  GRIB_CHECK(grib_get_size(h,"values",&values_len),0);
-
-  values = malloc(values_len*sizeof(double));
-
-  /* get data values*/
-  GRIB_CHECK(grib_get_double_array(h,"values",values,&values_len),0);
-
-  for(i = 0; i < values_len; i++)
-    printf("%d  %.10e\n",i+1,values[i]);
-
-  free(values);
-
-
-  GRIB_CHECK(grib_get_double(h,"max",&max),0);
-  GRIB_CHECK(grib_get_double(h,"min",&min),0);
-  GRIB_CHECK(grib_get_double(h,"average",&average),0);
-
-  printf("%d values found in %s\n",(int)values_len,filename);
-  printf("max=%.10e min=%.10e average=%.10e\n",max,min,average);
-
-  grib_handle_delete(h);
-
-  fclose(in);
-  return 0;
-}
diff --git a/examples/print_data.sh b/examples/print_data.sh
deleted file mode 100755
index b2db6e4..0000000
--- a/examples/print_data.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-. ./include.sh
-
-numberOfValues=`${examples_dir}print_data ../data/constant_field.grib1 | grep values | awk '{print $1}'`
-
-if [ $numberOfValues -ne 99200 ]
-then
-  echo ERROR: wrong number of values
-  exit 1;
-fi
-
-
diff --git a/examples/print_data_fortran.F b/examples/print_data_fortran.F
deleted file mode 100644
index e89ac34..0000000
--- a/examples/print_data_fortran.F
+++ /dev/null
@@ -1,80 +0,0 @@
-C Copyright 2005-2016 ECMWF.
-C
-C This software is licensed under the terms of the Apache Licence Version 2.0
-C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-C 
-C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-C
-C
-C  Fortran 77  Implementation: print_data_fortran
-C
-C  Description: prints all the data contained in a grib file
-C
-C
-C
-C
-      program print_data_fortran
-      implicit none
-      integer maxNumberOfValues
-      parameter( maxNumberOfValues = 100000 )
-      include 'grib_api_fortran.h'
-      integer ifile
-      integer iret
-      integer igrib
-      integer i
-      real*8 values(maxNumberOfValues)
-      integer*4 numberOfValues
-      real*8 average
-      real*8 max
-      real*8 min
-      character*256 error
-      integer*4 size
-
-      size=maxNumberOfValues
-      ifile=5
-
-      iret=grib_open_file(ifile
-     X,'../data/constant_field.grib1','r')
-      call grib_check(iret)
-
-C     a new grib message is loaded from file
-C     igrib is the grib id to be used in subsequent calls
-      call grib_check( grib_new_from_file(ifile,igrib) )
-
-
-C     get the size of the values array
-      call grib_check(grib_get_size(igrib,'values',numberOfValues))
-      if ( numberOfValues .gt. maxNumberOfValues ) then
-        write(*,*)'ERROR: maxNumberOfValues too small numberOfValues=',
-     XnumberOfValues
-	    stop
-      endif
-
-C     get data values
-      call grib_check(grib_get_real8_array(igrib,'values',values,size))
-      if ( size .ne. numberOfValues ) then
-        write(*,*) 'ERROR: wrong numberOfValues'
-        stop
-      endif
-
-      do i=1,numberOfValues
-        write(*,*)'  ',i,values(i)
-      enddo
-
-      average =average / numberOfValues
-
-      write(*,*)numberOfValues,' values found '
-
-      call grib_check(grib_get_real8(igrib,'max',max))
-      write(*,*) 'max=',max
-      call grib_check(grib_get_real8(igrib,'min',min))
-      write(*,*) 'min=',min
-      call grib_check(grib_get_real8(igrib,'average',average))
-      write(*,*) 'average=',average
-
-      call grib_check(grib_release(igrib))
-
-      call grib_check(grib_close_file(ifile))
-
-      end
diff --git a/examples/print_data_fortran.sh b/examples/print_data_fortran.sh
deleted file mode 100755
index 96335f6..0000000
--- a/examples/print_data_fortran.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-. ./include.sh
-
-numberOfValues=`${examples_dir}print_data_fortran | grep values | awk '{print $1}'`
-
-if [ $numberOfValues -ne 99200 ]
-then
-  echo ERROR: wrong number of values
-  exit 1;
-fi
-
-
diff --git a/examples/python/CMakeLists.txt b/examples/python/CMakeLists.txt
index 23aa1d6..2371f2c 100644
--- a/examples/python/CMakeLists.txt
+++ b/examples/python/CMakeLists.txt
@@ -30,6 +30,7 @@ endforeach()
 list( APPEND tests
    grib_clone
    grib_count_messages
+   grib_get_message_offset
    grib_get_keys
    grib_index
    grib_iterator
@@ -37,9 +38,9 @@ list( APPEND tests
    grib_multi_write
    grib_nearest
    grib_print_data
-   samples
+   grib_samples
    grib_set_keys
-   set_missing
+   grib_set_missing
    binary_message
    grib_set_bitmap
    bufr_attributes
@@ -79,3 +80,13 @@ ecbuild_add_test( TARGET eccodes_p_bufr_encode_flight_test
                   RESOURCES   flight_data.csv
                   TEST_DEPENDS eccodes_download_bufrs
 )
+
+# Conditional tests
+ecbuild_add_test( TARGET eccodes_p_grib_ccsds_test
+                  TYPE       SCRIPT
+                  DEPENDS    ${ptools}
+                  COMMAND    ${CMAKE_CURRENT_SOURCE_DIR}/grib_ccsds.sh
+                  CONDITION  HAVE_PYTHON AND HAVE_AEC
+                  ENVIRONMENT PYTHON=${PYTHON_EXECUTABLE}
+                  TEST_DEPENDS eccodes_download_gribs
+)
diff --git a/examples/python/Makefile.am b/examples/python/Makefile.am
index 5e64304..cb168ce 100644
--- a/examples/python/Makefile.am
+++ b/examples/python/Makefile.am
@@ -10,9 +10,9 @@ TESTS = grib_clone.sh \
         grib_multi_write.sh \
         grib_nearest.sh \
         grib_print_data.sh \
-        samples.sh \
+        grib_samples.sh \
         grib_set_keys.sh \
-        set_missing.sh \
+        grib_set_missing.sh \
         binary_message.sh \
         grib_set_bitmap.sh \
         bufr_read_header.sh \
@@ -51,9 +51,9 @@ EXTRA_DIST = $(TESTS) include.sh CMakeLists.txt include.ctest.sh.in \
              grib_multi_write.py \
              grib_nearest.py \
              grib_print_data.py \
-             samples.py \
+             grib_samples.py \
              grib_set_keys.py \
-             set_missing.py \
+             grib_set_missing.py \
              binary_message.py \
              grib_set_pv.py \
              grib_set_bitmap.py \
diff --git a/examples/python/Makefile.in b/examples/python/Makefile.in
deleted file mode 100644
index a0b3707..0000000
--- a/examples/python/Makefile.in
+++ /dev/null
@@ -1,1317 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
- at WITH_PYTHON_TRUE@noinst_PROGRAMS = p_grib_keys_iterator$(EXEEXT) \
- at WITH_PYTHON_TRUE@	p_grib_print_data$(EXEEXT) \
- at WITH_PYTHON_TRUE@	p_grib_iterator$(EXEEXT) \
- at WITH_PYTHON_TRUE@	p_grib_count_messages$(EXEEXT)
-subdir = examples/python
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/config/depcomp $(top_srcdir)/config/test-driver
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am__p_grib_count_messages_SOURCES_DIST = grib_count_messages.c
- at WITH_PYTHON_TRUE@am_p_grib_count_messages_OBJECTS =  \
- at WITH_PYTHON_TRUE@	grib_count_messages.$(OBJEXT)
-p_grib_count_messages_OBJECTS = $(am_p_grib_count_messages_OBJECTS)
-p_grib_count_messages_LDADD = $(LDADD)
- at WITH_PYTHON_TRUE@p_grib_count_messages_DEPENDENCIES =  \
- at WITH_PYTHON_TRUE@	$(top_builddir)/src/libeccodes.la
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-am__p_grib_iterator_SOURCES_DIST = grib_iterator.c
- at WITH_PYTHON_TRUE@am_p_grib_iterator_OBJECTS =  \
- at WITH_PYTHON_TRUE@	grib_iterator.$(OBJEXT)
-p_grib_iterator_OBJECTS = $(am_p_grib_iterator_OBJECTS)
-p_grib_iterator_LDADD = $(LDADD)
- at WITH_PYTHON_TRUE@p_grib_iterator_DEPENDENCIES =  \
- at WITH_PYTHON_TRUE@	$(top_builddir)/src/libeccodes.la
-am__p_grib_keys_iterator_SOURCES_DIST = grib_keys_iterator.c
- at WITH_PYTHON_TRUE@am_p_grib_keys_iterator_OBJECTS =  \
- at WITH_PYTHON_TRUE@	grib_keys_iterator.$(OBJEXT)
-p_grib_keys_iterator_OBJECTS = $(am_p_grib_keys_iterator_OBJECTS)
-p_grib_keys_iterator_LDADD = $(LDADD)
- at WITH_PYTHON_TRUE@p_grib_keys_iterator_DEPENDENCIES =  \
- at WITH_PYTHON_TRUE@	$(top_builddir)/src/libeccodes.la
-am__p_grib_print_data_SOURCES_DIST = grib_print_data.c
- at WITH_PYTHON_TRUE@am_p_grib_print_data_OBJECTS =  \
- at WITH_PYTHON_TRUE@	grib_print_data.$(OBJEXT)
-p_grib_print_data_OBJECTS = $(am_p_grib_print_data_OBJECTS)
-p_grib_print_data_LDADD = $(LDADD)
- at WITH_PYTHON_TRUE@p_grib_print_data_DEPENDENCIES =  \
- at WITH_PYTHON_TRUE@	$(top_builddir)/src/libeccodes.la
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(p_grib_count_messages_SOURCES) $(p_grib_iterator_SOURCES) \
-	$(p_grib_keys_iterator_SOURCES) $(p_grib_print_data_SOURCES)
-DIST_SOURCES = $(am__p_grib_count_messages_SOURCES_DIST) \
-	$(am__p_grib_iterator_SOURCES_DIST) \
-	$(am__p_grib_keys_iterator_SOURCES_DIST) \
-	$(am__p_grib_print_data_SOURCES_DIST)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__tty_colors_dummy = \
-  mgn= red= grn= lgn= blu= brg= std=; \
-  am__color_tests=no
-am__tty_colors = { \
-  $(am__tty_colors_dummy); \
-  if test "X$(AM_COLOR_TESTS)" = Xno; then \
-    am__color_tests=no; \
-  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
-    am__color_tests=yes; \
-  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
-    am__color_tests=yes; \
-  fi; \
-  if test $$am__color_tests = yes; then \
-    red=''; \
-    grn=''; \
-    lgn=''; \
-    blu=''; \
-    mgn=''; \
-    brg=''; \
-    std=''; \
-  fi; \
-}
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__recheck_rx = ^[ 	]*:recheck:[ 	]*
-am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
-am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
-# A command that, given a newline-separated list of test names on the
-# standard input, print the name of the tests that are to be re-run
-# upon "make recheck".
-am__list_recheck_tests = $(AWK) '{ \
-  recheck = 1; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-        { \
-          if ((getline line2 < ($$0 ".log")) < 0) \
-	    recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
-        { \
-          recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
-        { \
-          break; \
-        } \
-    }; \
-  if (recheck) \
-    print $$0; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# A command that, given a newline-separated list of test names on the
-# standard input, create the global log from their .trs and .log files.
-am__create_global_log = $(AWK) ' \
-function fatal(msg) \
-{ \
-  print "fatal: making $@: " msg | "cat >&2"; \
-  exit 1; \
-} \
-function rst_section(header) \
-{ \
-  print header; \
-  len = length(header); \
-  for (i = 1; i <= len; i = i + 1) \
-    printf "="; \
-  printf "\n\n"; \
-} \
-{ \
-  copy_in_global_log = 1; \
-  global_test_result = "RUN"; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-         fatal("failed to read from " $$0 ".trs"); \
-      if (line ~ /$(am__global_test_result_rx)/) \
-        { \
-          sub("$(am__global_test_result_rx)", "", line); \
-          sub("[ 	]*$$", "", line); \
-          global_test_result = line; \
-        } \
-      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
-        copy_in_global_log = 0; \
-    }; \
-  if (copy_in_global_log) \
-    { \
-      rst_section(global_test_result ": " $$0); \
-      while ((rc = (getline line < ($$0 ".log"))) != 0) \
-      { \
-        if (rc < 0) \
-          fatal("failed to read from " $$0 ".log"); \
-        print line; \
-      }; \
-      printf "\n"; \
-    }; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# Restructured Text title.
-am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-# Solaris 10 'make', and several other traditional 'make' implementations,
-# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
-# by disabling -e (using the XSI extension "set +e") if it's set.
-am__sh_e_setup = case $$- in *e*) set +e;; esac
-# Default flags passed to test drivers.
-am__common_driver_flags = \
-  --color-tests "$$am__color_tests" \
-  --enable-hard-errors "$$am__enable_hard_errors" \
-  --expect-failure "$$am__expect_failure"
-# To be inserted before the command running the test.  Creates the
-# directory for the log if needed.  Stores in $dir the directory
-# containing $f, in $tst the test, in $log the log.  Executes the
-# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
-# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
-# will run the test scripts (or their associated LOG_COMPILER, if
-# thy have one).
-am__check_pre = \
-$(am__sh_e_setup);					\
-$(am__vpath_adj_setup) $(am__vpath_adj)			\
-$(am__tty_colors);					\
-srcdir=$(srcdir); export srcdir;			\
-case "$@" in						\
-  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
-    *) am__odir=.;; 					\
-esac;							\
-test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
-  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
-if test -f "./$$f"; then dir=./;			\
-elif test -f "$$f"; then dir=;				\
-else dir="$(srcdir)/"; fi;				\
-tst=$$dir$$f; log='$@'; 				\
-if test -n '$(DISABLE_HARD_ERRORS)'; then		\
-  am__enable_hard_errors=no; 				\
-else							\
-  am__enable_hard_errors=yes; 				\
-fi; 							\
-case " $(XFAIL_TESTS) " in				\
-  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
-    am__expect_failure=yes;;				\
-  *)							\
-    am__expect_failure=no;;				\
-esac; 							\
-$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-# A shell command to get the names of the tests scripts with any registered
-# extension removed (i.e., equivalently, the names of the test logs, with
-# the '.log' extension removed).  The result is saved in the shell variable
-# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
-# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
-# since that might cause problem with VPATH rewrites for suffix-less tests.
-# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
-am__set_TESTS_bases = \
-  bases='$(TEST_LOGS)'; \
-  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
-  bases=`echo $$bases`
-RECHECK_LOGS = $(TEST_LOGS)
-AM_RECURSIVE_TARGETS = check recheck
-TEST_SUITE_LOG = test-suite.log
-TEST_EXTENSIONS = @EXEEXT@ .test
-LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
-LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
-am__set_b = \
-  case '$@' in \
-    */*) \
-      case '$*' in \
-        */*) b='$*';; \
-          *) b=`echo '$@' | sed 's/\.log$$//'`; \
-       esac;; \
-    *) \
-      b='$*';; \
-  esac
-am__test_logs1 = $(TESTS:=.log)
-am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
-TEST_LOGS = $(am__test_logs2:.test.log=.log)
-TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
-TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
-	$(TEST_LOG_FLAGS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AEC_DIR = @AEC_DIR@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CCSDS_TEST = @CCSDS_TEST@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEVEL_RULES = @DEVEL_RULES@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECCODES_AGE = @ECCODES_AGE@
-ECCODES_CURRENT = @ECCODES_CURRENT@
-ECCODES_DEFINITION_PATH = @ECCODES_DEFINITION_PATH@
-ECCODES_MAIN_VERSION = @ECCODES_MAIN_VERSION@
-ECCODES_MAJOR_VERSION = @ECCODES_MAJOR_VERSION@
-ECCODES_MINOR_VERSION = @ECCODES_MINOR_VERSION@
-ECCODES_PATCH_VERSION = @ECCODES_PATCH_VERSION@
-ECCODES_REVISION = @ECCODES_REVISION@
-ECCODES_SAMPLES_PATH = @ECCODES_SAMPLES_PATH@
-ECCODES_VERSION_STR = @ECCODES_VERSION_STR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB = @EMOS_LIB@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-F90_CHECK = @F90_CHECK@
-F90_MODULE_FLAG = @F90_MODULE_FLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FORTRAN_MOD = @FORTRAN_MOD@
-GREP = @GREP@
-GRIB_API_INC = @GRIB_API_INC@
-GRIB_API_LIB = @GRIB_API_LIB@
-GRIB_DEVEL = @GRIB_DEVEL@
-IFS_SAMPLES_DIR = @IFS_SAMPLES_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JASPER_DIR = @JASPER_DIR@
-JPEG_TEST = @JPEG_TEST@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_AEC = @LIB_AEC@
-LIB_JASPER = @LIB_JASPER@
-LIB_OPENJPEG = @LIB_OPENJPEG@
-LIB_PNG = @LIB_PNG@
-LINUX_DISTRIBUTION_NAME = @LINUX_DISTRIBUTION_NAME@
-LINUX_DISTRIBUTION_VERSION = @LINUX_DISTRIBUTION_VERSION@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENJPEG_DIR = @OPENJPEG_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PERLDIR = @PERLDIR@
-PERL_INSTALL_OPTIONS = @PERL_INSTALL_OPTIONS@
-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_CHECK = @PYTHON_CHECK@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_DATA_HANDLER = @PYTHON_DATA_HANDLER@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RM = @RM@
-RPM_CONFIGURE_ARGS = @RPM_CONFIGURE_ARGS@
-RPM_HOST_CPU = @RPM_HOST_CPU@
-RPM_HOST_OS = @RPM_HOST_OS@
-RPM_HOST_VENDOR = @RPM_HOST_VENDOR@
-RPM_RELEASE = @RPM_RELEASE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_PEDANTIC = @WARN_PEDANTIC@
-WERROR = @WERROR@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
- at WITH_PYTHON_TRUE@AM_CFLAGS = @WARN_PEDANTIC@ @WERROR@
- at WITH_PYTHON_TRUE@TESTS = grib_clone.sh \
- at WITH_PYTHON_TRUE@        grib_count_messages.sh \
- at WITH_PYTHON_TRUE@        grib_get_keys.sh \
- at WITH_PYTHON_TRUE@        grib_index.sh \
- at WITH_PYTHON_TRUE@        grib_iterator.sh \
- at WITH_PYTHON_TRUE@        grib_keys_iterator.sh \
- at WITH_PYTHON_TRUE@        grib_multi_write.sh \
- at WITH_PYTHON_TRUE@        grib_nearest.sh \
- at WITH_PYTHON_TRUE@        grib_print_data.sh \
- at WITH_PYTHON_TRUE@        samples.sh \
- at WITH_PYTHON_TRUE@        grib_set_keys.sh \
- at WITH_PYTHON_TRUE@        set_missing.sh \
- at WITH_PYTHON_TRUE@        binary_message.sh \
- at WITH_PYTHON_TRUE@        grib_set_bitmap.sh \
- at WITH_PYTHON_TRUE@        bufr_read_header.sh \
- at WITH_PYTHON_TRUE@        bufr_read_synop.sh \
- at WITH_PYTHON_TRUE@        bufr_clone.sh \
- at WITH_PYTHON_TRUE@        bufr_get_keys.sh \
- at WITH_PYTHON_TRUE@        bufr_set_keys.sh \
- at WITH_PYTHON_TRUE@        bufr_expanded.sh \
- at WITH_PYTHON_TRUE@        bufr_keys_iterator.sh \
- at WITH_PYTHON_TRUE@        bufr_subset.sh \
- at WITH_PYTHON_TRUE@        bufr_attributes.sh \
- at WITH_PYTHON_TRUE@        get_product_kind.sh \
- at WITH_PYTHON_TRUE@        bufr_read_temp.sh \
- at WITH_PYTHON_TRUE@        bufr_read_scatterometer.sh \
- at WITH_PYTHON_TRUE@        gts_get_keys.sh \
- at WITH_PYTHON_TRUE@        metar_get_keys.sh
-
- at WITH_PYTHON_TRUE@TESTS_ENVIRONMENT = TOPBUILDDIR=$(top_builddir) PYTHON=$(PYTHON)
- at WITH_PYTHON_TRUE@p_grib_keys_iterator_SOURCES = grib_keys_iterator.c
- at WITH_PYTHON_TRUE@p_grib_print_data_SOURCES = grib_print_data.c
- at WITH_PYTHON_TRUE@p_grib_iterator_SOURCES = grib_iterator.c
- at WITH_PYTHON_TRUE@p_grib_count_messages_SOURCES = grib_count_messages.c
- at WITH_PYTHON_TRUE@INCLUDES = -I$(top_builddir)/src
- at WITH_PYTHON_TRUE@LDADD = $(top_builddir)/src/libeccodes.la
- at WITH_PYTHON_TRUE@DEPENDENCIES = $(LDADD)
- at WITH_PYTHON_TRUE@EXTRA_DIST = $(TESTS) include.sh CMakeLists.txt include.ctest.sh.in \
- at WITH_PYTHON_TRUE@             grib_clone.py \
- at WITH_PYTHON_TRUE@             grib_count_messages.py \
- at WITH_PYTHON_TRUE@             grib_get_keys.py \
- at WITH_PYTHON_TRUE@             grib_index.py \
- at WITH_PYTHON_TRUE@             grib_iterator.py \
- at WITH_PYTHON_TRUE@             grib_keys_iterator.py \
- at WITH_PYTHON_TRUE@             grib_multi_write.py \
- at WITH_PYTHON_TRUE@             grib_nearest.py \
- at WITH_PYTHON_TRUE@             grib_print_data.py \
- at WITH_PYTHON_TRUE@             samples.py \
- at WITH_PYTHON_TRUE@             grib_set_keys.py \
- at WITH_PYTHON_TRUE@             set_missing.py \
- at WITH_PYTHON_TRUE@             binary_message.py \
- at WITH_PYTHON_TRUE@             grib_set_pv.py \
- at WITH_PYTHON_TRUE@             grib_set_bitmap.py \
- at WITH_PYTHON_TRUE@             bufr_read_header.py \
- at WITH_PYTHON_TRUE@             bufr_read_synop.py \
- at WITH_PYTHON_TRUE@             bufr_clone.py \
- at WITH_PYTHON_TRUE@             bufr_get_keys.py \
- at WITH_PYTHON_TRUE@             bufr_set_keys.py \
- at WITH_PYTHON_TRUE@             bufr_expanded.py \
- at WITH_PYTHON_TRUE@             bufr_keys_iterator.py \
- at WITH_PYTHON_TRUE@             bufr_subset.py \
- at WITH_PYTHON_TRUE@             bufr_attributes.py \
- at WITH_PYTHON_TRUE@             get_product_kind.py \
- at WITH_PYTHON_TRUE@             bufr_read_temp.py \
- at WITH_PYTHON_TRUE@             bufr_read_scatterometer.py \
- at WITH_PYTHON_TRUE@             gts_get_keys.py \
- at WITH_PYTHON_TRUE@             metar_get_keys.py
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/python/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu examples/python/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-
-p_grib_count_messages$(EXEEXT): $(p_grib_count_messages_OBJECTS) $(p_grib_count_messages_DEPENDENCIES) $(EXTRA_p_grib_count_messages_DEPENDENCIES) 
-	@rm -f p_grib_count_messages$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(p_grib_count_messages_OBJECTS) $(p_grib_count_messages_LDADD) $(LIBS)
-
-p_grib_iterator$(EXEEXT): $(p_grib_iterator_OBJECTS) $(p_grib_iterator_DEPENDENCIES) $(EXTRA_p_grib_iterator_DEPENDENCIES) 
-	@rm -f p_grib_iterator$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(p_grib_iterator_OBJECTS) $(p_grib_iterator_LDADD) $(LIBS)
-
-p_grib_keys_iterator$(EXEEXT): $(p_grib_keys_iterator_OBJECTS) $(p_grib_keys_iterator_DEPENDENCIES) $(EXTRA_p_grib_keys_iterator_DEPENDENCIES) 
-	@rm -f p_grib_keys_iterator$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(p_grib_keys_iterator_OBJECTS) $(p_grib_keys_iterator_LDADD) $(LIBS)
-
-p_grib_print_data$(EXEEXT): $(p_grib_print_data_OBJECTS) $(p_grib_print_data_DEPENDENCIES) $(EXTRA_p_grib_print_data_DEPENDENCIES) 
-	@rm -f p_grib_print_data$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(p_grib_print_data_OBJECTS) $(p_grib_print_data_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_count_messages.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_iterator.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_keys_iterator.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_print_data.Po at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-# Recover from deleted '.trs' file; this should ensure that
-# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
-# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
-# to avoid problems with "make -n".
-.log.trs:
-	rm -f $< $@
-	$(MAKE) $(AM_MAKEFLAGS) $<
-
-# Leading 'am--fnord' is there to ensure the list of targets does not
-# expand to empty, as could happen e.g. with make check TESTS=''.
-am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
-am--force-recheck:
-	@:
-
-$(TEST_SUITE_LOG): $(TEST_LOGS)
-	@$(am__set_TESTS_bases); \
-	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
-	redo_bases=`for i in $$bases; do \
-	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
-	            done`; \
-	if test -n "$$redo_bases"; then \
-	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
-	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
-	  if $(am__make_dryrun); then :; else \
-	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
-	  fi; \
-	fi; \
-	if test -n "$$am__remaking_logs"; then \
-	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
-	       "recursion detected" >&2; \
-	else \
-	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
-	fi; \
-	if $(am__make_dryrun); then :; else \
-	  st=0;  \
-	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
-	  for i in $$redo_bases; do \
-	    test -f $$i.trs && test -r $$i.trs \
-	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
-	    test -f $$i.log && test -r $$i.log \
-	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
-	  done; \
-	  test $$st -eq 0 || exit 1; \
-	fi
-	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
-	ws='[ 	]'; \
-	results=`for b in $$bases; do echo $$b.trs; done`; \
-	test -n "$$results" || results=/dev/null; \
-	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
-	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
-	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
-	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
-	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
-	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
-	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
-	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
-	  success=true; \
-	else \
-	  success=false; \
-	fi; \
-	br='==================='; br=$$br$$br$$br$$br; \
-	result_count () \
-	{ \
-	    if test x"$$1" = x"--maybe-color"; then \
-	      maybe_colorize=yes; \
-	    elif test x"$$1" = x"--no-color"; then \
-	      maybe_colorize=no; \
-	    else \
-	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
-	    fi; \
-	    shift; \
-	    desc=$$1 count=$$2; \
-	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
-	      color_start=$$3 color_end=$$std; \
-	    else \
-	      color_start= color_end=; \
-	    fi; \
-	    echo "$${color_start}# $$desc $$count$${color_end}"; \
-	}; \
-	create_testsuite_report () \
-	{ \
-	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
-	  result_count $$1 "PASS: " $$pass  "$$grn"; \
-	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
-	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
-	  result_count $$1 "FAIL: " $$fail  "$$red"; \
-	  result_count $$1 "XPASS:" $$xpass "$$red"; \
-	  result_count $$1 "ERROR:" $$error "$$mgn"; \
-	}; \
-	{								\
-	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
-	    $(am__rst_title);						\
-	  create_testsuite_report --no-color;				\
-	  echo;								\
-	  echo ".. contents:: :depth: 2";				\
-	  echo;								\
-	  for b in $$bases; do echo $$b; done				\
-	    | $(am__create_global_log);					\
-	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
-	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
-	if $$success; then						\
-	  col="$$grn";							\
-	 else								\
-	  col="$$red";							\
-	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
-	fi;								\
-	echo "$${col}$$br$${std}"; 					\
-	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
-	echo "$${col}$$br$${std}"; 					\
-	create_testsuite_report --maybe-color;				\
-	echo "$$col$$br$$std";						\
-	if $$success; then :; else					\
-	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
-	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
-	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
-	  fi;								\
-	  echo "$$col$$br$$std";					\
-	fi;								\
-	$$success || exit 1
-
-check-TESTS:
-	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
-	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
-	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
-	exit $$?;
-recheck: all 
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	bases=`for i in $$bases; do echo $$i; done \
-	         | $(am__list_recheck_tests)` || exit 1; \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	log_list=`echo $$log_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
-	        am__force_recheck=am--force-recheck \
-	        TEST_LOGS="$$log_list"; \
-	exit $$?
-grib_clone.sh.log: grib_clone.sh
-	@p='grib_clone.sh'; \
-	b='grib_clone.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_count_messages.sh.log: grib_count_messages.sh
-	@p='grib_count_messages.sh'; \
-	b='grib_count_messages.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_get_keys.sh.log: grib_get_keys.sh
-	@p='grib_get_keys.sh'; \
-	b='grib_get_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_index.sh.log: grib_index.sh
-	@p='grib_index.sh'; \
-	b='grib_index.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_iterator.sh.log: grib_iterator.sh
-	@p='grib_iterator.sh'; \
-	b='grib_iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_keys_iterator.sh.log: grib_keys_iterator.sh
-	@p='grib_keys_iterator.sh'; \
-	b='grib_keys_iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_multi_write.sh.log: grib_multi_write.sh
-	@p='grib_multi_write.sh'; \
-	b='grib_multi_write.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_nearest.sh.log: grib_nearest.sh
-	@p='grib_nearest.sh'; \
-	b='grib_nearest.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_print_data.sh.log: grib_print_data.sh
-	@p='grib_print_data.sh'; \
-	b='grib_print_data.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-samples.sh.log: samples.sh
-	@p='samples.sh'; \
-	b='samples.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_set_keys.sh.log: grib_set_keys.sh
-	@p='grib_set_keys.sh'; \
-	b='grib_set_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-set_missing.sh.log: set_missing.sh
-	@p='set_missing.sh'; \
-	b='set_missing.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-binary_message.sh.log: binary_message.sh
-	@p='binary_message.sh'; \
-	b='binary_message.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_set_bitmap.sh.log: grib_set_bitmap.sh
-	@p='grib_set_bitmap.sh'; \
-	b='grib_set_bitmap.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_header.sh.log: bufr_read_header.sh
-	@p='bufr_read_header.sh'; \
-	b='bufr_read_header.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_synop.sh.log: bufr_read_synop.sh
-	@p='bufr_read_synop.sh'; \
-	b='bufr_read_synop.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_clone.sh.log: bufr_clone.sh
-	@p='bufr_clone.sh'; \
-	b='bufr_clone.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_get_keys.sh.log: bufr_get_keys.sh
-	@p='bufr_get_keys.sh'; \
-	b='bufr_get_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_set_keys.sh.log: bufr_set_keys.sh
-	@p='bufr_set_keys.sh'; \
-	b='bufr_set_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_expanded.sh.log: bufr_expanded.sh
-	@p='bufr_expanded.sh'; \
-	b='bufr_expanded.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_keys_iterator.sh.log: bufr_keys_iterator.sh
-	@p='bufr_keys_iterator.sh'; \
-	b='bufr_keys_iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_subset.sh.log: bufr_subset.sh
-	@p='bufr_subset.sh'; \
-	b='bufr_subset.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_attributes.sh.log: bufr_attributes.sh
-	@p='bufr_attributes.sh'; \
-	b='bufr_attributes.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-get_product_kind.sh.log: get_product_kind.sh
-	@p='get_product_kind.sh'; \
-	b='get_product_kind.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_temp.sh.log: bufr_read_temp.sh
-	@p='bufr_read_temp.sh'; \
-	b='bufr_read_temp.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_read_scatterometer.sh.log: bufr_read_scatterometer.sh
-	@p='bufr_read_scatterometer.sh'; \
-	b='bufr_read_scatterometer.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-gts_get_keys.sh.log: gts_get_keys.sh
-	@p='gts_get_keys.sh'; \
-	b='gts_get_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-metar_get_keys.sh.log: metar_get_keys.sh
-	@p='metar_get_keys.sh'; \
-	b='metar_get_keys.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-.test.log:
-	@p='$<'; \
-	$(am__set_b); \
-	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
- at am__EXEEXT_TRUE@.test$(EXEEXT).log:
- at am__EXEEXT_TRUE@	@p='$<'; \
- at am__EXEEXT_TRUE@	$(am__set_b); \
- at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
- at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
- at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
- at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
-	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
-	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
-	ctags ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	recheck tags tags-am uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/examples/python/bufr_attributes.py b/examples/python/bufr_attributes.py
index 5e6beaa..aebf7e8 100644
--- a/examples/python/bufr_attributes.py
+++ b/examples/python/bufr_attributes.py
@@ -42,15 +42,15 @@ def example():
     # loop for the messages in the file
     while 1:
         # get handle for message
-        gid = codes_bufr_new_from_file(f)
-        if gid is None:
+        bufr = codes_bufr_new_from_file(f)
+        if bufr is None:
             break
 
         print "message: %s" % cnt
 
         # we need to instruct ecCodes to expand all the descriptors
         # i.e. unpack the data values
-        codes_set(gid, 'unpack', 1)
+        codes_set(bufr, 'unpack', 1)
 
         # --------------------------------------------------------------
         # We will read the value and all the attributes available for
@@ -59,7 +59,7 @@ def example():
         # get the value
         key = 'airTemperatureAt2M'
         try:
-            print '  %s: %s' % (key, codes_get(gid, key))
+            print '  %s: %s' % (key, codes_get(bufr, key))
         except CodesInternalError as err:
             print 'Error with key="%s" : %s' % (key, err.msg)
 
@@ -69,7 +69,7 @@ def example():
         for attr in attrs:
             key = 'airTemperatureAt2M' + "->" + attr
             try:
-                print '  %s: %s' % (key, codes_get(gid, key))
+                print '  %s: %s' % (key, codes_get(bufr, key))
             except CodesInternalError as err:
                 print 'Error with key="%s" : %s' % (key, err.msg)
 
@@ -82,7 +82,7 @@ def example():
         # get the value
         key = 'airTemperatureAt2M->percentConfidence'
         try:
-            print '  %s: %s' % (key, codes_get(gid, key))
+            print '  %s: %s' % (key, codes_get(bufr, key))
         except CodesInternalError as err:
             print 'Error with key="%s" : %s' % (key, err.msg)
 
@@ -90,14 +90,14 @@ def example():
         for attr in attrs:
             key = 'airTemperatureAt2M->percentConfidence' + "->" + attr
             try:
-                print '  %s: %s' % (key, codes_get(gid, key))
+                print '  %s: %s' % (key, codes_get(bufr, key))
             except CodesInternalError as err:
                 print 'Error with key="%s" : %s' % (key, err.msg)
 
         cnt += 1
 
         # delete handle
-        codes_release(gid)
+        codes_release(bufr)
 
     # close the file
     f.close()
diff --git a/examples/python/bufr_clone.py b/examples/python/bufr_clone.py
index 17dc894..fac5686 100644
--- a/examples/python/bufr_clone.py
+++ b/examples/python/bufr_clone.py
@@ -51,7 +51,7 @@ def example():
         # write the cloned message to a file
         codes_write(clone_id, fout)
 
-        # relase the clone's handle
+        # release the clone's handle
         codes_release(clone_id)
 
     # release the source's handle
diff --git a/examples/python/bufr_expanded.py b/examples/python/bufr_expanded.py
index 0857af0..7018188 100644
--- a/examples/python/bufr_expanded.py
+++ b/examples/python/bufr_expanded.py
@@ -33,15 +33,15 @@ def example():
     # loop for the messages in the file
     while 1:
         # get handle for message
-        gid = codes_bufr_new_from_file(f)
-        if gid is None:
+        bufr = codes_bufr_new_from_file(f)
+        if bufr is None:
             break
 
         print "message: %s" % cnt
 
         # we need to instruct ecCodes to expand all the descriptors
         # i.e. unpack the data values
-        codes_set(gid, 'unpack', 1)
+        codes_set(bufr, 'unpack', 1)
 
         # ----------------------------------
         # get all the expanded data values
@@ -49,18 +49,18 @@ def example():
         key = 'numericValues'
 
         # get size
-        num = codes_get_size(gid, key)
+        num = codes_get_size(bufr, key)
         print '  size of %s is: %s' % (key, num)
 
         # get values
-        values = codes_get_array(gid, key)
+        values = codes_get_array(bufr, key)
         for i in xrange(len(values)):
             print "   %d %.10e" % (i + 1, values[i])
 
         cnt += 1
 
         # delete handle
-        codes_release(gid)
+        codes_release(bufr)
 
     # close the file
     f.close()
diff --git a/examples/python/bufr_get_keys.py b/examples/python/bufr_get_keys.py
index 7823d33..7fc6085 100644
--- a/examples/python/bufr_get_keys.py
+++ b/examples/python/bufr_get_keys.py
@@ -33,15 +33,15 @@ def example():
     # loop for the messages in the file
     while 1:
         # get handle for message
-        gid = codes_bufr_new_from_file(f)
-        if gid is None:
+        bufr = codes_bufr_new_from_file(f)
+        if bufr is None:
             break
 
         print "message: %s" % cnt
 
         # we need to instruct ecCodes to expand all the descriptors
         # i.e. unpack the data values
-        codes_set(gid, 'unpack', 1)
+        codes_set(bufr, 'unpack', 1)
 
         # ---------------------------------------------
         # get values for keys holding a single value
@@ -50,28 +50,28 @@ def example():
         key = 'blockNumber'
 
         try:
-            print '  %s: %s' % (key, codes_get(gid, key))
+            print '  %s: %s' % (key, codes_get(bufr, key))
         except CodesInternalError as err:
             print 'Error with key="%s" : %s' % (key, err.msg)
 
         # Native type integer
         key = 'stationNumber'
         try:
-            print '  %s: %s' % (key, codes_get(gid, key))
+            print '  %s: %s' % (key, codes_get(bufr, key))
         except CodesInternalError as err:
             print 'Error with key="%s" : %s' % (key, err.msg)
 
         # Native type float
         key = 'airTemperatureAt2M'
         try:
-            print '  %s: %s' % (key, codes_get(gid, key))
+            print '  %s: %s' % (key, codes_get(bufr, key))
         except CodesInternalError as err:
             print 'Error with key="%s" : %s' % (key, err.msg)
 
         # Native type string
         key = 'typicalDate'
         try:
-            print '  %s: %s' % (key, codes_get(gid, key))
+            print '  %s: %s' % (key, codes_get(bufr, key))
         except CodesInternalError as err:
             print 'Error with key="%s" : %s' % (key, err.msg)
 
@@ -82,11 +82,11 @@ def example():
         key = 'bufrdcExpandedDescriptors'
 
         # get size
-        num = codes_get_size(gid, key)
+        num = codes_get_size(bufr, key)
         print '  size of %s is: %s' % (key, num)
 
         # get values
-        values = codes_get_array(gid, key)
+        values = codes_get_array(bufr, key)
         for i in xrange(len(values)):
             print "   %d %06d" % (i + 1, values[i])
 
@@ -94,18 +94,18 @@ def example():
         key = 'numericValues'
 
         # get size
-        num = codes_get_size(gid, key)
+        num = codes_get_size(bufr, key)
         print '  size of %s is: %s' % (key, num)
 
         # get values
-        values = codes_get_array(gid, key)
+        values = codes_get_array(bufr, key)
         for i in xrange(len(values)):
             print "   %d %.10e" % (i + 1, values[i])
 
         cnt += 1
 
         # delete handle
-        codes_release(gid)
+        codes_release(bufr)
 
     # close the file
     f.close()
diff --git a/examples/python/bufr_keys_iterator.py b/examples/python/bufr_keys_iterator.py
index 6818abb..f4f7c30 100644
--- a/examples/python/bufr_keys_iterator.py
+++ b/examples/python/bufr_keys_iterator.py
@@ -34,18 +34,18 @@ def example():
     # loop for the messages in the file
     while 1:
         # get handle for message
-        gid = codes_bufr_new_from_file(f)
-        if gid is None:
+        bufr = codes_bufr_new_from_file(f)
+        if bufr is None:
             break
 
         print "message: %s" % cnt
 
         # we need to instruct ecCodes to expand all the descriptors
         # i.e. unpack the data values
-        # codes_set(gid,'unpack',1)
+        # codes_set(bufr,'unpack',1)
 
         # get key iterator for a given namespace
-        iterid = codes_keys_iterator_new(gid, 'ls')
+        iterid = codes_keys_iterator_new(bufr, 'ls')
 
         # Different types of keys can be skipped
         # codes_skip_computed(iterid)
@@ -68,7 +68,7 @@ def example():
         cnt += 1
 
         # delete handle
-        codes_release(gid)
+        codes_release(bufr)
 
     # close the file
     f.close()
diff --git a/examples/python/bufr_read_header.py b/examples/python/bufr_read_header.py
index 1ee9efc..410cf91 100644
--- a/examples/python/bufr_read_header.py
+++ b/examples/python/bufr_read_header.py
@@ -46,8 +46,8 @@ def example():
     # loop for the messages in the file
     while 1:
         # get handle for message
-        gid = codes_bufr_new_from_file(f)
-        if gid is None:
+        bufr = codes_bufr_new_from_file(f)
+        if bufr is None:
             break
 
         print "message: %s" % cnt
@@ -55,14 +55,14 @@ def example():
         # print the values for the selected keys from the message
         for key in keys:
             try:
-                print '  %s: %s' % (key, codes_get(gid, key))
+                print '  %s: %s' % (key, codes_get(bufr, key))
             except CodesInternalError as err:
                 print 'Error with key="%s" : %s' % (key, err.msg)
 
         cnt += 1
 
         # delete handle
-        codes_release(gid)
+        codes_release(bufr)
 
     # close the file
     f.close()
diff --git a/examples/python/bufr_read_scatterometer.py b/examples/python/bufr_read_scatterometer.py
index 452b2cd..0cd722b 100644
--- a/examples/python/bufr_read_scatterometer.py
+++ b/examples/python/bufr_read_scatterometer.py
@@ -39,15 +39,15 @@ def example():
     # loop for the messages in the file
     while 1:
         # get handle for message
-        gid = codes_bufr_new_from_file(f)
-        if gid is None:
+        bufr = codes_bufr_new_from_file(f)
+        if bufr is None:
             break
 
         print "message: %s" % cnt
 
         # we need to instruct ecCodes to expand all the descriptors
         # i.e. unpack the data values
-        codes_set(gid, 'unpack', 1)
+        codes_set(bufr, 'unpack', 1)
 
         # The BUFR file contains a single message with 2016 subsets in a
         # compressed form. It means each subset has exactly the same structure:
@@ -58,19 +58,19 @@ def example():
         # subsets we will simply access the key by condition (see below)
 
         # Get the total number of subsets.
-        numObs = codes_get(gid, "numberOfSubsets")
+        numObs = codes_get(bufr, "numberOfSubsets")
 
         print '  Number of values: %ld' % (numObs)
 
         # Get latitude (for all the subsets)
-        lat = codes_get_array(gid, "latitude")
+        lat = codes_get_array(bufr, "latitude")
 
         # Get longitude (for all the subsets)
-        lon = codes_get_array(gid, "longitude")
+        lon = codes_get_array(bufr, "longitude")
 
         # Get backScatter for beam two. We use an access by condition for this
         # key (for all the subsets).
-        bscat = codes_get_array(gid, "/beamIdentifier=2/backscatter")
+        bscat = codes_get_array(bufr, "/beamIdentifier=2/backscatter")
 
         # Check that all arrays are same size
         if len(lat) != numObs or len(lon) != numObs or len(bscat) != numObs:
@@ -87,7 +87,7 @@ def example():
         cnt += 1
 
         # delete handle
-        codes_release(gid)
+        codes_release(bufr)
 
     # close the file
     f.close()
diff --git a/examples/python/bufr_read_scatterometer.sh b/examples/python/bufr_read_scatterometer.sh
index a0a3605..b841dba 100755
--- a/examples/python/bufr_read_scatterometer.sh
+++ b/examples/python/bufr_read_scatterometer.sh
@@ -11,25 +11,22 @@
 . ./include.sh
 
 
-#Define a common label for all the tmp files
+# Define a common label for all the tmp files
 label="bufr_read_scatterometer_p"
 
-#Define tmp file
+# Define tmp file
 fTmp=${label}.tmp.txt
-rm -f $fTmp | true
+rm -f $fTmp
 
-#We check "asca_1391.bufr". The path is
-#hardcoded in the example
+# We check "asca_1391.bufr". The path is hardcoded in the example
 
 REDIRECT=/dev/null
 
-#Write the key values into a file
+# Write the key values into a file
 $PYTHON $examples_src/bufr_read_scatterometer.py 2> $REDIRECT > $fTmp
 
-#TODO: check the results
-
-#cat  $fTmp
+# Check the results
+grep -q "Number of values: 2016" $fTmp
 
-#Clean up
+# Clean up
 rm -f $fTmp
-
diff --git a/examples/python/bufr_read_synop.py b/examples/python/bufr_read_synop.py
index a26ea4d..20b623a 100644
--- a/examples/python/bufr_read_synop.py
+++ b/examples/python/bufr_read_synop.py
@@ -63,27 +63,27 @@ def example():
     # loop for the messages in the file
     while 1:
         # get handle for message
-        gid = codes_bufr_new_from_file(f)
-        if gid is None:
+        bufr = codes_bufr_new_from_file(f)
+        if bufr is None:
             break
 
         print "message: %s" % cnt
 
         # we need to instruct ecCodes to expand all the descriptors
         # i.e. unpack the data values
-        codes_set(gid, 'unpack', 1)
+        codes_set(bufr, 'unpack', 1)
 
         # print the values for the selected keys from the message
         for key in keys:
             try:
-                print '  %s: %s' % (key, codes_get(gid, key))
+                print '  %s: %s' % (key, codes_get(bufr, key))
             except CodesInternalError as err:
                 print 'Error with key="%s" : %s' % (key, err.msg)
 
         cnt += 1
 
         # delete handle
-        codes_release(gid)
+        codes_release(bufr)
 
     # close the file
     f.close()
diff --git a/examples/python/bufr_read_tropical_cyclone.sh b/examples/python/bufr_read_tropical_cyclone.sh
index e8e38a1..98386ba 100755
--- a/examples/python/bufr_read_tropical_cyclone.sh
+++ b/examples/python/bufr_read_tropical_cyclone.sh
@@ -15,25 +15,27 @@
 label="bufr_read_tropical_cyclone_p"
 
 #Define tmp file
-#fTmp=${label}.tmp.txt
+fTmp=${label}.tmp.txt
 #ref=${label}.tmp.ref
 #rm -f $fTmp | true
 
-#We check "asca_1391.bufr". The path is
-#hardcoded in the example
+#We check "asca_1391.bufr". The path is hardcoded in the example
 
 REDIRECT=/dev/null
 
 echo $PYTHON $examples_src
 #Write the key values into a file
 #$PYTHON $examples_src/bufr_read_tropical_cyclone.py >$fTmp
-$PYTHON $examples_src/bufr_read_tropical_cyclone.py
+$PYTHON $examples_src/bufr_read_tropical_cyclone.py >$fTmp
 
-#TODO: check the results
+# Check the results
+grep -q "Date and time:  18 . 11 . 2015    0 : 0" $fTmp
+grep -q "== Member  52" $fTmp
 
 #cat > $ref <<EOF
 #EOF
 # 
 #diff -w $ref $fTmp
 #Clean up
-#rm -f $ref $fTmp | true
+#rm -f $ref
+rm -f $fTmp
diff --git a/examples/python/bufr_set_keys.py b/examples/python/bufr_set_keys.py
index 3026dd0..6117a9f 100644
--- a/examples/python/bufr_set_keys.py
+++ b/examples/python/bufr_set_keys.py
@@ -38,15 +38,15 @@ def example():
     while 1:
 
         # get handle for message
-        gid = codes_bufr_new_from_file(fin)
-        if gid is None:
+        bufr = codes_bufr_new_from_file(fin)
+        if bufr is None:
             break
 
         print "message: %s" % cnt
 
         # we need to instruct ecCodes to expand all the descriptors
         # i.e. unpack the data values
-        # codes_set(gid,'unpack',1)
+        # codes_set(bufr,'unpack',1)
 
         # This is the place where you may wish to modify the message
         # E.g. we change the centre
@@ -57,20 +57,20 @@ def example():
 
         key = 'bufrHeaderCentre'
         try:
-            print '  %s: %s' % (key, codes_set(gid, key, val))
+            print '  %s: %s' % (key, codes_set(bufr, key, val))
         except CodesInternalError as err:
             print 'Error with key="%s" : %s' % (key, err.msg)
 
         # check bufrHeaderCentre's value
-        print '  %s''s new value is: %d' % (key, codes_get(gid, key))
+        print '  %s''s new value is: %d' % (key, codes_get(bufr, key))
 
         # write modified message to output
-        codes_write(gid, fout)
+        codes_write(bufr, fout)
 
         cnt += 1
 
         # delete handle
-        codes_release(gid)
+        codes_release(bufr)
 
     fin.close()
     fout.close()
diff --git a/examples/python/bufr_subset.py b/examples/python/bufr_subset.py
index 1c81c67..5b7196e 100644
--- a/examples/python/bufr_subset.py
+++ b/examples/python/bufr_subset.py
@@ -33,19 +33,19 @@ def example():
     # loop for the messages in the file
     while 1:
         # get handle for message
-        gid = codes_bufr_new_from_file(f)
-        if gid is None:
+        bufr = codes_bufr_new_from_file(f)
+        if bufr is None:
             break
 
         print "message: %s" % cnt
 
         # we need to instruct ecCodes to expand all the descriptors
         # i.e. unpack the data values
-        codes_set(gid, 'unpack', 1)
+        codes_set(bufr, 'unpack', 1)
 
         # find out the number of subsets
         key = 'numberOfSubsets'
-        numberOfSubsets = codes_get(gid, 'numberOfSubsets')
+        numberOfSubsets = codes_get(bufr, 'numberOfSubsets')
         print ' %s: %d' % (key, numberOfSubsets)
 
         # loop over the subsets
@@ -55,17 +55,17 @@ def example():
 
             key = '/subsetNumber=%d/blockNumber' % i
             print key
-            val = codes_get_long(gid, key)
+            val = codes_get_long(bufr, key)
             print '  %s= %d' % (key, val)
 
             key = '/subsetNumber=%d/stationNumber' % i
-            val = codes_get_long(gid, key)
+            val = codes_get_long(bufr, key)
             print '  %s: %d' % (key, val)
 
         cnt += 1
 
         # delete handle
-        codes_release(gid)
+        codes_release(bufr)
 
     # close the file
     f.close()
diff --git a/examples/python/bufr_read_header.py b/examples/python/grib_ccsds.py
similarity index 60%
copy from examples/python/bufr_read_header.py
copy to examples/python/grib_ccsds.py
index 1ee9efc..e7c93de 100644
--- a/examples/python/bufr_read_header.py
+++ b/examples/python/grib_ccsds.py
@@ -7,64 +7,37 @@
 # granted to it by virtue of its status as an intergovernmental organisation
 # nor does it submit to any jurisdiction.
 
-
-#
-# Python implementation: bufr_read_header
-#
-# Description: how to read the header from BUFR messages.
-#
-#
-
 import traceback
 import sys
 
 from eccodes import *
 
-INPUT = '../../data/bufr/syno_multi.bufr'
+INPUT = '../../data/ccsds.grib2'
 VERBOSE = 1  # verbose error reporting
 
 
 def example():
-
-    # open bufr file
     f = open(INPUT)
 
-    # define the keys to be printed
     keys = [
-        'dataCategory',
-        'dataSubCategory',
-        'typicalDate',
-        'bufrHeaderCentre',
-        'bufrHeaderSubCentre',
-        'masterTablesVersionNumber',
-        'localTablesVersionNumber',
-        'numberOfSubsets',
+        'ccsdsFlags',
+        'ccsdsBlockSize',
+        'bitsPerValue',
     ]
 
-    cnt = 0
-
-    # loop for the messages in the file
     while 1:
-        # get handle for message
-        gid = codes_bufr_new_from_file(f)
+        gid = codes_grib_new_from_file(f)
         if gid is None:
             break
 
-        print "message: %s" % cnt
-
-        # print the values for the selected keys from the message
         for key in keys:
             try:
                 print '  %s: %s' % (key, codes_get(gid, key))
             except CodesInternalError as err:
                 print 'Error with key="%s" : %s' % (key, err.msg)
 
-        cnt += 1
-
-        # delete handle
         codes_release(gid)
 
-    # close the file
     f.close()
 
 
diff --git a/examples/python/grib_ccsds.sh b/examples/python/grib_ccsds.sh
new file mode 100755
index 0000000..916d07f
--- /dev/null
+++ b/examples/python/grib_ccsds.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+. ./include.sh
+
+$PYTHON $examples_src/grib_ccsds.py
+
diff --git a/examples/python/set_missing.py b/examples/python/grib_get_message_offset.py
similarity index 54%
copy from examples/python/set_missing.py
copy to examples/python/grib_get_message_offset.py
index 91400e6..bb7609f 100644
--- a/examples/python/set_missing.py
+++ b/examples/python/grib_get_message_offset.py
@@ -9,37 +9,34 @@
 # nor does it submit to any jurisdiction.
 #
 
+# Python implementation: get_message_offset
+#
+# Description: how to get the message offset
+#
+
 import traceback
 import sys
-
 from eccodes import *
 
-INPUT = '../../data/tigge/tigge_ecmf_pl_t.grib'
-OUTPUT = 'out.set_missing.grib'
 VERBOSE = 1  # verbose error reporting
 
 
 def example():
-    fin = open(INPUT)
-    fout = open(OUTPUT, 'w')
-
-    gid = codes_grib_new_from_file(fin)
+    if len(sys.argv) < 2:
+        print >>sys.stderr, 'Usage: ', sys.argv[0], ' file'
+        sys.exit(1)
 
-    codes_set_long(gid, "scaledValueOfFirstFixedSurface", 15)
-    codes_set_long(gid, "scaleFactorOfFirstFixedSurface", 1)
-    level = codes_get_double(gid, "level")
-    assert(level == 1.5)
+    f = open(sys.argv[1])
+    while 1:
+        id = codes_grib_new_from_file(f)
+        if id is None:
+            break
 
-    # set type of level to surface
-    codes_set(gid, 'typeOfFirstFixedSurface', 'sfc')
-    codes_set_missing(gid, 'scaleFactorOfFirstFixedSurface')
-    codes_set_missing(gid, 'scaledValueOfFirstFixedSurface')
+        print codes_get_message_offset(id)
 
-    codes_write(gid, fout)
+        codes_release(id)
 
-    codes_release(gid)
-    fin.close()
-    fout.close()
+    f.close()
 
 
 def main():
diff --git a/examples/F90/grib_set_keys.sh b/examples/python/grib_get_message_offset.sh
similarity index 61%
copy from examples/F90/grib_set_keys.sh
copy to examples/python/grib_get_message_offset.sh
index 8fc574f..259336c 100755
--- a/examples/F90/grib_set_keys.sh
+++ b/examples/python/grib_get_message_offset.sh
@@ -3,16 +3,21 @@
 #
 # This software is licensed under the terms of the Apache Licence Version 2.0
 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-#
+# 
 # In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
 # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+#
 
 . ./include.sh
 
-${examples_dir}eccodes_f_grib_set_keys > /dev/null
+label="get_message_offset_p"
+fTmp1=${label}.1.tmp
+fTmp2=${label}.2.tmp
+
+input=${data_dir}/mixed.grib
 
-${examples_dir}eccodes_f_grib_set_gvc > /dev/null
-res=`${tools_dir}/grib_get -p typeOfLevel,NV out_gvc.grib2`
-[ "$res" = "generalVertical 6" ]
+$PYTHON $examples_src/grib_get_message_offset.py $input > $fTmp1
+${tools_dir}/grib_get -p offset:i $input > $fTmp2
+diff $fTmp1 $fTmp2
 
-rm -f out.set.grib1 out_gvc.grib2
+rm -f $fTmp1 $fTmp2
diff --git a/examples/python/samples.py b/examples/python/grib_samples.py
similarity index 95%
rename from examples/python/samples.py
rename to examples/python/grib_samples.py
index c99e00d..af8ac6b 100644
--- a/examples/python/samples.py
+++ b/examples/python/grib_samples.py
@@ -15,12 +15,12 @@ import sys
 from eccodes import *
 
 INPUT = '../../data/tp_ecmwf.grib'
-OUTPUT = 'out.samples.grib'
+OUTPUT = 'p_out.grib_samples.grib'
 VERBOSE = 1  # verbose error reporting
 
 
 def example():
-    sample_id = codes_new_from_samples("regular_ll_sfc_grib1")
+    sample_id = codes_grib_new_from_samples("regular_ll_sfc_grib1")
     fin = open(INPUT)
     fout = open(OUTPUT, 'w')
 
diff --git a/examples/python/grib_samples.sh b/examples/python/grib_samples.sh
new file mode 100755
index 0000000..ef0dc0c
--- /dev/null
+++ b/examples/python/grib_samples.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+. ./include.sh
+
+REDIRECT=/dev/null
+$PYTHON $examples_src/grib_samples.py
+rm -f p_out.grib_samples.grib
diff --git a/examples/python/grib_set_keys.sh b/examples/python/grib_set_keys.sh
index 9bf5935..7f8569f 100755
--- a/examples/python/grib_set_keys.sh
+++ b/examples/python/grib_set_keys.sh
@@ -3,5 +3,5 @@
 . ./include.sh
 
 REDIRECT=/dev/null
-$PYTHON $examples_src/grib_set_keys.py 2> $REDIRECT > $REDIRECT
+$PYTHON $examples_src/grib_set_keys.py # 2> $REDIRECT > $REDIRECT
 rm -f out.set.grib || true
diff --git a/examples/python/set_missing.py b/examples/python/grib_set_missing.py
similarity index 97%
rename from examples/python/set_missing.py
rename to examples/python/grib_set_missing.py
index 91400e6..7b70a9d 100644
--- a/examples/python/set_missing.py
+++ b/examples/python/grib_set_missing.py
@@ -15,7 +15,7 @@ import sys
 from eccodes import *
 
 INPUT = '../../data/tigge/tigge_ecmf_pl_t.grib'
-OUTPUT = 'out.set_missing.grib'
+OUTPUT = 'out.p_set_missing.grib'
 VERBOSE = 1  # verbose error reporting
 
 
diff --git a/examples/python/grib_set_missing.sh b/examples/python/grib_set_missing.sh
new file mode 100755
index 0000000..86d3024
--- /dev/null
+++ b/examples/python/grib_set_missing.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+. ./include.sh
+
+REDIRECT=/dev/null
+$PYTHON $examples_src/grib_set_missing.py 2> $REDIRECT > $REDIRECT
+rm -f out.p_set_missing.grib
diff --git a/examples/python/grib_set_pv.py b/examples/python/grib_set_pv.py
index bcf74d0..5307665 100644
--- a/examples/python/grib_set_pv.py
+++ b/examples/python/grib_set_pv.py
@@ -31,7 +31,7 @@ def example():
     assert(len(pv) == numberOfCoefficients)
 
     fout = open('out.pv.grib1', 'w')
-    gid = codes_new_from_samples('reduced_gg_sfc_grib1')
+    gid = codes_grib_new_from_samples('reduced_gg_sfc_grib1')
 
     codes_set(gid, 'typeOfLevel', 'hybrid')
     codes_set(gid, 'level', 2)
diff --git a/examples/python/include.ctest.sh.in b/examples/python/include.ctest.sh.in
index 0351a24..925bf0d 100644
--- a/examples/python/include.ctest.sh.in
+++ b/examples/python/include.ctest.sh.in
@@ -7,7 +7,6 @@ if test "x$ECCODES_TEST_VERBOSE_OUTPUT" != "x"; then
    set -x
 fi
 
-proj_dir=@PROJECT_SOURCE_DIR@
 data_dir=@PROJECT_BINARY_DIR@/data
 
 # use definitions from binary dir to test if installation will be correct
@@ -24,5 +23,5 @@ samp_dir="@CMAKE_BINARY_DIR@/share/@PROJECT_NAME@/samples"
 ECCODES_SAMPLES_PATH=${samp_dir}
 export ECCODES_SAMPLES_PATH
 
-PYTHONPATH=$proj_dir/python:@PROJECT_BINARY_DIR@/python:$PYTHONPATH
+PYTHONPATH=@PROJECT_BINARY_DIR@/python:$PYTHONPATH
 export PYTHONPATH
diff --git a/examples/python/samples.sh b/examples/python/samples.sh
deleted file mode 100755
index c73154c..0000000
--- a/examples/python/samples.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-. ./include.sh
-
-REDIRECT=/dev/null
-$PYTHON $examples_src/samples.py 2> $REDIRECT > $REDIRECT
-rm -f out.samples.grib || true
diff --git a/examples/python/set_missing.sh b/examples/python/set_missing.sh
deleted file mode 100755
index 65f85c9..0000000
--- a/examples/python/set_missing.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-. ./include.sh
-
-REDIRECT=/dev/null
-$PYTHON $examples_src/set_missing.py 2> $REDIRECT > $REDIRECT
-rm -f out.set_missing.grib || true
diff --git a/examples/run_examples.sh b/examples/run_examples.sh
deleted file mode 100644
index 1b03d91..0000000
--- a/examples/run_examples.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-set -e
-
-./get
-./set
-./iterator
-./keys_iterator
-./precision
-
-
diff --git a/examples/set.c b/examples/set.c
deleted file mode 100644
index 93fad8e..0000000
--- a/examples/set.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2005-2016 ECMWF.
- *
- * This software is licensed under the terms of the Apache Licence Version 2.0
- * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
- *
- * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
- * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
- */
-
-/*
- * C Implementation: set
- *
- * Description: how to set key values.
- *
- *
- *
- *
- */
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "grib_api.h"
-
-int main(int argc, char** argv) {
-  int err = 0;
-  long centre=80;
-  long long_value=0;
-  char string_value[100];
-  size_t len = sizeof(string_value)/sizeof(char);
-  size_t size=0;
-
-  FILE* in = NULL;
-  char* infile = "../data/regular_latlon_surface.grib1";
-  FILE* out = NULL;
-  char* outfile = "out.grib1";
-  grib_handle *h = NULL;
-  const void* buffer = NULL;
-
-  in = fopen(infile,"r");
-  if(!in) {
-    printf("ERROR: unable to open file %s\n",infile);
-    return 1;
-  }
-
-  out = fopen(outfile,"w");
-  if(!out) {
-    printf("ERROR: unable to open file %s\n",outfile);
-    return 1;
-  }
-
-  /* create a new handle from a message in a file */
-  h = grib_handle_new_from_file(0,in,&err);
-  if (h == NULL) {
-    printf("Error: unable to create handle from file %s\n",infile);
-  }
-
-  /* set centre as a long */
-  GRIB_CHECK(grib_set_long(h,"centre",centre),0);
-
-  /* get centre as a long */
-  GRIB_CHECK(grib_get_long(h,"centre",&long_value),0);
-  printf("centre long value=%ld\n",long_value);
-
-  /* get centre as a string */
-  GRIB_CHECK(grib_get_string(h,"centre",string_value,&len),0);
-  printf("centre string value=%s\n",string_value);
-
-  /* get the coded message in a buffer */
-  GRIB_CHECK(grib_get_message(h,&buffer,&size),0);
-
-  /* write the buffer in a file*/
-  if(fwrite(buffer,1,size,out) != size) 
-  {
-     perror(argv[1]);
-     exit(1);
-  }
-
-  /* delete handle */
-  grib_handle_delete(h);
-
-  fclose(in);
-  fclose(out);
-
-  return 0;
-}
diff --git a/examples/set.sh b/examples/set.sh
deleted file mode 100755
index 4331075..0000000
--- a/examples/set.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-. ./include.sh
-
-${examples_dir}set > /dev/null
-
-
diff --git a/examples/set_bitmap.c b/examples/set_bitmap.c
deleted file mode 100644
index 9664c60..0000000
--- a/examples/set_bitmap.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2005-2016 ECMWF.
- *
- * This software is licensed under the terms of the Apache Licence Version 2.0
- * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
- *
- * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
- * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
- */
-
-/*
- * C Implementation: set_bitmap
- *
- * Description: how to set a bitmap in a grib message
- *
- *
- *
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "grib_api.h"
-
-int main(int argc, char** argv) {
-  int err = 0;
-  size_t size=0;
-
-  FILE* in = NULL;
-  char* infile = "../data/regular_latlon_surface.grib1";
-  FILE* out = NULL;
-  char* outfile = "out.grib1";
-  grib_handle *h = NULL;
-  const void* buffer = NULL;
-  size_t values_len;
-  double* values;
-  double missing=0;
-  int i=0;
-
-  in = fopen(infile,"r");
-  if(!in) {
-    printf("ERROR: unable to open file %s\n",infile);
-    return 1;
-  }
-
-  out = fopen(outfile,"w");
-  if(!in) {
-    printf("ERROR: unable to open file %s\n",outfile);
-    return 1;
-  }
-
-  h = grib_handle_new_from_file(0,in,&err);
-  if (h == NULL) {
-    printf("Error: unable to create handle from file %s\n",infile);
-  }
-
-  GRIB_CHECK(grib_get_double(h,"missingValue",&missing),0);
-
-  /* get the size of the values array*/
-  GRIB_CHECK(grib_get_size(h,"values",&values_len),0);
-
-  values = malloc(values_len*sizeof(double));
-
-  /* get data values*/
-  GRIB_CHECK(grib_get_double_array(h,"values",values,&values_len),0);
-
-  GRIB_CHECK(grib_set_long(h,"bitmapPresent",1),0);
-
-  for(i = 0; i < 10; i++)
-    values[i]=missing;
-
-  GRIB_CHECK(grib_set_double_array(h,"values",values,values_len),0);
-
-  /* get the coded message in a buffer */
-  GRIB_CHECK(grib_get_message(h,&buffer,&size),0);
-
-  /* write the buffer in a file*/
-  if(fwrite(buffer,1,size,out) != size)
-  {
-     perror(outfile);
-     exit(1);
-  }
-
-  /* delete handle */
-  grib_handle_delete(h);
-
-  fclose(in);
-  fclose(out);
-
-  return 0;
-}
diff --git a/examples/set_fortran.F b/examples/set_fortran.F
deleted file mode 100644
index caf50ac..0000000
--- a/examples/set_fortran.F
+++ /dev/null
@@ -1,68 +0,0 @@
-C Copyright 2005-2016 ECMWF.
-C
-C This software is licensed under the terms of the Apache Licence Version 2.0
-C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-C 
-C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-C
-C
-C
-C  Fortran 77 Implementation: set_fortran
-C
-C  Description: how to set key values.
-C
-C
-C
-C
-C
-      program set
-      implicit none
-      include 'grib_api_fortran.h'
-      integer err
-      integer*4 centre
-      integer*4 int_value
-      character*10 string_value
-      character*20 string_centre
-      integer len
-      integer size
-      integer infile,outfile
-      integer igrib,iret
-      character*256 error
-
-      infile=5
-      outfile=6
-
-      call grib_check(grib_open_file(infile
-     X,'../data/regular_latlon_surface.grib1','r'))
-
-      call grib_check(grib_open_file(outfile
-     X,'../data/out.grib1','w'))
-
-C     a new grib message is loaded from file
-C     igrib is the grib id to be used in subsequent calls
-      call grib_check(grib_new_from_file(infile,igrib))
-
-C     set centre as a long */
-      centre=80
-      call grib_check(grib_set_int(igrib,'centre',centre))
-
-C     get centre as a integer*4
-      call grib_check(grib_get_int(igrib,'centre',int_value))
-      write(*,*) 'centre=',int_value
-
-C     get centre as a string
-      call grib_check(grib_get_string(igrib,'centre',string_value))
-      string_centre='centre='//string_value
-      write(*,*) string_centre
-
-C     write modified message to a file
-      call grib_check(grib_write(igrib,outfile))
-
-      call grib_check(grib_release(igrib))
-
-      call grib_check(grib_close_file(infile))
-
-      call grib_check(grib_close_file(outfile))
-
-      end
diff --git a/examples/set_fortran.sh b/examples/set_fortran.sh
deleted file mode 100755
index fc761ef..0000000
--- a/examples/set_fortran.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-. ./include.sh
-
-${examples_dir}set_fortran > /dev/null
-
-
diff --git a/examples/set_pv.c b/examples/set_pv.c
deleted file mode 100644
index 5dcf264..0000000
--- a/examples/set_pv.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2005-2016 ECMWF.
- *
- * This software is licensed under the terms of the Apache Licence Version 2.0
- * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
- *
- * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
- * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
- */
-
-/*
- * C Implementation: set
- *
- * Description: how to set pv .
- *
- *
- *
- *
- */
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "grib_api.h"
-
-int main(int argc, char** argv) {
-  int err = 0;
-  long PVPresent=1;
-  size_t size=0;
-  double pv[4]={1,2,3,4};
-  size_t pvsize=4;
-
-  FILE* in = NULL;
-  char* infile = "../data/regular_latlon_surface.grib1";
-  FILE* out = NULL;
-  char* outfile = "out.grib1";
-  grib_handle *h = NULL;
-  const void* buffer = NULL;
-
-  in = fopen(infile,"r");
-  if(!in) {
-    printf("ERROR: unable to open file %s\n",infile);
-    return 1;
-  }
-
-  out = fopen(outfile,"w");
-  if(!in) {
-    printf("ERROR: unable to open file %s\n",outfile);
-    return 1;
-  }
-
-  /* create a new handle from a message in a file */
-  h = grib_handle_new_from_file(0,in,&err);
-  if (h == NULL) {
-    printf("Error: unable to create handle from file %s\n",infile);
-  }
-
-  GRIB_CHECK(grib_set_long(h,"PVPresent",PVPresent),0);
-
-
-  GRIB_CHECK(grib_set_double_array(h,"pv",pv,pvsize),0);
-
-  /* get the coded message in a buffer */
-  GRIB_CHECK(grib_get_message(h,&buffer,&size),0);
-
-  /* write the buffer in a file*/
-  if(fwrite(buffer,1,size,out) != size) 
-  {
-     perror(argv[1]);
-     exit(1);
-  }
-
-  /* delete handle */
-  grib_handle_delete(h);
-
-  fclose(in);
-  fclose(out);
-
-  return 0;
-}
diff --git a/examples/set_pv_fortran.F b/examples/set_pv_fortran.F
deleted file mode 100644
index 0a29b5c..0000000
--- a/examples/set_pv_fortran.F
+++ /dev/null
@@ -1,55 +0,0 @@
-C Copyright 2005-2016 ECMWF.
-C
-C This software is licensed under the terms of the Apache Licence Version 2.0
-C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-C 
-C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-C
-C
-C
-C  Fortran 77 Implementation: set_fortran
-C
-C  Description: how to set pv  values.
-C
-C
-C
-C
-C
-      program set
-      implicit none
-      include 'grib_api_fortran.h'
-      integer err
-      integer infile,outfile
-      integer igrib,iret
-      character*256 error
-      real*8 pv
-      integer pvsize
-      dimension pv(4)
-
-      pvsize=4
-      infile=5
-      outfile=6
-
-      call grib_check(grib_open_file(infile
-     X,'../data/regular_latlon_surface.grib1','r'))
-
-      call grib_check(grib_open_file(outfile,'out.grib1','w'))
-
-C     a new grib message is loaded from file
-C     igrib is the grib id to be used in subsequent calls
-      call grib_check(grib_new_from_file(infile,igrib))
-
-      call grib_check(grib_set_int(igrib,'PVPresent',1))
-      call grib_check(grib_set_real8_array(igrib,'pv',pv,pvsize))
-
-C     write modified message to a file
-      call grib_check(grib_write(igrib,outfile))
-
-      call grib_check(grib_release(igrib))
-
-      call grib_check(grib_close_file(infile))
-
-      call grib_check(grib_close_file(outfile))
-
-      end
diff --git a/fortran/CMakeLists.txt b/fortran/CMakeLists.txt
index 657c1de..0aa962f 100644
--- a/fortran/CMakeLists.txt
+++ b/fortran/CMakeLists.txt
@@ -44,6 +44,11 @@ if( HAVE_FORTRAN )
                          SOURCES    grib_fortran.c grib_f90.f90 eccodes_f90.f90 grib_kinds.h
                          GENERATED  grib_f90.f90 eccodes_f90.f90
                          LIBS       eccodes )
+    add_custom_command( TARGET     eccodes_f90 POST_BUILD
+                        COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/include
+                        COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_Fortran_MODULE_DIRECTORY}/${CMAKE_CFG_INTDIR}/eccodes.mod ${CMAKE_BINARY_DIR}/include
+                        COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_Fortran_MODULE_DIRECTORY}/${CMAKE_CFG_INTDIR}/grib_api.mod ${CMAKE_BINARY_DIR}/include
+    )
 
     # Add the eccodes module file as well
     #set(_eccodes_mod "${CMAKE_Fortran_MODULE_DIRECTORY}/eccodes.mod" )
diff --git a/fortran/Makefile.in b/fortran/Makefile.in
deleted file mode 100644
index 1c37b24..0000000
--- a/fortran/Makefile.in
+++ /dev/null
@@ -1,809 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-# See http://www.delorie.com/gnu/docs/automake/automake_48.html
-
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(srcdir)/extrules.am $(srcdir)/Makefile.in \
-	$(srcdir)/Makefile.am $(top_srcdir)/config/depcomp
-subdir = fortran
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-libeccodes_f90_la_LIBADD =
-am_libeccodes_f90_la_OBJECTS = grib_fortran.lo grib_f90.lo \
-	eccodes_f90.lo
-libeccodes_f90_la_OBJECTS = $(am_libeccodes_f90_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-libeccodes_f90_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(FCLD) \
-	$(AM_FCFLAGS) $(FCFLAGS) $(libeccodes_f90_la_LDFLAGS) \
-	$(LDFLAGS) -o $@
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-FCCOMPILE = $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-LTFCCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(FC) $(AM_FCFLAGS) $(FCFLAGS)
-AM_V_FC = $(am__v_FC_ at AM_V@)
-am__v_FC_ = $(am__v_FC_ at AM_DEFAULT_V@)
-am__v_FC_0 = @echo "  FC      " $@;
-am__v_FC_1 = 
-FCLD = $(FC)
-FCLINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_FCLD = $(am__v_FCLD_ at AM_V@)
-am__v_FCLD_ = $(am__v_FCLD_ at AM_DEFAULT_V@)
-am__v_FCLD_0 = @echo "  FCLD    " $@;
-am__v_FCLD_1 = 
-SOURCES = $(libeccodes_f90_la_SOURCES)
-DIST_SOURCES = $(libeccodes_f90_la_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-HEADERS = $(nodist_include_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AEC_DIR = @AEC_DIR@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CCSDS_TEST = @CCSDS_TEST@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEVEL_RULES = @DEVEL_RULES@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECCODES_AGE = @ECCODES_AGE@
-ECCODES_CURRENT = @ECCODES_CURRENT@
-ECCODES_DEFINITION_PATH = @ECCODES_DEFINITION_PATH@
-ECCODES_MAIN_VERSION = @ECCODES_MAIN_VERSION@
-ECCODES_MAJOR_VERSION = @ECCODES_MAJOR_VERSION@
-ECCODES_MINOR_VERSION = @ECCODES_MINOR_VERSION@
-ECCODES_PATCH_VERSION = @ECCODES_PATCH_VERSION@
-ECCODES_REVISION = @ECCODES_REVISION@
-ECCODES_SAMPLES_PATH = @ECCODES_SAMPLES_PATH@
-ECCODES_VERSION_STR = @ECCODES_VERSION_STR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB = @EMOS_LIB@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-F90_CHECK = @F90_CHECK@
-F90_MODULE_FLAG = @F90_MODULE_FLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FORTRAN_MOD = @FORTRAN_MOD@
-GREP = @GREP@
-GRIB_API_INC = @GRIB_API_INC@
-GRIB_API_LIB = @GRIB_API_LIB@
-GRIB_DEVEL = @GRIB_DEVEL@
-IFS_SAMPLES_DIR = @IFS_SAMPLES_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JASPER_DIR = @JASPER_DIR@
-JPEG_TEST = @JPEG_TEST@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_AEC = @LIB_AEC@
-LIB_JASPER = @LIB_JASPER@
-LIB_OPENJPEG = @LIB_OPENJPEG@
-LIB_PNG = @LIB_PNG@
-LINUX_DISTRIBUTION_NAME = @LINUX_DISTRIBUTION_NAME@
-LINUX_DISTRIBUTION_VERSION = @LINUX_DISTRIBUTION_VERSION@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENJPEG_DIR = @OPENJPEG_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PERLDIR = @PERLDIR@
-PERL_INSTALL_OPTIONS = @PERL_INSTALL_OPTIONS@
-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_CHECK = @PYTHON_CHECK@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_DATA_HANDLER = @PYTHON_DATA_HANDLER@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RM = @RM@
-RPM_CONFIGURE_ARGS = @RPM_CONFIGURE_ARGS@
-RPM_HOST_CPU = @RPM_HOST_CPU@
-RPM_HOST_OS = @RPM_HOST_OS@
-RPM_HOST_VENDOR = @RPM_HOST_VENDOR@
-RPM_RELEASE = @RPM_RELEASE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_PEDANTIC = @WARN_PEDANTIC@
-WERROR = @WERROR@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AM_CFLAGS = @WARN_PEDANTIC@
-lib_LTLIBRARIES = libeccodes_f90.la
-libeccodes_f90_la_SOURCES = grib_fortran.c grib_f90.f90 eccodes_f90.f90
-libeccodes_f90_la_DEPENDENCIES = $(top_builddir)/src/libeccodes.la grib_api_externals.h grib_api_visibility.h grib_api_constants.h grib_kinds.h
-libeccodes_f90_la_LDFLAGS = -version-info $(ECCODES_CURRENT):$(ECCODES_REVISION):$(ECCODES_AGE)
-libeccodes_fortran_prototypes = grib_fortran.c
- at UPPER_CASE_MOD_FALSE@nodist_include_HEADERS = grib_api.mod eccodes.mod
- at UPPER_CASE_MOD_TRUE@nodist_include_HEADERS = GRIB_API.mod ECCODES.mod
-
-# set the include path
-INCLUDES = -I$(top_builddir)/src
-CLEANFILES = libeccodes_f90.la grib_f90.f90 eccodes_f90.f90 *.mod grib_types grib_kinds.h same_int_long same_int_size_t
-
-#noinst_HEADERS = 
-EXTRA_DIST = grib_fortran_prototypes.h grib_api_constants.h grib_api_externals.h \
-            grib_api_visibility.h grib_types.f90 create_grib_f90.sh \
-            grib_f90_head.f90 grib_f90_tail.f90 grib_f90_int.f90 grib_f90_long_int.f90 \
-            grib_f90_int_size_t.f90 grib_f90_long_size_t.f90 \
-            \
-            eccodes_f90_head.f90 eccodes_f90_tail.f90 eccodes_f90_int.f90 eccodes_f90_long_int.f90 \
-            eccodes_f90_int_size_t.f90 eccodes_f90_long_size_t.f90 \
-            same_int_long.f90 same_int_size_t.f90 grib_fortran_kinds.c \
-            CMakeLists.txt
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .f90 .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/extrules.am $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu fortran/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu fortran/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-$(srcdir)/extrules.am:
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-libeccodes_f90.la: $(libeccodes_f90_la_OBJECTS) $(libeccodes_f90_la_DEPENDENCIES) $(EXTRA_libeccodes_f90_la_DEPENDENCIES) 
-	$(AM_V_FCLD)$(libeccodes_f90_la_LINK) -rpath $(libdir) $(libeccodes_f90_la_OBJECTS) $(libeccodes_f90_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_fortran.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-.f90.o:
-	$(AM_V_FC)$(FCCOMPILE) -c -o $@ $<
-
-.f90.obj:
-	$(AM_V_FC)$(FCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.f90.lo:
-	$(AM_V_FC)$(LTFCCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-nodist_includeHEADERS: $(nodist_include_HEADERS)
-	@$(NORMAL_INSTALL)
-	@list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
-	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
-	done
-
-uninstall-nodist_includeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-nodist_includeHEADERS
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES uninstall-nodist_includeHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-libLTLIBRARIES install-man \
-	install-nodist_includeHEADERS install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \
-	uninstall-nodist_includeHEADERS
-
- at UPPER_CASE_MOD_FALSE@grib_api.mod: grib_f90.o
- at UPPER_CASE_MOD_FALSE@eccodes.mod: eccodes_f90.o
- at UPPER_CASE_MOD_TRUE@GRIB_API.mod: grib_f90.o
- at UPPER_CASE_MOD_TRUE@ECCODES.mod: eccodes_f90.o
-
-grib_f90.f90: grib_f90_head.f90 grib_f90_tail.f90 grib_f90_int.f90 grib_f90_long_int.f90 grib_f90_int_size_t.f90 grib_f90_long_size_t.f90 same_int_long same_int_size_t grib_kinds.h
-	./create_grib_f90.sh
-
-eccodes_f90.f90: eccodes_f90_head.f90 eccodes_f90_tail.f90 eccodes_f90_int.f90 eccodes_f90_long_int.f90 eccodes_f90_int_size_t.f90 eccodes_f90_long_size_t.f90 same_int_long same_int_size_t grib_kinds.h
-	./create_grib_f90.sh
-
-grib_f90.o : grib_kinds.h
-
-eccodes_f90.o : grib_kinds.h
-
-grib_kinds.h: grib_types
-	./grib_types > grib_kinds.h
-
-grib_types: grib_types.o grib_fortran_kinds.o
-	$(FC) $(FCFLAGS) -o grib_types grib_types.o grib_fortran_kinds.o
-
-same_int_long: same_int_long.o grib_fortran_kinds.o
-	$(FC) $(FCFLAGS) -o same_int_long same_int_long.o grib_fortran_kinds.o
-
-same_int_size_t: same_int_size_t.o grib_fortran_kinds.o
-	$(FC) $(FCFLAGS) -o same_int_size_t same_int_size_t.o grib_fortran_kinds.o
-proto:;-mkptypes -A $(libgrib_api_fortran_prototypes) > temp && mv temp grib_fortran_prototypes.h; rm -f temp
-
-# Note: hooks are always executed after the main rule's work is done
-#install-data-hook:
-#	( some commands in here .... )
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/fortran/eccodes_constants.h b/fortran/eccodes_constants.h
index 94daa66..15a04e8 100644
--- a/fortran/eccodes_constants.h
+++ b/fortran/eccodes_constants.h
@@ -1,3 +1,4 @@
+  integer, parameter,public :: CODES_WRONG_BITMAP_SIZE                             = -66
   integer, parameter,public :: CODES_OUT_OF_RANGE                                  = -65
   integer, parameter,public :: CODES_UNSUPPORTED_EDITION                           = -64
   integer, parameter,public :: CODES_ATTRIBUTE_NOT_FOUND                           = -63
diff --git a/fortran/eccodes_f90_head.f90 b/fortran/eccodes_f90_head.f90
index e65907e..172ba4c 100644
--- a/fortran/eccodes_f90_head.f90
+++ b/fortran/eccodes_f90_head.f90
@@ -7,9 +7,8 @@
 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
 !
 !
-!> Module eccodes
-!>
-!> The eccodes module provides the Fortran 90 interface.
+!> Module eccodes\n
+!> This is the \b Fortran90 interface for ecCodes
 module eccodes
 
   use grib_api
@@ -27,7 +26,7 @@ module eccodes
 
   !> Create a new message in memory from an integer or character array containting the coded message.
   !>
-  !> The message can be accessed through its gribid and it will be available\n
+  !> The message can be accessed through its ID and it will be available\n
   !> until @ref codes_release is called. A reference to the original coded\n
   !> message is kept in the new message structure.
   !>
@@ -36,9 +35,9 @@ module eccodes
   !> gathered with @ref codes_get_error_string.
   !>
   !>
-  !> \b Examples: \ref copy_message.f90 "copy_message.f90"
+  !> \b Examples: \ref grib_copy_message.f90 "grib_copy_message.f90"
   !>
-  !> @param gribid      id of the grib loaded in memory
+  !> @param id          ID of the message loaded in memory
   !> @param message     array containing the coded message
   !> @param status      CODES_SUCCESS if OK, integer value on error
   interface codes_new_from_message
@@ -48,12 +47,12 @@ module eccodes
 
   !> Get a value of specified index from an array key.
   !>
-  !> Given a gribid and key name as input a value corresponding to the given index
+  !> Given an ID and key name as input a value corresponding to the given index
   !> is returned. The index is zero based i.e. the first element has
   !> zero index, the second element index one and so on.
   !> If the parameter index is an array all the values correspondig to the indexes
   !> list is returned.
-  !> The gribid references to a grib message loaded in memory.
+  !> The ID references to a message loaded in memory.
   !>
   !> In case of error, if the status parameter (optional) is not given, the program will
   !> exit with an error message.\n Otherwise the error message can be
@@ -63,7 +62,7 @@ module eccodes
   !>
   !> @see codes_new_from_file, codes_release, codes_get
   !>
-  !> @param[in] gribid      id of the grib loaded in memory
+  !> @param[in] id          ID of the message loaded in memory
   !> @param[in] key         key name
   !> @param[in] index       index can be a scalar or array of integer(4)
   !> @param[out] value      value can be a scalar or array of integer(4),real(4),real(8)
@@ -128,7 +127,7 @@ module eccodes
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref codes_get_error_string.
   !>
-  !> \b Examples: \ref get_data.f90 "get_data.f90"
+  !> \b Examples: \ref grib_get_data.f90 "grib_get_data.f90"
   !>
   !> @param[in] gribid       id of the grib loaded in memory
   !> @param[out] lats        latitudes array with dimension "size"
diff --git a/fortran/eccodes_f90_int.f90 b/fortran/eccodes_f90_int.f90
index 1b005c8..1ddc21f 100644
--- a/fortran/eccodes_f90_int.f90
+++ b/fortran/eccodes_f90_int.f90
@@ -14,7 +14,7 @@
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref codes_get_error_string.
   !>
-  !> \b Examples: \ref index.f90 "index.f90"
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
   !>
   !> @param  indexid   id of an index created from a file. The index must have been created with the key in argument.
   !> @param key        key for wich the values are returned
@@ -33,7 +33,7 @@
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref codes_get_error_string.
   !>
-  !> \b Examples: \ref index.f90 "index.f90"
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
   !>
   !> @param  indexid     id of an index created from a file. The index must have been created with the key in argument.
   !> @param key        key for which the number of values is computed
@@ -50,7 +50,7 @@
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref codes_get_error_string.
   !>
-  !> \b Examples: \ref index.f90 "index.f90"
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
   !>
   !> @param  indexid   id of an index created from a file. The index must have been created with the key in argument.
   !> @param key        key to be selected
@@ -82,7 +82,7 @@
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref codes_get_error_string.
   !>
-  !> \b Examples: \ref grib_get_keys.f90 "grib_get_keys.f90", \ref print_data.f90 "print_data.f90"
+  !> \b Examples: \ref grib_get_keys.f90 "grib_get_keys.f90", \ref grib_print_data.f90 "grib_print_data.f90"
   !>
   !> @see codes_new_from_file, codes_release, codes_set
   !>
@@ -133,7 +133,7 @@
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref codes_get_error_string.
   !>
-  !> \b Examples: \ref set.f90 "set.f90"
+  !> \b Examples: \ref grib_set_keys.f90 "grib_set_keys.f90"
   !>
   !> @see codes_new_from_file, codes_release, codes_get
   !>
diff --git a/fortran/eccodes_f90_long_int.f90 b/fortran/eccodes_f90_long_int.f90
index 960f55f..c6e4bf2 100644
--- a/fortran/eccodes_f90_long_int.f90
+++ b/fortran/eccodes_f90_long_int.f90
@@ -14,7 +14,7 @@
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref codes_get_error_string.
   !>
-  !> \b Examples: \ref index.f90 "index.f90"
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
   !>
   !> @param  indexid   id of an index created from a file. The index must have been created with the key in argument.
   !> @param key        key for wich the values are returned
@@ -34,7 +34,7 @@
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref codes_get_error_string.
   !>
-  !> \b Examples: \ref index.f90 "index.f90"
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
   !>
   !> @param  indexid     id of an index created from a file. The index must have been created with the key in argument.
   !> @param key        key for which the number of values is computed
@@ -52,7 +52,7 @@
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref codes_get_error_string.
   !>
-  !> \b Examples: \ref index.f90 "index.f90"
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
   !>
   !> @param  indexid   id of an index created from a file. The index must have been created with the key in argument.
   !> @param key        key to be selected
@@ -85,7 +85,7 @@
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref codes_get_error_string.
   !>
-  !> \b Examples: \ref grib_get_keys.f90 "grib_get_keys.f90", \ref print_data.f90 "print_data.f90"
+  !> \b Examples: \ref grib_get_keys.f90 "grib_get_keys.f90", \ref grib_print_data.f90 "grib_print_data.f90"
   !>
   !> @see codes_new_from_file, codes_release, codes_set
   !>
@@ -137,7 +137,7 @@
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref codes_get_error_string.
   !>
-  !> \b Examples: \ref set.f90 "set.f90"
+  !> \b Examples: \ref grib_set_keys.f90 "grib_set_keys.f90"
   !>
   !> @see codes_new_from_file, codes_release, codes_get
   !>
diff --git a/fortran/eccodes_f90_tail.f90 b/fortran/eccodes_f90_tail.f90
index 10adf9d..aa474e3 100644
--- a/fortran/eccodes_f90_tail.f90
+++ b/fortran/eccodes_f90_tail.f90
@@ -4,492 +4,916 @@
 !>
 !> Wrapper for eccodes
 !>
-subroutine codes_set_missing ( gribid, key,  status )
-    integer(kind=kindOfInt),                 intent(in)  :: gribid
+
+!> Set as missing the value for a key in a message.
+!>
+!> It can be used to set a missing value in the header but not in \n
+!> the data values. To set missing data values see the bitmap examples.\n
+!>
+!> In case of error, if the status parameter (optional) is not given, the program will
+!> exit with an error message.\n Otherwise the error message can be
+!> gathered with @ref codes_get_error_string.
+!>
+!> \b Examples: \ref grib_set_missing.f90 "grib_set_missing.f90"
+!>
+!> @param id      ID of the message loaded in memory
+!> @param key     key name
+!> @param status  CODES_SUCCESS if OK, integer value on error
+subroutine codes_set_missing ( id, key,  status )
+    integer(kind=kindOfInt),                 intent(in)  :: id
     character(len=*),                        intent(in)  :: key
     integer(kind=kindOfInt),optional, intent(out)        :: status
-    integer(kind=kindOfInt)                              :: iret
 
-    call grib_set_missing ( gribid, key,  status )
+    call grib_set_missing ( id, key,  status )
 end subroutine codes_set_missing 
 
-!
+!> Create a new index form a file. The file is indexed with the keys in argument.
+!>
+!> In case of error, if the status parameter (optional) is not given, the program will
+!> exit with an error message.\n Otherwise the error message can be
+!> gathered with @ref codes_get_error_string.
+!>
+!> \b Examples: \ref grib_index.f90 "grib_index.f90"
+!>
+!> @param indexid   id of the newly created index
+!> @param filename  name of the file of messages to be indexed
+!> @param keys      comma separated list of keys for the index.
+!>                  The type of the key can be explicitly declared appending :l for long (or alternatively :i), :d for double, :s for string to the key name.
+!>                  If the type is not declared explicitly, the native type is assumed.
+!> @param status    CODES_SUCCESS if OK, integer value on error
 subroutine codes_index_create ( indexid, filename, keys,  status )
     integer(kind=kindOfInt),         intent(inout)  :: indexid
     character(len=*), intent(in)                    :: filename
     character(len=*), intent(in)                    :: keys
     integer(kind=kindOfInt),optional, intent(out)   :: status
-    integer(kind=kindOfInt)                         :: iret
 
     call grib_index_create ( indexid, filename, keys,  status )
 end subroutine codes_index_create 
 
-!
+  !> Add a file to an index.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
+  !>
+  !> @param indexid     id of the index I want to add a file to
+  !> @param filename    name of the file I want to add to the index
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_index_add_file ( indexid, filename, status )
     integer(kind=kindOfInt), intent(in)             :: indexid
     character(len=*), intent(in)                    :: filename
     integer(kind=kindOfInt),optional, intent(out)   :: status
-    integer(kind=kindOfInt)                         :: iret
 
     call grib_index_add_file ( indexid, filename, status )
 end subroutine codes_index_add_file 
 
-!
+  !> Get the number of distinct values of the key in argument contained in the index. The key must belong to the index.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
+  !>
+  !> @param  indexid     id of an index created from a file. The index must have been created with the key in argument.
+  !> @param key        key for which the number of values is computed
+  !> @param size       number of distinct values of the key in the index
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_index_get_size_long( indexid, key, size,  status )
     integer(kind=kindOfInt),         intent(in)     :: indexid
     character(len=*), intent(in)                    :: key
-    integer(kind=kindOfLong),       intent(out)   :: size
+    integer(kind=kindOfLong),       intent(out)     :: size
     integer(kind=kindOfInt),optional, intent(out)   :: status
-    integer(kind=kindOfInt)                         :: iret
 
     call grib_index_get_size_long( indexid, key, size,  status )
 end subroutine codes_index_get_size_long
 
-!
+  !> Get the number of distinct values of the key in argument contained in the index. The key must belong to the index.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
+  !>
+  !> @param  indexid     id of an index created from a file. The index must have been created with the key in argument.
+  !> @param key        key for which the number of values is computed
+  !> @param size       number of distinct values of the key in the index
+  !> @param status     CODES_SUCCESS if OK, integer value on error
 subroutine codes_index_get_size_int( indexid, key, size,  status )
     integer(kind=kindOfInt),         intent(in)     :: indexid
     character(len=*), intent(in)                    :: key
-    integer(kind=kindOfInt),       intent(out)   :: size
+    integer(kind=kindOfInt),       intent(out)      :: size
     integer(kind=kindOfInt),optional, intent(out)   :: status
-    integer(kind=kindOfInt)                         :: iret
 
     call grib_index_get_size_int( indexid, key, size,  status )
 end subroutine codes_index_get_size_int
 
-!
+  !> Get the distinct values of the key in argument contained in the index. The key must belong to the index. This function is used when the type of the key was explicitly defined as long or when the native type of the key is long.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
+  !>
+  !> @param  indexid   id of an index created from a file. The index must have been created with the key in argument.
+  !> @param key        key for wich the values are returned
+  !> @param values     array of values. The array must be allocated before entering this function and its size must be enough to contain all the values.
+  !> @param status     CODES_SUCCESS if OK, integer value on error
 subroutine codes_index_get_int( indexid, key, values,  status )
     integer(kind=kindOfInt),               intent(in)  :: indexid
-    character(len=*),      intent(in)  :: key
+    character(len=*),      intent(in)                  :: key
     integer(kind=kindOfInt), dimension(:), intent(out) :: values
     integer(kind=kindOfInt),optional, intent(out)      :: status
-    integer(kind=kindOfInt)                            :: iret
-    integer(kind=kindOfInt)                            :: nb_values
 
     call grib_index_get_int( indexid, key, values,  status )
 end subroutine codes_index_get_int
 
-!
+  !> Get the distinct values of the key in argument contained in the index. The key must belong to the index. This function is used when the type of the key was explicitly defined as long or when the native type of the key is long.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
+  !>
+  !> @param  indexid   id of an index created from a file. The index must have been created with the key in argument.
+  !> @param key        key for wich the values are returned
+  !> @param values     array of values. The array must be allocated before entering this function and its size must be enough to contain all the values.
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_index_get_long( indexid, key, values,  status )
-    integer(kind=kindOfInt),               intent(in)  :: indexid
-    character(len=*),      intent(in)  :: key
+    integer(kind=kindOfInt),               intent(in)   :: indexid
+    character(len=*),      intent(in)                   :: key
     integer(kind=kindOfLong), dimension(:), intent(out) :: values
-    integer(kind=kindOfInt),optional, intent(out)      :: status
-    integer(kind=kindOfInt)                            :: iret
-    integer(kind=kindOfInt)                            :: nb_values
+    integer(kind=kindOfInt),optional, intent(out)       :: status
 
     call grib_index_get_long( indexid, key, values,  status )
 end subroutine codes_index_get_long
 
-!
+  !> Get the distinct values of the key in argument contained in the index. The key must belong to the index. This function is used when the type of the key was explicitly defined as long or when the native type of the key is long.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
+  !>
+  !> @param  indexid   id of an index created from a file. The index must have been created with the key in argument.
+  !> @param key        key for wich the values are returned
+  !> @param values     array of values. The array must be allocated before entering this function and its size must be enough to contain all the values.
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_index_get_real8( indexid, key, values,  status )
     integer(kind=kindOfInt),               intent(in)  :: indexid
-    character(len=*),      intent(in)  :: key
+    character(len=*),      intent(in)                  :: key
     real(kind=kindOfDouble), dimension(:), intent(out) :: values
     integer(kind=kindOfInt),optional, intent(out)      :: status
-    integer(kind=kindOfInt)                            :: iret
-    integer(kind=kindOfInt)                            :: nb_values
 
     call grib_index_get_real8( indexid, key, values,  status )
 end subroutine codes_index_get_real8
 
-!
+  !> Get the distinct values of the key in argument contained in the index. 
+  !> The key must belong to the index. 
+  !> This function is used when the type of the key was explicitly defined as string or when the native type of the key is string.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
+  !>
+  !> @param  indexid   id of an index created from a file. The index must have been created with the key in argument.
+  !> @param key        key for wich the values are returned
+  !> @param values     array of values. The array must be allocated before entering this function and its size must be enough to contain all the values.
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_index_get_string( indexid, key, values,  status )
-    integer(kind=kindOfInt),               intent(in)  :: indexid
-    character(len=*),      intent(in)  :: key
-    character(len=*), dimension(:), intent(out) :: values
-    integer(kind=kindOfInt),optional, intent(out)      :: status
-    integer(kind=kindOfInt)                            :: iret
-    integer(kind=kindOfInt)                            :: nb_values
-    integer(kind=kindOfInt)                            :: size_value
+    integer(kind=kindOfInt),        intent(in)     :: indexid
+    character(len=*),      intent(in)              :: key
+    character(len=*), dimension(:), intent(out)    :: values
+    integer(kind=kindOfInt),optional, intent(out)  :: status
 
     call grib_index_get_string( indexid, key, values,  status )
 end subroutine codes_index_get_string
 
-!
+  !> Select the message subset with key==value. The value is a integer. 
+  !> The key must have been created with string type or have string as native type if the type was not explicitly defined in the index creation.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
+  !>
+  !> @param  indexid   id of an index created from a file. The index must have been created with the key in argument.
+  !> @param key        key to be selected
+  !> @param value      value of the key to select
+  !> @param status     CODES_SUCCESS if OK, integer value on error
 subroutine codes_index_select_string( indexid, key, value,  status )
     integer(kind=kindOfInt),               intent(in)  :: indexid
     character(len=*),      intent(in)                  :: key
-    character(len=*), intent(in)                :: value
+    character(len=*), intent(in)                       :: value
     integer(kind=kindOfInt),optional, intent(out)      :: status
-    integer(kind=kindOfInt)                            :: iret
 
     call grib_index_select_string( indexid, key, value,  status )
 end subroutine codes_index_select_string
 
-!
+  !> Select the message subset with key==value. The value is a integer. The key must have been created with integer type or have integer as native type if the type was not explicitly defined in the index creation.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
+  !>
+  !> @param  indexid   id of an index created from a file. The index must have been created with the key in argument.
+  !> @param key        key to be selected
+  !> @param value      value of the key to select
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_index_select_int( indexid, key, value,  status )
     integer(kind=kindOfInt),               intent(in)  :: indexid
     character(len=*),      intent(in)                  :: key
     integer(kind=kindOfInt), intent(in)                :: value
     integer(kind=kindOfInt),optional, intent(out)      :: status
-    integer(kind=kindOfInt)                            :: iret
 
     call grib_index_select_int( indexid, key, value,  status )
 end subroutine codes_index_select_int
 
-!
+  !> Select the message subset with key==value. The value is a integer. The key must have been created with integer type or have integer as native type if the type was not explicitly defined in the index creation.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
+  !>
+  !> @param  indexid   id of an index created from a file. The index must have been created with the key in argument.
+  !> @param key        key to be selected
+  !> @param value      value of the key to select
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_index_select_long( indexid, key, value,  status )
     integer(kind=kindOfInt),               intent(in)  :: indexid
     character(len=*),      intent(in)                  :: key
     integer(kind=kindOfLong), intent(in)               :: value
     integer(kind=kindOfInt),optional, intent(out)      :: status
-    integer(kind=kindOfInt)                            :: iret
 
     call grib_index_select_long( indexid, key, value,  status )
 end subroutine codes_index_select_long
 
-!
+  !> Select the message subset with key==value. The value is a real. The key must have been created with real type or have real as native type if the type was not explicitly defined in the index creation.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
+  !>
+  !> @param  indexid   id of an index created from a file. The index must have been created with the key in argument.
+  !> @param key        key to be selected
+  !> @param value      value of the key to select
+  !> @param status     CODES_SUCCESS if OK, integer value on error
 subroutine codes_index_select_real8( indexid, key, value,  status )
     integer(kind=kindOfInt),               intent(in)  :: indexid
     character(len=*),      intent(in)                  :: key
     real(kind=kindOfDouble), intent(in)                :: value
     integer(kind=kindOfInt),optional, intent(out)      :: status
-    integer(kind=kindOfInt)                            :: iret
 
     call grib_index_select_real8( indexid, key, value,  status )
 end subroutine codes_index_select_real8
 
-!
-subroutine codes_new_from_index ( indexid, gribid , status)
+  !> Create a new handle from an index after having selected the key values.
+  !> All the keys belonging to the index must be selected before calling this function. Successive calls to this function will return all the handles compatible with the constraints defined selecting the values of the index keys.
+  !> When no more handles are available from the index a NULL pointer is returned and the err variable is set to CODES_END_OF_INDEX.
+  !>
+  !> The message can be accessed through its msgid and it will be available\n
+  !> until @ref codes_release is called.\n
+  !>
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
+  !>
+  !> @param indexid   id of an index created from a file.
+  !> @param msgid     id of the message loaded in memory
+  !> @param status    CODES_SUCCESS if OK, CODES_END_OF_FILE at the end of file, or error code
+subroutine codes_new_from_index ( indexid, msgid , status)
     integer(kind=kindOfInt),intent(in)              :: indexid
-    integer(kind=kindOfInt),intent(out)             :: gribid
+    integer(kind=kindOfInt),intent(out)             :: msgid
     integer(kind=kindOfInt),optional,intent(out)    :: status
-    integer(kind=kindOfInt)                         :: iret
 
-    call grib_new_from_index ( indexid, gribid , status)
+    call grib_new_from_index ( indexid, msgid , status)
 end subroutine codes_new_from_index 
 
-!
+  !> Load an index file previously created with @ref codes_index_write.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
+  !>
+  !> @param indexid      id of loaded index
+  !> @param filename     name of the index file to load
+  !> @param status       CODES_SUCCESS if OK, integer value on error
 subroutine codes_index_read ( indexid, filename, status )
     integer(kind=kindOfInt),         intent(inout)  :: indexid
     character(len=*), intent(in)                    :: filename
     integer(kind=kindOfInt),optional, intent(out)   :: status
-    integer(kind=kindOfInt)                         :: iret
 
     call grib_index_read ( indexid, filename, status )
 end subroutine codes_index_read 
 
-!
+  !> Saves an index to a file for later reuse. Index files can be read with
+  !> @ref codes_index_read.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> \b Examples: \ref grib_index.f90 "grib_index.f90"
+  !>
+  !> @param indexid      id of the index to save to file
+  !> @param filename     name of file to save the index to
+  !> @param status       CODES_SUCCESS if OK, integer value on error
 subroutine codes_index_write ( indexid, filename, status )
     integer(kind=kindOfInt),         intent(inout)  :: indexid
     character(len=*), intent(in)                    :: filename
     integer(kind=kindOfInt),optional, intent(out)   :: status
-    integer(kind=kindOfInt)                         :: iret
 
     call grib_index_write ( indexid, filename, status )
 end subroutine codes_index_write 
 
-!
+  !> Delete the index.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param indexid   id of an index created from a file.
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_index_release ( indexid, status )
     integer(kind=kindOfInt),          intent(in)  :: indexid
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
     call grib_index_release ( indexid, status )
 end subroutine codes_index_release
 
-!
+  !> Open a file according to a mode.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> \b Examples: \ref grib_get_keys.f90 "grib_get_keys.f90"
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param filename    name of the file to be open
+  !> @param mode        open mode can be 'r' (read only) or 'w' (write only)
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_open_file ( ifile, filename, mode, status )
     integer(kind=kindOfInt),intent(out)               :: ifile
     character(len=*), intent(in)                      :: filename
     character(LEN=*), intent(in)                      :: mode
     integer(kind=kindOfInt),optional, intent(out)     :: status
-    integer(kind=kindOfInt)                           :: iret
 
     call grib_open_file ( ifile, filename, mode, status )
 end subroutine codes_open_file 
 
-!
+  !> Reads nbytes bytes into the buffer from a file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      binary buffer to be read
+  !> @param nbytes      number of bytes to be read
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_read_bytes_char ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     character(len=1),dimension(:), intent(out)       :: buffer
     integer(kind=kindOfInt), intent(in)              :: nbytes
     integer(kind=kindOfInt),optional, intent(out)    :: status
-    integer(kind=kindOfSize_t)                       :: ibytes
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_read_bytes_char ( ifile, buffer, nbytes, status )
 end subroutine codes_read_bytes_char 
 
-!
+  !> Reads nbytes bytes into the buffer from a file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      binary buffer to be read
+  !> @param nbytes      number of bytes to be read
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_read_bytes_char_size_t ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     character(len=1),dimension(:), intent(out)       :: buffer
     integer(kind=kindOfSize_t), intent(in)           :: nbytes
     integer(kind=kindOfInt),optional, intent(out)    :: status
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_read_bytes_char_size_t ( ifile, buffer, nbytes, status )
 end subroutine codes_read_bytes_char_size_t 
 
-!
+  !> Reads nbytes bytes into the buffer from a file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      buffer to be read
+  !> @param nbytes      number of bytes to be read
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_read_bytes_int4 ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     integer(kind=4),dimension(:), intent(out)        :: buffer
     integer(kind=kindOfInt), intent(in)              :: nbytes
     integer(kind=kindOfInt),optional, intent(out)    :: status
-    integer(kind=kindOfSize_t)                       :: ibytes
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_read_bytes_int4 ( ifile, buffer, nbytes, status )
 end subroutine codes_read_bytes_int4 
 
-!
+  !> Reads nbytes bytes into the buffer from a file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      buffer to be read
+  !> @param nbytes      number of bytes to be read
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_read_bytes_int4_size_t ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     integer(kind=4),dimension(:), intent(out)        :: buffer
     integer(kind=kindOfSize_t), intent(in)           :: nbytes
     integer(kind=kindOfInt),optional, intent(out)    :: status
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_read_bytes_int4_size_t ( ifile, buffer, nbytes, status )
 end subroutine codes_read_bytes_int4_size_t 
 
-!
+  !> Reads nbytes bytes into the buffer from a file opened with codes_open_file.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      buffer to be read
+  !> @param nbytes      number of bytes to be read
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_read_bytes_real4 ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     real(kind=4),dimension(:), intent(out)           :: buffer
     integer(kind=kindOfInt), intent(in)              :: nbytes
     integer(kind=kindOfInt),optional, intent(out)    :: status
-    integer(kind=kindOfSize_t)                       :: ibytes
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_read_bytes_real4 ( ifile, buffer, nbytes, status )
 end subroutine codes_read_bytes_real4 
 
-!
+  !> Reads nbytes bytes into the buffer from a file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      buffer to be read
+  !> @param nbytes      number of bytes to be read
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_read_bytes_real4_size_t ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     real(kind=4),dimension(:), intent(out)           :: buffer
     integer(kind=kindOfSize_t), intent(inout)        :: nbytes
     integer(kind=kindOfInt),optional, intent(out)    :: status
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_read_bytes_real4_size_t ( ifile, buffer, nbytes, status )
 end subroutine codes_read_bytes_real4_size_t 
 
-!
+  !> Reads nbytes bytes into the buffer from a file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      buffer to be read
+  !> @param nbytes      number of bytes to be read
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_read_bytes_real8 ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     real(kind=8),dimension(:), intent(out)           :: buffer
     integer(kind=kindOfInt), intent(in)              :: nbytes
     integer(kind=kindOfInt),optional, intent(out)    :: status
-    integer(kind=kindOfSize_t)                       :: ibytes
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_read_bytes_real8 ( ifile, buffer, nbytes, status )
 end subroutine codes_read_bytes_real8 
 
-!
+  !> Reads nbytes bytes into the buffer from a file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      buffer to be read
+  !> @param nbytes      number of bytes to be read
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_read_bytes_real8_size_t ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     real(kind=8),dimension(:), intent(out)           :: buffer
     integer(kind=kindOfSize_t), intent(inout)        :: nbytes
     integer(kind=kindOfInt),optional, intent(out)    :: status
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_read_bytes_real8_size_t ( ifile, buffer, nbytes, status )
 end subroutine codes_read_bytes_real8_size_t 
 
-!
+  !> Reads a message in the buffer array from the file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      binary buffer to be read
+  !> @param nbytes      number of bytes to be read
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_read_from_file_int4 ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     integer(kind=4),dimension(:), intent(out)        :: buffer
     integer(kind=kindOfInt), intent(inout)           :: nbytes
     integer(kind=kindOfInt),optional, intent(out)    :: status
-    integer(kind=kindOfSize_t)                       :: ibytes
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_read_from_file_int4 ( ifile, buffer, nbytes, status )
 end subroutine codes_read_from_file_int4 
 
-!
+  !> Reads a message in the buffer array from the file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      binary buffer to be read
+  !> @param nbytes      number of bytes to be read
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_read_from_file_int4_size_t ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     integer(kind=4),dimension(:), intent(out)        :: buffer
     integer(kind=kindOfSize_t), intent(inout)        :: nbytes
     integer(kind=kindOfInt),optional, intent(out)    :: status
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_read_from_file_int4_size_t ( ifile, buffer, nbytes, status )
 end subroutine codes_read_from_file_int4_size_t 
 
-!
+  !> Reads a message in the buffer array from the file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      binary buffer to be read
+  !> @param nbytes      number of bytes to be read
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_read_from_file_real4 ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     real(kind=4),dimension(:), intent(out)           :: buffer
     integer(kind=kindOfInt), intent(inout)           :: nbytes
     integer(kind=kindOfInt),optional, intent(out)    :: status
-    integer(kind=kindOfSize_t)                       :: ibytes
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_read_from_file_real4 ( ifile, buffer, nbytes, status )
 end subroutine codes_read_from_file_real4 
 
-!
+  !> Reads a message in the buffer array from the file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      binary buffer to be read
+  !> @param nbytes      number of bytes to be read
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_read_from_file_real4_size_t ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     real(kind=4),dimension(:), intent(out)           :: buffer
     integer(kind=kindOfSize_t), intent(inout)        :: nbytes
     integer(kind=kindOfInt),optional, intent(out)    :: status
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_read_from_file_real4_size_t ( ifile, buffer, nbytes, status )
 end subroutine codes_read_from_file_real4_size_t 
 
-!
+  !> Reads a message in the buffer array from the file opened with codes_open_file.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      binary buffer to be read
+  !> @param nbytes      number of bytes to be read
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_read_from_file_real8 ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     real(kind=8),dimension(:), intent(out)           :: buffer
     integer(kind=kindOfInt), intent(inout)           :: nbytes
     integer(kind=kindOfInt),optional, intent(out)    :: status
-    integer(kind=kindOfSize_t)                       :: ibytes
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_read_from_file_real8 ( ifile, buffer, nbytes, status )
 end subroutine codes_read_from_file_real8 
 
-!
+  !> Reads a message in the buffer array from the file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      binary buffer to be read
+  !> @param nbytes      number of bytes to be read
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_read_from_file_real8_size_t ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     real(kind=8),dimension(:), intent(out)           :: buffer
     integer(kind=kindOfSize_t), intent(inout)        :: nbytes
     integer(kind=kindOfInt),optional, intent(out)    :: status
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_read_from_file_real8_size_t ( ifile, buffer, nbytes, status )
 end subroutine codes_read_from_file_real8_size_t 
 
-!
+  !> Reads a message in the buffer array from the file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      buffer to be read
+  !> @param nbytes      number of bytes to be read
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_read_from_file_char ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     character(len=1),dimension(:), intent(out)       :: buffer
     integer(kind=kindOfInt), intent(inout)           :: nbytes
     integer(kind=kindOfInt),optional, intent(out)    :: status
-    integer(kind=kindOfSize_t)                       :: ibytes
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_read_from_file_char ( ifile, buffer, nbytes, status )
-end subroutine codes_read_from_file_char 
-
-!
+end subroutine codes_read_from_file_char
+
+  !> Reads a message in the buffer array from the file opened with codes_open_file.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      buffer to be read
+  !> @param nbytes      number of bytes to be read
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_read_from_file_char_size_t ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     character(len=1),dimension(:), intent(out)       :: buffer
     integer(kind=kindOfSize_t), intent(inout)        :: nbytes
     integer(kind=kindOfInt),optional, intent(out)    :: status
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_read_from_file_char_size_t ( ifile, buffer, nbytes, status )
 end subroutine codes_read_from_file_char_size_t 
 
-!
+  !> Write nbytes bytes from the buffer in a file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      buffer to be written
+  !> @param nbytes      number of bytes to be written
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_write_bytes_char ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     character(len=1), dimension(:),intent(in)        :: buffer
     integer(kind=kindOfInt), intent(in)              :: nbytes
     integer(kind=kindOfInt),optional,intent(out)     :: status
-    integer(kind=kindOfSize_t)                       :: ibytes
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_write_bytes_char ( ifile, buffer, nbytes, status )
 end subroutine codes_write_bytes_char 
 
-!
+  !> Write nbytes bytes from the buffer in a file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      buffer to be written
+  !> @param nbytes      number of bytes to be written
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_write_bytes_char_size_t ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     character(len=1), dimension(:),intent(in)        :: buffer
     integer(kind=kindOfSize_t), intent(in)           :: nbytes
     integer(kind=kindOfInt),optional,intent(out)     :: status
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_write_bytes_char_size_t ( ifile, buffer, nbytes, status )
 end subroutine codes_write_bytes_char_size_t 
 
-!
+  !> Write nbytes bytes from the buffer in a file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      buffer to be written
+  !> @param nbytes      number of bytes to be written
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_write_bytes_int4 ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     integer(kind=4), dimension(:),intent(in)         :: buffer
     integer(kind=kindOfInt), intent(in)              :: nbytes
     integer(kind=kindOfInt),optional,intent(out)     :: status
-    integer(kind=kindOfSize_t)                       :: ibytes
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_write_bytes_int4 ( ifile, buffer, nbytes, status )
 end subroutine codes_write_bytes_int4 
 
-!
+  !> Write nbytes bytes from the buffer in a file opened with codes_open_file.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      buffer to be written
+  !> @param nbytes      number of bytes to be written
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_write_bytes_int4_size_t ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     integer(kind=4), dimension(:),intent(in)         :: buffer
     integer(kind=kindOfSize_t), intent(in)           :: nbytes
     integer(kind=kindOfInt),optional,intent(out)     :: status
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_write_bytes_int4_size_t ( ifile, buffer, nbytes, status )
 end subroutine codes_write_bytes_int4_size_t 
 
-!
+  !> Write nbytes bytes from the buffer in a file opened with codes_open_file.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      buffer to be written
+  !> @param nbytes      number of bytes to be written
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_write_bytes_real4 ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     real(kind=4), dimension(:),intent(in)            :: buffer
     integer(kind=kindOfInt), intent(in)              :: nbytes
     integer(kind=kindOfInt),optional,intent(out)     :: status
-    integer(kind=kindOfSize_t)                       :: ibytes
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_write_bytes_real4 ( ifile, buffer, nbytes, status )
-end subroutine codes_write_bytes_real4 
-
-!
+end subroutine codes_write_bytes_real4
+
+  !> Write nbytes bytes from the buffer in a file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      buffer to be written
+  !> @param nbytes      number of bytes to be written
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_write_bytes_real4_size_t ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     real(kind=4), dimension(:),intent(in)            :: buffer
     integer(kind=kindOfSize_t), intent(in)           :: nbytes
     integer(kind=kindOfInt),optional,intent(out)     :: status
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_write_bytes_real4_size_t ( ifile, buffer, nbytes, status )
 end subroutine codes_write_bytes_real4_size_t 
 
-!
+  !> Write nbytes bytes from the buffer in a file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      buffer to be written
+  !> @param nbytes      number of bytes to be written
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_write_bytes_real8 ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     real(kind=8), dimension(:),intent(in)            :: buffer
     integer(kind=kindOfInt), intent(in)              :: nbytes
     integer(kind=kindOfInt),optional,intent(out)     :: status
-    integer(kind=kindOfSize_t)                       :: ibytes
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_write_bytes_real8 ( ifile, buffer, nbytes, status )
-end subroutine codes_write_bytes_real8 
-
-!
+end subroutine codes_write_bytes_real8
+
+  !> Write nbytes bytes from the buffer in a file opened with codes_open_file.
+  !>
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param ifile       id of the opened file to be used in all the file functions.
+  !> @param buffer      buffer to be written
+  !> @param nbytes      number of bytes to be written
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_write_bytes_real8_size_t ( ifile, buffer, nbytes, status )
     integer(kind=kindOfInt),intent(in)               :: ifile
     real(kind=8), dimension(:),intent(in)            :: buffer
     integer(kind=kindOfSize_t), intent(in)           :: nbytes
     integer(kind=kindOfInt),optional,intent(out)     :: status
-    integer(kind=kindOfInt)                          :: iret
 
     call grib_write_bytes_real8_size_t ( ifile, buffer, nbytes, status )
 end subroutine codes_write_bytes_real8_size_t 
 
-!
+  !> Close a file.
+  !>
+  !> If the \em fileid does not refer to an opened file an error code
+  !> is returned in status.\n
+  !>
+  !> \b Examples: \ref grib_get_keys.f90 "grib_get_keys.f90"
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param ifile is the id of the file to be closed.
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_close_file ( ifile , status )
     integer(kind=kindOfInt),intent(in)            :: ifile
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
     call grib_close_file ( ifile , status )
-end subroutine codes_close_file 
-
-!
+end subroutine codes_close_file
+
+  !> Counts the messages in a file
+  !>
+  !> \b Examples: \ref count_messages.f90 "count_messages.f90"
+  !>
+  !> @param ifile    id of the file opened with @ref codes_open_file
+  !> @param n        number of messages in the file
+  !> @param status   CODES_SUCCESS if OK or error code
 subroutine codes_count_in_file ( ifile, n , status)
     integer(kind=kindOfInt),intent(in)              :: ifile
     integer(kind=kindOfInt),intent(out)             :: n
     integer(kind=kindOfInt),optional,intent(out)    :: status
-    integer(kind=kindOfInt)                         :: iret
 
     call grib_count_in_file ( ifile, n , status)
 end subroutine codes_count_in_file 
@@ -499,111 +923,224 @@ subroutine codes_headers_only_new_from_file ( ifile, gribid , status)
     integer(kind=kindOfInt),intent(in)              :: ifile
     integer(kind=kindOfInt),intent(out)             :: gribid
     integer(kind=kindOfInt),optional,intent(out)    :: status
-    integer(kind=kindOfInt)                         :: iret
 
     call grib_headers_only_new_from_file ( ifile, gribid , status)
 end subroutine codes_headers_only_new_from_file 
 
-!------------------
-subroutine codes_new_from_file (ifile, gribid , product_kind, status)
+  !> Load in memory a message from a file.
+  !>
+  !> The message can be accessed through its message ID and it will be available\n
+  !> until @ref codes_release is called.\n
+  !>
+  !> \b Examples: \ref grib_get_keys.f90 "grib_get_keys.f90"
+  !>
+  !> @param ifile     id of the file opened with @ref codes_open_file
+  !> @param msgid     id of the message loaded in memory
+  !> @param product_kind One of CODES_PRODUCT_GRIB, CODES_PRODUCT_BUFR or CODES_PRODUCT_ANY
+  !> @param status    CODES_SUCCESS if OK, CODES_END_OF_FILE at the end of file, or error code
+subroutine codes_new_from_file (ifile, msgid , product_kind, status)
     integer(kind=kindOfInt),intent(in)              :: ifile
-    integer(kind=kindOfInt),intent(out)             :: gribid
+    integer(kind=kindOfInt),intent(out)             :: msgid
     integer(kind=kindOfInt),intent(in)              :: product_kind
     integer(kind=kindOfInt),optional,intent(out)    :: status
-    integer(kind=kindOfInt)                         :: iret
 
     if (product_kind == CODES_PRODUCT_GRIB) then
-        call codes_grib_new_from_file ( ifile, gribid , status)
+        call codes_grib_new_from_file ( ifile, msgid , status)
     else if (product_kind == CODES_PRODUCT_BUFR) then
-        call codes_bufr_new_from_file ( ifile, gribid , status)
+        call codes_bufr_new_from_file ( ifile, msgid , status)
     else
         if (product_kind /= CODES_PRODUCT_ANY) then
-            call grib_check(CODES_INTERNAL_ERROR,'codes_new_from_file','invalid_product_kind')
+            call grib_check(CODES_INTERNAL_ERROR,'new_from_file','invalid_product_kind')
         end if
-        call codes_any_new_from_file ( ifile, gribid , status)
+        call codes_any_new_from_file ( ifile, msgid , status)
     end if
-end subroutine codes_new_from_file 
-
-!
-subroutine codes_any_new_from_file ( ifile, id , status)
+end subroutine codes_new_from_file
+
+  !> Load in memory a message from a file.
+  !>
+  !> The message can be accessed through its msgid and it will be available\n
+  !> until @ref codes_release is called.\n
+  !>
+  !> @param ifile     id of the file opened with @ref codes_open_file
+  !> @param msgid     id of the message loaded in memory
+  !> @param status    CODES_SUCCESS if OK, GRIB_END_OF_FILE at the end of file, or error code
+subroutine codes_any_new_from_file ( ifile, msgid , status)
     integer(kind=kindOfInt),intent(in)              :: ifile
-    integer(kind=kindOfInt),intent(out)             :: id
+    integer(kind=kindOfInt),intent(out)             :: msgid
     integer(kind=kindOfInt),optional,intent(out)    :: status
-    integer(kind=kindOfInt)                         :: iret
 
-    call any_new_from_file ( ifile, id , status)
+    call any_new_from_file ( ifile, msgid , status)
 end subroutine codes_any_new_from_file 
 
-!
+  !> Load in memory a GRIB message from a file.
+  !>
+  !> The message can be accessed through its gribid and it will be available\n
+  !> until @ref codes_release is called.\n
+  !>
+  !> \b Examples: \ref grib_get_keys.f90 "grib_get_keys.f90"
+  !>
+  !> @param ifile     id of the file opened with @ref codes_open_file
+  !> @param gribid    id of the GRIB loaded in memory
+  !> @param status    CODES_SUCCESS if OK, GRIB_END_OF_FILE at the end of file, or error code
 subroutine codes_grib_new_from_file ( ifile, gribid , status)
     integer(kind=kindOfInt),intent(in)              :: ifile
     integer(kind=kindOfInt),intent(out)             :: gribid
     integer(kind=kindOfInt),optional,intent(out)    :: status
-    integer(kind=kindOfInt)                         :: iret
 
     call grib_new_from_file ( ifile, gribid , status)
 end subroutine codes_grib_new_from_file 
 
-!
+  !> Load in memory a BUFR message from a file.
+  !>
+  !> The message can be accessed through its bufrid and it will be available\n
+  !> until @ref codes_release is called.\n
+  !>
+  !> \b Examples: \ref bufr_get_keys.f90 "bufr_get_keys.f90"
+  !>
+  !> @param ifile     id of the file opened with @ref codes_open_file
+  !> @param bufrid    id of the BUFR loaded in memory
+  !> @param status    CODES_SUCCESS if OK, GRIB_END_OF_FILE at the end of file, or error code
 subroutine codes_bufr_new_from_file ( ifile, bufrid , status)
     integer(kind=kindOfInt),intent(in)              :: ifile
     integer(kind=kindOfInt),intent(out)             :: bufrid
     integer(kind=kindOfInt),optional,intent(out)    :: status
-    integer(kind=kindOfInt)                         :: iret
 
     call bufr_new_from_file ( ifile, bufrid, status)
 end subroutine codes_bufr_new_from_file
 
 
-!
-subroutine codes_new_from_message_char( gribid, message, status )
-    integer(kind=kindOfInt),intent(out)             :: gribid
+  !> Create a new message in memory from a character array containting the coded message.
+  !>
+  !> The message can be accessed through its msgid and it will be available\n
+  !> until @ref codes_release is called. A reference to the original coded\n
+  !> message is kept in the new message structure.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> \b Examples: \ref grib_copy_message.f90 "grib_copy_message.f90"
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param message     character array containing the coded message
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_new_from_message_char( msgid, message, status )
+    integer(kind=kindOfInt),intent(out)               :: msgid
     character(len=1), dimension(:),intent(in)         :: message
     integer(kind=kindOfInt),optional, intent(out)     :: status
-    integer(kind=kindOfSize_t)                        :: size_bytes
-    integer(kind=kindOfInt)                           :: iret
 
-    call grib_new_from_message_char( gribid, message, status )
+    call grib_new_from_message_char( msgid, message, status )
 end subroutine codes_new_from_message_char
 
-!
-subroutine codes_new_from_message_int4 ( gribid, message, status )
-    integer(kind=kindOfInt),intent(out)             :: gribid
+  !> Create a new message in memory from an integer array containting the coded message.
+  !>
+  !> The message can be accessed through its msgid and it will be available\n
+  !> until @ref codes_release is called. A reference to the original coded\n
+  !> message is kept in the new message structure.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> \b Examples: \ref grib_copy_message.f90 "grib_copy_message.f90"
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param message     integer array containing the coded message
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_new_from_message_int4 ( msgid, message, status )
+    integer(kind=kindOfInt),intent(out)               :: msgid
     integer(kind=4), dimension(:),intent(in)          :: message
     integer(kind=kindOfInt),optional, intent(out)     :: status
-    integer(kind=kindOfSize_t)                        :: size_bytes
-    integer(kind=kindOfInt)                           :: iret
 
-    call grib_new_from_message_int4 ( gribid, message, status )
+    call grib_new_from_message_int4 ( msgid, message, status )
 end subroutine codes_new_from_message_int4
 
-!
-subroutine codes_new_from_samples  ( gribid, samplename, status )
+  !> Create a new valid gribid from a GRIB sample contained in a samples directory pointed
+  !> by the environment variable ECCODES_SAMPLES_PATH.
+  !> To know where the samples directory is run the codes_info tool.\n
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> \b Examples: \ref grib_samples.f90 "grib_samples.f90"
+  !>
+  !> @param gribid       id of the grib loaded in memory
+  !> @param samplename name of the sample to be used
+  !> @param status       CODES_SUCCESS if OK, integer value on error
+subroutine codes_grib_new_from_samples  ( gribid, samplename, status )
     integer(kind=kindOfInt),          intent(out) :: gribid
     character(len=*), intent(in)                  :: samplename
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
     call grib_new_from_samples  ( gribid, samplename, status )
-end subroutine codes_new_from_samples
-
-!
-subroutine codes_release ( gribid, status )
-    integer(kind=kindOfInt),          intent(in)  :: gribid
+end subroutine codes_grib_new_from_samples
+
+  !> Create a new valid bufrid from a BUFR sample contained in a samples directory pointed
+  !> by the environment variable ECCODES_SAMPLES_PATH.
+  !> To know where the samples directory is run the codes_info tool.\n
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param bufrid       id of the BUFR loaded in memory
+  !> @param samplename   name of the BUFR sample to be used
+  !> @param status       CODES_SUCCESS if OK, integer value on error
+subroutine codes_bufr_new_from_samples  ( bufrid, samplename, status )
+      integer(kind=kindOfInt),          intent(out) :: bufrid
+      character(len=*), intent(in)                  :: samplename
+      integer(kind=kindOfInt),optional, intent(out) :: status
+      integer(kind=kindOfInt)                       :: iret
+
+      iret=codes_bufr_f_new_from_samples ( bufrid, samplename )
+      if (present(status)) then
+         status = iret
+      else
+         call grib_check(iret,'bufr_new_from_samples','('//samplename//')')
+      endif
+end subroutine codes_bufr_new_from_samples
+
+  !> Free the memory for the message referred as msgid.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> \b Examples: \ref grib_get_keys.f90 "grib_get_keys.f90"
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_release ( msgid, status )
+    integer(kind=kindOfInt),          intent(in)  :: msgid
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
-    call grib_release ( gribid, status )
+    call grib_release ( msgid, status )
 end subroutine codes_release
 
-!
-subroutine codes_clone ( gribid_src, gribid_dest, status )
-    integer(kind=kindOfInt),          intent(in)  :: gribid_src
-    integer(kind=kindOfInt),          intent(out) :: gribid_dest
+  !> Create a copy of a message.
+  !>
+  !> Create a copy of a given message (\em msgid_src) giving a new\n
+  !> message in memory (\em msgid_dest) exactly identical to the original one.\n
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> \b Examples: \ref grib_clone.f90 "grib_clone.f90"
+  !>
+  !> @param msgid_src     message to be cloned
+  !> @param msgid_dest    new message returned
+  !> @param status        CODES_SUCCESS if OK, integer value on error
+subroutine codes_clone ( msgid_src, msgid_dest, status )
+    integer(kind=kindOfInt),          intent(in)  :: msgid_src
+    integer(kind=kindOfInt),          intent(out) :: msgid_dest
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
-    call grib_clone ( gribid_src, gribid_dest, status )
+    call grib_clone ( msgid_src, msgid_dest, status )
 end subroutine codes_clone
 
 !
@@ -613,23 +1150,39 @@ subroutine codes_grib_util_sections_copy ( gribid_from, gribid_to, what, gribid_
     integer(kind=kindOfInt),          intent(out) :: gribid_out
     integer(kind=kindOfInt),          intent(in) :: what
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
     call grib_util_sections_copy ( gribid_from, gribid_to, what, gribid_out,status )
 end subroutine codes_grib_util_sections_copy
 
-!
+  !> Copy the value of all the keys belonging to a namespace from the source message
+  !> to the destination message
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !>
+  !> @param gribid_src     source message
+  !> @param gribid_dest    destination message
+  !> @param namespace      namespace to be copied
+  !> @param status         CODES_SUCCESS if OK, integer value on error
 subroutine codes_copy_namespace ( gribid_src, namespace, gribid_dest, status )
     integer(kind=kindOfInt),          intent(in)  :: gribid_src
     integer(kind=kindOfInt),          intent(in)  :: gribid_dest
     character(LEN=*),                 intent(in)  :: namespace
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
     call grib_copy_namespace ( gribid_src, namespace, gribid_dest, status )
-end subroutine codes_copy_namespace 
-
-!
+end subroutine codes_copy_namespace
+
+  !> Check the status returned by a subroutine.
+  !>
+  !> In case of error it stops the program, returns the error code to the shell
+  !> and prints the error message.\n
+  !>
+  !> @param status      the status to be checked
+  !> @param caller      name of the caller soubroutine
+  !> @param string      a string variable from the caller routine (e.g. key,filename)
 subroutine codes_check ( status,caller,string )
     integer(kind=kindOfInt), intent(in)  :: status
     character(len=*),        intent(in)  :: caller
@@ -638,198 +1191,358 @@ subroutine codes_check ( status,caller,string )
     call grib_check ( status,caller,string )
 end subroutine codes_check
 
-!
+  !> Get latitudes/longitudes/data values (real(4)).
+  !>
+  !> Latitudes, longitudes, data values arrays are returned.
+  !> They must be properly allocated by the caller and their required
+  !> dimension can be obtained with \ref codes_get_size or by getting (with \ref codes_get)
+  !> the value of the integer key "numberOfPoints".
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param gribid      id of the grib loaded in memory
+  !> @param lats        latitudes array with dimension "size"
+  !> @param lons        longitudes array with dimension "size"
+  !> @param values      data values array with dimension "size"
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_grib_get_data_real4 ( gribid, lats, lons, values, status )
     integer(kind=kindOfInt),                  intent(in)   :: gribid
     real ( kind = kindOfFloat ), dimension(:),intent(out)  :: lats, lons
     real ( kind = kindOfFloat ), dimension(:),intent(out)  :: values
     integer(kind=kindOfInt),optional, intent(out)          :: status
-    integer(kind=kindOfInt)                                :: iret
-    integer(kind=kindOfSize_t)                             :: npoints
 
     call grib_get_data_real4 ( gribid, lats, lons, values, status )
 end subroutine codes_grib_get_data_real4
 
-!
+  !> Get latitudes/longitudes/data values (real(8)).
+  !>
+  !> Latitudes, longitudes, data values arrays are returned.
+  !> They must be properly allocated by the calling program/function.
+  !> Their required dimension can be obtained by getting (with \ref codes_get)
+  !> the value of the integer key "numberOfPoints".
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param gribid      id of the grib loaded in memory
+  !> @param lats        latitudes array
+  !> @param lons        longitudes array
+  !> @param values      data values array
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_grib_get_data_real8 ( gribid, lats, lons, values, status )
     integer(kind=kindOfInt),                   intent(in)   :: gribid
     real ( kind = kindOfDouble ), dimension(:),intent(out)  :: lats, lons
     real ( kind = kindOfDouble ), dimension(:),intent(out)  :: values
     integer(kind=kindOfInt),optional, intent(out)           :: status
-    integer(kind=kindOfInt)                                 :: iret
-    integer(kind=kindOfSize_t)                              :: npoints
 
     call grib_get_data_real8 ( gribid, lats, lons, values, status )
 end subroutine codes_grib_get_data_real8
 
-!
-subroutine codes_keys_iterator_new ( gribid, iterid, namespace, status )
-    integer(kind=kindOfInt),          intent(in)   :: gribid
+  !> Create a new iterator on the keys.
+  !>
+  !> The keys iterator can be navigated to give all the key names which
+  !> can then be used to get or set the key values with \ref codes_get or
+  !> \ref codes_set.
+  !> The set of keys returned can be controlled with the input variable
+  !> namespace or using the functions
+  !> \ref codes_skip_read_only, \ref codes_skip_duplicates,
+  !> \ref codes_skip_coded,\ref codes_skip_computed.
+  !> If namespace is a non-empty string only the keys belonging to
+  !> that namespace are returned. Example namespaces are "ls" (to get the same
+  !> default keys as the grib_ls) and "mars" to get the keys used by mars.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param iterid      keys iterator id to be used in the keys iterator functions
+  !> @param namespace   the namespace of the keys to search for (all the keys if empty)
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_keys_iterator_new ( msgid, iterid, namespace, status )
+    integer(kind=kindOfInt),          intent(in)     :: msgid
     integer(kind=kindOfInt),          intent(inout)  :: iterid
-    character(LEN=*), intent(in)                   :: namespace
-    integer(kind=kindOfInt),optional, intent(out)  :: status
-    integer(kind=kindOfInt)                        :: iret
+    character(LEN=*), intent(in)                     :: namespace
+    integer(kind=kindOfInt),optional, intent(out)    :: status
 
-    call grib_keys_iterator_new ( gribid, iterid, namespace, status )
-end subroutine codes_keys_iterator_new 
+    call grib_keys_iterator_new ( msgid, iterid, namespace, status )
+end subroutine codes_keys_iterator_new
 
-!
+  !> Advance to the next keys iterator value.
+  !>
+  !> @param iterid   keys iterator id created with @ref codes_keys_iterator_new
+  !> @param status   CODES_SUCCESS if next iterator exists, integer value if no more elements to iterate on
 subroutine codes_keys_iterator_next ( iterid , status)
     integer(kind=kindOfInt),          intent(in)  :: iterid
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
     call grib_keys_iterator_next ( iterid , status)
-end subroutine codes_keys_iterator_next 
-
-!
+end subroutine codes_keys_iterator_next
+
+  !> Delete a keys iterator and free memory.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param iterid      keys iterator id created with @ref codes_keys_iterator_new
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_keys_iterator_delete ( iterid , status)
     integer(kind=kindOfInt),          intent(in)  :: iterid
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
     call grib_keys_iterator_delete ( iterid , status)
-end subroutine codes_keys_iterator_delete 
-
-!
+end subroutine codes_keys_iterator_delete
+
+  !> Get the name of a key from a keys iterator.
+  !>
+  !> If the status parameter (optional) is not given the program will exit with an error message\n
+  !> otherwise the error message can be gathered with @ref codes_get_error_string.\n
+  !>
+  !> @param iterid      keys iterator id created with @ref codes_keys_iterator_new
+  !> @param name        key name to be retrieved
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_keys_iterator_get_name ( iterid, name, status )
     integer(kind=kindOfInt),          intent(in)    :: iterid
     character(LEN=*), intent(out)                   :: name
     integer(kind=kindOfInt),optional, intent(out)   :: status
-    integer(kind=kindOfInt)                         :: iret
 
     call grib_keys_iterator_get_name ( iterid, name, status )
-end subroutine codes_keys_iterator_get_name 
-
-!
+end subroutine codes_keys_iterator_get_name
+
+  !> Rewind a keys iterator.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param iterid      keys iterator id created with @ref codes_keys_iterator_new
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_keys_iterator_rewind ( iterid, status )
     integer(kind=kindOfInt),          intent(in)    :: iterid
     integer(kind=kindOfInt),optional, intent(out)   :: status
-    integer(kind=kindOfInt)                         :: iret
 
     call grib_keys_iterator_rewind ( iterid, status )
 end subroutine codes_keys_iterator_rewind
 
-!
-subroutine codes_dump ( gribid , status)
-    integer(kind=kindOfInt),          intent(in)  :: gribid
+  !> Dump the content of a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid      id of the message loaded in memory
+  !> @param status     CODES_SUCCESS if OK, integer value on error
+subroutine codes_dump ( msgid , status)
+    integer(kind=kindOfInt),          intent(in)  :: msgid
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
-    call grib_dump ( gribid , status)
+    call grib_dump (msgid, status)
 end subroutine codes_dump
 
-!
+!> Get the error message given an error code
+!>
+!> @param error          error code
+!> @param error_message  error message
+!> @param status         CODES_SUCCESS if OK, integer value on error
 subroutine codes_get_error_string ( error, error_message, status )
     integer(kind=kindOfInt),          intent(in)  :: error
     character(len=*), intent(out)                 :: error_message
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
     call grib_get_error_string ( error, error_message, status )
 end subroutine codes_get_error_string
 
-!
-subroutine codes_get_size_int ( gribid, key, size , status)
-    integer(kind=kindOfInt),          intent(in)  :: gribid
+  !> Get the size of an array key.
+  !>
+  !> To get the size of a key representing an array.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param key         name of the key
+  !> @param size        size of the array key
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_size_int ( msgid, key, size , status)
+    integer(kind=kindOfInt),          intent(in)  :: msgid
     character(len=*), intent(in)                  :: key
     integer(kind=kindOfInt),          intent(out) :: size
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
-    call grib_get_size_int ( gribid, key, size , status)
+    call grib_get_size_int ( msgid, key, size , status)
 end subroutine codes_get_size_int
 
-!
-subroutine codes_get_size_long ( gribid, key, size , status)
-    integer(kind=kindOfInt),          intent(in)  :: gribid
+  !> Get the size of an array key.
+  !>
+  !> To get the size of a key representing an array.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param key         name of the key
+  !> @param size        size of the array key
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_size_long ( msgid, key, size , status)
+    integer(kind=kindOfInt),          intent(in)  :: msgid
     character(len=*), intent(in)                  :: key
     integer(kind=kindOfLong),          intent(out) :: size
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
-    call grib_get_size_long ( gribid, key, size , status)
+    call grib_get_size_long ( msgid, key, size , status)
 end subroutine codes_get_size_long
 
-!
-subroutine codes_get_int(gribid,key,value,status)
-    integer(kind=kindOfInt),          intent(in)  :: gribid
+  !> Get the integer value of a key from a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid      id of the message loaded in memory
+  !> @param key         key name
+  !> @param value       the integer(4) value
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_int(msgid,key,value,status)
+    integer(kind=kindOfInt),          intent(in)  :: msgid
     character(len=*), intent(in)                  :: key
     integer(kind = kindOfInt),     intent(out)    :: value
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
-    call grib_get_int(gribid,key,value,status)
+    call grib_get_int(msgid,key,value,status)
 end subroutine codes_get_int
 
-!
-subroutine codes_get_long(gribid,key,value,status)
-    integer(kind=kindOfInt),          intent(in)  :: gribid
+  !> Get the integer value of a key from a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param key         key name
+  !> @param value       the integer(4) value
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_long(msgid,key,value,status)
+    integer(kind=kindOfInt),          intent(in)  :: msgid
     character(len=*), intent(in)                  :: key
     integer(kind = kindOfLong),     intent(out)    :: value
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
-    call grib_get_long(gribid,key,value,status)
+    call grib_get_long(msgid,key,value,status)
 end subroutine codes_get_long
 
-!
-subroutine codes_is_missing(gribid,key,is_missing,status)
-    integer(kind=kindOfInt),          intent(in)  :: gribid
+  !> Check if the value of a key is MISSING.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param key         key name
+  !> @param is_missing  0->not missing, 1->missing
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_is_missing(msgid,key,is_missing,status)
+    integer(kind=kindOfInt),          intent(in)  :: msgid
     character(len=*), intent(in)                  :: key
     integer(kind = kindOfInt),     intent(out)    :: is_missing
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
-    call grib_is_missing(gribid,key,is_missing,status)
+    call grib_is_missing(msgid,key,is_missing,status)
 end subroutine codes_is_missing
 
-!
-subroutine codes_is_defined(gribid,key,is_defined,status)
-    integer(kind=kindOfInt),          intent(in)  :: gribid
+  !> Check if a key is defined (exists in the message)
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param key         key name
+  !> @param is_defined  0->not defined, 1->defined
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_is_defined(msgid,key,is_defined,status)
+    integer(kind=kindOfInt),          intent(in)  :: msgid
     character(len=*), intent(in)                  :: key
     integer(kind = kindOfInt),     intent(out)    :: is_defined
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
-    call grib_is_defined(gribid,key,is_defined,status)
+    call grib_is_defined(msgid,key,is_defined,status)
 end subroutine codes_is_defined
 
-!
-subroutine codes_get_real4 ( gribid, key, value, status )
-    integer(kind=kindOfInt),          intent(in)             :: gribid
+  !> Get the real(4) value of a key from a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param key         key name
+  !> @param value       the real(4) value
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_real4 ( msgid, key, value, status )
+    integer(kind=kindOfInt),          intent(in)             :: msgid
     character(len=*),                 intent(in)             :: key
     real(kind = kindOfFloat),         intent(out)            :: value
     integer(kind=kindOfInt),optional, intent(out)            :: status
-    integer(kind=kindOfInt)                                  :: iret
 
-    call grib_get_real4 ( gribid, key, value, status )
+    call grib_get_real4 ( msgid, key, value, status )
 end subroutine codes_get_real4
 
-!
-subroutine codes_get_real8 ( gribid, key, value , status)
-    integer(kind=kindOfInt),          intent(in)      :: gribid
+  !> Get the real(8) value of a key from a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param key         key name
+  !> @param value       the real(8) value
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_real8 ( msgid, key, value , status)
+    integer(kind=kindOfInt),          intent(in)      :: msgid
     character(len=*),                 intent(in)      :: key
     real(kind = kindOfDouble),        intent(out)     :: value
     integer(kind=kindOfInt),optional, intent(out)     :: status
-    integer(kind=kindOfInt)                           :: iret
 
-    call grib_get_real8 ( gribid, key, value , status)
+    call grib_get_real8 ( msgid, key, value , status)
 end subroutine codes_get_real8
 
-!
-subroutine codes_get_string ( gribid, key, value, status )
-    integer(kind=kindOfInt),          intent(in)  :: gribid
+  !> Get the character value of a key from a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param key         key name
+  !> @param value       the real(8) value
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_string ( msgid, key, value, status )
+    integer(kind=kindOfInt),          intent(in)  :: msgid
     character(len=*),                 intent(in)  :: key
     character(len=*),                 intent(out) :: value
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
-    call grib_get_string ( gribid, key, value, status )
+    call grib_get_string ( msgid, key, value, status )
 end subroutine codes_get_string
 
-subroutine codes_get_string_array ( gribid, key, value, status )
-    integer(kind=kindOfInt),               intent(in)        :: gribid
+  !> Get the string array of values for a key from a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.\n
+  !> Note: This function supports the \b allocatable array attribute
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param key         key name
+  !> @param value       string array value
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_string_array ( msgid, key, value, status )
+    integer(kind=kindOfInt),               intent(in)        :: msgid
     character(len=*),      intent(in)                        :: key
     character(len=*), dimension(:),allocatable,intent(inout) :: value
     integer(kind=kindOfInt),optional, intent(out)            :: status
@@ -838,37 +1551,91 @@ subroutine codes_get_string_array ( gribid, key, value, status )
     integer(kind=kindOfInt)                            :: iret
     integer(kind=kindOfInt)                            :: nb_values
     integer(kind=kindOfInt)                            :: slen
-    integer(kind=kindOfInt)                            :: i,s,j
 
     if (allocated(value) .eqv. .false.) then
       iret=CODES_NULL_POINTER
       if (present(status)) then
         status = iret
       else
-        call grib_check(iret,'grib_get',key)
+        call grib_check(iret,'get',key)
       endif
     end if
 
     nb_values=size(value)
     slen=len(value(0))
-    iret=grib_f_get_string_array ( gribid, key, cvalue , nb_values, slen )
+    iret=grib_f_get_string_array ( msgid, key, cvalue , nb_values, slen )
     value=transfer(cvalue,value)
 
     if (iret /= 0) then
-      call grib_f_write_on_fail(gribid)
+      call grib_f_write_on_fail(msgid)
     endif
     if (present(status)) then
       status = iret
     else
-      call grib_check(iret,'grib_get',key)
+      call grib_check(iret,'get',key)
     endif
 
 end subroutine codes_get_string_array 
 
-! Note: This function supports the allocatable array attribute
-! -------------------------------------------------------------
-subroutine codes_get_int_array ( gribid, key, value, status )
-    integer(kind=kindOfInt),               intent(in)  :: gribid
+  !> Set the string values for an array key in a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid      id of the message loaded in memory
+  !> @param key        key name
+  !> @param value      string array value
+  !> @param status     CODES_SUCCESS if OK, integer value on error
+subroutine codes_set_string_array ( msgid, key, value, status )
+    integer(kind=kindOfInt),                     intent(in)   :: msgid
+    character(len=*),                            intent(in)   :: key
+    character(len=*), dimension(:),allocatable,  intent(in)   :: value
+    integer(kind=kindOfInt),optional,            intent(out)  :: status
+
+    character                 :: cvalue(size(value)*len(value(0)))
+    character                 :: svalue(len(value(0)))
+    integer(kind=kindOfInt)   :: iret
+    integer(kind=kindOfInt)   :: nb_values
+    integer(kind=kindOfInt)   :: slen
+    integer(kind=kindOfInt)   :: i,j
+
+    nb_values=size(value)
+    slen=len(value(0))
+    j=1
+    do i=1,nb_values
+      !cvalue(j:j+slen-1)=transfer(trim(value(i)),svalue)
+      cvalue(j:j+slen-1)=transfer(value(i),svalue)
+      j=j+slen
+    enddo
+
+    iret=grib_f_set_string_array ( msgid, key, cvalue , nb_values, slen )
+
+    if (iret /= 0) then
+      call grib_f_write_on_fail(msgid)
+    endif
+    if (present(status)) then
+      status = iret
+    else
+      call grib_check(iret,'set',key)
+    endif
+
+end subroutine codes_set_string_array 
+
+
+  !> Get the integer array of values for a key from a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.\n
+  !> Note: This function supports the \b allocatable array attribute
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param key         key name
+  !> @param value       integer(4) array value
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_int_array ( msgid, key, value, status )
+    integer(kind=kindOfInt),               intent(in)  :: msgid
     character(len=*),      intent(in)                  :: key
     integer(kind=kindOfInt), dimension(:),allocatable,intent(inout) :: value
     integer(kind=kindOfInt),optional, intent(out)      :: status
@@ -878,13 +1645,13 @@ subroutine codes_get_int_array ( gribid, key, value, status )
     integer(kind=kindOfInt)                            :: size_value
     integer(kind=kindOfInt)                            :: i
 
-    iret=grib_f_get_size_int(gribid,key,nb_values)
+    iret=grib_f_get_size_int(msgid,key,nb_values)
     if (iret /= 0) then
-      call grib_f_write_on_fail(gribid)
+      call grib_f_write_on_fail(msgid)
       if (present(status)) then
         status = iret
       else
-        call grib_check(iret,'grib_get',key)
+        call grib_check(iret,'get',key)
       endif
       return
     endif
@@ -892,29 +1659,37 @@ subroutine codes_get_int_array ( gribid, key, value, status )
       allocate(value(nb_values))
     end if
     size_value=size(value)
-    iret=grib_f_get_int_array ( gribid, key, value , nb_values )
+    iret=grib_f_get_int_array ( msgid, key, value , nb_values )
     if (iret==0 .and. nb_values==1 .and. size_value/=1) then
       do i=2,size_value
         value(i)=value(1)
       enddo
     endif
   if (iret /= 0) then
-    call grib_f_write_on_fail(gribid)
+    call grib_f_write_on_fail(msgid)
   endif
     if (present(status)) then
       status = iret
     else
-      call grib_check(iret,'grib_get',key)
+      call grib_check(iret,'get',key)
     endif
 
 end subroutine codes_get_int_array 
 
-
-! Note: This function supports the allocatable array attribute
-! -------------------------------------------------------------
-subroutine codes_get_long_array ( gribid, key, value, status )
-    integer(kind=kindOfInt),               intent(in)  :: gribid
-    character(len=*),      intent(in)  :: key
+  !> Get the integer array of values for a key from a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.\n
+  !> Note: This function supports the \b allocatable array attribute
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param key         key name
+  !> @param value       integer(4) array value
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_long_array ( msgid, key, value, status )
+    integer(kind=kindOfInt),               intent(in)  :: msgid
+    character(len=*),      intent(in)                  :: key
     integer(kind=kindOfLong), dimension(:),allocatable,intent(inout) :: value
     integer(kind=kindOfInt),optional, intent(out)      :: status
     integer(kind=kindOfInt)                            :: iret
@@ -923,13 +1698,13 @@ subroutine codes_get_long_array ( gribid, key, value, status )
     integer(kind=kindOfInt)                            :: size_value
     integer(kind=kindOfInt)                            :: i
 
-    iret=grib_f_get_size_int(gribid,key,nb_values)
+    iret=grib_f_get_size_int(msgid,key,nb_values)
     if (iret /= 0) then
-      call grib_f_write_on_fail(gribid)
+      call grib_f_write_on_fail(msgid)
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_get',key)
+         call grib_check(iret,'get',key)
       endif
       return
     endif
@@ -937,40 +1712,57 @@ subroutine codes_get_long_array ( gribid, key, value, status )
       allocate(value(nb_values))
     end if
     size_value=size(value)
-    iret=grib_f_get_long_array ( gribid, key, value , nb_values )
+    iret=grib_f_get_long_array ( msgid, key, value , nb_values )
     if (iret==0 .and. nb_values==1 .and. size_value/=1) then
       do i=2,size_value
         value(i)=value(1)
       enddo
     endif
     if (iret /= 0) then
-	  call grib_f_write_on_fail(gribid)
-	endif
+      call grib_f_write_on_fail(msgid)
+    endif
     if (present(status)) then
       status = iret
     else
-      call grib_check(iret,'grib_get',key)
+      call grib_check(iret,'get',key)
     endif
 
 end subroutine codes_get_long_array 
 
-!
-subroutine codes_get_byte_array ( gribid, key, value, length, status )
-    integer(kind=kindOfInt),               intent(in)  :: gribid
-    character(len=*),                      intent(in)  :: key
+  !> Get the array of bytes (character) for a key from a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param key         key name
+  !> @param value       character(len=1) array of byte values
+  !> @param length      (optional) output: number of values retrieved
+  !> @param status      (optional) CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_byte_array ( msgid, key, value, length, status )
+    integer(kind=kindOfInt),               intent(in)    :: msgid
+    character(len=*),                      intent(in)    :: key
     character(len=1),        dimension(:), intent(inout) :: value
-    integer(kind=kindOfInt), optional,     intent(out) :: length
-    integer(kind=kindOfInt), optional,     intent(out) :: status
-    integer(kind=kindOfInt)                            :: iret
-    integer(kind=kindOfInt)                            :: nb_values
+    integer(kind=kindOfInt), optional,     intent(out)   :: length
+    integer(kind=kindOfInt), optional,     intent(out)   :: status
 
-    call grib_get_byte_array ( gribid, key, value, length, status )
+    call grib_get_byte_array ( msgid, key, value, length, status )
 end subroutine codes_get_byte_array 
 
-! Note: This function supports the allocatable array attribute
-! -------------------------------------------------------------
-subroutine codes_get_real4_array ( gribid, key, value, status)
-    integer(kind=kindOfInt),                 intent(in)  :: gribid
+  !> Get the real(4) array of values for a key from a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.\n
+  !> Note: This function supports the \b allocatable array attribute
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param key         key name
+  !> @param value       real(4) array value
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_real4_array ( msgid, key, value, status)
+    integer(kind=kindOfInt),                 intent(in)  :: msgid
     character(len=*),                        intent(in)  :: key
     real(kind = kindOfFloat), dimension(:),allocatable, intent(inout) :: value
     integer(kind=kindOfInt),optional,        intent(out) :: status
@@ -980,13 +1772,13 @@ subroutine codes_get_real4_array ( gribid, key, value, status)
     integer(kind=kindOfInt)                              :: size_value
     integer(kind=kindOfInt)                              :: i
 
-    iret=grib_f_get_size_int(gribid,key,nb_values)
+    iret=grib_f_get_size_int(msgid,key,nb_values)
     if (iret /= 0) then
-      call grib_f_write_on_fail(gribid)
+      call grib_f_write_on_fail(msgid)
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_get',key)
+         call grib_check(iret,'get',key)
       endif
       return
     endif
@@ -994,26 +1786,35 @@ subroutine codes_get_real4_array ( gribid, key, value, status)
       allocate(value(nb_values))
     end if
     size_value=size(value)
-    iret=grib_f_get_real4_array ( gribid, key, value , nb_values )
+    iret=grib_f_get_real4_array ( msgid, key, value , nb_values )
     if (iret==0 .and. nb_values==1 .and. size_value/=1) then
       do i=2,size_value
         value(i)=value(1)
       enddo
     endif
-	if (iret /= 0) then
-	  call grib_f_write_on_fail(gribid)
-	endif
+    if (iret /= 0) then
+      call grib_f_write_on_fail(msgid)
+    endif
     if (present(status)) then
        status = iret
     else
-       call grib_check(iret,'grib_get',key)
+       call grib_check(iret,'get',key)
     endif
 end subroutine codes_get_real4_array
 
-! Note: This function supports the allocatable array attribute
-! -------------------------------------------------------------
-subroutine codes_get_real8_array ( gribid, key, value, status )
-    integer(kind=kindOfInt),                   intent(in)  :: gribid
+  !> Get the real(8) array of values for a key from a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.\n
+  !> Note: This function supports the \b allocatable array attribute
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param key         key name
+  !> @param value       real(8) array value
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_real8_array ( msgid, key, value, status )
+    integer(kind=kindOfInt),                   intent(in)  :: msgid
     character(len=*),                          intent(in)  :: key
     real(kind = kindOfDouble), dimension(:),allocatable, intent(inout) :: value
     integer(kind=kindOfInt),optional,          intent(out) :: status
@@ -1023,13 +1824,13 @@ subroutine codes_get_real8_array ( gribid, key, value, status )
     integer(kind=kindOfInt)                                :: size_value
     integer(kind=kindOfInt)                                :: i
 
-    iret=grib_f_get_size_int(gribid,key,nb_values)
+    iret=grib_f_get_size_int(msgid,key,nb_values)
     if (iret /= 0) then
-      call grib_f_write_on_fail(gribid)
+      call grib_f_write_on_fail(msgid)
       if (present(status)) then
         status = iret
       else
-        call grib_check(iret,'grib_get',key)
+        call grib_check(iret,'get',key)
       endif
       return
     endif
@@ -1037,276 +1838,470 @@ subroutine codes_get_real8_array ( gribid, key, value, status )
       allocate(value(nb_values))
     end if
     size_value=size(value)
-    iret=grib_f_get_real8_array ( gribid, key, value, nb_values )
+    iret=grib_f_get_real8_array ( msgid, key, value, nb_values )
     if (iret==0 .and. nb_values==1 .and. size_value/=1) then
       do i=2,size_value
         value(i)=value(1)
       enddo
     endif
     if (iret /= 0) then
-      call grib_f_write_on_fail(gribid)
+      call grib_f_write_on_fail(msgid)
     endif
     if (present(status)) then
       status = iret
     else
-      call grib_check(iret,'grib_get',key)
+      call grib_check(iret,'get',key)
     endif
 end subroutine codes_get_real8_array 
 
-!
-subroutine codes_get_real4_element ( gribid, key, index,value, status )
-    integer(kind=kindOfInt),                     intent(in)  :: gribid
+
+  !> Get a real(4) value of specified index from an array key.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid   id of the grib loaded in memory
+  !> @param key     key name
+  !> @param index   integer(4) index
+  !> @param value   real(4) value
+  !> @param status  CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_real4_element ( msgid, key, index,value, status )
+    integer(kind=kindOfInt),                     intent(in)  :: msgid
     character(len=*),                            intent(in)  :: key
-    integer(kind=kindOfInt),                       intent(in)  :: index
+    integer(kind=kindOfInt),                     intent(in)  :: index
     real(kind = kindOfFloat),                    intent(out) :: value
     integer(kind=kindOfInt),optional,            intent(out) :: status
-    integer(kind=kindOfInt)                                  :: iret
 
-    call grib_get_real4_element ( gribid, key, index,value, status )
+    call grib_get_real4_element ( msgid, key, index,value, status )
 end subroutine codes_get_real4_element 
 
-!
-subroutine codes_get_real8_element ( gribid, key, index,value, status )
-    integer(kind=kindOfInt),                     intent(in)  :: gribid
+
+  !> Get a real(8) value of specified index from an array key.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid      id of the grib loaded in memory
+  !> @param key        key name
+  !> @param index      integer(4) index
+  !> @param value      real(8) value
+  !> @param status     CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_real8_element ( msgid, key, index,value, status )
+    integer(kind=kindOfInt),                     intent(in)  :: msgid
     character(len=*),                            intent(in)  :: key
-    integer(kind=kindOfInt),                  intent(in)  :: index
+    integer(kind=kindOfInt),                     intent(in)  :: index
     real(kind = kindOfDouble),                   intent(out) :: value
     integer(kind=kindOfInt),optional,            intent(out) :: status
-    integer(kind=kindOfInt)                                  :: iret
 
-    call grib_get_real8_element ( gribid, key, index,value, status )
+    call grib_get_real8_element ( msgid, key, index,value, status )
 end subroutine codes_get_real8_element
 
-!
-subroutine codes_get_real4_elements ( gribid, key, index,value, status )
-    integer(kind=kindOfInt),                  intent(in)  :: gribid
+
+  !> Get the real(4) values whose indexes are stored in the array "index" from an array key.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid      id of the grib loaded in memory
+  !> @param key        key name
+  !> @param index      integer(4) array indexes
+  !> @param value      real(4) array value
+  !> @param status     CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_real4_elements ( msgid, key, index,value, status )
+    integer(kind=kindOfInt),                  intent(in)  :: msgid
     character(len=*),                         intent(in)  :: key
-    integer(kind=kindOfInt),dimension(:),  intent(in)  :: index
+    integer(kind=kindOfInt),dimension(:),  intent(in)     :: index
     real(kind = kindOfFloat), dimension(:),   intent(out) :: value
     integer(kind=kindOfInt),optional,         intent(out) :: status
-    integer(kind=kindOfInt)                               :: iret
-    integer(kind=kindOfInt)                               ::npoints
 
-    call grib_get_real4_elements ( gribid, key, index,value, status )
+    call grib_get_real4_elements ( msgid, key, index,value, status )
 end subroutine codes_get_real4_elements 
 
-!
-subroutine codes_get_real8_elements ( gribid, key, index,value, status )
-    integer(kind=kindOfInt),                   intent(in)  :: gribid
+  !> Get the real(8) values whose indexes are stored in the array "index" from an array key.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid      id of the grib loaded in memory
+  !> @param key        key name
+  !> @param index      integer(4) array index
+  !> @param value      real(8) array value
+  !> @param status     CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_real8_elements ( msgid, key, index,value, status )
+    integer(kind=kindOfInt),                   intent(in)  :: msgid
     character(len=*),                          intent(in)  :: key
-    integer(kind=kindOfInt),dimension(:),   intent(in)  :: index
+    integer(kind=kindOfInt),dimension(:),   intent(in)     :: index
     real(kind = kindOfDouble), dimension(:),   intent(out) :: value
     integer(kind=kindOfInt),optional,          intent(out) :: status
-    integer(kind=kindOfInt)                                :: iret
-    integer(kind=kindOfInt)                                :: npoints
 
-    call grib_get_real8_elements ( gribid, key, index,value, status )
+    call grib_get_real8_elements ( msgid, key, index,value, status )
 end subroutine codes_get_real8_elements 
 
-!
-subroutine codes_set_int ( gribid, key, value, status )
-    integer(kind=kindOfInt),          intent(in)  :: gribid
+  !> Set the integer value for a key in a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param key         key name
+  !> @param value       integer(4) value
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_set_int ( msgid, key, value, status )
+    integer(kind=kindOfInt),          intent(in)  :: msgid
     character(len=*), intent(in)                  :: key
     integer(kind=kindOfInt),          intent(in)  :: value
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
-    call grib_set_int ( gribid, key, value, status )
+    call grib_set_int ( msgid, key, value, status )
 end subroutine codes_set_int
 
-!
-subroutine codes_set_long ( gribid, key, value, status )
-    integer(kind=kindOfInt),          intent(in)  :: gribid
+
+  !> Set the integer value for a key in a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param key         key name
+  !> @param value       integer(4) value
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_set_long ( msgid, key, value, status )
+    integer(kind=kindOfInt),          intent(in)  :: msgid
     character(len=*), intent(in)                  :: key
     integer(kind=kindOfLong),         intent(in)  :: value
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)                       :: iret
 
-    call grib_set_long ( gribid, key, value, status )
+    call grib_set_long ( msgid, key, value, status )
 end subroutine codes_set_long
 
-!
-subroutine codes_set_real4 ( gribid, key, value, status )
-    integer(kind=kindOfInt),                 intent(in)  :: gribid
+
+  !> Set the real(4) value for a key in a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid    id of the message loaded in memory
+  !> @param key      key name
+  !> @param value    real(4) value
+  !> @param status   CODES_SUCCESS if OK, integer value on error
+subroutine codes_set_real4 ( msgid, key, value, status )
+    integer(kind=kindOfInt),                 intent(in)  :: msgid
     character(len=*),                        intent(in)  :: key
     real(kind = kindOfFloat),                intent(in)  :: value
     integer(kind=kindOfInt),optional,        intent(out) :: status
-    integer(kind=kindOfInt)                              :: iret
 
-    call grib_set_real4 ( gribid, key, value, status )
+    call grib_set_real4 ( msgid, key, value, status )
 end subroutine codes_set_real4 
 
-!
-subroutine codes_set_real8 ( gribid, key, value, status )
-    integer(kind=kindOfInt),                  intent(in)  :: gribid
+  !> Set the real(8) value for a key in a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid      id of the message loaded in memory
+  !> @param key        key name
+  !> @param value      real(8) value
+  !> @param status     CODES_SUCCESS if OK, integer value on error
+subroutine codes_set_real8 ( msgid, key, value, status )
+    integer(kind=kindOfInt),                  intent(in)  :: msgid
     character(len=*),                         intent(in)  :: key
     real(kind = kindOfDouble),                intent(in)  :: value
     integer(kind=kindOfInt),optional,         intent(out) :: status
-    integer(kind=kindOfInt)                               :: iret
 
-    call grib_set_real8 ( gribid, key, value, status )
+    call grib_set_real8 ( msgid, key, value, status )
 end subroutine codes_set_real8 
 
-!
-subroutine codes_set_int_array ( gribid, key, value, status)
-    integer(kind=kindOfInt),                intent(in)  :: gribid
+
+  !> Set the integers values for an array key in a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid      id of the message loaded in memory
+  !> @param key        key name
+  !> @param value      integer(4) array value
+  !> @param status     CODES_SUCCESS if OK, integer value on error
+subroutine codes_set_int_array ( msgid, key, value, status)
+    integer(kind=kindOfInt),                intent(in)  :: msgid
     character(len=*),                       intent(in)  :: key
     integer(kind=kindOfInt), dimension(:),  intent(in)  :: value
     integer(kind=kindOfInt),optional,       intent(out) :: status
-    integer(kind=kindOfInt)                             :: iret
-    integer(kind=kindOfInt)                             :: nb_values
 
-    call grib_set_int_array ( gribid, key, value, status)
+    call grib_set_int_array ( msgid, key, value, status)
 end subroutine codes_set_int_array
 
-!
-subroutine codes_set_long_array ( gribid, key, value, status)
-    integer(kind=kindOfInt),                intent(in)  :: gribid
+  !> Set the integers values for an array key in a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid      id of the message loaded in memory
+  !> @param key        key name
+  !> @param value      integer(4) array value
+  !> @param status     CODES_SUCCESS if OK, integer value on error
+subroutine codes_set_long_array ( msgid, key, value, status)
+    integer(kind=kindOfInt),                intent(in)  :: msgid
     character(len=*),                       intent(in)  :: key
     integer(kind=kindOfLong), dimension(:),  intent(in)  :: value
     integer(kind=kindOfInt),optional,       intent(out) :: status
-    integer(kind=kindOfInt)                             :: iret
-    integer(kind=kindOfInt)                             :: nb_values
 
-    call grib_set_long_array ( gribid, key, value, status)
+    call grib_set_long_array ( msgid, key, value, status)
 end subroutine codes_set_long_array
 
-!
-subroutine codes_set_byte_array ( gribid, key, value, length, status )
-    integer(kind=kindOfInt),               intent(in)  :: gribid
+  !> Set the array of bytes (character) for a key in a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid       id of the message loaded in memory
+  !> @param key         key name
+  !> @param value       character(len=1) array of byte values
+  !> @param length      (optional) output: number of values written
+  !> @param status      (optional) CODES_SUCCESS if OK, integer value on error
+subroutine codes_set_byte_array ( msgid, key, value, length, status )
+    integer(kind=kindOfInt),               intent(in)  :: msgid
     character(len=*),                      intent(in)  :: key
     character(len=1),        dimension(:), intent(in)  :: value
     integer(kind=kindOfInt), optional,     intent(out) :: length
     integer(kind=kindOfInt), optional,     intent(out) :: status
-    integer(kind=kindOfInt)                            :: iret
-    integer(kind=kindOfInt)                            :: nb_values
 
-    call grib_set_byte_array ( gribid, key, value, length, status )
+    call grib_set_byte_array ( msgid, key, value, length, status )
 end subroutine codes_set_byte_array 
 
-!
-subroutine codes_set_real4_array ( gribid, key, value, status )
-    integer(kind=kindOfInt),                 intent(in)  :: gribid
+  !> Set the real(4) values for an array key in a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid      id of the message loaded in memory
+  !> @param key        key name
+  !> @param value      real(4) array value
+  !> @param status     CODES_SUCCESS if OK, integer value on error
+subroutine codes_set_real4_array ( msgid, key, value, status )
+    integer(kind=kindOfInt),                 intent(in)  :: msgid
     character(len=*),                        intent(in)  :: key
     real(kind = kindOfFloat), dimension(:),  intent(in)  :: value
     integer(kind=kindOfInt),optional,        intent(out) :: status
-    integer(kind=kindOfInt)                              :: iret
-    integer(kind=kindOfInt)                              :: nb_values
 
-    call grib_set_real4_array ( gribid, key, value, status )
+    call grib_set_real4_array ( msgid, key, value, status )
 end subroutine codes_set_real4_array 
 
-!
-subroutine codes_set_real8_array ( gribid, key, value, status)
-    integer(kind=kindOfInt),                  intent(in)  :: gribid
+  !> Set the real(8) values for an array key in a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid      id of the message loaded in memory
+  !> @param key        key name
+  !> @param value      real(8) array value
+  !> @param status     CODES_SUCCESS if OK, integer value on error
+subroutine codes_set_real8_array ( msgid, key, value, status)
+    integer(kind=kindOfInt),                  intent(in)  :: msgid
     character(len=*),                         intent(in)  :: key
     real(kind = kindOfDouble), dimension(:),  intent(in)  :: value
     integer(kind=kindOfInt),optional,         intent(out) :: status
-    integer(kind=kindOfInt)                               :: iret
-    integer(kind=kindOfInt)                               :: nb_values
 
-    call grib_set_real8_array ( gribid, key, value, status)
+    call grib_set_real8_array ( msgid, key, value, status)
 end subroutine codes_set_real8_array
 
-!
-subroutine codes_set_force_real4_array ( gribid, key, value, status )
-    integer(kind=kindOfInt),                 intent(in)  :: gribid
+  !> @cond
+  !> Set the real(4) values for an array key in a grib message, forces the set if the key is read-only.
+  !> Use with great caution!!
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid      id of the grib loaded in memory
+  !> @param key        key name
+  !> @param value      real(4) array value
+  !> @param status     CODES_SUCCESS if OK, integer value on error
+subroutine codes_set_force_real4_array ( msgid, key, value, status )
+    integer(kind=kindOfInt),                 intent(in)  :: msgid
     character(len=*),                        intent(in)  :: key
     real(kind = kindOfFloat), dimension(:),  intent(in)  :: value
     integer(kind=kindOfInt),optional,        intent(out) :: status
-    integer(kind=kindOfInt)                              :: iret
-    integer(kind=kindOfInt)                              :: nb_values
 
-    call grib_set_force_real4_array ( gribid, key, value, status )
+    call grib_set_force_real4_array ( msgid, key, value, status )
 end subroutine codes_set_force_real4_array
 
-!
-subroutine codes_set_force_real8_array ( gribid, key, value, status)
-    integer(kind=kindOfInt),                  intent(in)  :: gribid
+  !> Set the real(8) values for an array key in a grib message, forces the set if the key is read-only.
+  !> Use with great caution!!
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid      id of the grib loaded in memory
+  !> @param key        key name
+  !> @param value      real(8) array value
+  !> @param status     CODES_SUCCESS if OK, integer value on error
+subroutine codes_set_force_real8_array ( msgid, key, value, status)
+    integer(kind=kindOfInt),                  intent(in)  :: msgid
     character(len=*),                         intent(in)  :: key
     real(kind = kindOfDouble), dimension(:),  intent(in)  :: value
     integer(kind=kindOfInt),optional,         intent(out) :: status
-    integer(kind=kindOfInt)                               :: iret
-    integer(kind=kindOfInt)                               :: nb_values
 
-    call grib_set_force_real8_array ( gribid, key, value, status)
+    call grib_set_force_real8_array ( msgid, key, value, status)
 end subroutine codes_set_force_real8_array
-
-!
-subroutine codes_set_string  ( gribid, key, value , status)
-    integer(kind=kindOfInt),                      intent(in)  :: gribid
+  !> @endcond
+
+  !> Set the character value for a string key in a message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid      id of the message loaded in memory
+  !> @param key        key name
+  !> @param value      character value
+  !> @param status     CODES_SUCCESS if OK, integer value on error
+subroutine codes_set_string  ( msgid, key, value , status)
+    integer(kind=kindOfInt),                      intent(in)  :: msgid
     character(len=*),                             intent(in)  :: key
     character(len=*),                             intent(in)  :: value
     integer(kind=kindOfInt),optional,             intent(out) :: status
-    integer(kind=kindOfInt)                                   :: iret
 
-    call grib_set_string  ( gribid, key, value , status)
+    call grib_set_string  ( msgid, key, value , status)
 end subroutine codes_set_string
 
-!
-subroutine codes_get_message_size_int  ( gribid, nbytes, status)
-    integer(kind=kindOfInt),                      intent(in)  :: gribid
+  !> Get the size of a coded message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid       id of the grib loaded in memory
+  !> @param nbytes      size in bytes of the message
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_message_size_int  ( msgid, nbytes, status)
+    integer(kind=kindOfInt),                      intent(in)  :: msgid
     integer(kind=kindOfInt),                      intent(out) :: nbytes
     integer(kind=kindOfInt),optional,             intent(out) :: status
-    integer(kind=kindOfInt)                                   :: iret
-    integer(kind=kindOfSize_t)                                :: ibytes
 
-    call grib_get_message_size_int  ( gribid, nbytes, status)
+    call grib_get_message_size_int  ( msgid, nbytes, status)
 end subroutine codes_get_message_size_int
 
-!
-subroutine codes_get_message_size_size_t  ( gribid, nbytes, status)
-    integer(kind=kindOfInt),                      intent(in)  :: gribid
+
+  !> Get the size of a coded message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid       id of the grib loaded in memory
+  !> @param nbytes      size in bytes of the message
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_get_message_size_size_t  ( msgid, nbytes, status)
+    integer(kind=kindOfInt),                      intent(in)  :: msgid
     integer(kind=kindOfSize_t),                   intent(out) :: nbytes
     integer(kind=kindOfInt),optional,             intent(out) :: status
-    integer(kind=kindOfInt)                                   :: iret
 
-    call grib_get_message_size_size_t  ( gribid, nbytes, status)
+    call grib_get_message_size_size_t  ( msgid, nbytes, status)
 end subroutine codes_get_message_size_size_t
 
-!
-subroutine codes_copy_message ( gribid, message, status )
-    integer(kind=kindOfInt),                      intent(in)  :: gribid
+  !> Copy the coded message into an array.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid       id of the grib loaded in memory
+  !> @param message     array containing the coded message to be copied
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_copy_message ( msgid, message, status )
+    integer(kind=kindOfInt),                      intent(in)  :: msgid
     character(len=1), dimension(:),               intent(out) :: message
     integer(kind=kindOfInt),optional,             intent(out) :: status
-    integer(kind=kindOfInt)      :: iret
-    integer(kind=kindOfSize_t)   :: size_bytes
 
-    call grib_copy_message ( gribid, message, status )
+    call grib_copy_message ( msgid, message, status )
 end subroutine codes_copy_message
 
-!
-subroutine codes_write ( gribid, ifile  , status)
-    integer(kind=kindOfInt),          intent(in)  :: gribid
+  !> Write the coded message to a file.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param msgid       id of the grib loaded in memory
+  !> @param ifile       file id of a file opened with \ref codes_open_file
+  !> @param status      CODES_SUCCESS if OK, integer value on error
+subroutine codes_write ( msgid, ifile  , status)
+    integer(kind=kindOfInt),          intent(in)  :: msgid
     integer(kind=kindOfInt),          intent(in)  :: ifile
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)               :: iret
 
-    call grib_write ( gribid, ifile  , status)
+    call grib_write ( msgid, ifile  , status)
 end subroutine codes_write
 
-!
+  !> Write a multi field message to a file.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param multigribid      id of the multi field grib loaded in memory
+  !> @param ifile       file id of a file opened with \ref codes_open_file
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_grib_multi_write ( multigribid, ifile  , status)
     integer(kind=kindOfInt),          intent(in)  :: multigribid
     integer(kind=kindOfInt),          intent(in)  :: ifile
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)               :: iret
 
     call grib_multi_write ( multigribid, ifile  , status)
 end subroutine codes_grib_multi_write 
 
-!
+
+  !> Append a single field grib message to a multi field grib message.
+  !> Only the sections with section number greather or equal "startsection" are copied from the input single message to the multi field output grib.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param ingribid      id of the input single grib 
+  !> @param startsection  starting from startsection (included) all the sections are copied from the input single grib to the output multi grib
+  !> @param multigribid    id of the output multi filed grib
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_grib_multi_append ( ingribid, startsection, multigribid  , status)
     integer(kind=kindOfInt),          intent(in)  :: ingribid
     integer(kind=kindOfInt),          intent(in)  :: startsection
     integer(kind=kindOfInt),          intent(out) :: multigribid
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)               :: iret
 
     call grib_multi_append ( ingribid, startsection, multigribid  , status)
 end subroutine codes_grib_multi_append 
 
-!
+  !> Find the nearest point of a set of points whose latitudes and longitudes
+  !> are given in the inlats, inlons arrays respectively.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param gribid      id of the grib loaded in memory
+  !> @param is_lsm      .true. if the nearest land point is required otherwise .false.
+  !> @param inlats      input real(8) array of the latitudes of the points
+  !> @param inlons      input real(8) array of the longitudes of the points
+  !> @param outlats     output real(8) array of the latitudes of the nearest points
+  !> @param outlons     output real(8) array of the longitudes of the nearest points
+  !> @param distances   output real(8) array of the distances
+  !> @param indexes     output integer(4) array of the zero based indexes
+  !> @param values      output real(8) array of the values
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_grib_find_nearest_multiple(gribid,is_lsm,  &
                  inlats,inlons,outlats,outlons,        &
                  values,distances, indexes,status)
@@ -1320,16 +2315,28 @@ subroutine codes_grib_find_nearest_multiple(gribid,is_lsm,  &
     real(kind = kindOfDouble), dimension(:), intent(out)   :: values
     integer(kind = kindOfInt), dimension(:), intent(out)  :: indexes
     integer(kind=kindOfInt),optional, intent(out)         :: status
-    integer(kind=kindOfInt)                               :: iret
-    integer(kind=kindOfInt) :: npoints
-    integer(kind=kindOfInt) :: intis_lsm
 
     call grib_find_nearest_multiple(gribid,is_lsm,   &
                  inlats,inlons,outlats,outlons,      &
                  values,distances, indexes,status)
 end subroutine codes_grib_find_nearest_multiple
 
-!
+  !> Find the nearest point of a given latitude/longitude point.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param gribid     id of the grib loaded in memory
+  !> @param is_lsm     .true. if the nearest land point is required otherwise .false.
+  !> @param inlat      latitude of the point
+  !> @param inlon      longitudes of the point
+  !> @param outlat     latitude of the nearest point
+  !> @param outlon     longitude of the nearest point
+  !> @param distance   distance between the given point and its nearest
+  !> @param index      zero based index
+  !> @param value      value of the field in the nearest point
+  !> @param status     CODES_SUCCESS if OK, integer value on error
 subroutine codes_grib_find_nearest_single(gribid,is_lsm,  &
                  inlat,inlon,outlat,outlon,          &
                  value,distance, index,status)
@@ -1343,102 +2350,204 @@ subroutine codes_grib_find_nearest_single(gribid,is_lsm,  &
     real(kind = kindOfDouble), intent(out)  :: value
     integer(kind = kindOfInt), intent(out)  :: index
     integer(kind=kindOfInt),optional, intent(out)  :: status
-    integer(kind=kindOfInt)                        :: iret
-    integer(kind=kindOfInt)                 :: intis_lsm =0
 
     call grib_find_nearest_single(gribid,is_lsm,  &
                  inlat,inlon,outlat,outlon,       &
                  value,distance, index,status)
 end subroutine codes_grib_find_nearest_single
 
-!
+
+  !> Find the 4 nearest points of a latitude longitude point.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param gribid     id of the GRIB loaded in memory
+  !> @param is_lsm     .true. if the nearest land point is required otherwise .false.
+  !> @param inlat      latitude of the point
+  !> @param inlon      longitudes of the point
+  !> @param outlat     latitude of the nearest point
+  !> @param outlon     longitude of the nearest point
+  !> @param distance   distance between the given point and its nearest
+  !> @param index      zero based index
+  !> @param value      value of the field in the nearest point
+  !> @param status     CODES_SUCCESS if OK, integer value on error
 subroutine codes_grib_find_nearest_four_single(gribid,is_lsm, &
                  inlat,inlon,outlat,outlon,              &
                  value,distance, index,status)
     integer(kind=kindOfInt),                  intent(in)    :: gribid
     logical,                                  intent(in)    :: is_lsm
-    real(kind = kindOfDouble), intent(in)    :: inlat
-    real(kind = kindOfDouble), intent(in)    :: inlon
-    real(kind = kindOfDouble), dimension(4), intent(out)   :: outlat
-    real(kind = kindOfDouble), dimension(4), intent(out)   :: outlon
-    real(kind = kindOfDouble), dimension(4), intent(out)   :: distance
-    real(kind = kindOfDouble), dimension(4), intent(out)   :: value
-    integer(kind = kindOfInt), dimension(4), intent(out)  :: index
-    integer(kind=kindOfInt),optional, intent(out)         :: status
-    integer(kind=kindOfInt)                               :: iret
-    integer(kind=kindOfInt) :: intis_lsm =0
+    real(kind = kindOfDouble), intent(in)                   :: inlat
+    real(kind = kindOfDouble), intent(in)                   :: inlon
+    real(kind = kindOfDouble), dimension(4), intent(out)    :: outlat
+    real(kind = kindOfDouble), dimension(4), intent(out)    :: outlon
+    real(kind = kindOfDouble), dimension(4), intent(out)    :: distance
+    real(kind = kindOfDouble), dimension(4), intent(out)    :: value
+    integer(kind = kindOfInt), dimension(4), intent(out)    :: index
+    integer(kind=kindOfInt),optional, intent(out)           :: status
 
     call grib_find_nearest_four_single(gribid,is_lsm, &
                  inlat,inlon,outlat,outlon,           &
                  value,distance, index,status)
   end subroutine codes_grib_find_nearest_four_single
 
-!
+
+  !> Turn on the support for multiple fields in a single message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_grib_multi_support_on (status  )
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)               :: iret
 
     call grib_multi_support_on (status  )
 end subroutine codes_grib_multi_support_on 
 
-!
+  !> Turn off the support for multiple fields in a single message.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_grib_multi_support_off ( status  )
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)               :: iret
 
     call grib_multi_support_off ( status  )
 end subroutine codes_grib_multi_support_off 
 
-!
+  !> Turn on the compatibility mode with gribex.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_gribex_mode_on (status )
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)               :: iret
 
     call grib_gribex_mode_on (status )
 end subroutine codes_gribex_mode_on 
 
-!
+  !> Turn off the compatibility mode with GRIBEX.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_gribex_mode_off (status )
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)               :: iret
 
     call grib_gribex_mode_off (status )
 end subroutine codes_gribex_mode_off 
 
-!
+  !> Skip the computed keys in a keys iterator.
+  !>
+  !> The computed keys are not coded in the message they are computed
+  !> from other keys.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @see codes_keys_iterator_new, codes_keys_iterator_next, codes_keys_iterator_delete
+  !>
+  !> @param iterid      keys iterator id
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_skip_computed ( iterid , status)
     integer(kind=kindOfInt),          intent(in)  :: iterid
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)   :: iret
 
     call grib_skip_computed ( iterid , status)
 end subroutine codes_skip_computed 
 
-!
+  !> Skip the coded keys in a keys iterator.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> The coded keys are actually coded in the message.
+  !>
+  !> @see codes_keys_iterator_new, codes_keys_iterator_next, codes_keys_iterator_delete
+  !>
+  !> @param iterid      keys iterator id
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_skip_coded  ( iterid, status )
     integer(kind=kindOfInt),          intent(in)  :: iterid
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)   :: iret
 
     call grib_skip_coded  ( iterid, status )
 end subroutine codes_skip_coded  
 
-!
+  !> Skip the duplicated keys in a keys iterator.
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @see codes_keys_iterator_new, codes_keys_iterator_next, codes_keys_iterator_delete
+  !>
+  !> @param iterid      keys iterator id
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_skip_duplicates ( iterid, status )
     integer(kind=kindOfInt),          intent(in)  :: iterid
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt) :: iret
 
     call grib_skip_duplicates ( iterid, status )
 end subroutine codes_skip_duplicates 
 
-!
+  !> Skip the read_only keys in a keys iterator.
+  !>
+  !> Read only keys cannot be set.
+  !>
+  !> @see codes_keys_iterator_new, codes_keys_iterator_next, codes_keys_iterator_delete
+  !>
+  !> @param iterid      keys iterator id
+  !> @param status      CODES_SUCCESS if OK, integer value on error
 subroutine codes_skip_read_only  ( iterid, status )
     integer(kind=kindOfInt),          intent(in)  :: iterid
     integer(kind=kindOfInt),optional, intent(out) :: status
-    integer(kind=kindOfInt)  :: iret
 
     call grib_skip_read_only  ( iterid, status )
 end subroutine codes_skip_read_only  
 
+
+  !> Set the definition path
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param path       definitions path
+  !> @param status     CODES_SUCCESS if OK, integer value on error
+subroutine codes_set_definitions_path ( path,  status )
+    character(len=*),                 intent(in)   :: path
+    integer(kind=kindOfInt),optional, intent(out)  :: status
+
+    call grib_set_definitions_path ( path, status )
+end subroutine codes_set_definitions_path
+
+  !> Set the samples path
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref codes_get_error_string.
+  !>
+  !> @param path       samples path
+  !> @param status     CODES_SUCCESS if OK, integer value on error
+subroutine codes_set_samples_path ( path,  status )
+    character(len=*),                 intent(in)   :: path
+    integer(kind=kindOfInt),optional, intent(out)  :: status
+
+    call grib_set_samples_path ( path, status )
+end subroutine codes_set_samples_path
+
+
+
 end module eccodes
+
diff --git a/fortran/eccodes_visibility.h b/fortran/eccodes_visibility.h
index 96ba440..3c958d0 100644
--- a/fortran/eccodes_visibility.h
+++ b/fortran/eccodes_visibility.h
@@ -11,7 +11,8 @@ public :: codes_skip_computed, &
 public :: codes_keys_iterator_get_name, &
           codes_keys_iterator_rewind
 public :: codes_new_from_message, &
-          codes_new_from_samples, codes_new_from_file, &
+          codes_grib_new_from_samples, codes_new_from_file, &
+          codes_bufr_new_from_samples, &
           codes_any_new_from_file, &
           codes_grib_new_from_file, codes_bufr_new_from_file, &
           codes_read_from_file,codes_headers_only_new_from_file
diff --git a/fortran/grib_api_constants.h b/fortran/grib_api_constants.h
index 67d9415..72a457e 100644
--- a/fortran/grib_api_constants.h
+++ b/fortran/grib_api_constants.h
@@ -1,3 +1,4 @@
+  integer, parameter,public :: GRIB_WRONG_BITMAP_SIZE                             = -66
   integer, parameter,public :: GRIB_OUT_OF_RANGE                                  = -65
   integer, parameter,public :: GRIB_UNSUPPORTED_EDITION                           = -64
   integer, parameter,public :: GRIB_ATTRIBUTE_NOT_FOUND                           = -63
diff --git a/fortran/grib_api_externals.h b/fortran/grib_api_externals.h
index 7e76455..fe43562 100644
--- a/fortran/grib_api_externals.h
+++ b/fortran/grib_api_externals.h
@@ -15,6 +15,7 @@ integer, external :: grib_f_keys_iterator_get_name, &
 integer, external :: grib_f_new_from_message, &
                      grib_f_new_from_message_copy, &
                      grib_f_new_from_samples, &
+                     codes_bufr_f_new_from_samples, &
                      grib_f_read_any_from_file, &
                      any_f_new_from_file, &
                      grib_f_new_from_file, &
@@ -57,7 +58,7 @@ integer, external :: grib_f_set_int, grib_f_set_int_array, &
                      grib_f_set_real4, grib_f_set_real4_array, &
                      grib_f_set_real8, grib_f_set_real8_array, &
                      grib_f_set_force_real4_array, grib_f_set_force_real8_array, &
-                     grib_f_set_string, grib_f_set_missing, &
+                     grib_f_set_string, grib_f_set_string_array, grib_f_set_missing, &
                      grib_f_gribex_mode_on,grib_f_gribex_mode_off, &
                      grib_f_find_nearest_single,grib_f_find_nearest_four_single,grib_f_find_nearest_multiple
 integer, external :: grib_f_get_message_size, grib_f_copy_message, grib_f_count_in_file
@@ -65,3 +66,4 @@ integer, external :: grib_f_write, grib_f_multi_write, grib_f_multi_append
 integer, external :: grib_f_clone, grib_f_copy_namespace
 external :: grib_f_check
 integer, external :: grib_f_util_sections_copy
+integer, external :: grib_f_set_definitions_path, grib_f_set_samples_path
diff --git a/fortran/grib_f90_head.f90 b/fortran/grib_f90_head.f90
index a56af1b..f0e7306 100644
--- a/fortran/grib_f90_head.f90
+++ b/fortran/grib_f90_head.f90
@@ -33,7 +33,7 @@ module grib_api
   !> gathered with @ref grib_get_error_string.
   !>
   !>
-  !> \b Examples: \ref copy_message.f90 "copy_message.f90"
+  !> \b Examples: \ref grib_copy_message.f90 "grib_copy_message.f90"
   !>
   !> @param gribid      id of the grib loaded in memory
   !> @param message     array containing the coded message
@@ -125,7 +125,7 @@ module grib_api
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref grib_get_error_string.
   !>
-  !> \b Examples: \ref get_data.f90 "get_data.f90"
+  !> \b Examples: \ref grib_get_data.f90 "grib_get_data.f90"
   !>
   !> @param[in] gribid       id of the grib loaded in memory
   !> @param[out] lats        latitudes array with dimension "size"
diff --git a/fortran/grib_f90_int.f90 b/fortran/grib_f90_int.f90
index 4e2078e..d0c8811 100644
--- a/fortran/grib_f90_int.f90
+++ b/fortran/grib_f90_int.f90
@@ -82,7 +82,7 @@
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref grib_get_error_string.
   !>
-  !> \b Examples: \ref grib_get_keys.f90 "grib_get_keys.f90", \ref print_data.f90 "print_data.f90"
+  !> \b Examples: \ref grib_get_keys.f90 "grib_get_keys.f90", \ref grib_print_data.f90 "grib_print_data.f90"
   !>
   !> @see grib_new_from_file, grib_release, grib_set
   !>
@@ -133,7 +133,7 @@
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref grib_get_error_string.
   !>
-  !> \b Examples: \ref set.f90 "set.f90"
+  !> \b Examples: \ref grib_set_keys.f90 "grib_set_keys.f90"
   !>
   !> @see grib_new_from_file, grib_release, grib_get
   !>
diff --git a/fortran/grib_f90_long_int.f90 b/fortran/grib_f90_long_int.f90
index c7f360a..e9d8dad 100644
--- a/fortran/grib_f90_long_int.f90
+++ b/fortran/grib_f90_long_int.f90
@@ -85,7 +85,7 @@
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref grib_get_error_string.
   !>
-  !> \b Examples: \ref grib_get_keys.f90 "grib_get_keys.f90", \ref print_data.f90 "print_data.f90"
+  !> \b Examples: \ref grib_get_keys.f90 "grib_get_keys.f90", \ref grib_print_data.f90 "grib_print_data.f90"
   !>
   !> @see grib_new_from_file, grib_release, grib_set
   !>
@@ -137,7 +137,7 @@
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref grib_get_error_string.
   !>
-  !> \b Examples: \ref set.f90 "set.f90"
+  !> \b Examples: \ref grib_set_keys.f90 "grib_set_keys.f90"
   !>
   !> @see grib_new_from_file, grib_release, grib_get
   !>
diff --git a/fortran/grib_f90_tail.f90 b/fortran/grib_f90_tail.f90
index 8e67cc5..b8cd51f 100644
--- a/fortran/grib_f90_tail.f90
+++ b/fortran/grib_f90_tail.f90
@@ -10,7 +10,7 @@
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref grib_get_error_string.
   !>
-  !> \b Examples: \ref set_missing.f90 "set_missing.f90"
+  !> \b Examples: \ref grib_set_missing.f90 "grib_set_missing.f90"
   !>
   !> @param  gribid     id of the grib loaded in memory
   !> @param key     key name
@@ -28,7 +28,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_set_missing','('//key//')')
+         call grib_check(iret,'set_missing','('//key//')')
       endif
   end subroutine grib_set_missing
 
@@ -56,7 +56,7 @@
       if (present(status)) then
         status = iret
       else
-        call grib_check(iret,'grib_index_create','('//filename//')')
+        call grib_check(iret,'index_create','('//filename//')')
       endif
   end subroutine grib_index_create
 
@@ -82,7 +82,7 @@
       if (present(status)) then
           status = iret
       else
-          call grib_check(iret,'grib_index_add_file','('//filename//')')
+          call grib_check(iret,'index_add_file','('//filename//')')
       endif
   end subroutine grib_index_add_file
 
@@ -110,7 +110,7 @@
       if (present(status)) then
         status = iret
       else
-        call grib_check(iret,'grib_index_get_size','('//key//')')
+        call grib_check(iret,'index_get_size','('//key//')')
       endif
   end subroutine grib_index_get_size_long
 
@@ -138,7 +138,7 @@
       if (present(status)) then
         status = iret
       else
-        call grib_check(iret,'grib_index_get_size','('//key//')')
+        call grib_check(iret,'index_get_size','('//key//')')
       endif
   end subroutine grib_index_get_size_int
 
@@ -168,10 +168,10 @@
       if (present(status)) then
         status = iret
       else
-        call grib_check(iret,'grib_index_get','('//key//')')
+        call grib_check(iret,'index_get','('//key//')')
       endif
   end subroutine grib_index_get_int
-      
+
   !> Get the distinct values of the key in argument contained in the index. The key must belong to the index. This function is used when the type of the key was explicitly defined as long or when the native type of the key is long.
   !>
   !>
@@ -198,7 +198,7 @@
       if (present(status)) then
         status = iret
       else
-        call grib_check(iret,'grib_index_get','('//key//')')
+        call grib_check(iret,'index_get','('//key//')')
       endif
   end subroutine grib_index_get_long
 
@@ -228,7 +228,7 @@
       if (present(status)) then
         status = iret
       else
-        call grib_check(iret,'grib_index_get','('//key//')')
+        call grib_check(iret,'index_get','('//key//')')
       endif
   end subroutine grib_index_get_real8
 
@@ -261,7 +261,7 @@
     if (present(status)) then
       status = iret
     else
-      call grib_check(iret,'grib_index_get','('//key//')')
+      call grib_check(iret,'index_get','('//key//')')
     endif
   end subroutine grib_index_get_string
 
@@ -290,10 +290,10 @@
     if (present(status)) then
       status = iret
     else
-      call grib_check(iret,'grib_index_select','('//key//')')
+      call grib_check(iret,'index_select','('//key//')')
     endif
   end subroutine grib_index_select_string
-      
+
   !> Select the message subset with key==value. The value is a integer. The key must have been created with integer type or have integer as native type if the type was not explicitly defined in the index creation.
   !>
   !>
@@ -318,10 +318,10 @@
     if (present(status)) then
       status = iret
     else
-      call grib_check(iret,'grib_index_select','('//key//')')
+      call grib_check(iret,'index_select','('//key//')')
     endif
   end subroutine grib_index_select_int
-      
+
   !> Select the message subset with key==value. The value is a integer. The key must have been created with integer type or have integer as native type if the type was not explicitly defined in the index creation.
   !>
   !>
@@ -346,11 +346,11 @@
       if (present(status)) then
         status = iret
       else
-        call grib_check(iret,'grib_index_select','('//key//')')
+        call grib_check(iret,'index_select','('//key//')')
       endif
   end subroutine grib_index_select_long
-      
-   !> Select the message subset with key==value. The value is a real. The key must have been created with real type or have real as native type if the type was not explicitly defined in the index creation.
+
+  !> Select the message subset with key==value. The value is a real. The key must have been created with real type or have real as native type if the type was not explicitly defined in the index creation.
   !>
   !>
   !> In case of error, if the status parameter (optional) is not given, the program will
@@ -374,7 +374,7 @@
     if (present(status)) then
       status = iret
     else
-      call grib_check(iret,'grib_index_select','('//key//')')
+      call grib_check(iret,'index_select','('//key//')')
     endif
     end subroutine grib_index_select_real8
 
@@ -400,7 +400,7 @@
     if (present(status)) then
       status = iret
     else
-      call grib_check(iret,'grib_new_from_index','')
+      call grib_check(iret,'new_from_index','')
     endif
   end subroutine grib_new_from_index
 
@@ -426,7 +426,7 @@
     if (present(status)) then
         status = iret
     else
-        call grib_check(iret,'grib_index_read','('//filename//')')
+        call grib_check(iret,'index_read','('//filename//')')
     endif
       
   end subroutine grib_index_read
@@ -454,7 +454,7 @@
     if (present(status)) then
         status = iret
     else
-        call grib_check(iret,'grib_index_write','('//filename//')')
+        call grib_check(iret,'index_write','('//filename//')')
     endif
       
   end subroutine grib_index_write
@@ -477,7 +477,7 @@
           if (present(status)) then
             status = iret
           else
-            call grib_check(iret,'grib_index_release','')
+            call grib_check(iret,'index_release','')
           endif
   end subroutine grib_index_release
 
@@ -505,7 +505,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_open_file','('//filename//')')
+           call grib_check(iret,'open_file','('//filename//')')
         endif
   end subroutine grib_open_file
 
@@ -534,7 +534,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_read_bytes','')
+           call grib_check(iret,'read_bytes','')
         endif
   end subroutine grib_read_bytes_char
 
@@ -561,7 +561,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_read_bytes','')
+           call grib_check(iret,'read_bytes','')
         endif
   end subroutine grib_read_bytes_char_size_t
 
@@ -590,7 +590,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_read_bytes','')
+           call grib_check(iret,'read_bytes','')
         endif
   end subroutine grib_read_bytes_int4
 
@@ -617,7 +617,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_read_bytes','')
+           call grib_check(iret,'read_bytes','')
         endif
   end subroutine grib_read_bytes_int4_size_t
 
@@ -646,7 +646,7 @@
       if (present(status)) then
         status = iret
       else
-        call grib_check(iret,'grib_read_bytes','')
+        call grib_check(iret,'read_bytes','')
       endif
   end subroutine grib_read_bytes_real4
 
@@ -673,7 +673,7 @@
       if (present(status)) then
         status = iret
       else
-        call grib_check(iret,'grib_read_bytes','')
+        call grib_check(iret,'read_bytes','')
       endif
   end subroutine grib_read_bytes_real4_size_t
 
@@ -702,7 +702,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_read_bytes','')
+           call grib_check(iret,'read_bytes','')
         endif
   end subroutine grib_read_bytes_real8
 
@@ -729,7 +729,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_read_bytes','')
+           call grib_check(iret,'read_bytes','')
         endif
   end subroutine grib_read_bytes_real8_size_t
 
@@ -762,7 +762,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_read_from_file','')
+           call grib_check(iret,'read_from_file','')
         endif
   end subroutine grib_read_from_file_int4
 
@@ -789,7 +789,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_read_from_file','')
+           call grib_check(iret,'read_from_file','')
         endif
   end subroutine grib_read_from_file_int4_size_t
 
@@ -822,7 +822,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_read_from_file','')
+           call grib_check(iret,'read_from_file','')
         endif
   end subroutine grib_read_from_file_real4
 
@@ -849,7 +849,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_read_from_file','')
+           call grib_check(iret,'read_from_file','')
         endif
   end subroutine grib_read_from_file_real4_size_t
 
@@ -882,7 +882,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_read_from_file','')
+           call grib_check(iret,'read_from_file','')
         endif
   end subroutine grib_read_from_file_real8
 
@@ -909,7 +909,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_read_from_file','')
+           call grib_check(iret,'read_from_file','')
         endif
   end subroutine grib_read_from_file_real8_size_t
 
@@ -942,7 +942,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_read_from_file','')
+           call grib_check(iret,'read_from_file','')
         endif
   end subroutine grib_read_from_file_char
 
@@ -969,7 +969,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_read_from_file','')
+           call grib_check(iret,'read_from_file','')
         endif
   end subroutine grib_read_from_file_char_size_t
 
@@ -998,7 +998,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_write_bytes','')
+           call grib_check(iret,'write_bytes','')
         endif
   end subroutine grib_write_bytes_char
 
@@ -1025,7 +1025,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_write_bytes','')
+           call grib_check(iret,'write_bytes','')
         endif
   end subroutine grib_write_bytes_char_size_t
 
@@ -1054,7 +1054,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_write_bytes','')
+           call grib_check(iret,'write_bytes','')
         endif
   end subroutine grib_write_bytes_int4
 
@@ -1081,7 +1081,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_write_bytes','')
+           call grib_check(iret,'write_bytes','')
         endif
   end subroutine grib_write_bytes_int4_size_t
 
@@ -1110,7 +1110,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_write_bytes','')
+           call grib_check(iret,'write_bytes','')
         endif
   end subroutine grib_write_bytes_real4
 
@@ -1137,7 +1137,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_write_bytes','')
+           call grib_check(iret,'write_bytes','')
         endif
   end subroutine grib_write_bytes_real4_size_t
 
@@ -1166,7 +1166,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_write_bytes','')
+           call grib_check(iret,'write_bytes','')
         endif
   end subroutine grib_write_bytes_real8
 
@@ -1193,7 +1193,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_write_bytes','')
+           call grib_check(iret,'write_bytes','')
         endif
   end subroutine grib_write_bytes_real8_size_t
 
@@ -1219,7 +1219,7 @@
         if (present(status)) then
            status = iret
         else
-           call grib_check(iret,'grib_close_file','')
+           call grib_check(iret,'close_file','')
         endif
   end subroutine grib_close_file
 
@@ -1240,7 +1240,7 @@
       if (present(status)) then
          status = iret
       else
-          call grib_check(iret,'grib_count_in_file','')
+          call grib_check(iret,'count_in_file','')
       endif
   end subroutine grib_count_in_file
 
@@ -1264,7 +1264,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_headers_only_new_from_file','')
+         call grib_check(iret,'headers_only_new_from_file','')
       endif
   end subroutine grib_headers_only_new_from_file
 
@@ -1316,13 +1316,21 @@
       endif
   end subroutine bufr_new_from_file
 
-  subroutine any_new_from_file ( ifile, id , status)
+  !> Load in memory a message from a file.
+  !>
+  !> The message can be accessed through its msgid and it will be available\n
+  !> until @ref codes_release is called.\n
+  !>
+  !> @param ifile     id of the file opened with @ref codes_open_file
+  !> @param msgid     id of the message loaded in memory
+  !> @param status    GRIB_SUCCESS if OK, GRIB_END_OF_FILE at the end of file, or error code
+  subroutine any_new_from_file ( ifile, msgid , status)
       integer(kind=kindOfInt),intent(in)              :: ifile
-      integer(kind=kindOfInt),intent(out)             :: id
+      integer(kind=kindOfInt),intent(out)             :: msgid
       integer(kind=kindOfInt),optional,intent(out)    :: status
       integer(kind=kindOfInt)                         :: iret
 
-      iret=any_f_new_from_file( ifile, id )
+      iret=any_f_new_from_file( ifile, msgid )
       if (present(status)) then
          status = iret
       else
@@ -1341,14 +1349,13 @@
   !> exit with an error message.\n Otherwise the error message can be
   !> gathered with @ref grib_get_error_string.
   !>
-  !>
-  !> \b Examples: \ref copy_message.f90 "copy_message.f90"
+  !> \b Examples: \ref grib_copy_message.f90 "grib_copy_message.f90"
   !>
   !> @param gribid      id of the grib loaded in memory
   !> @param message     character array containing the coded message
   !> @param status      GRIB_SUCCESS if OK, integer value on error
   subroutine grib_new_from_message_char( gribid, message, status )
-      integer(kind=kindOfInt),intent(out)             :: gribid
+      integer(kind=kindOfInt),intent(out)               :: gribid
       character(len=1), dimension(:),intent(in)         :: message
       integer(kind=kindOfInt),optional, intent(out)     :: status
       integer(kind=kindOfSize_t)                        :: size_bytes
@@ -1359,7 +1366,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_new_from_message','')
+         call grib_check(iret,'new_from_message','')
       endif
 
   end subroutine grib_new_from_message_char
@@ -1375,24 +1382,24 @@
   !> gathered with @ref grib_get_error_string.
   !>
   !>
-  !> \b Examples: \ref copy_message.f90 "copy_message.f90"
+  !> \b Examples: \ref grib_copy_message.f90 "grib_copy_message.f90"
   !>
   !> @param gribid      id of the grib loaded in memory
   !> @param message     integer array containing the coded message
   !> @param status      GRIB_SUCCESS if OK, integer value on error
   subroutine grib_new_from_message_int4 ( gribid, message, status )
       integer(kind=kindOfInt),intent(out)             :: gribid
-      integer(kind=4), dimension(:),intent(in)          :: message
-      integer(kind=kindOfInt),optional, intent(out)     :: status
-      integer(kind=kindOfSize_t)                        :: size_bytes
-      integer(kind=kindOfInt)                           :: iret
+      integer(kind=4), dimension(:),intent(in)        :: message
+      integer(kind=kindOfInt),optional, intent(out)   :: status
+      integer(kind=kindOfSize_t)                      :: size_bytes
+      integer(kind=kindOfInt)                         :: iret
 
       size_bytes=size(message,dim=1)*sizeOfInteger4
       iret = grib_f_new_from_message ( gribid, message, size_bytes )
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_new_from_message','')
+         call grib_check(iret,'new_from_message','')
       endif
 
   end subroutine grib_new_from_message_int4
@@ -1406,7 +1413,7 @@
   !> gathered with @ref grib_get_error_string.
   !>
   !>
-  !> \b Examples: \ref samples.f90 "samples.f90"
+  !> \b Examples: \ref grib_samples.f90 "grib_samples.f90"
   !>
   !> @param gribid       id of the grib loaded in memory
   !> @param samplename name of the sample to be used
@@ -1448,7 +1455,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_release','')
+         call grib_check(iret,'release','')
       endif
   end subroutine grib_release
 
@@ -1480,7 +1487,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_clone','')
+         call grib_check(iret,'clone','')
       endif
   end subroutine grib_clone
 
@@ -1654,7 +1661,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_keys_iterator_new',namespace)
+         call grib_check(iret,'keys_iterator_new',namespace)
       endif
   end subroutine grib_keys_iterator_new
 
@@ -1692,7 +1699,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_keys_iterator_delete','')
+         call grib_check(iret,'keys_iterator_delete','')
       endif
   end subroutine grib_keys_iterator_delete
 
@@ -1714,7 +1721,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_keys_iterator_get_name',name)
+         call grib_check(iret,'keys_iterator_get_name',name)
       endif
   end subroutine grib_keys_iterator_get_name
 
@@ -1735,7 +1742,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_keys_iterator_rewind','')
+         call grib_check(iret,'keys_iterator_rewind','')
       endif
   end subroutine grib_keys_iterator_rewind
 
@@ -1756,7 +1763,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_dump','')
+         call grib_check(iret,'dump','')
       endif
   end subroutine grib_dump
 
@@ -1775,7 +1782,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_get_error_string','')
+         call grib_check(iret,'get_error_string','')
       endif
   end subroutine grib_get_error_string
 
@@ -1805,7 +1812,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_get_size',key)
+         call grib_check(iret,'get_size',key)
       endif
   end subroutine grib_get_size_int
 
@@ -1835,7 +1842,7 @@
   if (present(status)) then
     status = iret
   else
-    call grib_check(iret,'grib_get_size',key)
+    call grib_check(iret,'get_size',key)
   endif
   end subroutine grib_get_size_long
 
@@ -1863,7 +1870,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_get',key)
+         call grib_check(iret,'get',key)
       endif
   end subroutine grib_get_int
 
@@ -1891,7 +1898,7 @@
     if (present(status)) then
       status = iret
     else
-      call grib_check(iret,'grib_get',key)
+      call grib_check(iret,'get',key)
     endif
   end subroutine grib_get_long
 
@@ -1919,7 +1926,7 @@
     if (present(status)) then
     status = iret
     else
-    call grib_check(iret,'grib_is_missing',key)
+    call grib_check(iret,'is_missing',key)
     endif
   end subroutine grib_is_missing
 
@@ -1947,7 +1954,7 @@
     if (present(status)) then
     status = iret
     else
-    call grib_check(iret,'grib_is_defined',key)
+    call grib_check(iret,'is_defined',key)
     endif
   end subroutine grib_is_defined
 
@@ -1975,7 +1982,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_get',key)
+         call grib_check(iret,'get',key)
       endif
   end subroutine grib_get_real4
 
@@ -2003,7 +2010,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_get',key)
+         call grib_check(iret,'get',key)
       endif
   end subroutine grib_get_real8
 
@@ -2031,7 +2038,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_get',key)
+         call grib_check(iret,'get',key)
       endif
   end subroutine grib_get_string
 
@@ -2063,7 +2070,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_get',key)
+         call grib_check(iret,'get',key)
       endif
   end subroutine grib_get_int_array
 
@@ -2093,7 +2100,7 @@
     if (present(status)) then
       status = iret
     else
-      call grib_check(iret,'grib_get',key)
+      call grib_check(iret,'get',key)
     endif
   end subroutine grib_get_long_array
 
@@ -2131,7 +2138,7 @@
     if (present(status)) then
        status = iret
     else
-       call grib_check(iret,'grib_get',key)
+       call grib_check(iret,'get',key)
     endif
   end subroutine grib_get_byte_array
 
@@ -2161,7 +2168,7 @@
       if (present(status)) then
         status = iret
       else
-        call grib_check(iret,'grib_get',key)
+        call grib_check(iret,'get',key)
       endif
   end subroutine grib_get_real4_array
 
@@ -2191,7 +2198,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_get',key)
+         call grib_check(iret,'get',key)
       endif
   end subroutine grib_get_real8_array
 
@@ -2221,7 +2228,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_get',key)
+         call grib_check(iret,'get',key)
       endif
   end subroutine grib_get_real4_element
 
@@ -2251,7 +2258,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_get',key)
+         call grib_check(iret,'get',key)
       endif
   end subroutine grib_get_real8_element
 
@@ -2283,7 +2290,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_get',key)
+         call grib_check(iret,'get',key)
       endif
   end subroutine grib_get_real4_elements
 
@@ -2315,7 +2322,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_get',key)
+         call grib_check(iret,'get',key)
       endif
   end subroutine grib_get_real8_elements
 
@@ -2343,7 +2350,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_set',key)
+         call grib_check(iret,'set',key)
       endif
   end subroutine grib_set_int
 
@@ -2371,7 +2378,7 @@
     if (present(status)) then
       status = iret
     else
-      call grib_check(iret,'grib_set',key)
+      call grib_check(iret,'set',key)
     endif
   end subroutine grib_set_long
 
@@ -2399,7 +2406,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_set',key)
+         call grib_check(iret,'set',key)
       endif
   end subroutine grib_set_real4
 
@@ -2427,7 +2434,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_set',key)
+         call grib_check(iret,'set',key)
       endif
   end subroutine grib_set_real8
 
@@ -2457,7 +2464,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_set',key)
+         call grib_check(iret,'set',key)
       endif
   end subroutine grib_set_int_array
 
@@ -2487,7 +2494,7 @@
     if (present(status)) then
       status = iret
     else
-      call grib_check(iret,'grib_set',key)
+      call grib_check(iret,'set',key)
     endif
       
   end subroutine grib_set_long_array
@@ -2525,7 +2532,7 @@
     if (present(status)) then
        status = iret
     else
-       call grib_check(iret,'grib_set',key)
+       call grib_check(iret,'set',key)
     endif
   end subroutine grib_set_byte_array
 
@@ -2555,7 +2562,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_set',key)
+         call grib_check(iret,'set',key)
       endif
   end subroutine grib_set_real4_array
 
@@ -2585,7 +2592,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_set',key)
+         call grib_check(iret,'set',key)
       endif
   end subroutine grib_set_real8_array
 
@@ -2616,7 +2623,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_set',key)
+         call grib_check(iret,'set',key)
       endif
   end subroutine grib_set_force_real4_array
 
@@ -2647,7 +2654,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_set',key)
+         call grib_check(iret,'set',key)
       endif
   end subroutine grib_set_force_real8_array
 
@@ -2675,7 +2682,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_set',key)
+         call grib_check(iret,'set',key)
       endif
   end subroutine grib_set_string
 
@@ -2706,7 +2713,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_get_message_size','')
+         call grib_check(iret,'get_message_size','')
       endif
   end subroutine grib_get_message_size_int
 
@@ -2732,7 +2739,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_get_message_size','')
+         call grib_check(iret,'get_message_size','')
       endif
   end subroutine grib_get_message_size_size_t
 
@@ -2760,7 +2767,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_copy_message','')
+         call grib_check(iret,'copy_message','')
       endif
   end subroutine grib_copy_message
 
@@ -2784,10 +2791,10 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_write','')
+         call grib_check(iret,'write','')
       endif
   end subroutine grib_write
-          
+
   !> Write a multi field message to a file.
   !>
   !> In case of error, if the status parameter (optional) is not given, the program will
@@ -2810,7 +2817,7 @@
       call grib_check(iret,'grib_multi_write','')
     endif
     end subroutine grib_multi_write
-                      
+
   !> Append a single field grib message to a multi field grib message.
   !> Only the sections with section number greather or equal "startsection" are copied from the input single message to the multi field output grib.
   !>
@@ -2838,7 +2845,8 @@
     endif
   end subroutine grib_multi_append
 
-  !> Find the nearest point of a given latitude/longitude point.
+  !> Find the nearest point of a set of points whose latitudes and longitudes
+  !> are given in the inlats, inlons arrays respectively.
   !>
   !> In case of error, if the status parameter (optional) is not given, the program will
   !> exit with an error message.\n Otherwise the error message can be
@@ -2854,7 +2862,7 @@
   !> @param indexes     output integer(4) array of the zero based indexes
   !> @param values      output real(8) array of the values
   !> @param status      GRIB_SUCCESS if OK, integer value on error
-  subroutine grib_find_nearest_multiple(gribid,is_lsm,                  &
+  subroutine grib_find_nearest_multiple(gribid,is_lsm,       &
                  inlats,inlons,outlats,outlons,              &
                  values,distances, indexes,status)
     integer(kind=kindOfInt),                                  intent(in)    :: gribid
@@ -2927,7 +2935,7 @@
     endif
   end subroutine grib_find_nearest_single
 
-  !> Find the nearest point of a given latitude/longitude point.
+  !> Find the 4 nearest points of a latitude longitude point.
   !>
   !> In case of error, if the status parameter (optional) is not given, the program will
   !> exit with an error message.\n Otherwise the error message can be
@@ -3071,7 +3079,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_skip_computed','')
+         call grib_check(iret,'skip_computed','')
       endif
   end subroutine grib_skip_computed
 
@@ -3096,7 +3104,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_skip_coded','')
+         call grib_check(iret,'skip_coded','')
       endif
   end subroutine grib_skip_coded
 
@@ -3120,7 +3128,7 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_skip_duplicates','')
+         call grib_check(iret,'skip_duplicates','')
       endif
   end subroutine grib_skip_duplicates
 
@@ -3142,9 +3150,51 @@
       if (present(status)) then
          status = iret
       else
-         call grib_check(iret,'grib_skip_read_only','')
+         call grib_check(iret,'skip_read_only','')
       endif
   end subroutine grib_skip_read_only
 
+  !> Set the definition path
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref grib_get_error_string.
+  !>
+  !> @param path       definitions path
+  !> @param status     GRIB_SUCCESS if OK, integer value on error
+  subroutine grib_set_definitions_path ( path,  status )
+      character(len=*),                        intent(in)  :: path
+      integer(kind=kindOfInt),optional, intent(out)        :: status
+      integer(kind=kindOfInt)                              :: iret
+
+      iret=grib_f_set_definitions_path ( path )
+      if (present(status)) then
+         status = iret
+      else
+         call grib_check(iret,'set_definitions_path','('//path//')')
+      endif
+  end subroutine grib_set_definitions_path
+
+  !> Set the samples path
+  !>
+  !> In case of error, if the status parameter (optional) is not given, the program will
+  !> exit with an error message.\n Otherwise the error message can be
+  !> gathered with @ref grib_get_error_string.
+  !>
+  !> @param path       samples path
+  !> @param status     GRIB_SUCCESS if OK, integer value on error
+  subroutine grib_set_samples_path ( path,  status )
+      character(len=*),                        intent(in)  :: path
+      integer(kind=kindOfInt),optional, intent(out)        :: status
+      integer(kind=kindOfInt)                              :: iret
+
+      iret=grib_f_set_samples_path ( path )
+      if (present(status)) then
+         status = iret
+      else
+         call grib_check(iret,'set_samples_path','('//path//')')
+      endif
+  end subroutine grib_set_samples_path
+
 end module grib_api
 
diff --git a/fortran/grib_fortran.c b/fortran/grib_fortran.c
index c2d2b4c..942c62a 100644
--- a/fortran/grib_fortran.c
+++ b/fortran/grib_fortran.c
@@ -153,6 +153,15 @@ static char* cast_char(char* buf, char* fortstr,int len)
     return buf;
 }
 
+static char* cast_char_no_cut(char* buf, char* fortstr,int len)
+{
+    if (len == 0 || fortstr == NULL) return NULL;
+    memcpy(buf,fortstr,len);
+    buf[len]='\0';
+
+    return buf;
+}
+
 static void czstr_to_fortran(char* str,int len)
 {
     char *p,*end;
@@ -1308,6 +1317,30 @@ int grib_f_new_from_samples(int* gid, char* name , int lname){
 }
 
 /*****************************************************************************/
+int codes_bufr_f_new_from_samples_(int* gid, char* name , int lname){
+    char fname[1024];
+    grib_handle *h = NULL;
+
+    h = codes_bufr_handle_new_from_samples(NULL,cast_char(fname,name,lname));
+    /*   grib_context_set_debug(h->context,1);*/
+
+    if(h){
+        push_handle(h,gid);
+        return GRIB_SUCCESS;
+    }
+
+    *gid = -1;
+    return  GRIB_FILE_NOT_FOUND;
+}
+
+int codes_bufr_f_new_from_samples__(int* gid, char* name , int lname){
+    return  codes_bufr_f_new_from_samples_( gid,  name ,  lname);
+}
+int codes_bufr_f_new_from_samples(int* gid, char* name , int lname){
+    return  codes_bufr_f_new_from_samples_( gid,  name ,  lname);
+}
+
+/*****************************************************************************/
 int grib_f_clone_(int* gidsrc,int* giddest){
     grib_handle *src  = get_handle(*gidsrc);
     grib_handle *dest = NULL;
@@ -2288,8 +2321,8 @@ int grib_f_get_real4(int* gid, char* key, float* val,  int len){
     return grib_f_get_real4_( gid,  key,  val,  len);
 }
 
-int grib_f_get_real4_array_(int* gid, char* key, float *val, int* size,  int len){
-
+int grib_f_get_real4_array_(int* gid, char* key, float *val, int* size,  int len)
+{
     grib_handle *h = get_handle(*gid);
     int err = GRIB_SUCCESS;
     char buf[1024];
@@ -2306,8 +2339,11 @@ int grib_f_get_real4_array_(int* gid, char* key, float *val, int* size,  int len
 
     if(!val8) return GRIB_OUT_OF_MEMORY;
 
-
     err  = grib_get_double_array(h, cast_char(buf,key,len), val8, &lsize);
+    if (err) {
+        grib_context_free(h->context,val8);
+        return err;
+    }
 
     for(i=0;i<lsize;i++)
         val[i] = val8[i];
@@ -2324,8 +2360,8 @@ int grib_f_get_real4_array(int* gid, char* key, float* val, int* size, int len){
 }
 
 /*****************************************************************************/
-int grib_f_set_force_real4_array_(int* gid, char* key, float*val, int* size, int len){
-
+int grib_f_set_force_real4_array_(int* gid, char* key, float*val, int* size, int len)
+{
     grib_handle *h = get_handle(*gid);
     int err = GRIB_SUCCESS;
     char buf[1024];
@@ -2347,9 +2383,7 @@ int grib_f_set_force_real4_array_(int* gid, char* key, float*val, int* size, int
     err = grib_set_force_double_array(h, cast_char(buf,key,len), val8, lsize);
     grib_context_free(h->context,val8);
     return err;
-
 }
-
 int grib_f_set_force_real4_array__(int* gid, char* key, float*val, int* size, int len){
     return grib_f_set_force_real4_array_( gid,  key, val,  size, len);
 }
@@ -2358,8 +2392,8 @@ int grib_f_set_force_real4_array(int* gid, char* key, float*val, int* size, int
 }
 
 /*****************************************************************************/
-int grib_f_set_real4_array_(int* gid, char* key, float*val, int* size, int len){
-
+int grib_f_set_real4_array_(int* gid, char* key, float*val, int* size, int len)
+{
     grib_handle *h = get_handle(*gid);
     int err = GRIB_SUCCESS;
     char buf[1024];
@@ -2381,9 +2415,7 @@ int grib_f_set_real4_array_(int* gid, char* key, float*val, int* size, int len){
     err = grib_set_double_array(h, cast_char(buf,key,len), val8, lsize);
     grib_context_free(h->context,val8);
     return err;
-
 }
-
 int grib_f_set_real4_array__(int* gid, char* key, float*val, int* size, int len){
     return grib_f_set_real4_array_( gid,  key, val,  size, len);
 }
@@ -2392,10 +2424,9 @@ int grib_f_set_real4_array(int* gid, char* key, float*val, int* size, int len){
 }
 
 /*****************************************************************************/
-int grib_f_index_select_real8_(int* gid, char* key, double* val, int len){
-
+int grib_f_index_select_real8_(int* gid, char* key, double* val, int len)
+{
     grib_index *h = get_index(*gid);
-
     char buf[1024];
 
     if(!h) return GRIB_INVALID_GRIB;
@@ -2409,8 +2440,8 @@ int grib_f_index_select_real8(int* gid, char* key, double* val, int len){
 }
 
 /*****************************************************************************/
-int grib_f_index_select_string_(int* gid, char* key, char* val, int len, int vallen){
-
+int grib_f_index_select_string_(int* gid, char* key, char* val, int len, int vallen)
+{
     grib_index *h = get_index(*gid);
 
     char buf[1024];
@@ -2427,8 +2458,8 @@ int grib_f_index_select_string(int* gid, char* key, char* val, int len, int vall
 }
 
 /*****************************************************************************/
-int grib_f_index_select_int_(int* gid, char* key, int* val, int len){
-
+int grib_f_index_select_int_(int* gid, char* key, int* val, int len)
+{
     grib_index *h = get_index(*gid);
     long lval=*val;
     char buf[1024];
@@ -2444,10 +2475,9 @@ int grib_f_index_select_int(int* gid, char* key, int* val, int len){
 }
 
 /*****************************************************************************/
-int grib_f_index_select_long_(int* gid, char* key, long* val, int len){
-
+int grib_f_index_select_long_(int* gid, char* key, long* val, int len)
+{
     grib_index *h = get_index(*gid);
-
     char buf[1024];
 
     if(!h) return GRIB_INVALID_GRIB;
@@ -2461,17 +2491,14 @@ int grib_f_index_select_long(int* gid, char* key, long* val, int len){
 }
 
 /*****************************************************************************/
-int grib_f_set_real8_(int* gid, char* key, double* val, int len){
-
+int grib_f_set_real8_(int* gid, char* key, double* val, int len)
+{
     grib_handle *h = get_handle(*gid);
-
     char buf[1024];
 
     if(!h) return GRIB_INVALID_GRIB;
     return grib_set_double(h, cast_char(buf,key,len), *val);
 }
-
-
 int grib_f_set_real8__(int* gid, char* key, double* val, int len){
     return  grib_f_set_real8_( gid,  key,  val, len);
 }
@@ -2479,8 +2506,8 @@ int grib_f_set_real8(int* gid, char* key, double* val, int len){
     return  grib_f_set_real8_( gid,  key,  val, len);
 }
 
-int grib_f_get_real8_(int* gid, char* key, double* val, int len){
-
+int grib_f_get_real8_(int* gid, char* key, double* val, int len)
+{
     grib_handle *h = get_handle(*gid);
     char buf[1024];
 
@@ -2729,10 +2756,10 @@ int grib_f_get_string_array_(int* gid, char* key, char* val,int* nvals,int* slen
     for (i=0;i<lsize;i++) {
         strcpy(p,cval[i]);
         czstr_to_fortran(p,*slen);
+        grib_context_free(h->context,cval[i]);
         p+= *slen;
     }
     grib_context_free(h->context,cval);
-    /*remember to deallocate each string*/
 
     return  err;
 }
@@ -2744,6 +2771,57 @@ int grib_f_get_string_array(int* gid, char* key, char* val,int* nvals,int* slen,
     return  grib_f_get_string_array_( gid,  key,  val, nvals, slen, len);
 }
 
+
+/*****************************************************************************/
+/* Strip whitespace from the end of a string */
+static void rtrim(char* s)
+{
+    size_t len = 0;
+    if (!s) return;
+    len = strlen(s);
+    while (len > 0 && isspace((unsigned char)s[len - 1]))
+        len--;
+    s[len] = '\0';
+}
+
+int grib_f_set_string_array_(int* gid, char* key, char* val,int* nvals,int* slen,int len)
+{
+    grib_handle *h = get_handle(*gid);
+    int err = GRIB_SUCCESS;
+    size_t i;
+    char buf[1024];
+    size_t lsize = *nvals;
+    char** cval=0;
+    char* p=val;
+    grib_context* c=h->context;
+
+    if(!h) return  GRIB_INVALID_GRIB;
+
+    cval=(char**)grib_context_malloc_clear(h->context,sizeof(char*)*lsize);
+    for (i=0;i<lsize;i++) {
+        cval[i]=grib_context_malloc_clear(c,sizeof(char)* (*slen+1));
+        cast_char_no_cut(cval[i],p,*slen);
+        rtrim( cval[i] ); /* trim spaces at end of string */
+        p+= *slen;
+    }
+    err = grib_set_string_array(h, cast_char(buf,key,len), (const char **)cval, lsize);
+    if (err) return err;
+
+    for (i=0;i<lsize;i++) {
+        grib_context_free(c,cval[i]);
+    }
+    grib_context_free(c,cval);
+
+    return  err;
+}
+
+int grib_f_set_string_array__(int* gid, char* key, char* val,int* nvals,int* slen, int len){
+    return  grib_f_set_string_array_( gid,  key,  val,nvals,slen,len);
+}
+int grib_f_set_string_array(int* gid, char* key, char* val,int* nvals,int* slen, int len){
+    return  grib_f_set_string_array_( gid,  key,  val, nvals, slen, len);
+}
+
 /*****************************************************************************/
 int grib_f_get_string_(int* gid, char* key, char* val,int len, int len2){
 
@@ -2773,15 +2851,19 @@ int grib_f_get_string(int* gid, char* key, char* val,  int len, int len2){
 int grib_f_set_string_(int* gid, char* key, char* val, int len, int len2){
 
     grib_handle *h = get_handle(*gid);
+    char* val_str = NULL;
 
-    char buf[1024];
-    char buf2[1024];
+    char buf[1024]={0,};
+    char buf2[1024]={0,};
     size_t lsize = len2;
 
     if(!h) return GRIB_INVALID_GRIB;
+    
+    /* For BUFR, the value may contain spaces e.g. stationOrSiteName='CAMPO NOVO' */
+    val_str = cast_char_no_cut(buf2,val,len2);
+    rtrim( val_str ); /* trim spaces at end of string */
 
-    return grib_set_string(h, cast_char(buf,key,len), cast_char(buf2,val,len2), &lsize);
-
+    return grib_set_string(h, cast_char(buf,key,len), val_str, &lsize);
 }
 
 int grib_f_set_string__(int* gid, char* key, char* val, int len, int len2){
@@ -2808,7 +2890,7 @@ int grib_f_get_data_real4_(int* gid,float* lats, float* lons,float* values,size_
     lat8 = (double*)grib_context_malloc(h->context,(*size)*(sizeof(double)));
     if(!lat8) return GRIB_OUT_OF_MEMORY;
 
-    err=grib_get_data(h,lat8,lon8,val8,size);
+    err=grib_get_data(h,lat8,lon8,val8);
 
     for(i=0;i<*size;i++) {
         values[i] = val8[i];
@@ -2833,7 +2915,7 @@ int grib_f_get_data_real4(int* gid,float* lats, float* lons,float* values,size_t
 int grib_f_get_data_real8_(int* gid,double* lats, double* lons,double* values,size_t* size) {
 
     grib_handle *h = get_handle(*gid);
-    return grib_get_data(h,lats,lons,values,size);
+    return grib_get_data(h,lats,lons,values);
 
 }
 int grib_f_get_data_real8__(int* gid,double* lats, double* lons,double* values,size_t* size) {
@@ -2972,3 +3054,31 @@ int grib_f_multi_append(int* ingid, int* sec,int* mgid) {
 int grib_f_multi_append__(int* ingid, int* sec,int* mgid) {
     return grib_f_multi_append_(ingid, sec, mgid);
 }
+
+/*****************************************************************************/
+int grib_f_set_definitions_path_(char* path, int len){
+    grib_context* c = grib_context_get_default();
+    char buf[1024];
+    grib_context_set_definitions_path(c, cast_char(buf,path,len));
+    return GRIB_SUCCESS;
+}
+int grib_f_set_definitions_path__(char* path,  int len){
+    return grib_f_set_definitions_path_(path, len);
+}
+int grib_f_set_definitions_path(char* path,  int len){
+    return grib_f_set_definitions_path_(path, len);
+}
+
+
+int grib_f_set_samples_path_(char* path, int len){
+    grib_context* c = grib_context_get_default();
+    char buf[1024];
+    grib_context_set_samples_path(c, cast_char(buf,path,len));
+    return GRIB_SUCCESS;
+}
+int grib_f_set_samples_path__(char* path,  int len){
+    return grib_f_set_samples_path_(path, len);
+}
+int grib_f_set_samples_path(char* path,  int len){
+    return grib_f_set_samples_path_(path, len);
+}
diff --git a/fortran/grib_fortran_prototypes.h b/fortran/grib_fortran_prototypes.h
index 0682855..1cb3093 100644
--- a/fortran/grib_fortran_prototypes.h
+++ b/fortran/grib_fortran_prototypes.h
@@ -97,6 +97,9 @@ int grib_f_new_from_message_copy(int *gid, void *buffer, size_t *bufsize);
 int grib_f_new_from_samples_(int *gid, char *name, int lname);
 int grib_f_new_from_samples__(int *gid, char *name, int lname);
 int grib_f_new_from_samples(int *gid, char *name, int lname);
+int codes_bufr_f_new_from_samples_(int *gid, char *name, int lname);
+int codes_bufr_f_new_from_samples__(int *gid, char *name, int lname);
+int codes_bufr_f_new_from_samples(int *gid, char *name, int lname);
 int grib_f_clone_(int *gidsrc, int *giddest);
 int grib_f_clone__(int *gidsrc, int *giddest);
 int grib_f_clone(int *gidsrc, int *giddest);
@@ -313,6 +316,13 @@ int grib_f_multi_append_(int *ingid, int *sec, int *mgid);
 int grib_f_multi_append(int *ingid, int *sec, int *mgid);
 int grib_f_multi_append__(int *ingid, int *sec, int *mgid);
 
+int grib_f_set_definitions_path_(char *path, int len);
+int grib_f_set_definitions_path__(char *path, int len);
+int grib_f_set_definitions_path(char *path, int len);
+int grib_f_set_samples_path_(char *path, int len);
+int grib_f_set_samples_path__(char *path, int len);
+int grib_f_set_samples_path(char *path, int len);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/html/annotated.html b/html/annotated.html
index e69de29..bc69154 100644
--- a/html/annotated.html
+++ b/html/annotated.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: Data Structures</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">Data Structures</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><img id="arr_0_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceec_codes.html" target="_self">ecCodes</a></td><td class="desc">This package is the <b>Python</b> interface to <a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a> </td></tr>
+<tr id="row_0_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classec_codes_1_1_codes_internal_error.html" target="_self">CodesInternalError</a></td><td class="desc">Wrap errors coming from the C API in a Python exception object </td></tr>
+<tr id="row_1_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structcodes__context.html" target="_self">codes_context</a></td><td class="desc"></td></tr>
+<tr id="row_2_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structcodes__handle.html" target="_self">codes_handle</a></td><td class="desc"></td></tr>
+<tr id="row_3_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structcodes__index.html" target="_self">codes_index</a></td><td class="desc"></td></tr>
+<tr id="row_4_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structcodes__iterator.html" target="_self">codes_iterator</a></td><td class="desc"></td></tr>
+<tr id="row_5_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structcodes__keys__iterator.html" target="_self">codes_keys_iterator</a></td><td class="desc"></td></tr>
+<tr id="row_6_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structcodes__multi__handle.html" target="_self">codes_multi_handle</a></td><td class="desc"></td></tr>
+<tr id="row_7_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structcodes__nearest.html" target="_self">codes_nearest</a></td><td class="desc"></td></tr>
+<tr id="row_8_"><td class="entry"><img id="arr_8_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('8_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classeccodes.html" target="_self">eccodes</a></td><td class="desc">Module eccodes<br/>
+ This is the <b>Fortran90</b> interface for <a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a> </td></tr>
+<tr id="row_8_0_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceeccodes_1_1codes__get.html" target="_self">codes_get</a></td><td class="desc">Get the value for a key from a grib message </td></tr>
+<tr id="row_8_1_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceeccodes_1_1codes__get__element.html" target="_self">codes_get_element</a></td><td class="desc">Get a value of specified index from an array key </td></tr>
+<tr id="row_8_2_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceeccodes_1_1codes__get__message__size.html" target="_self">codes_get_message_size</a></td><td class="desc">Get the size of a coded message </td></tr>
+<tr id="row_8_3_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceeccodes_1_1codes__get__size.html" target="_self">codes_get_size</a></td><td class="desc">Get the size of an array key </td></tr>
+<tr id="row_8_4_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceeccodes_1_1codes__grib__find__nearest.html" target="_self">codes_grib_find_nearest</a></td><td class="desc">Find the nearest point/points of a given latitude/longitude point </td></tr>
+<tr id="row_8_5_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceeccodes_1_1codes__grib__get__data.html" target="_self">codes_grib_get_data</a></td><td class="desc">Get latitude/longitude and data values </td></tr>
+<tr id="row_8_6_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceeccodes_1_1codes__index__get.html" target="_self">codes_index_get</a></td><td class="desc">Get the distinct values of the key in argument contained in the index </td></tr>
+<tr id="row_8_7_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceeccodes_1_1codes__index__get__size.html" target="_self">codes_index_get_size</a></td><td class="desc">Get the number of distinct values of the key in argument contained in the index </td></tr>
+<tr id="row_8_8_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceeccodes_1_1codes__index__select.html" target="_self">codes_index_select</a></td><td class="desc">Select the message subset with key==value </td></tr>
+<tr id="row_8_9_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceeccodes_1_1codes__new__from__message.html" target="_self">codes_new_from_message</a></td><td class="desc">Create a new message in memory from an integer or character array containting the coded message </td></tr>
+<tr id="row_8_10_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceeccodes_1_1codes__read__bytes.html" target="_self">codes_read_bytes</a></td><td class="desc">Reads nbytes bytes into the buffer from a file opened with codes_open_file </td></tr>
+<tr id="row_8_11_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceeccodes_1_1codes__read__from__file.html" target="_self">codes_read_from_file</a></td><td class="desc">Reads a message in the buffer array from the file opened with codes_open_file </td></tr>
+<tr id="row_8_12_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceeccodes_1_1codes__set.html" target="_self">codes_set</a></td><td class="desc">Set the value for a key in a grib message </td></tr>
+<tr id="row_8_13_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceeccodes_1_1codes__write__bytes.html" target="_self">codes_write_bytes</a></td><td class="desc">Write nbytes bytes from the buffer in a file opened with codes_open_file </td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/bc_s.png b/html/bc_s.png
new file mode 100644
index 0000000..224b29a
Binary files /dev/null and b/html/bc_s.png differ
diff --git a/html/bdwn.png b/html/bdwn.png
new file mode 100644
index 0000000..940a0b9
Binary files /dev/null and b/html/bdwn.png differ
diff --git a/html/classec_codes_1_1_codes_internal_error.html b/html/classec_codes_1_1_codes_internal_error.html
new file mode 100644
index 0000000..e22d1e0
--- /dev/null
+++ b/html/classec_codes_1_1_codes_internal_error.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: CodesInternalError Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="namespaceec_codes.html">ecCodes</a></li><li class="navelem"><a class="el" href="classec_codes_1_1_codes_internal_error.html">CodesInternalError</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">CodesInternalError Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Wrap errors coming from the C API in a Python exception object.  
+ <a href="classec_codes_1_1_codes_internal_error.html#details">More...</a></p>
+
+<p>Inherits Exception.</p>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Wrap errors coming from the C API in a Python exception object. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>ecCodes.py</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/classeccodes.html b/html/classeccodes.html
new file mode 100644
index 0000000..7a527ba
--- /dev/null
+++ b/html/classeccodes.html
@@ -0,0 +1,6126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: eccodes Module Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Data Types</a> |
+<a href="#pub-methods">Public Member Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">eccodes Module Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Module eccodes<br/>
+ This is the <b>Fortran90</b> interface for <a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a>.  
+ <a href="classeccodes.html#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Data Types</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">interface  </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get.html">codes_get</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Get the value for a key from a grib message.  <a href="interfaceeccodes_1_1codes__get.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">interface  </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get__element.html">codes_get_element</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Get a value of specified index from an array key.  <a href="interfaceeccodes_1_1codes__get__element.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">interface  </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get__message__size.html">codes_get_message_size</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Get the size of a coded message.  <a href="interfaceeccodes_1_1codes__get__message__size.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">interface  </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get__size.html">codes_get_size</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Get the size of an array key.  <a href="interfaceeccodes_1_1codes__get__size.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">interface  </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__grib__find__nearest.html">codes_grib_find_nearest</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Find the nearest point/points of a given latitude/longitude point.  <a href="interfaceeccodes_1_1codes__grib__find__nearest.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">interface  </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__grib__get__data.html">codes_grib_get_data</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Get latitude/longitude and data values.  <a href="interfaceeccodes_1_1codes__grib__get__data.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">interface  </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__index__get.html">codes_index_get</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="interfaceeccodes_1_1codes__index__get.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">interface  </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__index__get__size.html">codes_index_get_size</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Get the number of distinct values of the key in argument contained in the index.  <a href="interfaceeccodes_1_1codes__index__get__size.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">interface  </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__index__select.html">codes_index_select</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="interfaceeccodes_1_1codes__index__select.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">interface  </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__new__from__message.html">codes_new_from_message</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Create a new message in memory from an integer or character array containting the coded message.  <a href="interfaceeccodes_1_1codes__new__from__message.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">interface  </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__read__bytes.html">codes_read_bytes</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Reads nbytes bytes into the buffer from a file opened with codes_open_file.  <a href="interfaceeccodes_1_1codes__read__bytes.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">interface  </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__read__from__file.html">codes_read_from_file</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Reads a message in the buffer array from the file opened with codes_open_file.  <a href="interfaceeccodes_1_1codes__read__from__file.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">interface  </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__set.html">codes_set</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Set the value for a key in a grib message.  <a href="interfaceeccodes_1_1codes__set.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">interface  </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__write__bytes.html">codes_write_bytes</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Write nbytes bytes from the buffer in a file opened with codes_open_file.  <a href="interfaceeccodes_1_1codes__write__bytes.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:aa85273eb59a545d73f7e3a48516fd5f9"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#aa85273eb59a545d73f7e3a48516fd5f9">codes_set_missing</a> (id, key, status)</td></tr>
+<tr class="memdesc:aa85273eb59a545d73f7e3a48516fd5f9"><td class="mdescLeft"> </td><td class="mdescRight">Wrapper for eccodes.  <a href="#aa85273eb59a545d73f7e3a48516fd5f9">More...</a><br/></td></tr>
+<tr class="separator:aa85273eb59a545d73f7e3a48516fd5f9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5f52ecf1abe0a68a32517fe2a0d08058"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a5f52ecf1abe0a68a32517fe2a0d08058">codes_index_create</a> (indexid, filename, keys, status)</td></tr>
+<tr class="memdesc:a5f52ecf1abe0a68a32517fe2a0d08058"><td class="mdescLeft"> </td><td class="mdescRight">Create a new index form a file.  <a href="#a5f52ecf1abe0a68a32517fe2a0d08058">More...</a><br/></td></tr>
+<tr class="separator:a5f52ecf1abe0a68a32517fe2a0d08058"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af89d3c57b15bdbd00241358a10b836a8"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#af89d3c57b15bdbd00241358a10b836a8">codes_index_add_file</a> (indexid, filename, status)</td></tr>
+<tr class="memdesc:af89d3c57b15bdbd00241358a10b836a8"><td class="mdescLeft"> </td><td class="mdescRight">Add a file to an index.  <a href="#af89d3c57b15bdbd00241358a10b836a8">More...</a><br/></td></tr>
+<tr class="separator:af89d3c57b15bdbd00241358a10b836a8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0d2104143f36bdfb5c7cccb9b56ae3f0"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a0d2104143f36bdfb5c7cccb9b56ae3f0">codes_index_get_size_long</a> (indexid, key, size, status)</td></tr>
+<tr class="memdesc:a0d2104143f36bdfb5c7cccb9b56ae3f0"><td class="mdescLeft"> </td><td class="mdescRight">Get the number of distinct values of the key in argument contained in the index.  <a href="#a0d2104143f36bdfb5c7cccb9b56ae3f0">More...</a><br/></td></tr>
+<tr class="separator:a0d2104143f36bdfb5c7cccb9b56ae3f0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeb1c3a999e4726895a94acb9b0de518c"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#aeb1c3a999e4726895a94acb9b0de518c">codes_index_get_size_int</a> (indexid, key, size, status)</td></tr>
+<tr class="memdesc:aeb1c3a999e4726895a94acb9b0de518c"><td class="mdescLeft"> </td><td class="mdescRight">Get the number of distinct values of the key in argument contained in the index.  <a href="#aeb1c3a999e4726895a94acb9b0de518c">More...</a><br/></td></tr>
+<tr class="separator:aeb1c3a999e4726895a94acb9b0de518c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a26cf731cfda4b350500d8520ea674341"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a26cf731cfda4b350500d8520ea674341">codes_index_get_int</a> (indexid, key, values, status)</td></tr>
+<tr class="memdesc:a26cf731cfda4b350500d8520ea674341"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="#a26cf731cfda4b350500d8520ea674341">More...</a><br/></td></tr>
+<tr class="separator:a26cf731cfda4b350500d8520ea674341"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afa9bf87d988de7eb04a9de9982e6112f"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#afa9bf87d988de7eb04a9de9982e6112f">codes_index_get_long</a> (indexid, key, values, status)</td></tr>
+<tr class="memdesc:afa9bf87d988de7eb04a9de9982e6112f"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="#afa9bf87d988de7eb04a9de9982e6112f">More...</a><br/></td></tr>
+<tr class="separator:afa9bf87d988de7eb04a9de9982e6112f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aedc38b28a7a27b5e042f7a5a17c73001"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#aedc38b28a7a27b5e042f7a5a17c73001">codes_index_get_real8</a> (indexid, key, values, status)</td></tr>
+<tr class="memdesc:aedc38b28a7a27b5e042f7a5a17c73001"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="#aedc38b28a7a27b5e042f7a5a17c73001">More...</a><br/></td></tr>
+<tr class="separator:aedc38b28a7a27b5e042f7a5a17c73001"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae5eb8fbe2de7d547bc92baddaf77adf1"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ae5eb8fbe2de7d547bc92baddaf77adf1">codes_index_get_string</a> (indexid, key, values, status)</td></tr>
+<tr class="memdesc:ae5eb8fbe2de7d547bc92baddaf77adf1"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="#ae5eb8fbe2de7d547bc92baddaf77adf1">More...</a><br/></td></tr>
+<tr class="separator:ae5eb8fbe2de7d547bc92baddaf77adf1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a500fe1c101af888362bb60a94c68085e"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a500fe1c101af888362bb60a94c68085e">codes_index_select_string</a> (indexid, key, value, status)</td></tr>
+<tr class="memdesc:a500fe1c101af888362bb60a94c68085e"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="#a500fe1c101af888362bb60a94c68085e">More...</a><br/></td></tr>
+<tr class="separator:a500fe1c101af888362bb60a94c68085e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac84dca14749c6c8f7b1b32dbcb8c8f88"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ac84dca14749c6c8f7b1b32dbcb8c8f88">codes_index_select_int</a> (indexid, key, value, status)</td></tr>
+<tr class="memdesc:ac84dca14749c6c8f7b1b32dbcb8c8f88"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="#ac84dca14749c6c8f7b1b32dbcb8c8f88">More...</a><br/></td></tr>
+<tr class="separator:ac84dca14749c6c8f7b1b32dbcb8c8f88"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6acd94d169fc462c5babb5d654c07612"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a6acd94d169fc462c5babb5d654c07612">codes_index_select_long</a> (indexid, key, value, status)</td></tr>
+<tr class="memdesc:a6acd94d169fc462c5babb5d654c07612"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="#a6acd94d169fc462c5babb5d654c07612">More...</a><br/></td></tr>
+<tr class="separator:a6acd94d169fc462c5babb5d654c07612"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae1a4e9f83a13d8ce9b046f141ee990cd"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ae1a4e9f83a13d8ce9b046f141ee990cd">codes_index_select_real8</a> (indexid, key, value, status)</td></tr>
+<tr class="memdesc:ae1a4e9f83a13d8ce9b046f141ee990cd"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="#ae1a4e9f83a13d8ce9b046f141ee990cd">More...</a><br/></td></tr>
+<tr class="separator:ae1a4e9f83a13d8ce9b046f141ee990cd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2852e5519e2ff8596e461986b99092d7"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a2852e5519e2ff8596e461986b99092d7">codes_new_from_index</a> (indexid, msgid, status)</td></tr>
+<tr class="memdesc:a2852e5519e2ff8596e461986b99092d7"><td class="mdescLeft"> </td><td class="mdescRight">Create a new handle from an index after having selected the key values.  <a href="#a2852e5519e2ff8596e461986b99092d7">More...</a><br/></td></tr>
+<tr class="separator:a2852e5519e2ff8596e461986b99092d7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a16dfcaea7b7c6c77794914d0570f5bc9"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a16dfcaea7b7c6c77794914d0570f5bc9">codes_index_read</a> (indexid, filename, status)</td></tr>
+<tr class="memdesc:a16dfcaea7b7c6c77794914d0570f5bc9"><td class="mdescLeft"> </td><td class="mdescRight">Load an index file previously created with <a class="el" href="classeccodes.html#afd0c12a42f60fe16eabc8b0fca41ff05">codes_index_write</a>.  <a href="#a16dfcaea7b7c6c77794914d0570f5bc9">More...</a><br/></td></tr>
+<tr class="separator:a16dfcaea7b7c6c77794914d0570f5bc9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afd0c12a42f60fe16eabc8b0fca41ff05"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#afd0c12a42f60fe16eabc8b0fca41ff05">codes_index_write</a> (indexid, filename, status)</td></tr>
+<tr class="memdesc:afd0c12a42f60fe16eabc8b0fca41ff05"><td class="mdescLeft"> </td><td class="mdescRight">Saves an index to a file for later reuse.  <a href="#afd0c12a42f60fe16eabc8b0fca41ff05">More...</a><br/></td></tr>
+<tr class="separator:afd0c12a42f60fe16eabc8b0fca41ff05"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8fba1de775308d8a1f0c035c51e3a42d"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a8fba1de775308d8a1f0c035c51e3a42d">codes_index_release</a> (indexid, status)</td></tr>
+<tr class="memdesc:a8fba1de775308d8a1f0c035c51e3a42d"><td class="mdescLeft"> </td><td class="mdescRight">Delete the index.  <a href="#a8fba1de775308d8a1f0c035c51e3a42d">More...</a><br/></td></tr>
+<tr class="separator:a8fba1de775308d8a1f0c035c51e3a42d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a28594e26f2f4b92b9c60e943dd8e1be3"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a28594e26f2f4b92b9c60e943dd8e1be3">codes_open_file</a> (ifile, filename, mode, status)</td></tr>
+<tr class="memdesc:a28594e26f2f4b92b9c60e943dd8e1be3"><td class="mdescLeft"> </td><td class="mdescRight">Open a file according to a mode.  <a href="#a28594e26f2f4b92b9c60e943dd8e1be3">More...</a><br/></td></tr>
+<tr class="separator:a28594e26f2f4b92b9c60e943dd8e1be3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a30dcd3a6d9d4b084f1dc9d617927b99a"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a30dcd3a6d9d4b084f1dc9d617927b99a">codes_read_bytes_char</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a30dcd3a6d9d4b084f1dc9d617927b99a"><td class="mdescLeft"> </td><td class="mdescRight">Reads nbytes bytes into the buffer from a file opened with codes_open_file.  <a href="#a30dcd3a6d9d4b084f1dc9d617927b99a">More...</a><br/></td></tr>
+<tr class="separator:a30dcd3a6d9d4b084f1dc9d617927b99a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aea71591e62a4a6f42682ceb5979c0631"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#aea71591e62a4a6f42682ceb5979c0631">codes_read_bytes_char_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:aea71591e62a4a6f42682ceb5979c0631"><td class="mdescLeft"> </td><td class="mdescRight">Reads nbytes bytes into the buffer from a file opened with codes_open_file.  <a href="#aea71591e62a4a6f42682ceb5979c0631">More...</a><br/></td></tr>
+<tr class="separator:aea71591e62a4a6f42682ceb5979c0631"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0b75e479138c6fe2b49cacef123a1c8e"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a0b75e479138c6fe2b49cacef123a1c8e">codes_read_bytes_int4</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a0b75e479138c6fe2b49cacef123a1c8e"><td class="mdescLeft"> </td><td class="mdescRight">Reads nbytes bytes into the buffer from a file opened with codes_open_file.  <a href="#a0b75e479138c6fe2b49cacef123a1c8e">More...</a><br/></td></tr>
+<tr class="separator:a0b75e479138c6fe2b49cacef123a1c8e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad1be70ac4cc7c2c5775e3bc6b607c4df"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ad1be70ac4cc7c2c5775e3bc6b607c4df">codes_read_bytes_int4_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:ad1be70ac4cc7c2c5775e3bc6b607c4df"><td class="mdescLeft"> </td><td class="mdescRight">Reads nbytes bytes into the buffer from a file opened with codes_open_file.  <a href="#ad1be70ac4cc7c2c5775e3bc6b607c4df">More...</a><br/></td></tr>
+<tr class="separator:ad1be70ac4cc7c2c5775e3bc6b607c4df"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a19f70122369224f1ef3513bf7f351e86"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a19f70122369224f1ef3513bf7f351e86">codes_read_bytes_real4</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a19f70122369224f1ef3513bf7f351e86"><td class="mdescLeft"> </td><td class="mdescRight">Reads nbytes bytes into the buffer from a file opened with codes_open_file.  <a href="#a19f70122369224f1ef3513bf7f351e86">More...</a><br/></td></tr>
+<tr class="separator:a19f70122369224f1ef3513bf7f351e86"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9bac4f78f245e52303e85d2ee142d073"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a9bac4f78f245e52303e85d2ee142d073">codes_read_bytes_real4_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a9bac4f78f245e52303e85d2ee142d073"><td class="mdescLeft"> </td><td class="mdescRight">Reads nbytes bytes into the buffer from a file opened with codes_open_file.  <a href="#a9bac4f78f245e52303e85d2ee142d073">More...</a><br/></td></tr>
+<tr class="separator:a9bac4f78f245e52303e85d2ee142d073"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4e1e0bb73d3fafe62685a3f7191334e4"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a4e1e0bb73d3fafe62685a3f7191334e4">codes_read_bytes_real8</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a4e1e0bb73d3fafe62685a3f7191334e4"><td class="mdescLeft"> </td><td class="mdescRight">Reads nbytes bytes into the buffer from a file opened with codes_open_file.  <a href="#a4e1e0bb73d3fafe62685a3f7191334e4">More...</a><br/></td></tr>
+<tr class="separator:a4e1e0bb73d3fafe62685a3f7191334e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adec76dd3ecf49b71ded2545054828c3d"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#adec76dd3ecf49b71ded2545054828c3d">codes_read_bytes_real8_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:adec76dd3ecf49b71ded2545054828c3d"><td class="mdescLeft"> </td><td class="mdescRight">Reads nbytes bytes into the buffer from a file opened with codes_open_file.  <a href="#adec76dd3ecf49b71ded2545054828c3d">More...</a><br/></td></tr>
+<tr class="separator:adec76dd3ecf49b71ded2545054828c3d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7b5b61cc34b32aae4c3f2deeacbc50ae"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a7b5b61cc34b32aae4c3f2deeacbc50ae">codes_read_from_file_int4</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a7b5b61cc34b32aae4c3f2deeacbc50ae"><td class="mdescLeft"> </td><td class="mdescRight">Reads a message in the buffer array from the file opened with codes_open_file.  <a href="#a7b5b61cc34b32aae4c3f2deeacbc50ae">More...</a><br/></td></tr>
+<tr class="separator:a7b5b61cc34b32aae4c3f2deeacbc50ae"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa04bacd625a2a87d7e490c0361643da3"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#aa04bacd625a2a87d7e490c0361643da3">codes_read_from_file_int4_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:aa04bacd625a2a87d7e490c0361643da3"><td class="mdescLeft"> </td><td class="mdescRight">Reads a message in the buffer array from the file opened with codes_open_file.  <a href="#aa04bacd625a2a87d7e490c0361643da3">More...</a><br/></td></tr>
+<tr class="separator:aa04bacd625a2a87d7e490c0361643da3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa4182b2add068f538b335c8efd1a8d5f"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#aa4182b2add068f538b335c8efd1a8d5f">codes_read_from_file_real4</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:aa4182b2add068f538b335c8efd1a8d5f"><td class="mdescLeft"> </td><td class="mdescRight">Reads a message in the buffer array from the file opened with codes_open_file.  <a href="#aa4182b2add068f538b335c8efd1a8d5f">More...</a><br/></td></tr>
+<tr class="separator:aa4182b2add068f538b335c8efd1a8d5f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae866f7aa5270100094390b465e953975"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ae866f7aa5270100094390b465e953975">codes_read_from_file_real4_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:ae866f7aa5270100094390b465e953975"><td class="mdescLeft"> </td><td class="mdescRight">Reads a message in the buffer array from the file opened with codes_open_file.  <a href="#ae866f7aa5270100094390b465e953975">More...</a><br/></td></tr>
+<tr class="separator:ae866f7aa5270100094390b465e953975"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2ff542236ca5d1bdeb7192c5c8eca94f"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a2ff542236ca5d1bdeb7192c5c8eca94f">codes_read_from_file_real8</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a2ff542236ca5d1bdeb7192c5c8eca94f"><td class="mdescLeft"> </td><td class="mdescRight">Reads a message in the buffer array from the file opened with codes_open_file.  <a href="#a2ff542236ca5d1bdeb7192c5c8eca94f">More...</a><br/></td></tr>
+<tr class="separator:a2ff542236ca5d1bdeb7192c5c8eca94f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab8fff9495aaf984fb909367290b45591"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ab8fff9495aaf984fb909367290b45591">codes_read_from_file_real8_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:ab8fff9495aaf984fb909367290b45591"><td class="mdescLeft"> </td><td class="mdescRight">Reads a message in the buffer array from the file opened with codes_open_file.  <a href="#ab8fff9495aaf984fb909367290b45591">More...</a><br/></td></tr>
+<tr class="separator:ab8fff9495aaf984fb909367290b45591"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab84434f52a4a41e68bf3103c392482ae"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ab84434f52a4a41e68bf3103c392482ae">codes_read_from_file_char</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:ab84434f52a4a41e68bf3103c392482ae"><td class="mdescLeft"> </td><td class="mdescRight">Reads a message in the buffer array from the file opened with codes_open_file.  <a href="#ab84434f52a4a41e68bf3103c392482ae">More...</a><br/></td></tr>
+<tr class="separator:ab84434f52a4a41e68bf3103c392482ae"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9ca8b8009071657b338508a3d6709b8d"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a9ca8b8009071657b338508a3d6709b8d">codes_read_from_file_char_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a9ca8b8009071657b338508a3d6709b8d"><td class="mdescLeft"> </td><td class="mdescRight">Reads a message in the buffer array from the file opened with codes_open_file.  <a href="#a9ca8b8009071657b338508a3d6709b8d">More...</a><br/></td></tr>
+<tr class="separator:a9ca8b8009071657b338508a3d6709b8d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acdb3a889fbd731811821d95d6126e41a"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#acdb3a889fbd731811821d95d6126e41a">codes_write_bytes_char</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:acdb3a889fbd731811821d95d6126e41a"><td class="mdescLeft"> </td><td class="mdescRight">Write nbytes bytes from the buffer in a file opened with codes_open_file.  <a href="#acdb3a889fbd731811821d95d6126e41a">More...</a><br/></td></tr>
+<tr class="separator:acdb3a889fbd731811821d95d6126e41a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a02dd901fef7e6a4cb8ab50ade61e6a66"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a02dd901fef7e6a4cb8ab50ade61e6a66">codes_write_bytes_char_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a02dd901fef7e6a4cb8ab50ade61e6a66"><td class="mdescLeft"> </td><td class="mdescRight">Write nbytes bytes from the buffer in a file opened with codes_open_file.  <a href="#a02dd901fef7e6a4cb8ab50ade61e6a66">More...</a><br/></td></tr>
+<tr class="separator:a02dd901fef7e6a4cb8ab50ade61e6a66"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abe46cbe07d6a64845bf07e21caa3ae94"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#abe46cbe07d6a64845bf07e21caa3ae94">codes_write_bytes_int4</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:abe46cbe07d6a64845bf07e21caa3ae94"><td class="mdescLeft"> </td><td class="mdescRight">Write nbytes bytes from the buffer in a file opened with codes_open_file.  <a href="#abe46cbe07d6a64845bf07e21caa3ae94">More...</a><br/></td></tr>
+<tr class="separator:abe46cbe07d6a64845bf07e21caa3ae94"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a771149b4e451839ed7713540de92ce27"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a771149b4e451839ed7713540de92ce27">codes_write_bytes_int4_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a771149b4e451839ed7713540de92ce27"><td class="mdescLeft"> </td><td class="mdescRight">Write nbytes bytes from the buffer in a file opened with codes_open_file.  <a href="#a771149b4e451839ed7713540de92ce27">More...</a><br/></td></tr>
+<tr class="separator:a771149b4e451839ed7713540de92ce27"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7f69c7e70900ace352970851a4ee5267"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a7f69c7e70900ace352970851a4ee5267">codes_write_bytes_real4</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a7f69c7e70900ace352970851a4ee5267"><td class="mdescLeft"> </td><td class="mdescRight">Write nbytes bytes from the buffer in a file opened with codes_open_file.  <a href="#a7f69c7e70900ace352970851a4ee5267">More...</a><br/></td></tr>
+<tr class="separator:a7f69c7e70900ace352970851a4ee5267"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7467f8b7c399f5579bd4be244de100dc"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a7467f8b7c399f5579bd4be244de100dc">codes_write_bytes_real4_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a7467f8b7c399f5579bd4be244de100dc"><td class="mdescLeft"> </td><td class="mdescRight">Write nbytes bytes from the buffer in a file opened with codes_open_file.  <a href="#a7467f8b7c399f5579bd4be244de100dc">More...</a><br/></td></tr>
+<tr class="separator:a7467f8b7c399f5579bd4be244de100dc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aabda087d7f8ba266b0b9f307270f876a"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#aabda087d7f8ba266b0b9f307270f876a">codes_write_bytes_real8</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:aabda087d7f8ba266b0b9f307270f876a"><td class="mdescLeft"> </td><td class="mdescRight">Write nbytes bytes from the buffer in a file opened with codes_open_file.  <a href="#aabda087d7f8ba266b0b9f307270f876a">More...</a><br/></td></tr>
+<tr class="separator:aabda087d7f8ba266b0b9f307270f876a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2d0be96a6b529f7e0b8079318a5376bb"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a2d0be96a6b529f7e0b8079318a5376bb">codes_write_bytes_real8_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a2d0be96a6b529f7e0b8079318a5376bb"><td class="mdescLeft"> </td><td class="mdescRight">Write nbytes bytes from the buffer in a file opened with codes_open_file.  <a href="#a2d0be96a6b529f7e0b8079318a5376bb">More...</a><br/></td></tr>
+<tr class="separator:a2d0be96a6b529f7e0b8079318a5376bb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a436a01aabf91cdbb4c5902a5d1a2886e"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a436a01aabf91cdbb4c5902a5d1a2886e">codes_close_file</a> (ifile, status)</td></tr>
+<tr class="memdesc:a436a01aabf91cdbb4c5902a5d1a2886e"><td class="mdescLeft"> </td><td class="mdescRight">Close a file.  <a href="#a436a01aabf91cdbb4c5902a5d1a2886e">More...</a><br/></td></tr>
+<tr class="separator:a436a01aabf91cdbb4c5902a5d1a2886e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0a09420f86caf79873b2fb067e360049"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a0a09420f86caf79873b2fb067e360049">codes_count_in_file</a> (ifile, n, status)</td></tr>
+<tr class="memdesc:a0a09420f86caf79873b2fb067e360049"><td class="mdescLeft"> </td><td class="mdescRight">Counts the messages in a file.  <a href="#a0a09420f86caf79873b2fb067e360049">More...</a><br/></td></tr>
+<tr class="separator:a0a09420f86caf79873b2fb067e360049"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5533c6fb8bd7d8f622c89484b7bbdfb6"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a5533c6fb8bd7d8f622c89484b7bbdfb6">codes_new_from_file</a> (ifile, msgid, product_kind, status)</td></tr>
+<tr class="memdesc:a5533c6fb8bd7d8f622c89484b7bbdfb6"><td class="mdescLeft"> </td><td class="mdescRight">Load in memory a message from a file.  <a href="#a5533c6fb8bd7d8f622c89484b7bbdfb6">More...</a><br/></td></tr>
+<tr class="separator:a5533c6fb8bd7d8f622c89484b7bbdfb6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa468943e1c669487375b2e3d46ff84b1"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#aa468943e1c669487375b2e3d46ff84b1">codes_any_new_from_file</a> (ifile, msgid, status)</td></tr>
+<tr class="memdesc:aa468943e1c669487375b2e3d46ff84b1"><td class="mdescLeft"> </td><td class="mdescRight">Load in memory a message from a file.  <a href="#aa468943e1c669487375b2e3d46ff84b1">More...</a><br/></td></tr>
+<tr class="separator:aa468943e1c669487375b2e3d46ff84b1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7a21cb68f0d5058a63a4ba92a938fd27"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a7a21cb68f0d5058a63a4ba92a938fd27">codes_grib_new_from_file</a> (ifile, gribid, status)</td></tr>
+<tr class="memdesc:a7a21cb68f0d5058a63a4ba92a938fd27"><td class="mdescLeft"> </td><td class="mdescRight">Load in memory a GRIB message from a file.  <a href="#a7a21cb68f0d5058a63a4ba92a938fd27">More...</a><br/></td></tr>
+<tr class="separator:a7a21cb68f0d5058a63a4ba92a938fd27"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a94050d64954482cd82ea6f007fdc9ac0"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a94050d64954482cd82ea6f007fdc9ac0">codes_bufr_new_from_file</a> (ifile, bufrid, status)</td></tr>
+<tr class="memdesc:a94050d64954482cd82ea6f007fdc9ac0"><td class="mdescLeft"> </td><td class="mdescRight">Load in memory a BUFR message from a file.  <a href="#a94050d64954482cd82ea6f007fdc9ac0">More...</a><br/></td></tr>
+<tr class="separator:a94050d64954482cd82ea6f007fdc9ac0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9734463b78e04c3e803acb25d3314436"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a9734463b78e04c3e803acb25d3314436">codes_new_from_message_char</a> (msgid, message, status)</td></tr>
+<tr class="memdesc:a9734463b78e04c3e803acb25d3314436"><td class="mdescLeft"> </td><td class="mdescRight">Create a new message in memory from a character array containting the coded message.  <a href="#a9734463b78e04c3e803acb25d3314436">More...</a><br/></td></tr>
+<tr class="separator:a9734463b78e04c3e803acb25d3314436"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af9d90d4940f54ecebb44acb69a59d496"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#af9d90d4940f54ecebb44acb69a59d496">codes_new_from_message_int4</a> (msgid, message, status)</td></tr>
+<tr class="memdesc:af9d90d4940f54ecebb44acb69a59d496"><td class="mdescLeft"> </td><td class="mdescRight">Create a new message in memory from an integer array containting the coded message.  <a href="#af9d90d4940f54ecebb44acb69a59d496">More...</a><br/></td></tr>
+<tr class="separator:af9d90d4940f54ecebb44acb69a59d496"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acfc477ba642e007ec55c7e4ce2c31a9d"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#acfc477ba642e007ec55c7e4ce2c31a9d">codes_grib_new_from_samples</a> (gribid, samplename, status)</td></tr>
+<tr class="memdesc:acfc477ba642e007ec55c7e4ce2c31a9d"><td class="mdescLeft"> </td><td class="mdescRight">Create a new valid gribid from a GRIB sample contained in a samples directory pointed by the environment variable ECCODES_SAMPLES_PATH.  <a href="#acfc477ba642e007ec55c7e4ce2c31a9d">More...</a><br/></td></tr>
+<tr class="separator:acfc477ba642e007ec55c7e4ce2c31a9d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6d32d26f2076db60d78e1c2d222dd01d"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a6d32d26f2076db60d78e1c2d222dd01d">codes_bufr_new_from_samples</a> (bufrid, samplename, status)</td></tr>
+<tr class="memdesc:a6d32d26f2076db60d78e1c2d222dd01d"><td class="mdescLeft"> </td><td class="mdescRight">Create a new valid bufrid from a BUFR sample contained in a samples directory pointed by the environment variable ECCODES_SAMPLES_PATH.  <a href="#a6d32d26f2076db60d78e1c2d222dd01d">More...</a><br/></td></tr>
+<tr class="separator:a6d32d26f2076db60d78e1c2d222dd01d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1c0ab28b0ae33f04d267d794a8bdd4b7"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7">codes_release</a> (msgid, status)</td></tr>
+<tr class="memdesc:a1c0ab28b0ae33f04d267d794a8bdd4b7"><td class="mdescLeft"> </td><td class="mdescRight">Free the memory for the message referred as msgid.  <a href="#a1c0ab28b0ae33f04d267d794a8bdd4b7">More...</a><br/></td></tr>
+<tr class="separator:a1c0ab28b0ae33f04d267d794a8bdd4b7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a94c85dbc797f98a177795ff9a8ad8035"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a94c85dbc797f98a177795ff9a8ad8035">codes_clone</a> (msgid_src, msgid_dest, status)</td></tr>
+<tr class="memdesc:a94c85dbc797f98a177795ff9a8ad8035"><td class="mdescLeft"> </td><td class="mdescRight">Create a copy of a message.  <a href="#a94c85dbc797f98a177795ff9a8ad8035">More...</a><br/></td></tr>
+<tr class="separator:a94c85dbc797f98a177795ff9a8ad8035"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8bba3684a289b1e8c6bcea0b67c45b5d"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a8bba3684a289b1e8c6bcea0b67c45b5d">codes_copy_namespace</a> (gribid_src, namespace, gribid_dest, status)</td></tr>
+<tr class="memdesc:a8bba3684a289b1e8c6bcea0b67c45b5d"><td class="mdescLeft"> </td><td class="mdescRight">Copy the value of all the keys belonging to a namespace from the source message to the destination message.  <a href="#a8bba3684a289b1e8c6bcea0b67c45b5d">More...</a><br/></td></tr>
+<tr class="separator:a8bba3684a289b1e8c6bcea0b67c45b5d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1cd5ff5ea308443bfe166974d9ab1363"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a1cd5ff5ea308443bfe166974d9ab1363">codes_check</a> (status, caller, string)</td></tr>
+<tr class="memdesc:a1cd5ff5ea308443bfe166974d9ab1363"><td class="mdescLeft"> </td><td class="mdescRight">Check the status returned by a subroutine.  <a href="#a1cd5ff5ea308443bfe166974d9ab1363">More...</a><br/></td></tr>
+<tr class="separator:a1cd5ff5ea308443bfe166974d9ab1363"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0e93200c0e6e4bdacaf1bec1e0a29ee7"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a0e93200c0e6e4bdacaf1bec1e0a29ee7">codes_grib_get_data_real4</a> (gribid, lats, lons, values, status)</td></tr>
+<tr class="memdesc:a0e93200c0e6e4bdacaf1bec1e0a29ee7"><td class="mdescLeft"> </td><td class="mdescRight">Get latitudes/longitudes/data values (real(4)).  <a href="#a0e93200c0e6e4bdacaf1bec1e0a29ee7">More...</a><br/></td></tr>
+<tr class="separator:a0e93200c0e6e4bdacaf1bec1e0a29ee7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a043bb1e696da61d06523ad35ae16fe8c"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a043bb1e696da61d06523ad35ae16fe8c">codes_grib_get_data_real8</a> (gribid, lats, lons, values, status)</td></tr>
+<tr class="memdesc:a043bb1e696da61d06523ad35ae16fe8c"><td class="mdescLeft"> </td><td class="mdescRight">Get latitudes/longitudes/data values (real(8)).  <a href="#a043bb1e696da61d06523ad35ae16fe8c">More...</a><br/></td></tr>
+<tr class="separator:a043bb1e696da61d06523ad35ae16fe8c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae9e9bae052da5148e4a0ca85f31c69b5"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ae9e9bae052da5148e4a0ca85f31c69b5">codes_keys_iterator_new</a> (msgid, iterid, namespace, status)</td></tr>
+<tr class="memdesc:ae9e9bae052da5148e4a0ca85f31c69b5"><td class="mdescLeft"> </td><td class="mdescRight">Create a new iterator on the keys.  <a href="#ae9e9bae052da5148e4a0ca85f31c69b5">More...</a><br/></td></tr>
+<tr class="separator:ae9e9bae052da5148e4a0ca85f31c69b5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaaa40acb7f8e05783e106c32a541a66d"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#aaaa40acb7f8e05783e106c32a541a66d">codes_keys_iterator_next</a> (iterid, status)</td></tr>
+<tr class="memdesc:aaaa40acb7f8e05783e106c32a541a66d"><td class="mdescLeft"> </td><td class="mdescRight">Advance to the next keys iterator value.  <a href="#aaaa40acb7f8e05783e106c32a541a66d">More...</a><br/></td></tr>
+<tr class="separator:aaaa40acb7f8e05783e106c32a541a66d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5d81274245d3a60ab85d657aa11512e5"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a5d81274245d3a60ab85d657aa11512e5">codes_keys_iterator_delete</a> (iterid, status)</td></tr>
+<tr class="memdesc:a5d81274245d3a60ab85d657aa11512e5"><td class="mdescLeft"> </td><td class="mdescRight">Delete a keys iterator and free memory.  <a href="#a5d81274245d3a60ab85d657aa11512e5">More...</a><br/></td></tr>
+<tr class="separator:a5d81274245d3a60ab85d657aa11512e5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a695b7f3f87bfb465908447ce51024221"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a695b7f3f87bfb465908447ce51024221">codes_keys_iterator_get_name</a> (iterid, name, status)</td></tr>
+<tr class="memdesc:a695b7f3f87bfb465908447ce51024221"><td class="mdescLeft"> </td><td class="mdescRight">Get the name of a key from a keys iterator.  <a href="#a695b7f3f87bfb465908447ce51024221">More...</a><br/></td></tr>
+<tr class="separator:a695b7f3f87bfb465908447ce51024221"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa6055f116c22830fc941b6db2e133d25"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#aa6055f116c22830fc941b6db2e133d25">codes_keys_iterator_rewind</a> (iterid, status)</td></tr>
+<tr class="memdesc:aa6055f116c22830fc941b6db2e133d25"><td class="mdescLeft"> </td><td class="mdescRight">Rewind a keys iterator.  <a href="#aa6055f116c22830fc941b6db2e133d25">More...</a><br/></td></tr>
+<tr class="separator:aa6055f116c22830fc941b6db2e133d25"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab5e1ab3efc1981c886e64e467c1b84a1"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ab5e1ab3efc1981c886e64e467c1b84a1">codes_dump</a> (msgid, status)</td></tr>
+<tr class="memdesc:ab5e1ab3efc1981c886e64e467c1b84a1"><td class="mdescLeft"> </td><td class="mdescRight">Dump the content of a message.  <a href="#ab5e1ab3efc1981c886e64e467c1b84a1">More...</a><br/></td></tr>
+<tr class="separator:ab5e1ab3efc1981c886e64e467c1b84a1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a835de867b8ad79cc43f127e7048712f3"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a> (error, error_message, status)</td></tr>
+<tr class="memdesc:a835de867b8ad79cc43f127e7048712f3"><td class="mdescLeft"> </td><td class="mdescRight">Get the error message given an error code.  <a href="#a835de867b8ad79cc43f127e7048712f3">More...</a><br/></td></tr>
+<tr class="separator:a835de867b8ad79cc43f127e7048712f3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac566c4909f1ea554517d256a780cf87f"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ac566c4909f1ea554517d256a780cf87f">codes_get_size_int</a> (msgid, key, size, status)</td></tr>
+<tr class="memdesc:ac566c4909f1ea554517d256a780cf87f"><td class="mdescLeft"> </td><td class="mdescRight">Get the size of an array key.  <a href="#ac566c4909f1ea554517d256a780cf87f">More...</a><br/></td></tr>
+<tr class="separator:ac566c4909f1ea554517d256a780cf87f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:accd5b68ef585873b05a3f61d7dda3f3a"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#accd5b68ef585873b05a3f61d7dda3f3a">codes_get_size_long</a> (msgid, key, size, status)</td></tr>
+<tr class="memdesc:accd5b68ef585873b05a3f61d7dda3f3a"><td class="mdescLeft"> </td><td class="mdescRight">Get the size of an array key.  <a href="#accd5b68ef585873b05a3f61d7dda3f3a">More...</a><br/></td></tr>
+<tr class="separator:accd5b68ef585873b05a3f61d7dda3f3a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a15e9f187ba45e4a334f270884c59651e"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a15e9f187ba45e4a334f270884c59651e">codes_get_int</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a15e9f187ba45e4a334f270884c59651e"><td class="mdescLeft"> </td><td class="mdescRight">Get the integer value of a key from a message.  <a href="#a15e9f187ba45e4a334f270884c59651e">More...</a><br/></td></tr>
+<tr class="separator:a15e9f187ba45e4a334f270884c59651e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad85e9d6d052fdcbfade2d201357e391d"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ad85e9d6d052fdcbfade2d201357e391d">codes_get_long</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:ad85e9d6d052fdcbfade2d201357e391d"><td class="mdescLeft"> </td><td class="mdescRight">Get the integer value of a key from a message.  <a href="#ad85e9d6d052fdcbfade2d201357e391d">More...</a><br/></td></tr>
+<tr class="separator:ad85e9d6d052fdcbfade2d201357e391d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aff0e850cce3105f72b76a603e104cce4"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#aff0e850cce3105f72b76a603e104cce4">codes_is_missing</a> (msgid, key, is_missing, status)</td></tr>
+<tr class="memdesc:aff0e850cce3105f72b76a603e104cce4"><td class="mdescLeft"> </td><td class="mdescRight">Check if the value of a key is MISSING.  <a href="#aff0e850cce3105f72b76a603e104cce4">More...</a><br/></td></tr>
+<tr class="separator:aff0e850cce3105f72b76a603e104cce4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4aeb717b8aba0e2898a83d56363bab98"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a4aeb717b8aba0e2898a83d56363bab98">codes_is_defined</a> (msgid, key, is_defined, status)</td></tr>
+<tr class="memdesc:a4aeb717b8aba0e2898a83d56363bab98"><td class="mdescLeft"> </td><td class="mdescRight">Check if a key is defined (exists in the message)  <a href="#a4aeb717b8aba0e2898a83d56363bab98">More...</a><br/></td></tr>
+<tr class="separator:a4aeb717b8aba0e2898a83d56363bab98"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab6c505dfdf5a75f51c07683abed39b68"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ab6c505dfdf5a75f51c07683abed39b68">codes_get_real4</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:ab6c505dfdf5a75f51c07683abed39b68"><td class="mdescLeft"> </td><td class="mdescRight">Get the real(4) value of a key from a message.  <a href="#ab6c505dfdf5a75f51c07683abed39b68">More...</a><br/></td></tr>
+<tr class="separator:ab6c505dfdf5a75f51c07683abed39b68"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2ca22327e21aca686d29f8953e235839"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a2ca22327e21aca686d29f8953e235839">codes_get_real8</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a2ca22327e21aca686d29f8953e235839"><td class="mdescLeft"> </td><td class="mdescRight">Get the real(8) value of a key from a message.  <a href="#a2ca22327e21aca686d29f8953e235839">More...</a><br/></td></tr>
+<tr class="separator:a2ca22327e21aca686d29f8953e235839"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9b71df8830b162b7773cf4d1446b4303"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a9b71df8830b162b7773cf4d1446b4303">codes_get_string</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a9b71df8830b162b7773cf4d1446b4303"><td class="mdescLeft"> </td><td class="mdescRight">Get the character value of a key from a message.  <a href="#a9b71df8830b162b7773cf4d1446b4303">More...</a><br/></td></tr>
+<tr class="separator:a9b71df8830b162b7773cf4d1446b4303"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a731aac9d5d75917e12048573ae86e7c6"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a731aac9d5d75917e12048573ae86e7c6">codes_get_string_array</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a731aac9d5d75917e12048573ae86e7c6"><td class="mdescLeft"> </td><td class="mdescRight">Get the string array of values for a key from a message.  <a href="#a731aac9d5d75917e12048573ae86e7c6">More...</a><br/></td></tr>
+<tr class="separator:a731aac9d5d75917e12048573ae86e7c6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aae3ccb53638a4d16daf98d937a96e8b6"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#aae3ccb53638a4d16daf98d937a96e8b6">codes_set_string_array</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:aae3ccb53638a4d16daf98d937a96e8b6"><td class="mdescLeft"> </td><td class="mdescRight">Set the string values for an array key in a message.  <a href="#aae3ccb53638a4d16daf98d937a96e8b6">More...</a><br/></td></tr>
+<tr class="separator:aae3ccb53638a4d16daf98d937a96e8b6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a620d907f796a466b9b849be12e96a274"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a620d907f796a466b9b849be12e96a274">codes_get_int_array</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a620d907f796a466b9b849be12e96a274"><td class="mdescLeft"> </td><td class="mdescRight">Get the integer array of values for a key from a message.  <a href="#a620d907f796a466b9b849be12e96a274">More...</a><br/></td></tr>
+<tr class="separator:a620d907f796a466b9b849be12e96a274"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0ff7f18601949da80f10d1614e0d0541"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a0ff7f18601949da80f10d1614e0d0541">codes_get_long_array</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a0ff7f18601949da80f10d1614e0d0541"><td class="mdescLeft"> </td><td class="mdescRight">Get the integer array of values for a key from a message.  <a href="#a0ff7f18601949da80f10d1614e0d0541">More...</a><br/></td></tr>
+<tr class="separator:a0ff7f18601949da80f10d1614e0d0541"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adee61373d840f0f6a73be5d574a47a1e"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#adee61373d840f0f6a73be5d574a47a1e">codes_get_byte_array</a> (msgid, key, value, length, status)</td></tr>
+<tr class="memdesc:adee61373d840f0f6a73be5d574a47a1e"><td class="mdescLeft"> </td><td class="mdescRight">Get the array of bytes (character) for a key from a message.  <a href="#adee61373d840f0f6a73be5d574a47a1e">More...</a><br/></td></tr>
+<tr class="separator:adee61373d840f0f6a73be5d574a47a1e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae1df5b7389172122fe2c84c4156f18d0"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ae1df5b7389172122fe2c84c4156f18d0">codes_get_real4_array</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:ae1df5b7389172122fe2c84c4156f18d0"><td class="mdescLeft"> </td><td class="mdescRight">Get the real(4) array of values for a key from a message.  <a href="#ae1df5b7389172122fe2c84c4156f18d0">More...</a><br/></td></tr>
+<tr class="separator:ae1df5b7389172122fe2c84c4156f18d0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4b28e570e54dad5a779e0452d3ed66d4"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a4b28e570e54dad5a779e0452d3ed66d4">codes_get_real8_array</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a4b28e570e54dad5a779e0452d3ed66d4"><td class="mdescLeft"> </td><td class="mdescRight">Get the real(8) array of values for a key from a message.  <a href="#a4b28e570e54dad5a779e0452d3ed66d4">More...</a><br/></td></tr>
+<tr class="separator:a4b28e570e54dad5a779e0452d3ed66d4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a95426fb251262a83fbdcc5ae86968b4b"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a95426fb251262a83fbdcc5ae86968b4b">codes_get_real4_element</a> (msgid, key, index, value, status)</td></tr>
+<tr class="memdesc:a95426fb251262a83fbdcc5ae86968b4b"><td class="mdescLeft"> </td><td class="mdescRight">Get a real(4) value of specified index from an array key.  <a href="#a95426fb251262a83fbdcc5ae86968b4b">More...</a><br/></td></tr>
+<tr class="separator:a95426fb251262a83fbdcc5ae86968b4b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac9ceb83558433f918eac6aeb00b620af"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ac9ceb83558433f918eac6aeb00b620af">codes_get_real8_element</a> (msgid, key, index, value, status)</td></tr>
+<tr class="memdesc:ac9ceb83558433f918eac6aeb00b620af"><td class="mdescLeft"> </td><td class="mdescRight">Get a real(8) value of specified index from an array key.  <a href="#ac9ceb83558433f918eac6aeb00b620af">More...</a><br/></td></tr>
+<tr class="separator:ac9ceb83558433f918eac6aeb00b620af"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0587c719213f5eb38afbb80cb30a2b8b"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a0587c719213f5eb38afbb80cb30a2b8b">codes_get_real4_elements</a> (msgid, key, index, value, status)</td></tr>
+<tr class="memdesc:a0587c719213f5eb38afbb80cb30a2b8b"><td class="mdescLeft"> </td><td class="mdescRight">Get the real(4) values whose indexes are stored in the array "index" from an array key.  <a href="#a0587c719213f5eb38afbb80cb30a2b8b">More...</a><br/></td></tr>
+<tr class="separator:a0587c719213f5eb38afbb80cb30a2b8b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1e550ade4f5781f19718fa8bdec802f9"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a1e550ade4f5781f19718fa8bdec802f9">codes_get_real8_elements</a> (msgid, key, index, value, status)</td></tr>
+<tr class="memdesc:a1e550ade4f5781f19718fa8bdec802f9"><td class="mdescLeft"> </td><td class="mdescRight">Get the real(8) values whose indexes are stored in the array "index" from an array key.  <a href="#a1e550ade4f5781f19718fa8bdec802f9">More...</a><br/></td></tr>
+<tr class="separator:a1e550ade4f5781f19718fa8bdec802f9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac060bb983b9e515db8ad7edd3d91ce9a"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ac060bb983b9e515db8ad7edd3d91ce9a">codes_set_int</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:ac060bb983b9e515db8ad7edd3d91ce9a"><td class="mdescLeft"> </td><td class="mdescRight">Set the integer value for a key in a message.  <a href="#ac060bb983b9e515db8ad7edd3d91ce9a">More...</a><br/></td></tr>
+<tr class="separator:ac060bb983b9e515db8ad7edd3d91ce9a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3c9cdc65f00b3c36742206e6e3dde864"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a3c9cdc65f00b3c36742206e6e3dde864">codes_set_long</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a3c9cdc65f00b3c36742206e6e3dde864"><td class="mdescLeft"> </td><td class="mdescRight">Set the integer value for a key in a message.  <a href="#a3c9cdc65f00b3c36742206e6e3dde864">More...</a><br/></td></tr>
+<tr class="separator:a3c9cdc65f00b3c36742206e6e3dde864"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2614a1e015c16370ed18cc360a14663e"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a2614a1e015c16370ed18cc360a14663e">codes_set_real4</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a2614a1e015c16370ed18cc360a14663e"><td class="mdescLeft"> </td><td class="mdescRight">Set the real(4) value for a key in a message.  <a href="#a2614a1e015c16370ed18cc360a14663e">More...</a><br/></td></tr>
+<tr class="separator:a2614a1e015c16370ed18cc360a14663e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4b20fe82de5ba6f8355ff8a5d2725b3d"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a4b20fe82de5ba6f8355ff8a5d2725b3d">codes_set_real8</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a4b20fe82de5ba6f8355ff8a5d2725b3d"><td class="mdescLeft"> </td><td class="mdescRight">Set the real(8) value for a key in a message.  <a href="#a4b20fe82de5ba6f8355ff8a5d2725b3d">More...</a><br/></td></tr>
+<tr class="separator:a4b20fe82de5ba6f8355ff8a5d2725b3d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a18b5890c85f15d5fefeefc2b99a09ce5"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a18b5890c85f15d5fefeefc2b99a09ce5">codes_set_int_array</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a18b5890c85f15d5fefeefc2b99a09ce5"><td class="mdescLeft"> </td><td class="mdescRight">Set the integers values for an array key in a message.  <a href="#a18b5890c85f15d5fefeefc2b99a09ce5">More...</a><br/></td></tr>
+<tr class="separator:a18b5890c85f15d5fefeefc2b99a09ce5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5fa893fca21268a9c12d93e9d8c664e3"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a5fa893fca21268a9c12d93e9d8c664e3">codes_set_long_array</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a5fa893fca21268a9c12d93e9d8c664e3"><td class="mdescLeft"> </td><td class="mdescRight">Set the integers values for an array key in a message.  <a href="#a5fa893fca21268a9c12d93e9d8c664e3">More...</a><br/></td></tr>
+<tr class="separator:a5fa893fca21268a9c12d93e9d8c664e3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a292d71c0a7252bdfded6a38aea4284be"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a292d71c0a7252bdfded6a38aea4284be">codes_set_byte_array</a> (msgid, key, value, length, status)</td></tr>
+<tr class="memdesc:a292d71c0a7252bdfded6a38aea4284be"><td class="mdescLeft"> </td><td class="mdescRight">Set the array of bytes (character) for a key in a message.  <a href="#a292d71c0a7252bdfded6a38aea4284be">More...</a><br/></td></tr>
+<tr class="separator:a292d71c0a7252bdfded6a38aea4284be"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aabaefc49c8d603bcf18a627dacc38f15"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#aabaefc49c8d603bcf18a627dacc38f15">codes_set_real4_array</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:aabaefc49c8d603bcf18a627dacc38f15"><td class="mdescLeft"> </td><td class="mdescRight">Set the real(4) values for an array key in a message.  <a href="#aabaefc49c8d603bcf18a627dacc38f15">More...</a><br/></td></tr>
+<tr class="separator:aabaefc49c8d603bcf18a627dacc38f15"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a14b3bc17ea1ee83936f32dd0fced44a4"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a14b3bc17ea1ee83936f32dd0fced44a4">codes_set_real8_array</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a14b3bc17ea1ee83936f32dd0fced44a4"><td class="mdescLeft"> </td><td class="mdescRight">Set the real(8) values for an array key in a message.  <a href="#a14b3bc17ea1ee83936f32dd0fced44a4">More...</a><br/></td></tr>
+<tr class="separator:a14b3bc17ea1ee83936f32dd0fced44a4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a50acfd20f8dff8b4e547135057ef119a"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a50acfd20f8dff8b4e547135057ef119a">codes_set_string</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a50acfd20f8dff8b4e547135057ef119a"><td class="mdescLeft"> </td><td class="mdescRight">*/  <a href="#a50acfd20f8dff8b4e547135057ef119a">More...</a><br/></td></tr>
+<tr class="separator:a50acfd20f8dff8b4e547135057ef119a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af4ff60a9bd8d0c1c0173242897db4816"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#af4ff60a9bd8d0c1c0173242897db4816">codes_get_message_size_int</a> (msgid, nbytes, status)</td></tr>
+<tr class="memdesc:af4ff60a9bd8d0c1c0173242897db4816"><td class="mdescLeft"> </td><td class="mdescRight">Get the size of a coded message.  <a href="#af4ff60a9bd8d0c1c0173242897db4816">More...</a><br/></td></tr>
+<tr class="separator:af4ff60a9bd8d0c1c0173242897db4816"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a032408e4f1a842a42fca23218ec85a4d"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a032408e4f1a842a42fca23218ec85a4d">codes_get_message_size_size_t</a> (msgid, nbytes, status)</td></tr>
+<tr class="memdesc:a032408e4f1a842a42fca23218ec85a4d"><td class="mdescLeft"> </td><td class="mdescRight">Get the size of a coded message.  <a href="#a032408e4f1a842a42fca23218ec85a4d">More...</a><br/></td></tr>
+<tr class="separator:a032408e4f1a842a42fca23218ec85a4d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afdd32c1a78f0a3d54992e0a6a6bfc66b"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#afdd32c1a78f0a3d54992e0a6a6bfc66b">codes_copy_message</a> (msgid, message, status)</td></tr>
+<tr class="memdesc:afdd32c1a78f0a3d54992e0a6a6bfc66b"><td class="mdescLeft"> </td><td class="mdescRight">Copy the coded message into an array.  <a href="#afdd32c1a78f0a3d54992e0a6a6bfc66b">More...</a><br/></td></tr>
+<tr class="separator:afdd32c1a78f0a3d54992e0a6a6bfc66b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad91213a6e3ee312c50dba0cdbf2bc55d"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ad91213a6e3ee312c50dba0cdbf2bc55d">codes_write</a> (msgid, ifile, status)</td></tr>
+<tr class="memdesc:ad91213a6e3ee312c50dba0cdbf2bc55d"><td class="mdescLeft"> </td><td class="mdescRight">Write the coded message to a file.  <a href="#ad91213a6e3ee312c50dba0cdbf2bc55d">More...</a><br/></td></tr>
+<tr class="separator:ad91213a6e3ee312c50dba0cdbf2bc55d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa1ef915b62ebf910254f05cb619c0168"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#aa1ef915b62ebf910254f05cb619c0168">codes_grib_multi_write</a> (multigribid, ifile, status)</td></tr>
+<tr class="memdesc:aa1ef915b62ebf910254f05cb619c0168"><td class="mdescLeft"> </td><td class="mdescRight">Write a multi field message to a file.  <a href="#aa1ef915b62ebf910254f05cb619c0168">More...</a><br/></td></tr>
+<tr class="separator:aa1ef915b62ebf910254f05cb619c0168"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a385aa2c504656d11812dd461819446ba"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a385aa2c504656d11812dd461819446ba">codes_grib_multi_append</a> (ingribid, startsection, multigribid, status)</td></tr>
+<tr class="memdesc:a385aa2c504656d11812dd461819446ba"><td class="mdescLeft"> </td><td class="mdescRight">Append a single field grib message to a multi field grib message.  <a href="#a385aa2c504656d11812dd461819446ba">More...</a><br/></td></tr>
+<tr class="separator:a385aa2c504656d11812dd461819446ba"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acb92b7a78966c0b2f53ee6e288bff673"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#acb92b7a78966c0b2f53ee6e288bff673">codes_grib_find_nearest_multiple</a> (gribid, is_lsm, inlats, inlons, outlats, outlons, values, distances, indexes, status)</td></tr>
+<tr class="memdesc:acb92b7a78966c0b2f53ee6e288bff673"><td class="mdescLeft"> </td><td class="mdescRight">Find the nearest point of a set of points whose latitudes and longitudes are given in the inlats, inlons arrays respectively.  <a href="#acb92b7a78966c0b2f53ee6e288bff673">More...</a><br/></td></tr>
+<tr class="separator:acb92b7a78966c0b2f53ee6e288bff673"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a036ae036cc766718ad224851d47d99a2"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a036ae036cc766718ad224851d47d99a2">codes_grib_find_nearest_single</a> (gribid, is_lsm, inlat, inlon, outlat, outlon, value, distance, index, status)</td></tr>
+<tr class="memdesc:a036ae036cc766718ad224851d47d99a2"><td class="mdescLeft"> </td><td class="mdescRight">Find the nearest point of a given latitude/longitude point.  <a href="#a036ae036cc766718ad224851d47d99a2">More...</a><br/></td></tr>
+<tr class="separator:a036ae036cc766718ad224851d47d99a2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad4b53c47aecc5fa5ae43c95357d2d690"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ad4b53c47aecc5fa5ae43c95357d2d690">codes_grib_find_nearest_four_single</a> (gribid, is_lsm, inlat, inlon, outlat, outlon, value, distance, index, status)</td></tr>
+<tr class="memdesc:ad4b53c47aecc5fa5ae43c95357d2d690"><td class="mdescLeft"> </td><td class="mdescRight">Find the 4 nearest points of a latitude longitude point.  <a href="#ad4b53c47aecc5fa5ae43c95357d2d690">More...</a><br/></td></tr>
+<tr class="separator:ad4b53c47aecc5fa5ae43c95357d2d690"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a69d578039c073e637d727078778ca3ef"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a69d578039c073e637d727078778ca3ef">codes_grib_multi_support_on</a> (status)</td></tr>
+<tr class="memdesc:a69d578039c073e637d727078778ca3ef"><td class="mdescLeft"> </td><td class="mdescRight">Turn on the support for multiple fields in a single message.  <a href="#a69d578039c073e637d727078778ca3ef">More...</a><br/></td></tr>
+<tr class="separator:a69d578039c073e637d727078778ca3ef"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab11428b591f9ea0ae46e5116ad9e5c7f"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#ab11428b591f9ea0ae46e5116ad9e5c7f">codes_grib_multi_support_off</a> (status)</td></tr>
+<tr class="memdesc:ab11428b591f9ea0ae46e5116ad9e5c7f"><td class="mdescLeft"> </td><td class="mdescRight">Turn off the support for multiple fields in a single message.  <a href="#ab11428b591f9ea0ae46e5116ad9e5c7f">More...</a><br/></td></tr>
+<tr class="separator:ab11428b591f9ea0ae46e5116ad9e5c7f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa8e36bbbe3caddac4ad7d8bcdfa3cd28"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#aa8e36bbbe3caddac4ad7d8bcdfa3cd28">codes_gribex_mode_on</a> (status)</td></tr>
+<tr class="memdesc:aa8e36bbbe3caddac4ad7d8bcdfa3cd28"><td class="mdescLeft"> </td><td class="mdescRight">Turn on the compatibility mode with gribex.  <a href="#aa8e36bbbe3caddac4ad7d8bcdfa3cd28">More...</a><br/></td></tr>
+<tr class="separator:aa8e36bbbe3caddac4ad7d8bcdfa3cd28"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acb69eeef59ba780c62d7f600915aa986"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#acb69eeef59ba780c62d7f600915aa986">codes_gribex_mode_off</a> (status)</td></tr>
+<tr class="memdesc:acb69eeef59ba780c62d7f600915aa986"><td class="mdescLeft"> </td><td class="mdescRight">Turn off the compatibility mode with GRIBEX.  <a href="#acb69eeef59ba780c62d7f600915aa986">More...</a><br/></td></tr>
+<tr class="separator:acb69eeef59ba780c62d7f600915aa986"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aad63202303a1b6aaf9f5e605622a8095"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#aad63202303a1b6aaf9f5e605622a8095">codes_skip_computed</a> (iterid, status)</td></tr>
+<tr class="memdesc:aad63202303a1b6aaf9f5e605622a8095"><td class="mdescLeft"> </td><td class="mdescRight">Skip the computed keys in a keys iterator.  <a href="#aad63202303a1b6aaf9f5e605622a8095">More...</a><br/></td></tr>
+<tr class="separator:aad63202303a1b6aaf9f5e605622a8095"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a56a1567687b281d07c193ce273c0e1b2"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a56a1567687b281d07c193ce273c0e1b2">codes_skip_coded</a> (iterid, status)</td></tr>
+<tr class="memdesc:a56a1567687b281d07c193ce273c0e1b2"><td class="mdescLeft"> </td><td class="mdescRight">Skip the coded keys in a keys iterator.  <a href="#a56a1567687b281d07c193ce273c0e1b2">More...</a><br/></td></tr>
+<tr class="separator:a56a1567687b281d07c193ce273c0e1b2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2f23dd14b726d10d92637719dda7753b"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a2f23dd14b726d10d92637719dda7753b">codes_skip_duplicates</a> (iterid, status)</td></tr>
+<tr class="memdesc:a2f23dd14b726d10d92637719dda7753b"><td class="mdescLeft"> </td><td class="mdescRight">Skip the duplicated keys in a keys iterator.  <a href="#a2f23dd14b726d10d92637719dda7753b">More...</a><br/></td></tr>
+<tr class="separator:a2f23dd14b726d10d92637719dda7753b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa7f01fdbea67a38997eff86255397181"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#aa7f01fdbea67a38997eff86255397181">codes_skip_read_only</a> (iterid, status)</td></tr>
+<tr class="memdesc:aa7f01fdbea67a38997eff86255397181"><td class="mdescLeft"> </td><td class="mdescRight">Skip the read_only keys in a keys iterator.  <a href="#aa7f01fdbea67a38997eff86255397181">More...</a><br/></td></tr>
+<tr class="separator:aa7f01fdbea67a38997eff86255397181"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8544407e16786d6d72df0fc3cc37ff3a"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#a8544407e16786d6d72df0fc3cc37ff3a">codes_set_definitions_path</a> (path, status)</td></tr>
+<tr class="memdesc:a8544407e16786d6d72df0fc3cc37ff3a"><td class="mdescLeft"> </td><td class="mdescRight">Set the definition path.  <a href="#a8544407e16786d6d72df0fc3cc37ff3a">More...</a><br/></td></tr>
+<tr class="separator:a8544407e16786d6d72df0fc3cc37ff3a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af4be467f3273e17111becbd483c25018"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="classeccodes.html#af4be467f3273e17111becbd483c25018">codes_set_samples_path</a> (path, status)</td></tr>
+<tr class="memdesc:af4be467f3273e17111becbd483c25018"><td class="mdescLeft"> </td><td class="mdescRight">Set the samples path.  <a href="#af4be467f3273e17111becbd483c25018">More...</a><br/></td></tr>
+<tr class="separator:af4be467f3273e17111becbd483c25018"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Module eccodes<br/>
+ This is the <b>Fortran90</b> interface for <a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a>. </p>
+</div><h2 class="groupheader">Member Function/Subroutine Documentation</h2>
+<a class="anchor" id="aa468943e1c669487375b2e3d46ff84b1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_any_new_from_file </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Load in memory a message from a file. </p>
+<p>The message can be accessed through its msgid and it will be available<br/>
+ until <a class="el" href="classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7">codes_release</a> is called.<br/>
+ </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the file opened with <a class="el" href="classeccodes.html#a28594e26f2f4b92b9c60e943dd8e1be3">codes_open_file</a> </td></tr>
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, GRIB_END_OF_FILE at the end of file, or error code </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a94050d64954482cd82ea6f007fdc9ac0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_bufr_new_from_file </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>bufrid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Load in memory a BUFR message from a file. </p>
+<p>The message can be accessed through its bufrid and it will be available<br/>
+ until <a class="el" href="classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7">codes_release</a> is called.<br/>
+ <b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/bufr_get_keys" target="_blank">bufr_get_keys.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the file opened with <a class="el" href="classeccodes.html#a28594e26f2f4b92b9c60e943dd8e1be3">codes_open_file</a> </td></tr>
+    <tr><td class="paramname">bufrid</td><td>id of the BUFR loaded in memory </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, GRIB_END_OF_FILE at the end of file, or error code </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a6d32d26f2076db60d78e1c2d222dd01d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_bufr_new_from_samples </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>bufrid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>samplename</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new valid bufrid from a BUFR sample contained in a samples directory pointed by the environment variable ECCODES_SAMPLES_PATH. </p>
+<p>To know where the samples directory is run the codes_info tool.<br/>
+ In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">bufrid</td><td>id of the BUFR loaded in memory </td></tr>
+    <tr><td class="paramname">samplename</td><td>name of the BUFR sample to be used </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a1cd5ff5ea308443bfe166974d9ab1363"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_check </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>status</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>caller</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>string</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Check the status returned by a subroutine. </p>
+<p>In case of error it stops the program, returns the error code to the shell and prints the error message.<br/>
+ </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">status</td><td>the status to be checked </td></tr>
+    <tr><td class="paramname">caller</td><td>name of the caller soubroutine </td></tr>
+    <tr><td class="paramname">string</td><td>a string variable from the caller routine (e.g. key,filename) </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a94c85dbc797f98a177795ff9a8ad8035"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_clone </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid_src</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>msgid_dest</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a copy of a message. </p>
+<p>Create a copy of a given message (<em>msgid_src</em>) giving a new<br/>
+ message in memory (<em>msgid_dest</em>) exactly identical to the original one.<br/>
+ In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_clone" target="_blank">grib_clone.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid_src</td><td>message to be cloned </td></tr>
+    <tr><td class="paramname">msgid_dest</td><td>new message returned </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a436a01aabf91cdbb4c5902a5d1a2886e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_close_file </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Close a file. </p>
+<p>If the <em>fileid</em> does not refer to an opened file an error code is returned in status.<br/>
+ <b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_get_keys" target="_blank">grib_get_keys.f90</a></p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>is the id of the file to be closed. </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="afdd32c1a78f0a3d54992e0a6a6bfc66b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_copy_message </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(out) </td>
+          <td class="paramname"><em>message</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Copy the coded message into an array. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">message</td><td>array containing the coded message to be copied </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a8bba3684a289b1e8c6bcea0b67c45b5d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_copy_namespace </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>gribid_src</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>namespace</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>gribid_dest</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Copy the value of all the keys belonging to a namespace from the source message to the destination message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid_src</td><td>source message </td></tr>
+    <tr><td class="paramname">gribid_dest</td><td>destination message </td></tr>
+    <tr><td class="paramname">namespace</td><td>namespace to be copied </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a0a09420f86caf79873b2fb067e360049"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_count_in_file </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>n</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Counts the messages in a file. </p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/count_messages" target="_blank">count_messages.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the file opened with <a class="el" href="classeccodes.html#a28594e26f2f4b92b9c60e943dd8e1be3">codes_open_file</a> </td></tr>
+    <tr><td class="paramname">n</td><td>number of messages in the file </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK or error code </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ab5e1ab3efc1981c886e64e467c1b84a1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_dump </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Dump the content of a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="adee61373d840f0f6a73be5d574a47a1e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_byte_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(inout) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>length</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the array of bytes (character) for a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>character(len=1) array of byte values </td></tr>
+    <tr><td class="paramname">length</td><td>(optional) output: number of values retrieved </td></tr>
+    <tr><td class="paramname">status</td><td>(optional) CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a835de867b8ad79cc43f127e7048712f3"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_error_string </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>error</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(out) </td>
+          <td class="paramname"><em>error_message</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the error message given an error code. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">error</td><td>error code </td></tr>
+    <tr><td class="paramname">error_message</td><td>error message </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a15e9f187ba45e4a334f270884c59651e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_int </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind = kindofint), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the integer value of a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>the integer(4) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a620d907f796a466b9b849be12e96a274"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_int_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), dimension(:), intent(inout), allocatable </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the integer array of values for a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.<br/>
+ Note: This function supports the <b>allocatable</b> array attribute</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>integer(4) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ad85e9d6d052fdcbfade2d201357e391d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_long </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind = kindoflong), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the integer value of a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>the integer(4) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a0ff7f18601949da80f10d1614e0d0541"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_long_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindoflong), dimension(:), intent(inout), allocatable </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the integer array of values for a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.<br/>
+ Note: This function supports the <b>allocatable</b> array attribute</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>integer(4) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="af4ff60a9bd8d0c1c0173242897db4816"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_message_size_int </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the size of a coded message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">nbytes</td><td>size in bytes of the message </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a032408e4f1a842a42fca23218ec85a4d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_message_size_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(out) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the size of a coded message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">nbytes</td><td>size in bytes of the message </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ab6c505dfdf5a75f51c07683abed39b68"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_real4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindoffloat), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the real(4) value of a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>the real(4) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae1df5b7389172122fe2c84c4156f18d0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_real4_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindoffloat), dimension(:), intent(inout), allocatable </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the real(4) array of values for a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.<br/>
+ Note: This function supports the <b>allocatable</b> array attribute</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>real(4) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a95426fb251262a83fbdcc5ae86968b4b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_real4_element </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindoffloat), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get a real(4) value of specified index from an array key. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">index</td><td>integer(4) index </td></tr>
+    <tr><td class="paramname">value</td><td>real(4) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a0587c719213f5eb38afbb80cb30a2b8b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_real4_elements </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), dimension(:), intent(in) </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindoffloat), dimension(:), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the real(4) values whose indexes are stored in the array "index" from an array key. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">index</td><td>integer(4) array indexes </td></tr>
+    <tr><td class="paramname">value</td><td>real(4) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a2ca22327e21aca686d29f8953e235839"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_real8 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the real(8) value of a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>the real(8) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a4b28e570e54dad5a779e0452d3ed66d4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_real8_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(inout), allocatable </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the real(8) array of values for a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.<br/>
+ Note: This function supports the <b>allocatable</b> array attribute</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>real(8) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ac9ceb83558433f918eac6aeb00b620af"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_real8_element </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get a real(8) value of specified index from an array key. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">index</td><td>integer(4) index </td></tr>
+    <tr><td class="paramname">value</td><td>real(8) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a1e550ade4f5781f19718fa8bdec802f9"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_real8_elements </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), dimension(:), intent(in) </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the real(8) values whose indexes are stored in the array "index" from an array key. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">index</td><td>integer(4) array index </td></tr>
+    <tr><td class="paramname">value</td><td>real(8) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ac566c4909f1ea554517d256a780cf87f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_size_int </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the size of an array key. </p>
+<p>To get the size of a key representing an array.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>name of the key </td></tr>
+    <tr><td class="paramname">size</td><td>size of the array key </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="accd5b68ef585873b05a3f61d7dda3f3a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_size_long </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindoflong), intent(out) </td>
+          <td class="paramname"><em>size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the size of an array key. </p>
+<p>To get the size of a key representing an array.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>name of the key </td></tr>
+    <tr><td class="paramname">size</td><td>size of the array key </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a9b71df8830b162b7773cf4d1446b4303"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_string </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the character value of a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>the real(8) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a731aac9d5d75917e12048573ae86e7c6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_string_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), dimension(:), intent(inout), allocatable </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the string array of values for a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.<br/>
+ Note: This function supports the <b>allocatable</b> array attribute</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>string array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ad4b53c47aecc5fa5ae43c95357d2d690"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_grib_find_nearest_four_single </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">logical, intent(in) </td>
+          <td class="paramname"><em>is_lsm</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(in) </td>
+          <td class="paramname"><em>inlat</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(in) </td>
+          <td class="paramname"><em>inlon</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(4), intent(out) </td>
+          <td class="paramname"><em>outlat</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(4), intent(out) </td>
+          <td class="paramname"><em>outlon</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(4), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(4), intent(out) </td>
+          <td class="paramname"><em>distance</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind = kindofint), dimension(4), intent(out) </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Find the 4 nearest points of a latitude longitude point. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the GRIB loaded in memory </td></tr>
+    <tr><td class="paramname">is_lsm</td><td>.true. if the nearest land point is required otherwise .false. </td></tr>
+    <tr><td class="paramname">inlat</td><td>latitude of the point </td></tr>
+    <tr><td class="paramname">inlon</td><td>longitudes of the point </td></tr>
+    <tr><td class="paramname">outlat</td><td>latitude of the nearest point </td></tr>
+    <tr><td class="paramname">outlon</td><td>longitude of the nearest point </td></tr>
+    <tr><td class="paramname">distance</td><td>distance between the given point and its nearest </td></tr>
+    <tr><td class="paramname">index</td><td>zero based index </td></tr>
+    <tr><td class="paramname">value</td><td>value of the field in the nearest point </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="acb92b7a78966c0b2f53ee6e288bff673"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_grib_find_nearest_multiple </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">logical, intent(in) </td>
+          <td class="paramname"><em>is_lsm</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(in) </td>
+          <td class="paramname"><em>inlats</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(in) </td>
+          <td class="paramname"><em>inlons</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(out) </td>
+          <td class="paramname"><em>outlats</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(out) </td>
+          <td class="paramname"><em>outlons</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(out) </td>
+          <td class="paramname"><em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(out) </td>
+          <td class="paramname"><em>distances</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind = kindofint), dimension(:), intent(out) </td>
+          <td class="paramname"><em>indexes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Find the nearest point of a set of points whose latitudes and longitudes are given in the inlats, inlons arrays respectively. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">is_lsm</td><td>.true. if the nearest land point is required otherwise .false. </td></tr>
+    <tr><td class="paramname">inlats</td><td>input real(8) array of the latitudes of the points </td></tr>
+    <tr><td class="paramname">inlons</td><td>input real(8) array of the longitudes of the points </td></tr>
+    <tr><td class="paramname">outlats</td><td>output real(8) array of the latitudes of the nearest points </td></tr>
+    <tr><td class="paramname">outlons</td><td>output real(8) array of the longitudes of the nearest points </td></tr>
+    <tr><td class="paramname">distances</td><td>output real(8) array of the distances </td></tr>
+    <tr><td class="paramname">indexes</td><td>output integer(4) array of the zero based indexes </td></tr>
+    <tr><td class="paramname">values</td><td>output real(8) array of the values </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a036ae036cc766718ad224851d47d99a2"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_grib_find_nearest_single </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">logical, intent(in) </td>
+          <td class="paramname"><em>is_lsm</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(in) </td>
+          <td class="paramname"><em>inlat</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(in) </td>
+          <td class="paramname"><em>inlon</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(out) </td>
+          <td class="paramname"><em>outlat</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(out) </td>
+          <td class="paramname"><em>outlon</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(out) </td>
+          <td class="paramname"><em>distance</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind = kindofint), intent(out) </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Find the nearest point of a given latitude/longitude point. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">is_lsm</td><td>.true. if the nearest land point is required otherwise .false. </td></tr>
+    <tr><td class="paramname">inlat</td><td>latitude of the point </td></tr>
+    <tr><td class="paramname">inlon</td><td>longitudes of the point </td></tr>
+    <tr><td class="paramname">outlat</td><td>latitude of the nearest point </td></tr>
+    <tr><td class="paramname">outlon</td><td>longitude of the nearest point </td></tr>
+    <tr><td class="paramname">distance</td><td>distance between the given point and its nearest </td></tr>
+    <tr><td class="paramname">index</td><td>zero based index </td></tr>
+    <tr><td class="paramname">value</td><td>value of the field in the nearest point </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a0e93200c0e6e4bdacaf1bec1e0a29ee7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_grib_get_data_real4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real ( kind = kindoffloat ), dimension(:), intent(out) </td>
+          <td class="paramname"><em>lats</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real ( kind = kindoffloat ), dimension(:), intent(out) </td>
+          <td class="paramname"><em>lons</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real ( kind = kindoffloat ), dimension(:), intent(out) </td>
+          <td class="paramname"><em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get latitudes/longitudes/data values (real(4)). </p>
+<p>Latitudes, longitudes, data values arrays are returned. They must be properly allocated by the caller and their required dimension can be obtained with <a class="el" href="interfaceeccodes_1_1codes__get__size.html">codes_get_size</a> or by getting (with <a class="el" href="interfaceeccodes_1_1codes__get.html">codes_get</a>) the value of the integer key "numberOfPoints".</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">lats</td><td>latitudes array with dimension "size" </td></tr>
+    <tr><td class="paramname">lons</td><td>longitudes array with dimension "size" </td></tr>
+    <tr><td class="paramname">values</td><td>data values array with dimension "size" </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a043bb1e696da61d06523ad35ae16fe8c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_grib_get_data_real8 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real ( kind = kindofdouble ), dimension(:), intent(out) </td>
+          <td class="paramname"><em>lats</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real ( kind = kindofdouble ), dimension(:), intent(out) </td>
+          <td class="paramname"><em>lons</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real ( kind = kindofdouble ), dimension(:), intent(out) </td>
+          <td class="paramname"><em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get latitudes/longitudes/data values (real(8)). </p>
+<p>Latitudes, longitudes, data values arrays are returned. They must be properly allocated by the calling program/function. Their required dimension can be obtained by getting (with <a class="el" href="interfaceeccodes_1_1codes__get.html">codes_get</a>) the value of the integer key "numberOfPoints". In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">lats</td><td>latitudes array </td></tr>
+    <tr><td class="paramname">lons</td><td>longitudes array </td></tr>
+    <tr><td class="paramname">values</td><td>data values array </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a385aa2c504656d11812dd461819446ba"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_grib_multi_append </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ingribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>startsection</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>multigribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Append a single field grib message to a multi field grib message. </p>
+<p>Only the sections with section number greather or equal "startsection" are copied from the input single message to the multi field output grib.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ingribid</td><td>id of the input single grib </td></tr>
+    <tr><td class="paramname">startsection</td><td>starting from startsection (included) all the sections are copied from the input single grib to the output multi grib </td></tr>
+    <tr><td class="paramname">multigribid</td><td>id of the output multi filed grib </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ab11428b591f9ea0ae46e5116ad9e5c7f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_grib_multi_support_off </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Turn off the support for multiple fields in a single message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a69d578039c073e637d727078778ca3ef"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_grib_multi_support_on </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Turn on the support for multiple fields in a single message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aa1ef915b62ebf910254f05cb619c0168"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_grib_multi_write </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>multigribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write a multi field message to a file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">multigribid</td><td>id of the multi field grib loaded in memory </td></tr>
+    <tr><td class="paramname">ifile</td><td>file id of a file opened with <a class="el" href="classeccodes.html#a28594e26f2f4b92b9c60e943dd8e1be3">codes_open_file</a> </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a7a21cb68f0d5058a63a4ba92a938fd27"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_grib_new_from_file </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Load in memory a GRIB message from a file. </p>
+<p>The message can be accessed through its gribid and it will be available<br/>
+ until <a class="el" href="classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7">codes_release</a> is called.<br/>
+ <b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_get_keys" target="_blank">grib_get_keys.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the file opened with <a class="el" href="classeccodes.html#a28594e26f2f4b92b9c60e943dd8e1be3">codes_open_file</a> </td></tr>
+    <tr><td class="paramname">gribid</td><td>id of the GRIB loaded in memory </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, GRIB_END_OF_FILE at the end of file, or error code </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="acfc477ba642e007ec55c7e4ce2c31a9d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_grib_new_from_samples </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>samplename</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new valid gribid from a GRIB sample contained in a samples directory pointed by the environment variable ECCODES_SAMPLES_PATH. </p>
+<p>To know where the samples directory is run the codes_info tool.<br/>
+ In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_samples" target="_blank">grib_samples.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">samplename</td><td>name of the sample to be used </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="acb69eeef59ba780c62d7f600915aa986"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_gribex_mode_off </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Turn off the compatibility mode with GRIBEX. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aa8e36bbbe3caddac4ad7d8bcdfa3cd28"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_gribex_mode_on </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Turn on the compatibility mode with gribex. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="af89d3c57b15bdbd00241358a10b836a8"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_add_file </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>filename</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Add a file to an index. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of the index I want to add a file to </td></tr>
+    <tr><td class="paramname">filename</td><td>name of the file I want to add to the index </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a5f52ecf1abe0a68a32517fe2a0d08058"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_create </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(inout) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>filename</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>keys</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new index form a file. </p>
+<p>The file is indexed with the keys in argument.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of the newly created index </td></tr>
+    <tr><td class="paramname">filename</td><td>name of the file of messages to be indexed </td></tr>
+    <tr><td class="paramname">keys</td><td>comma separated list of keys for the index. The type of the key can be explicitly declared appending :l for long (or alternatively :i), :d for double, :s for string to the key name. If the type is not declared explicitly, the native type is assumed. </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a26cf731cfda4b350500d8520ea674341"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_get_int </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), dimension(:), intent(out) </td>
+          <td class="paramname"><em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index. This function is used when the type of the key was explicitly defined as long or when the native type of the key is long.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key for wich the values are returned </td></tr>
+    <tr><td class="paramname">values</td><td>array of values. The array must be allocated before entering this function and its size must be enough to contain all the values. </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="afa9bf87d988de7eb04a9de9982e6112f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_get_long </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindoflong), dimension(:), intent(out) </td>
+          <td class="paramname"><em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index. This function is used when the type of the key was explicitly defined as long or when the native type of the key is long.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key for wich the values are returned </td></tr>
+    <tr><td class="paramname">values</td><td>array of values. The array must be allocated before entering this function and its size must be enough to contain all the values. </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aedc38b28a7a27b5e042f7a5a17c73001"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_get_real8 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=kindofdouble), dimension(:), intent(out) </td>
+          <td class="paramname"><em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index. This function is used when the type of the key was explicitly defined as long or when the native type of the key is long.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key for wich the values are returned </td></tr>
+    <tr><td class="paramname">values</td><td>array of values. The array must be allocated before entering this function and its size must be enough to contain all the values. </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aeb1c3a999e4726895a94acb9b0de518c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_get_size_int </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the number of distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key for which the number of values is computed </td></tr>
+    <tr><td class="paramname">size</td><td>number of distinct values of the key in the index </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a0d2104143f36bdfb5c7cccb9b56ae3f0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_get_size_long </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindoflong), intent(out) </td>
+          <td class="paramname"><em>size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the number of distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key for which the number of values is computed </td></tr>
+    <tr><td class="paramname">size</td><td>number of distinct values of the key in the index </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae5eb8fbe2de7d547bc92baddaf77adf1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_get_string </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), dimension(:), intent(out) </td>
+          <td class="paramname"><em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index. This function is used when the type of the key was explicitly defined as string or when the native type of the key is string.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key for wich the values are returned </td></tr>
+    <tr><td class="paramname">values</td><td>array of values. The array must be allocated before entering this function and its size must be enough to contain all the values. </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a16dfcaea7b7c6c77794914d0570f5bc9"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_read </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(inout) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>filename</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Load an index file previously created with <a class="el" href="classeccodes.html#afd0c12a42f60fe16eabc8b0fca41ff05">codes_index_write</a>. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of loaded index </td></tr>
+    <tr><td class="paramname">filename</td><td>name of the index file to load </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a8fba1de775308d8a1f0c035c51e3a42d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_release </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Delete the index. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ac84dca14749c6c8f7b1b32dbcb8c8f88"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_select_int </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Select the message subset with key==value. </p>
+<p>The value is a integer. The key must have been created with integer type or have integer as native type if the type was not explicitly defined in the index creation.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key to be selected </td></tr>
+    <tr><td class="paramname">value</td><td>value of the key to select </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a6acd94d169fc462c5babb5d654c07612"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_select_long </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindoflong), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Select the message subset with key==value. </p>
+<p>The value is a integer. The key must have been created with integer type or have integer as native type if the type was not explicitly defined in the index creation.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key to be selected </td></tr>
+    <tr><td class="paramname">value</td><td>value of the key to select </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae1a4e9f83a13d8ce9b046f141ee990cd"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_select_real8 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=kindofdouble), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Select the message subset with key==value. </p>
+<p>The value is a real. The key must have been created with real type or have real as native type if the type was not explicitly defined in the index creation.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key to be selected </td></tr>
+    <tr><td class="paramname">value</td><td>value of the key to select </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a500fe1c101af888362bb60a94c68085e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_select_string </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Select the message subset with key==value. </p>
+<p>The value is a integer. The key must have been created with string type or have string as native type if the type was not explicitly defined in the index creation.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key to be selected </td></tr>
+    <tr><td class="paramname">value</td><td>value of the key to select </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="afd0c12a42f60fe16eabc8b0fca41ff05"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_write </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(inout) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>filename</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Saves an index to a file for later reuse. </p>
+<p>Index files can be read with <a class="el" href="classeccodes.html#a16dfcaea7b7c6c77794914d0570f5bc9">codes_index_read</a>.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of the index to save to file </td></tr>
+    <tr><td class="paramname">filename</td><td>name of file to save the index to </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a4aeb717b8aba0e2898a83d56363bab98"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_is_defined </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind = kindofint), intent(out) </td>
+          <td class="paramname"><em>is_defined</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Check if a key is defined (exists in the message) </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">is_defined</td><td>0->not defined, 1->defined </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aff0e850cce3105f72b76a603e104cce4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_is_missing </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind = kindofint), intent(out) </td>
+          <td class="paramname"><em>is_missing</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Check if the value of a key is MISSING. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">is_missing</td><td>0->not missing, 1->missing </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a5d81274245d3a60ab85d657aa11512e5"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_keys_iterator_delete </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>iterid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Delete a keys iterator and free memory. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id created with <a class="el" href="classeccodes.html#ae9e9bae052da5148e4a0ca85f31c69b5">codes_keys_iterator_new</a> </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a695b7f3f87bfb465908447ce51024221"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_keys_iterator_get_name </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>iterid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(out) </td>
+          <td class="paramname"><em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the name of a key from a keys iterator. </p>
+<p>If the status parameter (optional) is not given the program will exit with an error message<br/>
+ otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.<br/>
+ </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id created with <a class="el" href="classeccodes.html#ae9e9bae052da5148e4a0ca85f31c69b5">codes_keys_iterator_new</a> </td></tr>
+    <tr><td class="paramname">name</td><td>key name to be retrieved </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae9e9bae052da5148e4a0ca85f31c69b5"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_keys_iterator_new </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(inout) </td>
+          <td class="paramname"><em>iterid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>namespace</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new iterator on the keys. </p>
+<p>The keys iterator can be navigated to give all the key names which can then be used to get or set the key values with <a class="el" href="interfaceeccodes_1_1codes__get.html">codes_get</a> or <a class="el" href="interfaceeccodes_1_1codes__set.html">codes_set</a>. The set of keys returned can be controlled with the input variable namespace or using the functions <a class="el" href="classeccodes.html#aa7f01fdbea67a38997eff86255397181">codes_skip_read_only</a>, <a class="el" href="classe [...]
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">iterid</td><td>keys iterator id to be used in the keys iterator functions </td></tr>
+    <tr><td class="paramname">namespace</td><td>the namespace of the keys to search for (all the keys if empty) </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aaaa40acb7f8e05783e106c32a541a66d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_keys_iterator_next </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>iterid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Advance to the next keys iterator value. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id created with <a class="el" href="classeccodes.html#ae9e9bae052da5148e4a0ca85f31c69b5">codes_keys_iterator_new</a> </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if next iterator exists, integer value if no more elements to iterate on </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aa6055f116c22830fc941b6db2e133d25"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_keys_iterator_rewind </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>iterid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Rewind a keys iterator. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id created with <a class="el" href="classeccodes.html#ae9e9bae052da5148e4a0ca85f31c69b5">codes_keys_iterator_new</a> </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a5533c6fb8bd7d8f622c89484b7bbdfb6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_new_from_file </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>product_kind</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Load in memory a message from a file. </p>
+<p>The message can be accessed through its message ID and it will be available<br/>
+ until <a class="el" href="classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7">codes_release</a> is called.<br/>
+ <b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_get_keys" target="_blank">grib_get_keys.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the file opened with <a class="el" href="classeccodes.html#a28594e26f2f4b92b9c60e943dd8e1be3">codes_open_file</a> </td></tr>
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">product_kind</td><td>One of CODES_PRODUCT_GRIB, CODES_PRODUCT_BUFR or CODES_PRODUCT_ANY </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, CODES_END_OF_FILE at the end of file, or error code </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a2852e5519e2ff8596e461986b99092d7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_new_from_index </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new handle from an index after having selected the key values. </p>
+<p>All the keys belonging to the index must be selected before calling this function. Successive calls to this function will return all the handles compatible with the constraints defined selecting the values of the index keys. When no more handles are available from the index a NULL pointer is returned and the err variable is set to CODES_END_OF_INDEX.</p>
+<p>The message can be accessed through its msgid and it will be available<br/>
+ until <a class="el" href="classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7">codes_release</a> is called.<br/>
+ <b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. </td></tr>
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, CODES_END_OF_FILE at the end of file, or error code </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a9734463b78e04c3e803acb25d3314436"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_new_from_message_char </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(in) </td>
+          <td class="paramname"><em>message</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new message in memory from a character array containting the coded message. </p>
+<p>The message can be accessed through its msgid and it will be available<br/>
+ until <a class="el" href="classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7">codes_release</a> is called. A reference to the original coded<br/>
+ message is kept in the new message structure.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_copy_message" target="_blank">grib_copy_message.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">message</td><td>character array containing the coded message </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="af9d90d4940f54ecebb44acb69a59d496"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_new_from_message_int4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=4), dimension(:), intent(in) </td>
+          <td class="paramname"><em>message</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new message in memory from an integer array containting the coded message. </p>
+<p>The message can be accessed through its msgid and it will be available<br/>
+ until <a class="el" href="classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7">codes_release</a> is called. A reference to the original coded<br/>
+ message is kept in the new message structure.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_copy_message" target="_blank">grib_copy_message.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">message</td><td>integer array containing the coded message </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a28594e26f2f4b92b9c60e943dd8e1be3"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_open_file </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>filename</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>mode</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Open a file according to a mode. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_get_keys" target="_blank">grib_get_keys.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">filename</td><td>name of the file to be open </td></tr>
+    <tr><td class="paramname">mode</td><td>open mode can be 'r' (read only) or 'w' (write only) </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a30dcd3a6d9d4b084f1dc9d617927b99a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_bytes_char </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads nbytes bytes into the buffer from a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>binary buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aea71591e62a4a6f42682ceb5979c0631"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_bytes_char_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads nbytes bytes into the buffer from a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>binary buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a0b75e479138c6fe2b49cacef123a1c8e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_bytes_int4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=4), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads nbytes bytes into the buffer from a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ad1be70ac4cc7c2c5775e3bc6b607c4df"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_bytes_int4_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=4), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads nbytes bytes into the buffer from a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a19f70122369224f1ef3513bf7f351e86"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_bytes_real4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=4), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads nbytes bytes into the buffer from a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a9bac4f78f245e52303e85d2ee142d073"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_bytes_real4_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=4), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(inout) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads nbytes bytes into the buffer from a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a4e1e0bb73d3fafe62685a3f7191334e4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_bytes_real8 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=8), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads nbytes bytes into the buffer from a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="adec76dd3ecf49b71ded2545054828c3d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_bytes_real8_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=8), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(inout) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads nbytes bytes into the buffer from a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ab84434f52a4a41e68bf3103c392482ae"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_from_file_char </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(inout) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads a message in the buffer array from the file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a9ca8b8009071657b338508a3d6709b8d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_from_file_char_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(inout) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads a message in the buffer array from the file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a7b5b61cc34b32aae4c3f2deeacbc50ae"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_from_file_int4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=4), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(inout) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads a message in the buffer array from the file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>binary buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aa04bacd625a2a87d7e490c0361643da3"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_from_file_int4_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=4), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(inout) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads a message in the buffer array from the file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>binary buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aa4182b2add068f538b335c8efd1a8d5f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_from_file_real4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=4), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(inout) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads a message in the buffer array from the file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>binary buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae866f7aa5270100094390b465e953975"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_from_file_real4_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=4), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(inout) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads a message in the buffer array from the file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>binary buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a2ff542236ca5d1bdeb7192c5c8eca94f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_from_file_real8 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=8), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(inout) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads a message in the buffer array from the file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>binary buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ab8fff9495aaf984fb909367290b45591"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_from_file_real8_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=8), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(inout) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads a message in the buffer array from the file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>binary buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a1c0ab28b0ae33f04d267d794a8bdd4b7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_release </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Free the memory for the message referred as msgid. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_get_keys" target="_blank">grib_get_keys.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a292d71c0a7252bdfded6a38aea4284be"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_byte_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>length</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the array of bytes (character) for a key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>character(len=1) array of byte values </td></tr>
+    <tr><td class="paramname">length</td><td>(optional) output: number of values written </td></tr>
+    <tr><td class="paramname">status</td><td>(optional) CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a8544407e16786d6d72df0fc3cc37ff3a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_definitions_path </td>
+          <td>(</td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>path</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the definition path. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">path</td><td>definitions path </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ac060bb983b9e515db8ad7edd3d91ce9a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_int </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the integer value for a key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>integer(4) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a18b5890c85f15d5fefeefc2b99a09ce5"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_int_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), dimension(:), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the integers values for an array key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>integer(4) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a3c9cdc65f00b3c36742206e6e3dde864"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_long </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindoflong), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the integer value for a key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>integer(4) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a5fa893fca21268a9c12d93e9d8c664e3"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_long_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindoflong), dimension(:), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the integers values for an array key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>integer(4) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aa85273eb59a545d73f7e3a48516fd5f9"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_missing </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>id</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Wrapper for eccodes. </p>
+<p>Set as missing the value for a key in a message.</p>
+<p>It can be used to set a missing value in the header but not in <br/>
+ the data values. To set missing data values see the bitmap examples.<br/>
+ In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_set_missing" target="_blank">grib_set_missing.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">id</td><td>ID of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a2614a1e015c16370ed18cc360a14663e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_real4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindoffloat), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the real(4) value for a key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>real(4) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aabaefc49c8d603bcf18a627dacc38f15"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_real4_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindoffloat), dimension(:), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the real(4) values for an array key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>real(4) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a4b20fe82de5ba6f8355ff8a5d2725b3d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_real8 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the real(8) value for a key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>real(8) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a14b3bc17ea1ee83936f32dd0fced44a4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_real8_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the real(8) values for an array key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>real(8) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="af4be467f3273e17111becbd483c25018"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_samples_path </td>
+          <td>(</td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>path</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the samples path. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">path</td><td>samples path </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a50acfd20f8dff8b4e547135057ef119a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_string </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>*/ </p>
+<p>Set the character value for a string key in a message.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>character value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aae3ccb53638a4d16daf98d937a96e8b6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_string_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), dimension(:), intent(in), allocatable </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the string values for an array key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>string array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a56a1567687b281d07c193ce273c0e1b2"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_skip_coded </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>iterid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Skip the coded keys in a keys iterator. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p>The coded keys are actually coded in the message.</p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classeccodes.html#ae9e9bae052da5148e4a0ca85f31c69b5" title="Create a new iterator on the keys. ">codes_keys_iterator_new</a>, <a class="el" href="classeccodes.html#aaaa40acb7f8e05783e106c32a541a66d" title="Advance to the next keys iterator value. ">codes_keys_iterator_next</a>, <a class="el" href="classeccodes.html#a5d81274245d3a60ab85d657aa11512e5" title="Delete a keys iterator and free memory. ">codes_keys_iterator_delete [...]
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aad63202303a1b6aaf9f5e605622a8095"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_skip_computed </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>iterid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Skip the computed keys in a keys iterator. </p>
+<p>The computed keys are not coded in the message they are computed from other keys.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classeccodes.html#ae9e9bae052da5148e4a0ca85f31c69b5" title="Create a new iterator on the keys. ">codes_keys_iterator_new</a>, <a class="el" href="classeccodes.html#aaaa40acb7f8e05783e106c32a541a66d" title="Advance to the next keys iterator value. ">codes_keys_iterator_next</a>, <a class="el" href="classeccodes.html#a5d81274245d3a60ab85d657aa11512e5" title="Delete a keys iterator and free memory. ">codes_keys_iterator_delete [...]
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a2f23dd14b726d10d92637719dda7753b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_skip_duplicates </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>iterid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Skip the duplicated keys in a keys iterator. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classeccodes.html#ae9e9bae052da5148e4a0ca85f31c69b5" title="Create a new iterator on the keys. ">codes_keys_iterator_new</a>, <a class="el" href="classeccodes.html#aaaa40acb7f8e05783e106c32a541a66d" title="Advance to the next keys iterator value. ">codes_keys_iterator_next</a>, <a class="el" href="classeccodes.html#a5d81274245d3a60ab85d657aa11512e5" title="Delete a keys iterator and free memory. ">codes_keys_iterator_delete [...]
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aa7f01fdbea67a38997eff86255397181"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_skip_read_only </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>iterid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Skip the read_only keys in a keys iterator. </p>
+<p>Read only keys cannot be set.</p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classeccodes.html#ae9e9bae052da5148e4a0ca85f31c69b5" title="Create a new iterator on the keys. ">codes_keys_iterator_new</a>, <a class="el" href="classeccodes.html#aaaa40acb7f8e05783e106c32a541a66d" title="Advance to the next keys iterator value. ">codes_keys_iterator_next</a>, <a class="el" href="classeccodes.html#a5d81274245d3a60ab85d657aa11512e5" title="Delete a keys iterator and free memory. ">codes_keys_iterator_delete [...]
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ad91213a6e3ee312c50dba0cdbf2bc55d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_write </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write the coded message to a file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">ifile</td><td>file id of a file opened with <a class="el" href="classeccodes.html#a28594e26f2f4b92b9c60e943dd8e1be3">codes_open_file</a> </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="acdb3a889fbd731811821d95d6126e41a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_write_bytes_char </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(in) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write nbytes bytes from the buffer in a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be written </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be written </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a02dd901fef7e6a4cb8ab50ade61e6a66"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_write_bytes_char_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(in) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write nbytes bytes from the buffer in a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be written </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be written </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="abe46cbe07d6a64845bf07e21caa3ae94"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_write_bytes_int4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=4), dimension(:), intent(in) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write nbytes bytes from the buffer in a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be written </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be written </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a771149b4e451839ed7713540de92ce27"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_write_bytes_int4_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=4), dimension(:), intent(in) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write nbytes bytes from the buffer in a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be written </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be written </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a7f69c7e70900ace352970851a4ee5267"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_write_bytes_real4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=4), dimension(:), intent(in) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write nbytes bytes from the buffer in a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be written </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be written </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a7467f8b7c399f5579bd4be244de100dc"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_write_bytes_real4_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=4), dimension(:), intent(in) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write nbytes bytes from the buffer in a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be written </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be written </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aabda087d7f8ba266b0b9f307270f876a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_write_bytes_real8 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=8), dimension(:), intent(in) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write nbytes bytes from the buffer in a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be written </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be written </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a2d0be96a6b529f7e0b8079318a5376bb"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_write_bytes_real8_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=8), dimension(:), intent(in) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write nbytes bytes from the buffer in a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be written </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be written </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this module was generated from the following file:<ul>
+<li>eccodes_f90.f90</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/classes.html b/html/classes.html
new file mode 100644
index 0000000..16a88cb
--- /dev/null
+++ b/html/classes.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: xxindex</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">xxindex</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="qindex"><a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_E">E</a></div>
+<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
+<tr><td rowspan="2" valign="bottom"><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  C  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="interfaceeccodes_1_1codes__get__size.html">eccodes::codes_get_size</a>   </td><td valign="top"><a class="el" href="interfaceeccodes_1_1codes__index__get__size.html">eccodes::codes_index_get_size</a>   </td><td valign="top"><a class="el" href="interfaceeccodes_1_1codes__new__from__message.html">eccodes::codes_new_from_message</a>   </td><td rowspan="2" valign="bottom"><a name="letter_E"></a><table borde [...]
+</td></tr>
+<tr><td valign="top"><a class="el" href="interfaceeccodes_1_1codes__grib__find__nearest.html">eccodes::codes_grib_find_nearest</a>   </td><td valign="top"><a class="el" href="interfaceeccodes_1_1codes__index__select.html">eccodes::codes_index_select</a>   </td><td valign="top"><a class="el" href="interfaceeccodes_1_1codes__read__bytes.html">eccodes::codes_read_bytes</a>   </td></tr>
+<tr><td valign="top"><a class="el" href="structcodes__context.html">codes_context</a>   </td><td valign="top"><a class="el" href="interfaceeccodes_1_1codes__grib__get__data.html">eccodes::codes_grib_get_data</a>   </td><td valign="top"><a class="el" href="structcodes__iterator.html">codes_iterator</a>   </td><td valign="top"><a class="el" href="interfaceeccodes_1_1codes__read__from__file.html">eccodes::codes_read_from_file</a>  &#160 [...]
+<tr><td valign="top"><a class="el" href="interfaceeccodes_1_1codes__get.html">eccodes::codes_get</a>   </td><td valign="top"><a class="el" href="structcodes__handle.html">codes_handle</a>   </td><td valign="top"><a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a>   </td><td valign="top"><a class="el" href="interfaceeccodes_1_1codes__set.html">eccodes::codes_set</a>   </td><td></td></tr>
+<tr><td valign="top"><a class="el" href="interfaceeccodes_1_1codes__get__element.html">eccodes::codes_get_element</a>   </td><td valign="top"><a class="el" href="structcodes__index.html">codes_index</a>   </td><td valign="top"><a class="el" href="structcodes__multi__handle.html">codes_multi_handle</a>   </td><td valign="top"><a class="el" href="interfaceeccodes_1_1codes__write__bytes.html">eccodes::codes_write_bytes</a>   </td>< [...]
+<tr><td valign="top"><a class="el" href="interfaceeccodes_1_1codes__get__message__size.html">eccodes::codes_get_message_size</a>   </td><td valign="top"><a class="el" href="interfaceeccodes_1_1codes__index__get.html">eccodes::codes_index_get</a>   </td><td valign="top"><a class="el" href="structcodes__nearest.html">codes_nearest</a>   </td><td valign="top"><a class="el" href="classec_codes_1_1_codes_internal_error.html">CodesInternalError</a>  [...]
+<tr><td></td><td></td><td></td><td></td><td></td></tr>
+</table>
+<div class="qindex"><a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_E">E</a></div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/clone_8f90-example.html b/html/clone_8f90-example.html
deleted file mode 100644
index 9f2c5d3..0000000
--- a/html/clone_8f90-example.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: clone.f90</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>clone.f90</h1>How to clone a message.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 ! 
-<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 !
-<a name="l00008"></a>00008 !
-<a name="l00009"></a>00009 !  Description: how to create a <span class="keyword">new</span> GRIB message by cloning 
-<a name="l00010"></a>00010 !               an existing message.
-<a name="l00011"></a>00011 !
-<a name="l00012"></a>00012 !
-<a name="l00013"></a>00013 !  Author: Anne Fouilloux
-<a name="l00014"></a>00014 !
-<a name="l00015"></a>00015 !
-<a name="l00016"></a>00016 program clone
-<a name="l00017"></a>00017   use grib_api
-<a name="l00018"></a>00018   implicit none
-<a name="l00019"></a>00019   integer                                       :: err,i,iret
-<a name="l00020"></a>00020   integer                                       :: nx, ny
-<a name="l00021"></a>00021   integer                                       :: infile,outfile
-<a name="l00022"></a>00022   integer                                       :: igrib_in
-<a name="l00023"></a>00023   integer                                       :: igrib_out
-<a name="l00024"></a>00024   character(len=2)                              :: step
-<a name="l00025"></a>00025   double precision, dimension(:,:), allocatable :: field2D
-<a name="l00026"></a>00026 
-<a name="l00027"></a>00027   
-<a name="l00028"></a>00028   call grib_open_file(infile,'../../data/constant_field.grib1','r')
-<a name="l00029"></a>00029   call grib_open_file(outfile,'out.grib1','w')
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031   !     a new grib message is loaded from file
-<a name="l00032"></a>00032   !     igrib is the grib id to be used in subsequent calls
-<a name="l00033"></a>00033   call grib_new_from_file(infile,igrib_in)
-<a name="l00034"></a>00034 
-<a name="l00035"></a>00035   call grib_get(igrib_in,<span class="stringliteral">"numberOfPointsAlongAParallel"</span>, nx)
-<a name="l00036"></a>00036   
-<a name="l00037"></a>00037   call grib_get(igrib_in,<span class="stringliteral">"numberOfPointsAlongAMeridian"</span>,ny)
-<a name="l00038"></a>00038 
-<a name="l00039"></a>00039   allocate(field2D(nx,ny),stat=err)
-<a name="l00040"></a>00040 
-<a name="l00041"></a>00041   if (err .ne. 0) then
-<a name="l00042"></a>00042      print*, 'Failed to allocate ', nx*ny, ' values'
-<a name="l00043"></a>00043      STOP
-<a name="l00044"></a>00044   end if
-<a name="l00045"></a>00045   ! clone the constant field to create 4 new GRIB messages
-<a name="l00046"></a>00046   do i=0,18,6
-<a name="l00047"></a>00047     call grib_clone(igrib_in, igrib_out)
-<a name="l00048"></a>00048     write(step,'(i2)') i
-<a name="l00049"></a>00049 ! Careful: stepRange is a string (could be 0-6, 12-24, etc.)
-<a name="l00050"></a>00050 ! use adjustl to remove blank from the left.
-<a name="l00051"></a>00051     call grib_set(igrib_out,'stepRange',adjustl(step))
-<a name="l00052"></a>00052 
-<a name="l00053"></a>00053     call generate_field(field2D)
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055 ! use pack to create 1D values
-<a name="l00056"></a>00056     call grib_set(igrib_out,'values',pack(field2D, mask=.true.))
-<a name="l00057"></a>00057  
-<a name="l00058"></a>00058   !     write cloned messages to a file
-<a name="l00059"></a>00059     call grib_write(igrib_out,outfile)
-<a name="l00060"></a>00060     call grib_release(igrib_out)
-<a name="l00061"></a>00061   end do
-<a name="l00062"></a>00062 
-<a name="l00063"></a>00063   call grib_release(igrib_in)
-<a name="l00064"></a>00064 
-<a name="l00065"></a>00065   call grib_close_file(infile)
-<a name="l00066"></a>00066 
-<a name="l00067"></a>00067   call grib_close_file(outfile)
-<a name="l00068"></a>00068   deallocate(field2D)
-<a name="l00069"></a>00069 
-<a name="l00070"></a>00070 contains
-<a name="l00071"></a>00071 !======================================
-<a name="l00072"></a>00072 subroutine generate_field(gfield2D)
-<a name="l00073"></a>00073  double precision, dimension(:,:) :: gfield2D
-<a name="l00074"></a>00074 
-<a name="l00075"></a>00075  call random_number(gfield2D)
-<a name="l00076"></a>00076 end subroutine generate_field
-<a name="l00077"></a>00077 !======================================
-<a name="l00078"></a>00078 
-<a name="l00079"></a>00079 end program clone
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/closed.png b/html/closed.png
new file mode 100644
index 0000000..98cc2c9
Binary files /dev/null and b/html/closed.png differ
diff --git a/html/copy__message_8f90-example.html b/html/copy__message_8f90-example.html
deleted file mode 100644
index 1353a30..0000000
--- a/html/copy__message_8f90-example.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: copy_message.f90</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>copy_message.f90</h1>How to copy a message in memory and create a new message.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 ! 
-<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 !
-<a name="l00008"></a>00008 !
-<a name="l00009"></a>00009 !  Description: how to copy a message in memory
-<a name="l00010"></a>00010 !
-<a name="l00011"></a>00011 !
-<a name="l00012"></a>00012 !  Author: Anne Fouilloux
-<a name="l00013"></a>00013 !
-<a name="l00014"></a>00014 !
-<a name="l00015"></a>00015 program copy
-<a name="l00016"></a>00016   use grib_api
-<a name="l00017"></a>00017   implicit none
-<a name="l00018"></a>00018   integer                            :: err, centre
-<a name="l00019"></a>00019   integer(kind=kindOfSize)           :: byte_size
-<a name="l00020"></a>00020   integer                            :: infile,outfile
-<a name="l00021"></a>00021   integer                            :: igrib_in,iret
-<a name="l00022"></a>00022   integer                            :: igrib_out
-<a name="l00023"></a>00023   character(len=1), dimension(:), allocatable :: message
-<a name="l00024"></a>00024 
-<a name="l00025"></a>00025   
-<a name="l00026"></a>00026   call grib_open_file(infile,'../../data/constant_field.grib1','r')
-<a name="l00027"></a>00027   call grib_open_file(outfile,'out.grib1','w')
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029   !     a new grib message is loaded from file
-<a name="l00030"></a>00030   !     igrib is the grib id to be used in subsequent calls
-<a name="l00031"></a>00031   call grib_new_from_file(infile,igrib_in)
-<a name="l00032"></a>00032 
-<a name="l00033"></a>00033   call grib_get_message_size(igrib_in, byte_size)
-<a name="l00034"></a>00034   allocate(message(byte_size), stat=err)
-<a name="l00035"></a>00035 
-<a name="l00036"></a>00036   call grib_copy_message(igrib_in,message)
-<a name="l00037"></a>00037 
-<a name="l00038"></a>00038   call grib_new_from_message(igrib_out, message)
-<a name="l00039"></a>00039 
-<a name="l00040"></a>00040   centre=80
-<a name="l00041"></a>00041   call grib_set(igrib_out,<span class="stringliteral">"centre"</span>,centre)
-<a name="l00042"></a>00042 
-<a name="l00043"></a>00043 !  write messages to a file
-<a name="l00044"></a>00044   call grib_write(igrib_out,outfile)
-<a name="l00045"></a>00045 
-<a name="l00046"></a>00046   call grib_release(igrib_out)
-<a name="l00047"></a>00047 
-<a name="l00048"></a>00048   call grib_release(igrib_in)
-<a name="l00049"></a>00049 
-<a name="l00050"></a>00050   call grib_close_file(infile)
-<a name="l00051"></a>00051   call grib_close_file(outfile)
-<a name="l00052"></a>00052   deallocate(message)
-<a name="l00053"></a>00053 
-<a name="l00054"></a>00054 end program copy
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/dir_9d95adc37effe2d0447790667f945c24.html b/html/dir_9d95adc37effe2d0447790667f945c24.html
new file mode 100644
index 0000000..f6d074d
--- /dev/null
+++ b/html/dir_9d95adc37effe2d0447790667f945c24.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: fortran Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_9d95adc37effe2d0447790667f945c24.html">fortran</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">fortran Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:eccodes__f90_8f90"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>eccodes_f90.f90</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/dir_d050070cc3e4bbd91d897ff8856046e0.html b/html/dir_d050070cc3e4bbd91d897ff8856046e0.html
new file mode 100644
index 0000000..a91cbb7
--- /dev/null
+++ b/html/dir_d050070cc3e4bbd91d897ff8856046e0.html
@@ -0,0 +1,177 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: python Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d28a4824dc47e487b107a5db32ef43c4.html">examples</a></li><li class="navelem"><a class="el" href="dir_d050070cc3e4bbd91d897ff8856046e0.html">python</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">python Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:binary__message_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>binary_message.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__attributes_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_attributes.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__clone_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_clone.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__encode__flight_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_encode_flight.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__expanded_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_expanded.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__get__keys_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_get_keys.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__keys__iterator_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_keys_iterator.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__read__header_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_read_header.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__read__scatterometer_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_read_scatterometer.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__read__synop_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_read_synop.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__read__temp_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_read_temp.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__read__tropical__cyclone_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_read_tropical_cyclone.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__set__keys_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_set_keys.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__subset_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_subset.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:get__product__kind_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>get_product_kind.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__ccsds_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_ccsds.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__clone_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_clone.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__count__messages_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_count_messages.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__count__messages_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_count_messages.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__get__keys_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_get_keys.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__get__message__offset_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_get_message_offset.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__index_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_index.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:python_2grib__iterator_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>python/grib_iterator.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__iterator_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_iterator.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__iterator__bitmap_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_iterator_bitmap.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:python_2grib__keys__iterator_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>python/grib_keys_iterator.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__keys__iterator_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_keys_iterator.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__multi__write_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_multi_write.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__nearest_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_nearest.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:python_2grib__print__data_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>python/grib_print_data.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__print__data_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_print_data.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__samples_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_samples.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__set__bitmap_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_set_bitmap.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__set__keys_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_set_keys.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__set__missing_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_set_missing.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__set__pv_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_set_pv.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gts__get__keys_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>gts_get_keys.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:keys__iterator__bufr_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>keys_iterator_bufr.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:keys__iterator__gts_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>keys_iterator_gts.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:metar__get__keys_8py"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>metar_get_keys.py</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/dir_d28a4824dc47e487b107a5db32ef43c4.html b/html/dir_d28a4824dc47e487b107a5db32ef43c4.html
new file mode 100644
index 0000000..063fdd8
--- /dev/null
+++ b/html/dir_d28a4824dc47e487b107a5db32ef43c4.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: examples Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d28a4824dc47e487b107a5db32ef43c4.html">examples</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">examples Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
+Directories</h2></td></tr>
+<tr class="memitem:dir_da7ee69c60c6cc261c862ec60d8c4bc7"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_da7ee69c60c6cc261c862ec60d8c4bc7.html">C</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:dir_d050070cc3e4bbd91d897ff8856046e0"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_d050070cc3e4bbd91d897ff8856046e0.html">python</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/dir_da7ee69c60c6cc261c862ec60d8c4bc7.html b/html/dir_da7ee69c60c6cc261c862ec60d8c4bc7.html
new file mode 100644
index 0000000..a363a64
--- /dev/null
+++ b/html/dir_da7ee69c60c6cc261c862ec60d8c4bc7.html
@@ -0,0 +1,187 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: C Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d28a4824dc47e487b107a5db32ef43c4.html">examples</a></li><li class="navelem"><a class="el" href="dir_da7ee69c60c6cc261c862ec60d8c4bc7.html">C</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">C Directory Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:box_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>box.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__attributes_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_attributes.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__clone_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_clone.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__expanded_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_expanded.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__get__keys_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_get_keys.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__keys__iterator_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_keys_iterator.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__missing_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_missing.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__read__header_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_read_header.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__read__scatterometer_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_read_scatterometer.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__read__synop_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_read_synop.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__read__temp_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_read_temp.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__set__keys_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_set_keys.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:bufr__subset_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>bufr_subset.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:fieldset_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>fieldset.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:get__product__kind_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>get_product_kind.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__clone_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_clone.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__copy__message_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_copy_message.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__ensemble__index_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_ensemble_index.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__get__data_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_get_data.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__get__keys_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_get_keys.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__index_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_index.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:_c_2grib__iterator_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>C/grib_iterator.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__iterator__bitmap_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_iterator_bitmap.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:_c_2grib__keys__iterator_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>C/grib_keys_iterator.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__list_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_list.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__multi_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_multi.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__multi__write_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_multi_write.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__nearest_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_nearest.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__precipitation_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_precipitation.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__precision_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_precision.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:_c_2grib__print__data_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>C/grib_print_data.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__pthreads_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_pthreads.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__set__bitmap_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_set_bitmap.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__set__data_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_set_data.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__set__keys_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_set_keys.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:grib__set__pv_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>grib_set_pv.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:large__grib1_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>large_grib1.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:mars__param_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>mars_param.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:multi2_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>multi2.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:nc_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>nc.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:new__sample_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>new_sample.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:points_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>points.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:sections__copy_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>sections_copy.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:set__missing_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>set_missing.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:values__check_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>values_check.c</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/doxygen.css b/html/doxygen.css
index 8402fd2..4699e69 100644
--- a/html/doxygen.css
+++ b/html/doxygen.css
@@ -1,322 +1,1357 @@
+/* The standard CSS for doxygen 1.8.5 */
 
-CAPTION { font-weight: bold }
-DIV.qindex {
+body, table, div, p, dl {
+	font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+	font-size: 150%;
+}
+
+.title {
+	font: 400 14px/28px Roboto,sans-serif;
+	font-size: 150%;
+	font-weight: bold;
+	margin: 10px 2px;
+}
+
+h2.groupheader {
+	border-bottom: 1px solid #879ECB;
+	color: #354C7B;
+	font-size: 150%;
+	font-weight: normal;
+	margin-top: 1.75em;
+	padding-top: 8px;
+	padding-bottom: 4px;
 	width: 100%;
-	background-color: #e8eef2;
-	border: 1px solid #84b0c7;
+}
+
+h3.groupheader {
+	font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+	-webkit-transition: text-shadow 0.5s linear;
+	-moz-transition: text-shadow 0.5s linear;
+	-ms-transition: text-shadow 0.5s linear;
+	-o-transition: text-shadow 0.5s linear;
+	transition: text-shadow 0.5s linear;
+	margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+	text-shadow: 0 0 15px cyan;
+}
+
+dt {
+	font-weight: bold;
+}
+
+div.multicol {
+	-moz-column-gap: 1em;
+	-webkit-column-gap: 1em;
+	-moz-column-count: 3;
+	-webkit-column-count: 3;
+}
+
+p.startli, p.startdd, p.starttd {
+	margin-top: 2px;
+}
+
+p.endli {
+	margin-bottom: 0px;
+}
+
+p.enddd {
+	margin-bottom: 4px;
+}
+
+p.endtd {
+	margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+	font-weight: bold;
+}
+
+span.legend {
+        font-size: 70%;
+        text-align: center;
+}
+
+h3.version {
+        font-size: 90%;
+        text-align: center;
+}
+
+div.qindex, div.navtab{
+	background-color: #EBEFF6;
+	border: 1px solid #A3B4D7;
 	text-align: center;
-	margin: 2px;
-	padding: 2px;
-	line-height: 140%;
 }
-DIV.nav {
+
+div.qindex, div.navpath {
 	width: 100%;
-	background-color: #e8eef2;
-	border: 1px solid #84b0c7;
-	text-align: center;
-	margin: 2px;
-	padding: 2px;
 	line-height: 140%;
 }
-DIV.navtab {
-       background-color: #e8eef2;
-       border: 1px solid #84b0c7;
-       text-align: center;
-       margin: 2px;
-       margin-right: 15px;
-       padding: 2px;
+
+div.navtab {
+	margin-right: 15px;
 }
-TD.navtab {
-       font-size: 70%;
+
+/* @group Link Styling */
+
+a {
+	color: #3D578C;
+	font-weight: normal;
+	text-decoration: none;
 }
-A.qindex {
-       text-decoration: none;
-       font-weight: bold;
-       color: #1A419D;
+
+.contents a:visited {
+	color: #4665A2;
 }
-A.qindex:visited {
-       text-decoration: none;
-       font-weight: bold;
-       color: #1A419D
+
+a:hover {
+	text-decoration: underline;
 }
-A.qindexHL {
-	text-decoration: none;
+
+a.qindex {
 	font-weight: bold;
-	background-color: #6666cc;
+}
+
+a.qindexHL {
+	font-weight: bold;
+	background-color: #9CAFD4;
 	color: #ffffff;
-	border: 1px double #9295C2;
-}
-A.el { text-decoration: none; font-weight: bold }
-A.elRef { font-weight: bold }
-A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
-A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
-A.codeRef:link { font-weight: normal; color: #0000FF}
-A.codeRef:visited { font-weight: normal; color: #0000FF}
-DL.el { margin-left: -1cm }
-.fragment {
-       font-family: monospace, fixed;
-       font-size: 95%;
-}
-PRE.fragment {
-	border: 1px solid #CCCCCC;
-	background-color: #f5f5f5;
-	margin-top: 4px;
-	margin-bottom: 4px;
-	margin-left: 2px;
-	margin-right: 8px;
-	padding-left: 6px;
-	padding-right: 6px;
-	padding-top: 4px;
-	padding-bottom: 4px;
+	border: 1px double #869DCA;
 }
-DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
 
-DIV.groupHeader {
-       margin-left: 16px;
-       margin-top: 12px;
-       margin-bottom: 6px;
-       font-weight: bold;
+.contents a.qindexHL:visited {
+        color: #ffffff;
 }
-DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
 
-TD.indexkey {
-	background-color: #e8eef2;
+a.el {
 	font-weight: bold;
-	padding-right  : 10px;
-	padding-top    : 2px;
-	padding-left   : 10px;
-	padding-bottom : 2px;
-	margin-left    : 0px;
-	margin-right   : 0px;
-	margin-top     : 2px;
-	margin-bottom  : 2px;
-	border: 1px solid #CCCCCC;
-}
-TD.indexvalue {
-	background-color: #e8eef2;
-	font-style: italic;
-	padding-right  : 10px;
-	padding-top    : 2px;
-	padding-left   : 10px;
-	padding-bottom : 2px;
-	margin-left    : 0px;
-	margin-right   : 0px;
-	margin-top     : 2px;
-	margin-bottom  : 2px;
-	border: 1px solid #CCCCCC;
-}
-TR.memlist {
-   background-color: #f0f0f0; 
-}
-P.formulaDsp { text-align: center; }
-IMG.formulaDsp { }
-IMG.formulaInl { vertical-align: middle; }
-SPAN.keyword       { color: #008000 }
-SPAN.keywordtype   { color: #604020 }
-SPAN.keywordflow   { color: #e08000 }
-SPAN.comment       { color: #800000 }
-SPAN.preprocessor  { color: #806020 }
-SPAN.stringliteral { color: #002080 }
-SPAN.charliteral   { color: #008080 }
-.mdescLeft {
-       padding: 0px 8px 4px 8px;
-	font-size: 80%;
-	font-style: italic;
-	background-color: #FAFAFA;
-	border-top: 1px none #E0E0E0;
-	border-right: 1px none #E0E0E0;
-	border-bottom: 1px none #E0E0E0;
-	border-left: 1px none #E0E0E0;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+	color: #4665A2; 
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+	color: #4665A2; 
+}
+
+/* @end */
+
+dl.el {
+	margin-left: -1cm;
+}
+
+pre.fragment {
+        border: 1px solid #C4CFE5;
+        background-color: #FBFCFD;
+        padding: 4px 6px;
+        margin: 4px 8px 4px 2px;
+        overflow: auto;
+        word-wrap: break-word;
+        font-size:  9pt;
+        line-height: 125%;
+        font-family: monospace, fixed;
+        font-size: 105%;
+}
+
+div.fragment {
+        padding: 0px;
+        margin: 0px;
+	background-color: #FBFCFD;
+	border: 1px solid #C4CFE5;
+}
+
+div.line {
+	font-family: monospace, fixed;
+        font-size: 13px;
+	min-height: 13px;
+	line-height: 1.0;
+	text-wrap: unrestricted;
+	white-space: -moz-pre-wrap; /* Moz */
+	white-space: -pre-wrap;     /* Opera 4-6 */
+	white-space: -o-pre-wrap;   /* Opera 7 */
+	white-space: pre-wrap;      /* CSS3  */
+	word-wrap: break-word;      /* IE 5.5+ */
+	text-indent: -53px;
+	padding-left: 53px;
+	padding-bottom: 0px;
 	margin: 0px;
+	-webkit-transition-property: background-color, box-shadow;
+	-webkit-transition-duration: 0.5s;
+	-moz-transition-property: background-color, box-shadow;
+	-moz-transition-duration: 0.5s;
+	-ms-transition-property: background-color, box-shadow;
+	-ms-transition-duration: 0.5s;
+	-o-transition-property: background-color, box-shadow;
+	-o-transition-duration: 0.5s;
+	transition-property: background-color, box-shadow;
+	transition-duration: 0.5s;
 }
-.mdescRight {
-       padding: 0px 8px 4px 8px;
-	font-size: 80%;
+
+div.line.glow {
+	background-color: cyan;
+	box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+	padding-right: 4px;
+	text-align: right;
+	border-right: 2px solid #0F0;
+	background-color: #E8E8E8;
+        white-space: pre;
+}
+span.lineno a {
+	background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+	background-color: #C8C8C8;
+}
+
+div.ah {
+	background-color: black;
+	font-weight: bold;
+	color: #ffffff;
+	margin-bottom: 3px;
+	margin-top: 3px;
+	padding: 0.2em;
+	border: solid thin #333;
+	border-radius: 0.5em;
+	-webkit-border-radius: .5em;
+	-moz-border-radius: .5em;
+	box-shadow: 2px 2px 3px #999;
+	-webkit-box-shadow: 2px 2px 3px #999;
+	-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+	background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+	background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.groupHeader {
+	margin-left: 16px;
+	margin-top: 12px;
+	font-weight: bold;
+}
+
+div.groupText {
+	margin-left: 16px;
 	font-style: italic;
-	background-color: #FAFAFA;
-	border-top: 1px none #E0E0E0;
-	border-right: 1px none #E0E0E0;
-	border-bottom: 1px none #E0E0E0;
-	border-left: 1px none #E0E0E0;
-	margin: 0px;
 }
-.memItemLeft {
-	padding: 1px 0px 0px 8px;
-	margin: 4px;
-	border-top-width: 1px;
-	border-right-width: 1px;
-	border-bottom-width: 1px;
-	border-left-width: 1px;
-	border-top-color: #E0E0E0;
-	border-right-color: #E0E0E0;
-	border-bottom-color: #E0E0E0;
-	border-left-color: #E0E0E0;
-	border-top-style: solid;
-	border-right-style: none;
-	border-bottom-style: none;
-	border-left-style: none;
-	background-color: #FAFAFA;
-	font-size: 80%;
+
+body {
+	background-color: white;
+	color: black;
+        margin: 0;
 }
-.memItemRight {
-	padding: 1px 8px 0px 8px;
-	margin: 4px;
-	border-top-width: 1px;
-	border-right-width: 1px;
-	border-bottom-width: 1px;
-	border-left-width: 1px;
-	border-top-color: #E0E0E0;
-	border-right-color: #E0E0E0;
-	border-bottom-color: #E0E0E0;
-	border-left-color: #E0E0E0;
-	border-top-style: solid;
-	border-right-style: none;
-	border-bottom-style: none;
-	border-left-style: none;
-	background-color: #FAFAFA;
-	font-size: 80%;
+
+div.contents {
+	margin-top: 10px;
+	margin-left: 12px;
+	margin-right: 8px;
 }
-.memTemplItemLeft {
-	padding: 1px 0px 0px 8px;
-	margin: 4px;
-	border-top-width: 1px;
-	border-right-width: 1px;
-	border-bottom-width: 1px;
-	border-left-width: 1px;
-	border-top-color: #E0E0E0;
-	border-right-color: #E0E0E0;
-	border-bottom-color: #E0E0E0;
-	border-left-color: #E0E0E0;
-	border-top-style: none;
-	border-right-style: none;
-	border-bottom-style: none;
-	border-left-style: none;
-	background-color: #FAFAFA;
-	font-size: 80%;
+
+td.indexkey {
+	background-color: #EBEFF6;
+	font-weight: bold;
+	border: 1px solid #C4CFE5;
+	margin: 2px 0px 2px 0;
+	padding: 2px 10px;
+        white-space: nowrap;
+        vertical-align: top;
 }
-.memTemplItemRight {
-	padding: 1px 8px 0px 8px;
-	margin: 4px;
-	border-top-width: 1px;
-	border-right-width: 1px;
-	border-bottom-width: 1px;
-	border-left-width: 1px;
-	border-top-color: #E0E0E0;
-	border-right-color: #E0E0E0;
-	border-bottom-color: #E0E0E0;
-	border-left-color: #E0E0E0;
-	border-top-style: none;
-	border-right-style: none;
-	border-bottom-style: none;
-	border-left-style: none;
-	background-color: #FAFAFA;
-	font-size: 80%;
+
+td.indexvalue {
+	background-color: #EBEFF6;
+	border: 1px solid #C4CFE5;
+	padding: 2px 10px;
+	margin: 2px 0px;
 }
-.memTemplParams {
-	padding: 1px 0px 0px 8px;
-	margin: 4px;
-	border-top-width: 1px;
-	border-right-width: 1px;
-	border-bottom-width: 1px;
-	border-left-width: 1px;
-	border-top-color: #E0E0E0;
-	border-right-color: #E0E0E0;
-	border-bottom-color: #E0E0E0;
-	border-left-color: #E0E0E0;
-	border-top-style: solid;
-	border-right-style: none;
-	border-bottom-style: none;
-	border-left-style: none;
-       color: #606060;
-	background-color: #FAFAFA;
-	font-size: 80%;
+
+tr.memlist {
+	background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+	text-align: center;
+}
+
+img.formulaDsp {
+	
+}
+
+img.formulaInl {
+	vertical-align: middle;
+}
+
+div.center {
+	text-align: center;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+}
+
+div.center img {
+	border: 0px;
+}
+
+address.footer {
+	text-align: right;
+	padding-right: 12px;
+}
+
+img.footer {
+	border: 0px;
+	vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+	color: #008000
+}
+
+span.keywordtype {
+	color: #604020
+}
+
+span.keywordflow {
+	color: #e08000
 }
-.search     { color: #003399;
-              font-weight: bold;
+
+span.comment {
+	color: #800000
+}
+
+span.preprocessor {
+	color: #806020
 }
-FORM.search {
-              margin-bottom: 0px;
-              margin-top: 0px;
+
+span.stringliteral {
+	color: #002080
 }
-INPUT.search { font-size: 75%;
-               color: #000080;
-               font-weight: normal;
-               background-color: #e8eef2;
+
+span.charliteral {
+	color: #008080
 }
-TD.tiny      { font-size: 75%;
+
+span.vhdldigit { 
+	color: #ff00ff 
 }
 
-.dirtab { padding: 4px;
-          border-collapse: collapse;
-          border: 1px solid #84b0c7;
+span.vhdlchar { 
+	color: #000000 
 }
-TH.dirtab { background: #e8eef2;
-            font-weight: bold;
+
+span.vhdlkeyword { 
+	color: #700070 
 }
-HR { height: 1px;
-     border: none;
-     border-top: 1px solid black;
+
+span.vhdllogic { 
+	color: #ff0000 
 }
 
-/* Style for detailed member documentation */
+blockquote {
+        background-color: #F7F8FB;
+        border-left: 2px solid #9CAFD4;
+        margin: 0 24px 0 4px;
+        padding: 0 12px 0 16px;
+}
+
+/* @end */
+
+/*
+.search {
+	color: #003399;
+	font-weight: bold;
+}
+
+form.search {
+	margin-bottom: 0px;
+	margin-top: 0px;
+}
+
+input.search {
+	font-size: 75%;
+	color: #000080;
+	font-weight: normal;
+	background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+	font-size: 75%;
+}
+
+.dirtab {
+	padding: 4px;
+	border-collapse: collapse;
+	border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+	background: #EBEFF6;
+	font-weight: bold;
+}
+
+hr {
+	height: 0px;
+	border: none;
+	border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+	height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+	border-spacing: 0px;
+	padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+	-webkit-transition-property: background-color, box-shadow;
+	-webkit-transition-duration: 0.5s;
+	-moz-transition-property: background-color, box-shadow;
+	-moz-transition-duration: 0.5s;
+	-ms-transition-property: background-color, box-shadow;
+	-ms-transition-duration: 0.5s;
+	-o-transition-property: background-color, box-shadow;
+	-o-transition-duration: 0.5s;
+	transition-property: background-color, box-shadow;
+	transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+	background-color: cyan;
+	box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+	background-color: #F9FAFC;
+	border: none;
+	margin: 4px;
+	padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+	padding: 0px 8px 4px 8px;
+	color: #555;
+}
+
+.memSeparator {
+        border-bottom: 1px solid #DEE4F0;
+        line-height: 1px;
+        margin: 0px;
+        padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+        white-space: nowrap;
+}
+
+.memItemRight {
+	width: 100%;
+}
+
+.memTemplParams {
+	color: #4665A2;
+        white-space: nowrap;
+	font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
 .memtemplate {
-  font-size: 80%;
-  color: #606060;
-  font-weight: normal;
-} 
-.memnav { 
-  background-color: #e8eef2;
-  border: 1px solid #84b0c7;
-  text-align: center;
-  margin: 2px;
-  margin-right: 15px;
-  padding: 2px;
+	font-size: 80%;
+	color: #4665A2;
+	font-weight: normal;
+	margin-left: 9px;
 }
+
+.memnav {
+	background-color: #EBEFF6;
+	border: 1px solid #A3B4D7;
+	text-align: center;
+	margin: 2px;
+	margin-right: 15px;
+	padding: 2px;
+}
+
+.mempage {
+	width: 100%;
+}
+
 .memitem {
-  padding: 4px;
-  background-color: #eef3f5;
-  border-width: 1px;
-  border-style: solid;
-  border-color: #dedeee;
-  -moz-border-radius: 8px 8px 8px 8px;
+	padding: 0;
+	margin-bottom: 10px;
+	margin-right: 5px;
+        -webkit-transition: box-shadow 0.5s linear;
+        -moz-transition: box-shadow 0.5s linear;
+        -ms-transition: box-shadow 0.5s linear;
+        -o-transition: box-shadow 0.5s linear;
+        transition: box-shadow 0.5s linear;
+        display: table !important;
+        width: 100%;
+}
+
+.memitem.glow {
+         box-shadow: 0 0 15px cyan;
 }
+
 .memname {
-  white-space: nowrap;
-  font-weight: bold;
+        font-weight: bold;
+        margin-left: 6px;
+}
+
+.memname td {
+	vertical-align: bottom;
 }
-.memdoc{
-  padding-left: 10px;
+
+.memproto, dl.reflist dt {
+        border-top: 1px solid #A8B8D9;
+        border-left: 1px solid #A8B8D9;
+        border-right: 1px solid #A8B8D9;
+        padding: 6px 0px 6px 0px;
+        color: #253555;
+        font-weight: bold;
+        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+        /* opera specific markup */
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        border-top-right-radius: 4px;
+        border-top-left-radius: 4px;
+        /* firefox specific markup */
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        -moz-border-radius-topright: 4px;
+        -moz-border-radius-topleft: 4px;
+        /* webkit specific markup */
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        -webkit-border-top-right-radius: 4px;
+        -webkit-border-top-left-radius: 4px;
+
+}
+
+.memdoc, dl.reflist dd {
+        border-bottom: 1px solid #A8B8D9;      
+        border-left: 1px solid #A8B8D9;      
+        border-right: 1px solid #A8B8D9; 
+        padding: 6px 10px 2px 10px;
+        background-color: #FBFCFD;
+        border-top-width: 0;
+        background-image:url('nav_g.png');
+        background-repeat:repeat-x;
+        background-color: #FFFFFF;
+        /* opera specific markup */
+        border-bottom-left-radius: 4px;
+        border-bottom-right-radius: 4px;
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        /* firefox specific markup */
+        -moz-border-radius-bottomleft: 4px;
+        -moz-border-radius-bottomright: 4px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        /* webkit specific markup */
+        -webkit-border-bottom-left-radius: 4px;
+        -webkit-border-bottom-right-radius: 4px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
 }
-.memproto {
-  background-color: #d5e1e8;
-  width: 100%;
-  border-width: 1px;
-  border-style: solid;
-  border-color: #84b0c7;
-  font-weight: bold;
-  -moz-border-radius: 8px 8px 8px 8px;
+
+dl.reflist dt {
+        padding: 5px;
+}
+
+dl.reflist dd {
+        margin: 0px 0px 10px 0px;
+        padding: 5px;
 }
+
 .paramkey {
-  text-align: right;
+	text-align: right;
 }
+
 .paramtype {
-  white-space: nowrap;
+	white-space: nowrap;
 }
+
 .paramname {
-  color: #602020;
-  font-style: italic;
-  white-space: nowrap;
-}
-/* End Styling for detailed member documentation */
-
-/* for the tree view */
-.ftvtree {
-	font-family: sans-serif;
-	margin:0.5em;
-}
-.directory { font-size: 9pt; font-weight: bold; }
-.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; }
-.directory > h3 { margin-top: 0; }
-.directory p { margin: 0px; white-space: nowrap; }
-.directory div { display: none; margin: 0px; }
-.directory img { vertical-align: -30%; }
+	color: #602020;
+	white-space: nowrap;
+}
+.paramname em {
+	font-style: normal;
+}
+.paramname code {
+        line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+        margin-left: 0px;
+        padding-left: 0px;
+}       
+
+.params .paramname, .retval .paramname {
+        font-weight: bold;
+        vertical-align: top;
+}
+        
+.params .paramtype {
+        font-style: italic;
+        vertical-align: top;
+}       
+        
+.params .paramdir {
+        font-family: "courier new",courier,monospace;
+        vertical-align: top;
+}
+
+table.mlabels {
+	border-spacing: 0px;
+}
+
+td.mlabels-left {
+	width: 100%;
+	padding: 0px;
+}
+
+td.mlabels-right {
+	vertical-align: bottom;
+	padding: 0px;
+	white-space: nowrap;
+}
+
+span.mlabels {
+        margin-left: 8px;
+}
+
+span.mlabel {
+        background-color: #728DC1;
+        border-top:1px solid #5373B4;
+        border-left:1px solid #5373B4;
+        border-right:1px solid #C4CFE5;
+        border-bottom:1px solid #C4CFE5;
+	text-shadow: none;
+	color: white;
+	margin-right: 4px;
+	padding: 2px 3px;
+	border-radius: 3px;
+	font-size: 7pt;
+	white-space: nowrap;
+	vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view when not used as main index */
+
+div.directory {
+        margin: 10px 0px;
+        border-top: 1px solid #A8B8D9;
+        border-bottom: 1px solid #A8B8D9;
+        width: 100%;
+}
+
+.directory table {
+        border-collapse:collapse;
+}
+
+.directory td {
+        margin: 0px;
+        padding: 0px;
+	vertical-align: top;
+}
+
+.directory td.entry {
+        white-space: nowrap;
+        padding-right: 6px;
+	padding-top: 3px;
+}
+
+.directory td.entry a {
+        outline:none;
+}
+
+.directory td.entry a img {
+        border: none;
+}
+
+.directory td.desc {
+        width: 100%;
+        padding-left: 6px;
+	padding-right: 6px;
+	padding-top: 3px;
+	border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+	padding-left: 6px;
+	background-color: #F7F8FB;
+}
+
+.directory img {
+	vertical-align: -30%;
+}
+
+.directory .levels {
+        white-space: nowrap;
+        width: 100%;
+        text-align: right;
+        font-size: 9pt;
+}
+
+.directory .levels span {
+        cursor: pointer;
+        padding-left: 2px;
+        padding-right: 2px;
+	color: #3D578C;
+}
+
+div.dynheader {
+        margin-top: 8px;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+address {
+	font-style: normal;
+	color: #2A3D61;
+}
+
+table.doxtable {
+	border-collapse:collapse;
+        margin-top: 4px;
+        margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+	border: 1px solid #2D4068;
+	padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+	background-color: #374F7F;
+	color: #FFFFFF;
+	font-size: 110%;
+	padding-bottom: 4px;
+	padding-top: 5px;
+}
+
+table.fieldtable {
+        /*width: 100%;*/
+        margin-bottom: 10px;
+        border: 1px solid #A8B8D9;
+        border-spacing: 0px;
+        -moz-border-radius: 4px;
+        -webkit-border-radius: 4px;
+        border-radius: 4px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+        padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+        white-space: nowrap;
+        border-right: 1px solid #A8B8D9;
+        border-bottom: 1px solid #A8B8D9;
+        vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+        padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+        border-bottom: 1px solid #A8B8D9;
+        /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+        margin-top: 0px;
+}       
+        
+.fieldtable td.fielddoc p:last-child {
+        margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+        border-bottom: none;
+}
+
+.fieldtable th {
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+        font-size: 90%;
+        color: #253555;
+        padding-bottom: 4px;
+        padding-top: 5px;
+        text-align:left;
+        -moz-border-radius-topleft: 4px;
+        -moz-border-radius-topright: 4px;
+        -webkit-border-top-left-radius: 4px;
+        -webkit-border-top-right-radius: 4px;
+        border-top-left-radius: 4px;
+        border-top-right-radius: 4px;
+        border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+	top: 0px;
+	left: 10px;
+	height: 36px;
+	background-image: url('tab_b.png');
+	z-index: 101;
+	overflow: hidden;
+	font-size: 13px;
+}
+
+.navpath ul
+{
+	font-size: 11px;
+	background-image:url('tab_b.png');
+	background-repeat:repeat-x;
+	background-position: 0 -5px;
+	height:30px;
+	line-height:30px;
+	color:#8AA0CC;
+	border:solid 1px #C2CDE4;
+	overflow:hidden;
+	margin:0px;
+	padding:0px;
+}
+
+.navpath li
+{
+	list-style-type:none;
+	float:left;
+	padding-left:10px;
+	padding-right:15px;
+	background-image:url('bc_s.png');
+	background-repeat:no-repeat;
+	background-position:right;
+	color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+	height:32px;
+	display:block;
+	text-decoration: none;
+	outline: none;
+	color: #283A5D;
+	font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+	text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+	text-decoration: none;        
+}
+
+.navpath li.navelem a:hover
+{
+	color:#6884BD;
+}
+
+.navpath li.footer
+{
+        list-style-type:none;
+        float:right;
+        padding-left:10px;
+        padding-right:15px;
+        background-image:none;
+        background-repeat:no-repeat;
+        background-position:right;
+        color:#364D7C;
+        font-size: 8pt;
+}
+
+
+div.summary
+{
+	float: right;
+	font-size: 8pt;
+	padding-right: 5px;
+	width: 50%;
+	text-align: right;
+}       
+
+div.summary a
+{
+	white-space: nowrap;
+}
+
+div.ingroups
+{
+	font-size: 8pt;
+	width: 50%;
+	text-align: left;
+}
+
+div.ingroups a
+{
+	white-space: nowrap;
+}
+
+div.header
+{
+        background-image:url('nav_h.png');
+        background-repeat:repeat-x;
+	background-color: #F9FAFC;
+	margin:  0px;
+	border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+	padding: 5px 5px 5px 10px;
+}
+
+dl
+{
+        padding: 0 0 0 10px;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+dl.section
+{
+	margin-left: 0px;
+	padding-left: 0px;
+}
+
+dl.note
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #D0C000;
+}
+
+dl.warning, dl.attention
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #00D000;
+}
+
+dl.deprecated
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #505050;
+}
+
+dl.todo
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #00C0E0;
+}
+
+dl.test
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #3030E0;
+}
+
+dl.bug
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #C08050;
+}
+
+dl.section dd {
+	margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+	text-align: center;
+	vertical-align: bottom;
+	border-collapse: separate;
+}
+ 
+#projectlogo img
+{ 
+	border: 0px none;
+}
+ 
+#projectname
+{
+	font: 300% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 2px 0px;
+}
+    
+#projectbrief
+{
+	font: 120% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 0px;
+}
+
+#projectnumber
+{
+	font: 50% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 0px;
+}
+
+#titlearea
+{
+	padding: 0px;
+	margin: 0px;
+	width: 100%;
+	border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+        text-align: center;
+}
+
+.dotgraph
+{
+        text-align: center;
+}
+
+.mscgraph
+{
+        text-align: center;
+}
+
+.caption
+{
+	font-weight: bold;
+}
+
+div.zoom
+{
+	border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+        margin-bottom:50px;
+}
+
+dl.citelist dt {
+        color:#334975;
+        float:left;
+        font-weight:bold;
+        margin-right:10px;
+        padding:5px;
+}
+
+dl.citelist dd {
+        margin:2px 0;
+        padding:5px 0;
+}
+
+div.toc {
+        padding: 14px 25px;
+        background-color: #F4F6FA;
+        border: 1px solid #D8DFEE;
+        border-radius: 7px 7px 7px 7px;
+        float: right;
+        height: auto;
+        margin: 0 20px 10px 10px;
+        width: 200px;
+}
+
+div.toc li {
+        background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+        font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+        margin-top: 5px;
+        padding-left: 10px;
+        padding-top: 2px;
+}
+
+div.toc h3 {
+        font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+	color: #4665A2;
+        border-bottom: 0 none;
+        margin: 0;
+}
+
+div.toc ul {
+        list-style: none outside none;
+        border: medium none;
+        padding: 0px;
+}       
+
+div.toc li.level1 {
+        margin-left: 0px;
+}
+
+div.toc li.level2 {
+        margin-left: 15px;
+}
+
+div.toc li.level3 {
+        margin-left: 30px;
+}
+
+div.toc li.level4 {
+        margin-left: 45px;
+}
+
+.inherit_header {
+        font-weight: bold;
+        color: gray;
+        cursor: pointer;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+.inherit_header td {
+        padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+        display: none;
+}
+
+tr.heading h2 {
+        margin-top: 12px;
+        margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+        position: absolute;
+        display: none;
+}
+
+#powerTip {
+	cursor: default;
+	white-space: nowrap;
+	background-color: white;
+	border: 1px solid gray;
+	border-radius: 4px 4px 4px 4px;
+	box-shadow: 1px 1px 7px gray;
+	display: none;
+	font-size: smaller;
+	max-width: 80%;
+	opacity: 0.9;
+	padding: 1ex 1em 1em;
+	position: absolute;
+	z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+        color: grey;
+	font-style: italic;
+}
+
+#powerTip div.ttname a {
+        font-weight: bold;
+}
+
+#powerTip div.ttname {
+        font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+        color: #006318;
+}
+
+#powerTip div {
+        margin: 0px;
+        padding: 0px;
+        font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+	content: "";
+	position: absolute;
+	margin: 0px;
+}
+
+#powerTip.n:after,  #powerTip.n:before,
+#powerTip.s:after,  #powerTip.s:before,
+#powerTip.w:after,  #powerTip.w:before,
+#powerTip.e:after,  #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+	border: solid transparent;
+	content: " ";
+	height: 0;
+	width: 0;
+	position: absolute;
+}
+
+#powerTip.n:after,  #powerTip.s:after,
+#powerTip.w:after,  #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+	border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before,  #powerTip.s:before,
+#powerTip.w:before,  #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+	border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after,  #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+	top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+	border-top-color: #ffffff;
+	border-width: 10px;
+	margin: 0px -10px;
+}
+#powerTip.n:before {
+	border-top-color: #808080;
+	border-width: 11px;
+	margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+	left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+	right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+	left: 14px;
+}
+
+#powerTip.s:after,  #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+	bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+	border-bottom-color: #ffffff;
+	border-width: 10px;
+	margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+	border-bottom-color: #808080;
+	border-width: 11px;
+	margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+	left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+	right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+	left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+	left: 100%;
+}
+#powerTip.e:after {
+	border-left-color: #ffffff;
+	border-width: 10px;
+	top: 50%;
+	margin-top: -10px;
+}
+#powerTip.e:before {
+	border-left-color: #808080;
+	border-width: 11px;
+	top: 50%;
+	margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+	right: 100%;
+}
+#powerTip.w:after {
+	border-right-color: #ffffff;
+	border-width: 10px;
+	top: 50%;
+	margin-top: -10px;
+}
+#powerTip.w:before {
+	border-right-color: #808080;
+	border-width: 11px;
+	top: 50%;
+	margin-top: -11px;
+}
+
+ at media print
+{
+  #top { display: none; }
+  #side-nav { display: none; }
+  #nav-path { display: none; }
+  body { overflow:visible; }
+  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+  .summary { display: none; }
+  .memitem { page-break-inside: avoid; }
+  #doc-content
+  {
+    margin-left:0 !important;
+    height:auto !important;
+    width:auto !important;
+    overflow:inherit;
+    display:inline;
+  }
+}
+
diff --git a/html/doxygen.png b/html/doxygen.png
index f0a274b..3ff17d8 100644
Binary files a/html/doxygen.png and b/html/doxygen.png differ
diff --git a/html/dynsections.js b/html/dynsections.js
new file mode 100644
index 0000000..ed092c7
--- /dev/null
+++ b/html/dynsections.js
@@ -0,0 +1,97 @@
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+   content.hide();
+   summary.show();
+   $(linkObj).addClass('closed').removeClass('opened');
+   $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+   content.show();
+   summary.hide();
+   $(linkObj).removeClass('closed').addClass('opened');
+   $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ } 
+ return false;
+}
+
+function updateStripes()
+{
+  $('table.directory tr').
+       removeClass('even').filter(':visible:even').addClass('even');
+}
+function toggleLevel(level)
+{
+  $('table.directory tr').each(function(){ 
+    var l = this.id.split('_').length-1;
+    var i = $('#img'+this.id.substring(3));
+    var a = $('#arr'+this.id.substring(3));
+    if (l<level+1) {
+      i.attr('src','ftv2folderopen.png');
+      a.attr('src','ftv2mnode.png');
+      $(this).show();
+    } else if (l==level+1) {
+      i.attr('src','ftv2folderclosed.png');
+      a.attr('src','ftv2pnode.png');
+      $(this).show();
+    } else {
+      $(this).hide();
+    }
+  });
+  updateStripes();
+}
+
+function toggleFolder(id)
+{
+  //The clicked row
+  var currentRow = $('#row_'+id);
+  var currentRowImages = currentRow.find("img");
+
+  //All rows after the clicked row
+  var rows = currentRow.nextAll("tr");
+
+  //Only match elements AFTER this one (can't hide elements before)
+  var childRows = rows.filter(function() {
+    var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
+    return this.id.match(re);
+  });
+
+  //First row is visible we are HIDING
+  if (childRows.filter(':first').is(':visible')===true) {
+    currentRowImages.filter("[id^=arr]").attr('src', 'ftv2pnode.png');
+    currentRowImages.filter("[id^=img]").attr('src', 'ftv2folderclosed.png');
+    rows.filter("[id^=row_"+id+"]").hide();
+  } else { //We are SHOWING
+    //All sub images
+    var childImages = childRows.find("img");
+    var childImg = childImages.filter("[id^=img]");
+    var childArr = childImages.filter("[id^=arr]");
+
+    currentRow.find("[id^=arr]").attr('src', 'ftv2mnode.png'); //open row
+    currentRow.find("[id^=img]").attr('src', 'ftv2folderopen.png'); //open row
+    childImg.attr('src','ftv2folderclosed.png'); //children closed
+    childArr.attr('src','ftv2pnode.png'); //children closed
+    childRows.show(); //show all children
+  }
+  updateStripes();
+}
+
+
+function toggleInherit(id)
+{
+  var rows = $('tr.inherit.'+id);
+  var img = $('tr.inherit_header.'+id+' img');
+  var src = $(img).attr('src');
+  if (rows.filter(':first').is(':visible')===true) {
+    rows.css('display','none');
+    $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
+  } else {
+    rows.css('display','table-row'); // using show() causes jump in firefox
+    $(img).attr('src',src.substring(0,src.length-10)+'open.png');
+  }
+}
+
diff --git a/html/eccodes_8h.html b/html/eccodes_8h.html
new file mode 100644
index 0000000..c79fc88
--- /dev/null
+++ b/html/eccodes_8h.html
@@ -0,0 +1,752 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: eccodes.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Macros</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">eccodes.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>The <a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a> C header file.  
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:gaa0b60d176497f5d4bc34564c31e76cf1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gaa0b60d176497f5d4bc34564c31e76cf1">CODES_KEYS_ITERATOR_ALL_KEYS</a>   0</td></tr>
+<tr class="separator:gaa0b60d176497f5d4bc34564c31e76cf1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga782b83b0b913da3841eb82921642aaa8"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ga782b83b0b913da3841eb82921642aaa8">CODES_KEYS_ITERATOR_SKIP_READ_ONLY</a>   (1<<0)</td></tr>
+<tr class="separator:ga782b83b0b913da3841eb82921642aaa8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6f7115fdd2c821886a43934e4aa16073"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ga6f7115fdd2c821886a43934e4aa16073">CODES_KEYS_ITERATOR_SKIP_OPTIONAL</a>   (1<<1)</td></tr>
+<tr class="separator:ga6f7115fdd2c821886a43934e4aa16073"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga81f606c554c906f1fed1b9cd432aec00"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ga81f606c554c906f1fed1b9cd432aec00">CODES_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC</a>   (1<<2)</td></tr>
+<tr class="separator:ga81f606c554c906f1fed1b9cd432aec00"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gae3286f2212339d42d43938d9c5c6255c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gae3286f2212339d42d43938d9c5c6255c">CODES_KEYS_ITERATOR_SKIP_CODED</a>   (1<<3)</td></tr>
+<tr class="separator:gae3286f2212339d42d43938d9c5c6255c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaaecbb01ec3bd2d67a42aad56c96fb775"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gaaecbb01ec3bd2d67a42aad56c96fb775">CODES_KEYS_ITERATOR_SKIP_COMPUTED</a>   (1<<4)</td></tr>
+<tr class="separator:gaaecbb01ec3bd2d67a42aad56c96fb775"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga532be495f6cd54a852288a88bd0a439f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ga532be495f6cd54a852288a88bd0a439f">CODES_KEYS_ITERATOR_SKIP_DUPLICATES</a>   (1<<5)</td></tr>
+<tr class="separator:ga532be495f6cd54a852288a88bd0a439f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga441c09493c38e1ab2fc7f296eb12516f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ga441c09493c38e1ab2fc7f296eb12516f">CODES_KEYS_ITERATOR_SKIP_FUNCTION</a>   (1<<6)</td></tr>
+<tr class="separator:ga441c09493c38e1ab2fc7f296eb12516f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga62529e45321708e65678dfc155f1c842"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga62529e45321708e65678dfc155f1c842">CODES_SUCCESS</a>   0</td></tr>
+<tr class="memdesc:ga62529e45321708e65678dfc155f1c842"><td class="mdescLeft"> </td><td class="mdescRight">No error.  <a href="group__errors.html#ga62529e45321708e65678dfc155f1c842">More...</a><br/></td></tr>
+<tr class="separator:ga62529e45321708e65678dfc155f1c842"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga0b434e15a3ee76844958fd269feb6de0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga0b434e15a3ee76844958fd269feb6de0">CODES_END_OF_FILE</a>   -1</td></tr>
+<tr class="memdesc:ga0b434e15a3ee76844958fd269feb6de0"><td class="mdescLeft"> </td><td class="mdescRight">End of resource reached.  <a href="group__errors.html#ga0b434e15a3ee76844958fd269feb6de0">More...</a><br/></td></tr>
+<tr class="separator:ga0b434e15a3ee76844958fd269feb6de0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga4413dbc23fd50185a76014f0478920a6"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga4413dbc23fd50185a76014f0478920a6">CODES_INTERNAL_ERROR</a>   -2</td></tr>
+<tr class="memdesc:ga4413dbc23fd50185a76014f0478920a6"><td class="mdescLeft"> </td><td class="mdescRight">Internal error.  <a href="group__errors.html#ga4413dbc23fd50185a76014f0478920a6">More...</a><br/></td></tr>
+<tr class="separator:ga4413dbc23fd50185a76014f0478920a6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga28ecc7f18250c721544c587f21acc61f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga28ecc7f18250c721544c587f21acc61f">CODES_BUFFER_TOO_SMALL</a>   -3</td></tr>
+<tr class="memdesc:ga28ecc7f18250c721544c587f21acc61f"><td class="mdescLeft"> </td><td class="mdescRight">Passed buffer is too small.  <a href="group__errors.html#ga28ecc7f18250c721544c587f21acc61f">More...</a><br/></td></tr>
+<tr class="separator:ga28ecc7f18250c721544c587f21acc61f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaf833ff5b61aa5745728bd8c7dd37e27b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaf833ff5b61aa5745728bd8c7dd37e27b">CODES_NOT_IMPLEMENTED</a>   -4</td></tr>
+<tr class="memdesc:gaf833ff5b61aa5745728bd8c7dd37e27b"><td class="mdescLeft"> </td><td class="mdescRight">Function not yet implemented.  <a href="group__errors.html#gaf833ff5b61aa5745728bd8c7dd37e27b">More...</a><br/></td></tr>
+<tr class="separator:gaf833ff5b61aa5745728bd8c7dd37e27b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga1d805b18a1a77dc05958177d1954ce74"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga1d805b18a1a77dc05958177d1954ce74">CODES_7777_NOT_FOUND</a>   -5</td></tr>
+<tr class="memdesc:ga1d805b18a1a77dc05958177d1954ce74"><td class="mdescLeft"> </td><td class="mdescRight">Missing 7777 at end of message.  <a href="group__errors.html#ga1d805b18a1a77dc05958177d1954ce74">More...</a><br/></td></tr>
+<tr class="separator:ga1d805b18a1a77dc05958177d1954ce74"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaa1ba1cec53cded5eb4497f920dd06fc4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaa1ba1cec53cded5eb4497f920dd06fc4">CODES_ARRAY_TOO_SMALL</a>   -6</td></tr>
+<tr class="memdesc:gaa1ba1cec53cded5eb4497f920dd06fc4"><td class="mdescLeft"> </td><td class="mdescRight">Passed array is too small.  <a href="group__errors.html#gaa1ba1cec53cded5eb4497f920dd06fc4">More...</a><br/></td></tr>
+<tr class="separator:gaa1ba1cec53cded5eb4497f920dd06fc4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac7c0c8beed153b8bf32601441c5ef787"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gac7c0c8beed153b8bf32601441c5ef787">CODES_FILE_NOT_FOUND</a>   -7</td></tr>
+<tr class="memdesc:gac7c0c8beed153b8bf32601441c5ef787"><td class="mdescLeft"> </td><td class="mdescRight">File not found.  <a href="group__errors.html#gac7c0c8beed153b8bf32601441c5ef787">More...</a><br/></td></tr>
+<tr class="separator:gac7c0c8beed153b8bf32601441c5ef787"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga007c99d57492ff8d3d4d14cce1b6b645"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga007c99d57492ff8d3d4d14cce1b6b645">CODES_CODE_NOT_FOUND_IN_TABLE</a>   -8</td></tr>
+<tr class="memdesc:ga007c99d57492ff8d3d4d14cce1b6b645"><td class="mdescLeft"> </td><td class="mdescRight">Code not found in code table.  <a href="group__errors.html#ga007c99d57492ff8d3d4d14cce1b6b645">More...</a><br/></td></tr>
+<tr class="separator:ga007c99d57492ff8d3d4d14cce1b6b645"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga17496b69f982d69fc5ae83a5f5b785bf"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga17496b69f982d69fc5ae83a5f5b785bf">CODES_WRONG_ARRAY_SIZE</a>   -9</td></tr>
+<tr class="memdesc:ga17496b69f982d69fc5ae83a5f5b785bf"><td class="mdescLeft"> </td><td class="mdescRight">Array size mismatch.  <a href="group__errors.html#ga17496b69f982d69fc5ae83a5f5b785bf">More...</a><br/></td></tr>
+<tr class="separator:ga17496b69f982d69fc5ae83a5f5b785bf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga0c9413c3afbe47d2a6f2bba805360084"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga0c9413c3afbe47d2a6f2bba805360084">CODES_NOT_FOUND</a>   -10</td></tr>
+<tr class="memdesc:ga0c9413c3afbe47d2a6f2bba805360084"><td class="mdescLeft"> </td><td class="mdescRight">Key/value not found.  <a href="group__errors.html#ga0c9413c3afbe47d2a6f2bba805360084">More...</a><br/></td></tr>
+<tr class="separator:ga0c9413c3afbe47d2a6f2bba805360084"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga796a3ec1b15abe60dec0c6817564d173"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga796a3ec1b15abe60dec0c6817564d173">CODES_IO_PROBLEM</a>   -11</td></tr>
+<tr class="memdesc:ga796a3ec1b15abe60dec0c6817564d173"><td class="mdescLeft"> </td><td class="mdescRight">Input output problem.  <a href="group__errors.html#ga796a3ec1b15abe60dec0c6817564d173">More...</a><br/></td></tr>
+<tr class="separator:ga796a3ec1b15abe60dec0c6817564d173"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gad58e1f868ee4e18b4836007d38562b8d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gad58e1f868ee4e18b4836007d38562b8d">CODES_INVALID_MESSAGE</a>   -12</td></tr>
+<tr class="memdesc:gad58e1f868ee4e18b4836007d38562b8d"><td class="mdescLeft"> </td><td class="mdescRight">Message invalid.  <a href="group__errors.html#gad58e1f868ee4e18b4836007d38562b8d">More...</a><br/></td></tr>
+<tr class="separator:gad58e1f868ee4e18b4836007d38562b8d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga75df8e941afb735723fec89bd68d4f58"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga75df8e941afb735723fec89bd68d4f58">CODES_DECODING_ERROR</a>   -13</td></tr>
+<tr class="memdesc:ga75df8e941afb735723fec89bd68d4f58"><td class="mdescLeft"> </td><td class="mdescRight">Decoding invalid.  <a href="group__errors.html#ga75df8e941afb735723fec89bd68d4f58">More...</a><br/></td></tr>
+<tr class="separator:ga75df8e941afb735723fec89bd68d4f58"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga817971c5206ff01987a2d16bc0e9dd1f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga817971c5206ff01987a2d16bc0e9dd1f">CODES_ENCODING_ERROR</a>   -14</td></tr>
+<tr class="memdesc:ga817971c5206ff01987a2d16bc0e9dd1f"><td class="mdescLeft"> </td><td class="mdescRight">Encoding invalid.  <a href="group__errors.html#ga817971c5206ff01987a2d16bc0e9dd1f">More...</a><br/></td></tr>
+<tr class="separator:ga817971c5206ff01987a2d16bc0e9dd1f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaf624d54629a6e8aabce0c5b60667e268"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaf624d54629a6e8aabce0c5b60667e268">CODES_NO_MORE_IN_SET</a>   -15</td></tr>
+<tr class="memdesc:gaf624d54629a6e8aabce0c5b60667e268"><td class="mdescLeft"> </td><td class="mdescRight">Code cannot unpack because of string too small.  <a href="group__errors.html#gaf624d54629a6e8aabce0c5b60667e268">More...</a><br/></td></tr>
+<tr class="separator:gaf624d54629a6e8aabce0c5b60667e268"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6bcc67f9220042cb4781bad71fd59f35"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga6bcc67f9220042cb4781bad71fd59f35">CODES_GEOCALCULUS_PROBLEM</a>   -16</td></tr>
+<tr class="memdesc:ga6bcc67f9220042cb4781bad71fd59f35"><td class="mdescLeft"> </td><td class="mdescRight">Problem with calculation of geographic attributes.  <a href="group__errors.html#ga6bcc67f9220042cb4781bad71fd59f35">More...</a><br/></td></tr>
+<tr class="separator:ga6bcc67f9220042cb4781bad71fd59f35"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaca540f40b9e09270265636b3689d8c2e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaca540f40b9e09270265636b3689d8c2e">CODES_OUT_OF_MEMORY</a>   -17</td></tr>
+<tr class="memdesc:gaca540f40b9e09270265636b3689d8c2e"><td class="mdescLeft"> </td><td class="mdescRight">Out of memory.  <a href="group__errors.html#gaca540f40b9e09270265636b3689d8c2e">More...</a><br/></td></tr>
+<tr class="separator:gaca540f40b9e09270265636b3689d8c2e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gab1809244c05808791f318e1e060592d3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gab1809244c05808791f318e1e060592d3">CODES_READ_ONLY</a>   -18</td></tr>
+<tr class="memdesc:gab1809244c05808791f318e1e060592d3"><td class="mdescLeft"> </td><td class="mdescRight">Value is read only.  <a href="group__errors.html#gab1809244c05808791f318e1e060592d3">More...</a><br/></td></tr>
+<tr class="separator:gab1809244c05808791f318e1e060592d3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga601fbf553afe7bbdaa1c3c784fcad649"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga601fbf553afe7bbdaa1c3c784fcad649">CODES_INVALID_ARGUMENT</a>   -19</td></tr>
+<tr class="memdesc:ga601fbf553afe7bbdaa1c3c784fcad649"><td class="mdescLeft"> </td><td class="mdescRight">Invalid argument.  <a href="group__errors.html#ga601fbf553afe7bbdaa1c3c784fcad649">More...</a><br/></td></tr>
+<tr class="separator:ga601fbf553afe7bbdaa1c3c784fcad649"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac17665aa8fcb3f6422a80c4a666b47b0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gac17665aa8fcb3f6422a80c4a666b47b0">CODES_NULL_HANDLE</a>   -20</td></tr>
+<tr class="memdesc:gac17665aa8fcb3f6422a80c4a666b47b0"><td class="mdescLeft"> </td><td class="mdescRight">Null handle.  <a href="group__errors.html#gac17665aa8fcb3f6422a80c4a666b47b0">More...</a><br/></td></tr>
+<tr class="separator:gac17665aa8fcb3f6422a80c4a666b47b0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gacc7a7e8cdd1e8ccfc8c9a2956d657d5e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gacc7a7e8cdd1e8ccfc8c9a2956d657d5e">CODES_INVALID_SECTION_NUMBER</a>   -21</td></tr>
+<tr class="memdesc:gacc7a7e8cdd1e8ccfc8c9a2956d657d5e"><td class="mdescLeft"> </td><td class="mdescRight">Invalid section number.  <a href="group__errors.html#gacc7a7e8cdd1e8ccfc8c9a2956d657d5e">More...</a><br/></td></tr>
+<tr class="separator:gacc7a7e8cdd1e8ccfc8c9a2956d657d5e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5795dad885ba6527afa8c2301bf8f3a3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga5795dad885ba6527afa8c2301bf8f3a3">CODES_VALUE_CANNOT_BE_MISSING</a>   -22</td></tr>
+<tr class="memdesc:ga5795dad885ba6527afa8c2301bf8f3a3"><td class="mdescLeft"> </td><td class="mdescRight">Value cannot be missing.  <a href="group__errors.html#ga5795dad885ba6527afa8c2301bf8f3a3">More...</a><br/></td></tr>
+<tr class="separator:ga5795dad885ba6527afa8c2301bf8f3a3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga988dcc03601078149deac7e4fecbc22f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga988dcc03601078149deac7e4fecbc22f">CODES_WRONG_LENGTH</a>   -23</td></tr>
+<tr class="memdesc:ga988dcc03601078149deac7e4fecbc22f"><td class="mdescLeft"> </td><td class="mdescRight">Wrong message length.  <a href="group__errors.html#ga988dcc03601078149deac7e4fecbc22f">More...</a><br/></td></tr>
+<tr class="separator:ga988dcc03601078149deac7e4fecbc22f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga29b65582c871d8c4b0215f38bef6b9c9"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga29b65582c871d8c4b0215f38bef6b9c9">CODES_INVALID_TYPE</a>   -24</td></tr>
+<tr class="memdesc:ga29b65582c871d8c4b0215f38bef6b9c9"><td class="mdescLeft"> </td><td class="mdescRight">Invalid key type.  <a href="group__errors.html#ga29b65582c871d8c4b0215f38bef6b9c9">More...</a><br/></td></tr>
+<tr class="separator:ga29b65582c871d8c4b0215f38bef6b9c9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gadb8db78e83ccc396163068af7d71d32e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gadb8db78e83ccc396163068af7d71d32e">CODES_WRONG_STEP</a>   -25</td></tr>
+<tr class="memdesc:gadb8db78e83ccc396163068af7d71d32e"><td class="mdescLeft"> </td><td class="mdescRight">Unable to set step.  <a href="group__errors.html#gadb8db78e83ccc396163068af7d71d32e">More...</a><br/></td></tr>
+<tr class="separator:gadb8db78e83ccc396163068af7d71d32e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga201ef38b0482edf51e93bf94200dca96"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga201ef38b0482edf51e93bf94200dca96">CODES_WRONG_STEP_UNIT</a>   -26</td></tr>
+<tr class="memdesc:ga201ef38b0482edf51e93bf94200dca96"><td class="mdescLeft"> </td><td class="mdescRight">Wrong units for step (step must be integer)  <a href="group__errors.html#ga201ef38b0482edf51e93bf94200dca96">More...</a><br/></td></tr>
+<tr class="separator:ga201ef38b0482edf51e93bf94200dca96"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gab99b60eded1d7c1ff9adb3521543e956"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gab99b60eded1d7c1ff9adb3521543e956">CODES_INVALID_FILE</a>   -27</td></tr>
+<tr class="memdesc:gab99b60eded1d7c1ff9adb3521543e956"><td class="mdescLeft"> </td><td class="mdescRight">Invalid file id.  <a href="group__errors.html#gab99b60eded1d7c1ff9adb3521543e956">More...</a><br/></td></tr>
+<tr class="separator:gab99b60eded1d7c1ff9adb3521543e956"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaa3b634b83f8678b7869cc5ff271a7801"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaa3b634b83f8678b7869cc5ff271a7801">CODES_INVALID_GRIB</a>   -28</td></tr>
+<tr class="memdesc:gaa3b634b83f8678b7869cc5ff271a7801"><td class="mdescLeft"> </td><td class="mdescRight">Invalid grib id.  <a href="group__errors.html#gaa3b634b83f8678b7869cc5ff271a7801">More...</a><br/></td></tr>
+<tr class="separator:gaa3b634b83f8678b7869cc5ff271a7801"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5f33aa7859af62f31a87afd8fe0643b4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga5f33aa7859af62f31a87afd8fe0643b4">CODES_INVALID_INDEX</a>   -29</td></tr>
+<tr class="memdesc:ga5f33aa7859af62f31a87afd8fe0643b4"><td class="mdescLeft"> </td><td class="mdescRight">Invalid index id.  <a href="group__errors.html#ga5f33aa7859af62f31a87afd8fe0643b4">More...</a><br/></td></tr>
+<tr class="separator:ga5f33aa7859af62f31a87afd8fe0643b4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga09b7d84b946021eab0179a1f0e8babff"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga09b7d84b946021eab0179a1f0e8babff">CODES_INVALID_ITERATOR</a>   -30</td></tr>
+<tr class="memdesc:ga09b7d84b946021eab0179a1f0e8babff"><td class="mdescLeft"> </td><td class="mdescRight">Invalid iterator id.  <a href="group__errors.html#ga09b7d84b946021eab0179a1f0e8babff">More...</a><br/></td></tr>
+<tr class="separator:ga09b7d84b946021eab0179a1f0e8babff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaa90810da03e1593e3eb30edcb87da47b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaa90810da03e1593e3eb30edcb87da47b">CODES_INVALID_KEYS_ITERATOR</a>   -31</td></tr>
+<tr class="memdesc:gaa90810da03e1593e3eb30edcb87da47b"><td class="mdescLeft"> </td><td class="mdescRight">Invalid keys iterator id.  <a href="group__errors.html#gaa90810da03e1593e3eb30edcb87da47b">More...</a><br/></td></tr>
+<tr class="separator:gaa90810da03e1593e3eb30edcb87da47b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3e95bd54244761766d7c39c8a95ee9bf"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga3e95bd54244761766d7c39c8a95ee9bf">CODES_INVALID_NEAREST</a>   -32</td></tr>
+<tr class="memdesc:ga3e95bd54244761766d7c39c8a95ee9bf"><td class="mdescLeft"> </td><td class="mdescRight">Invalid nearest id.  <a href="group__errors.html#ga3e95bd54244761766d7c39c8a95ee9bf">More...</a><br/></td></tr>
+<tr class="separator:ga3e95bd54244761766d7c39c8a95ee9bf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga03f1a92629846f6aef37e5933fa4f5e4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga03f1a92629846f6aef37e5933fa4f5e4">CODES_INVALID_ORDERBY</a>   -33</td></tr>
+<tr class="memdesc:ga03f1a92629846f6aef37e5933fa4f5e4"><td class="mdescLeft"> </td><td class="mdescRight">Invalid order by.  <a href="group__errors.html#ga03f1a92629846f6aef37e5933fa4f5e4">More...</a><br/></td></tr>
+<tr class="separator:ga03f1a92629846f6aef37e5933fa4f5e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga96acfe0a853dd9243975b62aad503dd7"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga96acfe0a853dd9243975b62aad503dd7">CODES_MISSING_KEY</a>   -34</td></tr>
+<tr class="memdesc:ga96acfe0a853dd9243975b62aad503dd7"><td class="mdescLeft"> </td><td class="mdescRight">Missing a key from the fieldset.  <a href="group__errors.html#ga96acfe0a853dd9243975b62aad503dd7">More...</a><br/></td></tr>
+<tr class="separator:ga96acfe0a853dd9243975b62aad503dd7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga1535af5117f762da30730d341a27c421"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga1535af5117f762da30730d341a27c421">CODES_OUT_OF_AREA</a>   -35</td></tr>
+<tr class="memdesc:ga1535af5117f762da30730d341a27c421"><td class="mdescLeft"> </td><td class="mdescRight">The point is out of the grid area.  <a href="group__errors.html#ga1535af5117f762da30730d341a27c421">More...</a><br/></td></tr>
+<tr class="separator:ga1535af5117f762da30730d341a27c421"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaacf5638c981fbd97399b83439197c4ba"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaacf5638c981fbd97399b83439197c4ba">CODES_CONCEPT_NO_MATCH</a>   -36</td></tr>
+<tr class="memdesc:gaacf5638c981fbd97399b83439197c4ba"><td class="mdescLeft"> </td><td class="mdescRight">Concept no match.  <a href="group__errors.html#gaacf5638c981fbd97399b83439197c4ba">More...</a><br/></td></tr>
+<tr class="separator:gaacf5638c981fbd97399b83439197c4ba"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga396e92d0fa82b59556c924e0dec759c6"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga396e92d0fa82b59556c924e0dec759c6">CODES_HASH_ARRAY_NO_MATCH</a>   -37</td></tr>
+<tr class="memdesc:ga396e92d0fa82b59556c924e0dec759c6"><td class="mdescLeft"> </td><td class="mdescRight">Hash array no match.  <a href="group__errors.html#ga396e92d0fa82b59556c924e0dec759c6">More...</a><br/></td></tr>
+<tr class="separator:ga396e92d0fa82b59556c924e0dec759c6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga737054a732ef481c72997c4face59a02"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga737054a732ef481c72997c4face59a02">CODES_NO_DEFINITIONS</a>   -38</td></tr>
+<tr class="memdesc:ga737054a732ef481c72997c4face59a02"><td class="mdescLeft"> </td><td class="mdescRight">Definitions files not found.  <a href="group__errors.html#ga737054a732ef481c72997c4face59a02">More...</a><br/></td></tr>
+<tr class="separator:ga737054a732ef481c72997c4face59a02"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga399f4bf77424c64dbb7e94212deffd38"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga399f4bf77424c64dbb7e94212deffd38">CODES_WRONG_TYPE</a>   -39</td></tr>
+<tr class="memdesc:ga399f4bf77424c64dbb7e94212deffd38"><td class="mdescLeft"> </td><td class="mdescRight">Wrong type while packing.  <a href="group__errors.html#ga399f4bf77424c64dbb7e94212deffd38">More...</a><br/></td></tr>
+<tr class="separator:ga399f4bf77424c64dbb7e94212deffd38"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga4e95b3f8896dc99e311e02c348266595"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga4e95b3f8896dc99e311e02c348266595">CODES_END</a>   -40</td></tr>
+<tr class="memdesc:ga4e95b3f8896dc99e311e02c348266595"><td class="mdescLeft"> </td><td class="mdescRight">End of resource.  <a href="group__errors.html#ga4e95b3f8896dc99e311e02c348266595">More...</a><br/></td></tr>
+<tr class="separator:ga4e95b3f8896dc99e311e02c348266595"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac1e36f8922e9321ca23c6884742f4fbd"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gac1e36f8922e9321ca23c6884742f4fbd">CODES_NO_VALUES</a>   -41</td></tr>
+<tr class="memdesc:gac1e36f8922e9321ca23c6884742f4fbd"><td class="mdescLeft"> </td><td class="mdescRight">Unable to code a field without values.  <a href="group__errors.html#gac1e36f8922e9321ca23c6884742f4fbd">More...</a><br/></td></tr>
+<tr class="separator:gac1e36f8922e9321ca23c6884742f4fbd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gab7fca3278f1c363103a066d1a1f83fba"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gab7fca3278f1c363103a066d1a1f83fba">CODES_WRONG_GRID</a>   -42</td></tr>
+<tr class="memdesc:gab7fca3278f1c363103a066d1a1f83fba"><td class="mdescLeft"> </td><td class="mdescRight">Grid description is wrong or inconsistent.  <a href="group__errors.html#gab7fca3278f1c363103a066d1a1f83fba">More...</a><br/></td></tr>
+<tr class="separator:gab7fca3278f1c363103a066d1a1f83fba"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga0280b694f20120aef691e13288bf2b30"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga0280b694f20120aef691e13288bf2b30">CODES_END_OF_INDEX</a>   -43</td></tr>
+<tr class="memdesc:ga0280b694f20120aef691e13288bf2b30"><td class="mdescLeft"> </td><td class="mdescRight">End of index reached.  <a href="group__errors.html#ga0280b694f20120aef691e13288bf2b30">More...</a><br/></td></tr>
+<tr class="separator:ga0280b694f20120aef691e13288bf2b30"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gabbdcba4ec6e2dd470b8f0611fdd37d52"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gabbdcba4ec6e2dd470b8f0611fdd37d52">CODES_NULL_INDEX</a>   -44</td></tr>
+<tr class="memdesc:gabbdcba4ec6e2dd470b8f0611fdd37d52"><td class="mdescLeft"> </td><td class="mdescRight">Null index.  <a href="group__errors.html#gabbdcba4ec6e2dd470b8f0611fdd37d52">More...</a><br/></td></tr>
+<tr class="separator:gabbdcba4ec6e2dd470b8f0611fdd37d52"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6e92038c31cca9d63ec502de74979044"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga6e92038c31cca9d63ec502de74979044">CODES_PREMATURE_END_OF_FILE</a>   -45</td></tr>
+<tr class="memdesc:ga6e92038c31cca9d63ec502de74979044"><td class="mdescLeft"> </td><td class="mdescRight">End of resource reached when reading message.  <a href="group__errors.html#ga6e92038c31cca9d63ec502de74979044">More...</a><br/></td></tr>
+<tr class="separator:ga6e92038c31cca9d63ec502de74979044"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga953130174b4f829aeaa4f2122792ce5b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga953130174b4f829aeaa4f2122792ce5b">CODES_INTERNAL_ARRAY_TOO_SMALL</a>   -46</td></tr>
+<tr class="memdesc:ga953130174b4f829aeaa4f2122792ce5b"><td class="mdescLeft"> </td><td class="mdescRight">An internal array is too small.  <a href="group__errors.html#ga953130174b4f829aeaa4f2122792ce5b">More...</a><br/></td></tr>
+<tr class="separator:ga953130174b4f829aeaa4f2122792ce5b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gafe15d1cbbb9524f6287e99c05265f90b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gafe15d1cbbb9524f6287e99c05265f90b">CODES_MESSAGE_TOO_LARGE</a>   -47</td></tr>
+<tr class="memdesc:gafe15d1cbbb9524f6287e99c05265f90b"><td class="mdescLeft"> </td><td class="mdescRight">Message is too large for the current architecture.  <a href="group__errors.html#gafe15d1cbbb9524f6287e99c05265f90b">More...</a><br/></td></tr>
+<tr class="separator:gafe15d1cbbb9524f6287e99c05265f90b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaf24f6cbb1e6a796cc7768aa1d5280d6e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaf24f6cbb1e6a796cc7768aa1d5280d6e">CODES_CONSTANT_FIELD</a>   -48</td></tr>
+<tr class="memdesc:gaf24f6cbb1e6a796cc7768aa1d5280d6e"><td class="mdescLeft"> </td><td class="mdescRight">Constant field.  <a href="group__errors.html#gaf24f6cbb1e6a796cc7768aa1d5280d6e">More...</a><br/></td></tr>
+<tr class="separator:gaf24f6cbb1e6a796cc7768aa1d5280d6e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga76a9e4341bbdd4fa7aa6f19581294897"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga76a9e4341bbdd4fa7aa6f19581294897">CODES_SWITCH_NO_MATCH</a>   -49</td></tr>
+<tr class="memdesc:ga76a9e4341bbdd4fa7aa6f19581294897"><td class="mdescLeft"> </td><td class="mdescRight">Switch unable to find a matching case.  <a href="group__errors.html#ga76a9e4341bbdd4fa7aa6f19581294897">More...</a><br/></td></tr>
+<tr class="separator:ga76a9e4341bbdd4fa7aa6f19581294897"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga4fa596b35745d80ac3def70a91f12c97"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga4fa596b35745d80ac3def70a91f12c97">CODES_UNDERFLOW</a>   -50</td></tr>
+<tr class="memdesc:ga4fa596b35745d80ac3def70a91f12c97"><td class="mdescLeft"> </td><td class="mdescRight">Underflow.  <a href="group__errors.html#ga4fa596b35745d80ac3def70a91f12c97">More...</a><br/></td></tr>
+<tr class="separator:ga4fa596b35745d80ac3def70a91f12c97"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga05a6fefc41cb1f342d66b1a99887a8bd"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga05a6fefc41cb1f342d66b1a99887a8bd">CODES_MESSAGE_MALFORMED</a>   -51</td></tr>
+<tr class="memdesc:ga05a6fefc41cb1f342d66b1a99887a8bd"><td class="mdescLeft"> </td><td class="mdescRight">Message malformed.  <a href="group__errors.html#ga05a6fefc41cb1f342d66b1a99887a8bd">More...</a><br/></td></tr>
+<tr class="separator:ga05a6fefc41cb1f342d66b1a99887a8bd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3e4650042d448cf9ccf2f58913f6d900"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga3e4650042d448cf9ccf2f58913f6d900">CODES_CORRUPTED_INDEX</a>   -52</td></tr>
+<tr class="memdesc:ga3e4650042d448cf9ccf2f58913f6d900"><td class="mdescLeft"> </td><td class="mdescRight">Index is corrupted.  <a href="group__errors.html#ga3e4650042d448cf9ccf2f58913f6d900">More...</a><br/></td></tr>
+<tr class="separator:ga3e4650042d448cf9ccf2f58913f6d900"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5cf46bac2cc3e9dfc9a0dc81644591b4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga5cf46bac2cc3e9dfc9a0dc81644591b4">CODES_INVALID_BPV</a>   -53</td></tr>
+<tr class="memdesc:ga5cf46bac2cc3e9dfc9a0dc81644591b4"><td class="mdescLeft"> </td><td class="mdescRight">Invalid number of bits per value.  <a href="group__errors.html#ga5cf46bac2cc3e9dfc9a0dc81644591b4">More...</a><br/></td></tr>
+<tr class="separator:ga5cf46bac2cc3e9dfc9a0dc81644591b4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gad88a9ff519e455b12ac0bf8e45f95472"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gad88a9ff519e455b12ac0bf8e45f95472">CODES_DIFFERENT_EDITION</a>   -54</td></tr>
+<tr class="memdesc:gad88a9ff519e455b12ac0bf8e45f95472"><td class="mdescLeft"> </td><td class="mdescRight">Edition of two messages is different.  <a href="group__errors.html#gad88a9ff519e455b12ac0bf8e45f95472">More...</a><br/></td></tr>
+<tr class="separator:gad88a9ff519e455b12ac0bf8e45f95472"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga138dc954bee9af6f849c63699d6b6044"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga138dc954bee9af6f849c63699d6b6044">CODES_VALUE_DIFFERENT</a>   -55</td></tr>
+<tr class="memdesc:ga138dc954bee9af6f849c63699d6b6044"><td class="mdescLeft"> </td><td class="mdescRight">Value is different.  <a href="group__errors.html#ga138dc954bee9af6f849c63699d6b6044">More...</a><br/></td></tr>
+<tr class="separator:ga138dc954bee9af6f849c63699d6b6044"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga713d9143db54f7520a4e0473b73971d8"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga713d9143db54f7520a4e0473b73971d8">CODES_INVALID_KEY_VALUE</a>   -56</td></tr>
+<tr class="memdesc:ga713d9143db54f7520a4e0473b73971d8"><td class="mdescLeft"> </td><td class="mdescRight">Invalid key value.  <a href="group__errors.html#ga713d9143db54f7520a4e0473b73971d8">More...</a><br/></td></tr>
+<tr class="separator:ga713d9143db54f7520a4e0473b73971d8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga2d577c49ec3604d481c12f1bf5539eee"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga2d577c49ec3604d481c12f1bf5539eee">CODES_STRING_TOO_SMALL</a>   -57</td></tr>
+<tr class="memdesc:ga2d577c49ec3604d481c12f1bf5539eee"><td class="mdescLeft"> </td><td class="mdescRight">String is smaller than requested.  <a href="group__errors.html#ga2d577c49ec3604d481c12f1bf5539eee">More...</a><br/></td></tr>
+<tr class="separator:ga2d577c49ec3604d481c12f1bf5539eee"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga419b09c45fc88de701bd32dab76c3d83"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga419b09c45fc88de701bd32dab76c3d83">CODES_WRONG_CONVERSION</a>   -58</td></tr>
+<tr class="memdesc:ga419b09c45fc88de701bd32dab76c3d83"><td class="mdescLeft"> </td><td class="mdescRight">Wrong type conversion.  <a href="group__errors.html#ga419b09c45fc88de701bd32dab76c3d83">More...</a><br/></td></tr>
+<tr class="separator:ga419b09c45fc88de701bd32dab76c3d83"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8c92dd1dc944244225fa0bf129347cb7"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga8c92dd1dc944244225fa0bf129347cb7">CODES_MISSING_BUFR_ENTRY</a>   -59</td></tr>
+<tr class="memdesc:ga8c92dd1dc944244225fa0bf129347cb7"><td class="mdescLeft"> </td><td class="mdescRight">Missing BUFR table entry for descriptor.  <a href="group__errors.html#ga8c92dd1dc944244225fa0bf129347cb7">More...</a><br/></td></tr>
+<tr class="separator:ga8c92dd1dc944244225fa0bf129347cb7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gacbe671c157599d6420eb8dfb1e792f6a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gacbe671c157599d6420eb8dfb1e792f6a">CODES_NULL_POINTER</a>   -60</td></tr>
+<tr class="memdesc:gacbe671c157599d6420eb8dfb1e792f6a"><td class="mdescLeft"> </td><td class="mdescRight">Null pointer.  <a href="group__errors.html#gacbe671c157599d6420eb8dfb1e792f6a">More...</a><br/></td></tr>
+<tr class="separator:gacbe671c157599d6420eb8dfb1e792f6a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gab925e86850f2cb23159bf5f349680985"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gab925e86850f2cb23159bf5f349680985">CODES_ATTRIBUTE_CLASH</a>   -61</td></tr>
+<tr class="memdesc:gab925e86850f2cb23159bf5f349680985"><td class="mdescLeft"> </td><td class="mdescRight">Attribute is already present, cannot add.  <a href="group__errors.html#gab925e86850f2cb23159bf5f349680985">More...</a><br/></td></tr>
+<tr class="separator:gab925e86850f2cb23159bf5f349680985"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gad4cea7d28dfa21cd2eb03594158bc3d6"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gad4cea7d28dfa21cd2eb03594158bc3d6">CODES_TOO_MANY_ATTRIBUTES</a>   -62</td></tr>
+<tr class="memdesc:gad4cea7d28dfa21cd2eb03594158bc3d6"><td class="mdescLeft"> </td><td class="mdescRight">Too many attributes.  <a href="group__errors.html#gad4cea7d28dfa21cd2eb03594158bc3d6">More...</a><br/></td></tr>
+<tr class="separator:gad4cea7d28dfa21cd2eb03594158bc3d6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga020cc6141e2618059f63b5aa2a8385f7"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga020cc6141e2618059f63b5aa2a8385f7">CODES_ATTRIBUTE_NOT_FOUND</a>   -63</td></tr>
+<tr class="memdesc:ga020cc6141e2618059f63b5aa2a8385f7"><td class="mdescLeft"> </td><td class="mdescRight">Attribute not found.  <a href="group__errors.html#ga020cc6141e2618059f63b5aa2a8385f7">More...</a><br/></td></tr>
+<tr class="separator:ga020cc6141e2618059f63b5aa2a8385f7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga4bc4702f061c30bd03ba48a455e1fdd0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga4bc4702f061c30bd03ba48a455e1fdd0">CODES_UNSUPPORTED_EDITION</a>   -64</td></tr>
+<tr class="memdesc:ga4bc4702f061c30bd03ba48a455e1fdd0"><td class="mdescLeft"> </td><td class="mdescRight">Edition not supported.  <a href="group__errors.html#ga4bc4702f061c30bd03ba48a455e1fdd0">More...</a><br/></td></tr>
+<tr class="separator:ga4bc4702f061c30bd03ba48a455e1fdd0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8f0a03b5f41dfe79b5dc501ecc596f7b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga8f0a03b5f41dfe79b5dc501ecc596f7b">CODES_OUT_OF_RANGE</a>   -65</td></tr>
+<tr class="memdesc:ga8f0a03b5f41dfe79b5dc501ecc596f7b"><td class="mdescLeft"> </td><td class="mdescRight">Value out of coding range.  <a href="group__errors.html#ga8f0a03b5f41dfe79b5dc501ecc596f7b">More...</a><br/></td></tr>
+<tr class="separator:ga8f0a03b5f41dfe79b5dc501ecc596f7b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac049ccb7281fecb514b740bd937b6c3b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gac049ccb7281fecb514b740bd937b6c3b">CODES_WRONG_BITMAP_SIZE</a>   -66</td></tr>
+<tr class="memdesc:gac049ccb7281fecb514b740bd937b6c3b"><td class="mdescLeft"> </td><td class="mdescRight">Size of bitmap is incorrect.  <a href="group__errors.html#gac049ccb7281fecb514b740bd937b6c3b">More...</a><br/></td></tr>
+<tr class="separator:gac049ccb7281fecb514b740bd937b6c3b"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga42b26aa62c53cef50f0bd9e75ed88281"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__index.html">codes_index</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#ga42b26aa62c53cef50f0bd9e75ed88281">codes_index_new_from_file</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, char *filename, const char *keys, int *err)</td></tr>
+<tr class="memdesc:ga42b26aa62c53cef50f0bd9e75ed88281"><td class="mdescLeft"> </td><td class="mdescRight">Create a new index form a file.  <a href="group__codes__index.html#ga42b26aa62c53cef50f0bd9e75ed88281">More...</a><br/></td></tr>
+<tr class="separator:ga42b26aa62c53cef50f0bd9e75ed88281"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga0d7015518d426c012ba6c2b848af96d9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__index.html">codes_index</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#ga0d7015518d426c012ba6c2b848af96d9">codes_index_new</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, const char *keys, int *err)</td></tr>
+<tr class="memdesc:ga0d7015518d426c012ba6c2b848af96d9"><td class="mdescLeft"> </td><td class="mdescRight">Create a new index based on a set of keys.  <a href="group__codes__index.html#ga0d7015518d426c012ba6c2b848af96d9">More...</a><br/></td></tr>
+<tr class="separator:ga0d7015518d426c012ba6c2b848af96d9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8fa6ca199182c48c0327e61ac98dfd00"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#ga8fa6ca199182c48c0327e61ac98dfd00">codes_index_add_file</a> (grib_index *index, const char *filename)</td></tr>
+<tr class="memdesc:ga8fa6ca199182c48c0327e61ac98dfd00"><td class="mdescLeft"> </td><td class="mdescRight">Indexes the file given in argument in the index given in argument.  <a href="group__codes__index.html#ga8fa6ca199182c48c0327e61ac98dfd00">More...</a><br/></td></tr>
+<tr class="separator:ga8fa6ca199182c48c0327e61ac98dfd00"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gab1aa5fde30d26360349085efec936c6c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#gab1aa5fde30d26360349085efec936c6c">codes_index_get_size</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index, const char *key, size_t *size)</td></tr>
+<tr class="memdesc:gab1aa5fde30d26360349085efec936c6c"><td class="mdescLeft"> </td><td class="mdescRight">Get the number of distinct values of the key in argument contained in the index.  <a href="group__codes__index.html#gab1aa5fde30d26360349085efec936c6c">More...</a><br/></td></tr>
+<tr class="separator:gab1aa5fde30d26360349085efec936c6c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gafb483b993d462b2f0576af70c1aa4cc7"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#gafb483b993d462b2f0576af70c1aa4cc7">codes_index_get_long</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index, const char *key, long *values, size_t *size)</td></tr>
+<tr class="memdesc:gafb483b993d462b2f0576af70c1aa4cc7"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="group__codes__index.html#gafb483b993d462b2f0576af70c1aa4cc7">More...</a><br/></td></tr>
+<tr class="separator:gafb483b993d462b2f0576af70c1aa4cc7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8a2fae0f5eeb8d708c1831bc1b9b9004"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#ga8a2fae0f5eeb8d708c1831bc1b9b9004">codes_index_get_double</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index, const char *key, double *values, size_t *size)</td></tr>
+<tr class="memdesc:ga8a2fae0f5eeb8d708c1831bc1b9b9004"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="group__codes__index.html#ga8a2fae0f5eeb8d708c1831bc1b9b9004">More...</a><br/></td></tr>
+<tr class="separator:ga8a2fae0f5eeb8d708c1831bc1b9b9004"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga86ea092af6a89b0322b873147bba523d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#ga86ea092af6a89b0322b873147bba523d">codes_index_get_string</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index, const char *key, char **values, size_t *size)</td></tr>
+<tr class="memdesc:ga86ea092af6a89b0322b873147bba523d"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="group__codes__index.html#ga86ea092af6a89b0322b873147bba523d">More...</a><br/></td></tr>
+<tr class="separator:ga86ea092af6a89b0322b873147bba523d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac0a14aca2fc5385684fdba1cb668959a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#gac0a14aca2fc5385684fdba1cb668959a">codes_index_select_long</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index, const char *key, long value)</td></tr>
+<tr class="memdesc:gac0a14aca2fc5385684fdba1cb668959a"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="group__codes__index.html#gac0a14aca2fc5385684fdba1cb668959a">More...</a><br/></td></tr>
+<tr class="separator:gac0a14aca2fc5385684fdba1cb668959a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3baa4a80cd517d55f088fee7f4630fff"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#ga3baa4a80cd517d55f088fee7f4630fff">codes_index_select_double</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index, const char *key, double value)</td></tr>
+<tr class="memdesc:ga3baa4a80cd517d55f088fee7f4630fff"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="group__codes__index.html#ga3baa4a80cd517d55f088fee7f4630fff">More...</a><br/></td></tr>
+<tr class="separator:ga3baa4a80cd517d55f088fee7f4630fff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gafa8d7b29dfe42d805714db95b5ca044a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#gafa8d7b29dfe42d805714db95b5ca044a">codes_index_select_string</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index, const char *key, char *value)</td></tr>
+<tr class="memdesc:gafa8d7b29dfe42d805714db95b5ca044a"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="group__codes__index.html#gafa8d7b29dfe42d805714db95b5ca044a">More...</a><br/></td></tr>
+<tr class="separator:gafa8d7b29dfe42d805714db95b5ca044a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gae1947cf7225ca1809c5491aa671d6b91"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#gae1947cf7225ca1809c5491aa671d6b91">codes_handle_new_from_index</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index, int *err)</td></tr>
+<tr class="memdesc:gae1947cf7225ca1809c5491aa671d6b91"><td class="mdescLeft"> </td><td class="mdescRight">Create a new handle from an index after having selected the key values.  <a href="group__codes__index.html#gae1947cf7225ca1809c5491aa671d6b91">More...</a><br/></td></tr>
+<tr class="separator:gae1947cf7225ca1809c5491aa671d6b91"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga03643d8adf2aa7836e1848b20843b31c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#ga03643d8adf2aa7836e1848b20843b31c">codes_index_delete</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index)</td></tr>
+<tr class="memdesc:ga03643d8adf2aa7836e1848b20843b31c"><td class="mdescLeft"> </td><td class="mdescRight">Delete the index.  <a href="group__codes__index.html#ga03643d8adf2aa7836e1848b20843b31c">More...</a><br/></td></tr>
+<tr class="separator:ga03643d8adf2aa7836e1848b20843b31c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga4c2203d55c2c3ca792e44e4eb26edfb5"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga4c2203d55c2c3ca792e44e4eb26edfb5">codes_count_in_file</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, FILE *f, int *n)</td></tr>
+<tr class="memdesc:ga4c2203d55c2c3ca792e44e4eb26edfb5"><td class="mdescLeft"> </td><td class="mdescRight">Counts the messages contained in a file resource.  <a href="group__codes__handle.html#ga4c2203d55c2c3ca792e44e4eb26edfb5">More...</a><br/></td></tr>
+<tr class="separator:ga4c2203d55c2c3ca792e44e4eb26edfb5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6ec42bd6272b4a0f2cb2b220b86c71c8"><td class="memItemLeft" align="right" valign="top">grib_handle * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga6ec42bd6272b4a0f2cb2b220b86c71c8">codes_handle_new_from_file</a> (grib_context *c, FILE *f, ProductKind product, int *error)</td></tr>
+<tr class="memdesc:ga6ec42bd6272b4a0f2cb2b220b86c71c8"><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a file resource.  <a href="group__codes__handle.html#ga6ec42bd6272b4a0f2cb2b220b86c71c8">More...</a><br/></td></tr>
+<tr class="separator:ga6ec42bd6272b4a0f2cb2b220b86c71c8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga36de77229cc3b386d26c1e7b52c21e0e"><td class="memItemLeft" align="right" valign="top">grib_handle * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga36de77229cc3b386d26c1e7b52c21e0e">codes_grib_handle_new_from_file</a> (grib_context *c, FILE *f, int *error)</td></tr>
+<tr class="memdesc:ga36de77229cc3b386d26c1e7b52c21e0e"><td class="mdescLeft"> </td><td class="mdescRight">Create a GRIB handle from a file resource.  <a href="group__codes__handle.html#ga36de77229cc3b386d26c1e7b52c21e0e">More...</a><br/></td></tr>
+<tr class="separator:ga36de77229cc3b386d26c1e7b52c21e0e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6958c3cd7e4059af5c26898a872262ff"><td class="memItemLeft" align="right" valign="top">grib_handle * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga6958c3cd7e4059af5c26898a872262ff">codes_bufr_handle_new_from_file</a> (grib_context *c, FILE *f, int *error)</td></tr>
+<tr class="memdesc:ga6958c3cd7e4059af5c26898a872262ff"><td class="mdescLeft"> </td><td class="mdescRight">Create a BUFR handle from a file resource.  <a href="group__codes__handle.html#ga6958c3cd7e4059af5c26898a872262ff">More...</a><br/></td></tr>
+<tr class="separator:ga6958c3cd7e4059af5c26898a872262ff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac82dbaba240ebf6e76cdbcf2007a6bee"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#gac82dbaba240ebf6e76cdbcf2007a6bee">codes_write_message</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *file, const char *mode)</td></tr>
+<tr class="memdesc:gac82dbaba240ebf6e76cdbcf2007a6bee"><td class="mdescLeft"> </td><td class="mdescRight">Write a coded message to a file.  <a href="group__codes__handle.html#gac82dbaba240ebf6e76cdbcf2007a6bee">More...</a><br/></td></tr>
+<tr class="separator:gac82dbaba240ebf6e76cdbcf2007a6bee"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaece49330c864391261cd6a0c10a18dc2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#gaece49330c864391261cd6a0c10a18dc2">codes_handle_new_from_message</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, void *data, size_t data_len)</td></tr>
+<tr class="memdesc:gaece49330c864391261cd6a0c10a18dc2"><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message in memory.  <a href="group__codes__handle.html#gaece49330c864391261cd6a0c10a18dc2">More...</a><br/></td></tr>
+<tr class="separator:gaece49330c864391261cd6a0c10a18dc2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga385864d5f06e1de0e8ee13388ca4117c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga385864d5f06e1de0e8ee13388ca4117c">codes_grib_handle_new_from_multi_message</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, void **data, size_t *data_len, int *error)</td></tr>
+<tr class="memdesc:ga385864d5f06e1de0e8ee13388ca4117c"><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message in memory.  <a href="group__codes__handle.html#ga385864d5f06e1de0e8ee13388ca4117c">More...</a><br/></td></tr>
+<tr class="separator:ga385864d5f06e1de0e8ee13388ca4117c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga079df0c709e381812ae13af08c354032"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga079df0c709e381812ae13af08c354032">codes_handle_new_from_message_copy</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, const void *data, size_t data_len)</td></tr>
+<tr class="memdesc:ga079df0c709e381812ae13af08c354032"><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message.  <a href="group__codes__handle.html#ga079df0c709e381812ae13af08c354032">More...</a><br/></td></tr>
+<tr class="separator:ga079df0c709e381812ae13af08c354032"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3b281a237e311c6b8fa4bd7096d7e025"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga3b281a237e311c6b8fa4bd7096d7e025">codes_grib_handle_new_from_samples</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, const char *res_name)</td></tr>
+<tr class="memdesc:ga3b281a237e311c6b8fa4bd7096d7e025"><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a GRIB message contained in a samples directory.  <a href="group__codes__handle.html#ga3b281a237e311c6b8fa4bd7096d7e025">More...</a><br/></td></tr>
+<tr class="separator:ga3b281a237e311c6b8fa4bd7096d7e025"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga56d0f831e520ec7bc4a0ca334c63f557"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga56d0f831e520ec7bc4a0ca334c63f557">codes_bufr_handle_new_from_samples</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, const char *res_name)</td></tr>
+<tr class="memdesc:ga56d0f831e520ec7bc4a0ca334c63f557"><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a BUFR message contained in a samples directory.  <a href="group__codes__handle.html#ga56d0f831e520ec7bc4a0ca334c63f557">More...</a><br/></td></tr>
+<tr class="separator:ga56d0f831e520ec7bc4a0ca334c63f557"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7b226527aa98d90f2bdb470105732878"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga7b226527aa98d90f2bdb470105732878">codes_handle_clone</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h)</td></tr>
+<tr class="memdesc:ga7b226527aa98d90f2bdb470105732878"><td class="mdescLeft"> </td><td class="mdescRight">Clone an existing handle using the context of the original handle, The message is copied and reparsed.  <a href="group__codes__handle.html#ga7b226527aa98d90f2bdb470105732878">More...</a><br/></td></tr>
+<tr class="separator:ga7b226527aa98d90f2bdb470105732878"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga358ea000ceed775e7367ccab581be978"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga358ea000ceed775e7367ccab581be978">codes_handle_delete</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h)</td></tr>
+<tr class="memdesc:ga358ea000ceed775e7367ccab581be978"><td class="mdescLeft"> </td><td class="mdescRight">Frees a handle, also frees the message if it is not a user message.  <a href="group__codes__handle.html#ga358ea000ceed775e7367ccab581be978">More...</a><br/></td></tr>
+<tr class="separator:ga358ea000ceed775e7367ccab581be978"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5ff59672d9eab49c0285c8f60e379d88"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__multi__handle.html">codes_multi_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga5ff59672d9eab49c0285c8f60e379d88">codes_grib_multi_handle_new</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:ga5ff59672d9eab49c0285c8f60e379d88"><td class="mdescLeft"> </td><td class="mdescRight">Create an empty multi-field GRIB handle.  <a href="group__codes__handle.html#ga5ff59672d9eab49c0285c8f60e379d88">More...</a><br/></td></tr>
+<tr class="separator:ga5ff59672d9eab49c0285c8f60e379d88"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga068715aab8b82a5d3092064b6bc27f3d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga068715aab8b82a5d3092064b6bc27f3d">codes_grib_multi_handle_append</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, int start_section, <a class="el" href="structcodes__multi__handle.html">codes_multi_handle</a> *mh)</td></tr>
+<tr class="memdesc:ga068715aab8b82a5d3092064b6bc27f3d"><td class="mdescLeft"> </td><td class="mdescRight">Append the sections starting with start_section of the message pointed by h at the end of the multi-field GRIB handle mh.  <a href="group__codes__handle.html#ga068715aab8b82a5d3092064b6bc27f3d">More...</a><br/></td></tr>
+<tr class="separator:ga068715aab8b82a5d3092064b6bc27f3d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga85a955bdd3012ce499e50768e298b849"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga85a955bdd3012ce499e50768e298b849">codes_grib_multi_handle_delete</a> (<a class="el" href="structcodes__multi__handle.html">codes_multi_handle</a> *mh)</td></tr>
+<tr class="memdesc:ga85a955bdd3012ce499e50768e298b849"><td class="mdescLeft"> </td><td class="mdescRight">Delete multi-field GRIB handle.  <a href="group__codes__handle.html#ga85a955bdd3012ce499e50768e298b849">More...</a><br/></td></tr>
+<tr class="separator:ga85a955bdd3012ce499e50768e298b849"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac06089d897eea71d8944cc622a45737f"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#gac06089d897eea71d8944cc622a45737f">codes_grib_multi_handle_write</a> (<a class="el" href="structcodes__multi__handle.html">codes_multi_handle</a> *mh, FILE *f)</td></tr>
+<tr class="memdesc:gac06089d897eea71d8944cc622a45737f"><td class="mdescLeft"> </td><td class="mdescRight">Write a multi-field GRIB handle in a file.  <a href="group__codes__handle.html#gac06089d897eea71d8944cc622a45737f">More...</a><br/></td></tr>
+<tr class="separator:gac06089d897eea71d8944cc622a45737f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3d6f22a666e8e8dd7b33c98f2a7f3f62"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__handling__coded__messages.html#ga3d6f22a666e8e8dd7b33c98f2a7f3f62">codes_get_message</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const void **message, size_t *message_length)</td></tr>
+<tr class="memdesc:ga3d6f22a666e8e8dd7b33c98f2a7f3f62"><td class="mdescLeft"> </td><td class="mdescRight">getting the message attached to a handle  <a href="group__handling__coded__messages.html#ga3d6f22a666e8e8dd7b33c98f2a7f3f62">More...</a><br/></td></tr>
+<tr class="separator:ga3d6f22a666e8e8dd7b33c98f2a7f3f62"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8b2cb8c072b886de83a8e089c004a630"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__handling__coded__messages.html#ga8b2cb8c072b886de83a8e089c004a630">codes_get_message_copy</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, void *message, size_t *message_length)</td></tr>
+<tr class="memdesc:ga8b2cb8c072b886de83a8e089c004a630"><td class="mdescLeft"> </td><td class="mdescRight">getting a copy of the message attached to a handle  <a href="group__handling__coded__messages.html#ga8b2cb8c072b886de83a8e089c004a630">More...</a><br/></td></tr>
+<tr class="separator:ga8b2cb8c072b886de83a8e089c004a630"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga250295a1b927401bcb1e03aac032396c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__iterator.html">codes_iterator</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga250295a1b927401bcb1e03aac032396c">codes_grib_iterator_new</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, unsigned long flags, int *error)</td></tr>
+<tr class="memdesc:ga250295a1b927401bcb1e03aac032396c"><td class="mdescLeft"> </td><td class="mdescRight">Create a new iterator from a GRIB handle, using current geometry and values.  <a href="group__iterators.html#ga250295a1b927401bcb1e03aac032396c">More...</a><br/></td></tr>
+<tr class="separator:ga250295a1b927401bcb1e03aac032396c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga9d8fdb87efce9d49ac54853ee5871e01"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga9d8fdb87efce9d49ac54853ee5871e01">codes_grib_get_data</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, double *lats, double *lons, double *values)</td></tr>
+<tr class="memdesc:ga9d8fdb87efce9d49ac54853ee5871e01"><td class="mdescLeft"> </td><td class="mdescRight">Get latitude/longitude and data values.  <a href="group__iterators.html#ga9d8fdb87efce9d49ac54853ee5871e01">More...</a><br/></td></tr>
+<tr class="separator:ga9d8fdb87efce9d49ac54853ee5871e01"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga9bc83fc66d5f39ecf123d3c3e5b1fecf"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga9bc83fc66d5f39ecf123d3c3e5b1fecf">codes_grib_iterator_next</a> (<a class="el" href="structcodes__iterator.html">codes_iterator</a> *i, double *lat, double *lon, double *value)</td></tr>
+<tr class="memdesc:ga9bc83fc66d5f39ecf123d3c3e5b1fecf"><td class="mdescLeft"> </td><td class="mdescRight">Get the next value from an iterator.  <a href="group__iterators.html#ga9bc83fc66d5f39ecf123d3c3e5b1fecf">More...</a><br/></td></tr>
+<tr class="separator:ga9bc83fc66d5f39ecf123d3c3e5b1fecf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga93ef62613c251baa5ada3924d3c856ac"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga93ef62613c251baa5ada3924d3c856ac">codes_grib_iterator_previous</a> (<a class="el" href="structcodes__iterator.html">codes_iterator</a> *i, double *lat, double *lon, double *value)</td></tr>
+<tr class="memdesc:ga93ef62613c251baa5ada3924d3c856ac"><td class="mdescLeft"> </td><td class="mdescRight">Get the previous value from an iterator.  <a href="group__iterators.html#ga93ef62613c251baa5ada3924d3c856ac">More...</a><br/></td></tr>
+<tr class="separator:ga93ef62613c251baa5ada3924d3c856ac"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga97dfa89fe0ebed41b238d98bac36db8a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga97dfa89fe0ebed41b238d98bac36db8a">codes_grib_iterator_has_next</a> (<a class="el" href="structcodes__iterator.html">codes_iterator</a> *i)</td></tr>
+<tr class="memdesc:ga97dfa89fe0ebed41b238d98bac36db8a"><td class="mdescLeft"> </td><td class="mdescRight">Test procedure for values in an iterator.  <a href="group__iterators.html#ga97dfa89fe0ebed41b238d98bac36db8a">More...</a><br/></td></tr>
+<tr class="separator:ga97dfa89fe0ebed41b238d98bac36db8a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga635320df5854ae08367fed2e5f895e2b"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga635320df5854ae08367fed2e5f895e2b">codes_grib_iterator_reset</a> (<a class="el" href="structcodes__iterator.html">codes_iterator</a> *i)</td></tr>
+<tr class="memdesc:ga635320df5854ae08367fed2e5f895e2b"><td class="mdescLeft"> </td><td class="mdescRight">Test procedure for values in an iterator.  <a href="group__iterators.html#ga635320df5854ae08367fed2e5f895e2b">More...</a><br/></td></tr>
+<tr class="separator:ga635320df5854ae08367fed2e5f895e2b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3999693d3932a62eada0d1de5b594d2f"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga3999693d3932a62eada0d1de5b594d2f">codes_grib_iterator_delete</a> (<a class="el" href="structcodes__iterator.html">codes_iterator</a> *i)</td></tr>
+<tr class="memdesc:ga3999693d3932a62eada0d1de5b594d2f"><td class="mdescLeft"> </td><td class="mdescRight">Frees an iterator from memory.  <a href="group__iterators.html#ga3999693d3932a62eada0d1de5b594d2f">More...</a><br/></td></tr>
+<tr class="separator:ga3999693d3932a62eada0d1de5b594d2f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga201d49e6c835f3b6ed041147d0bf4898"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__nearest.html">codes_nearest</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga201d49e6c835f3b6ed041147d0bf4898">codes_grib_nearest_new</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, int *error)</td></tr>
+<tr class="memdesc:ga201d49e6c835f3b6ed041147d0bf4898"><td class="mdescLeft"> </td><td class="mdescRight">Create a new nearest from a handle, using current geometry .  <a href="group__iterators.html#ga201d49e6c835f3b6ed041147d0bf4898">More...</a><br/></td></tr>
+<tr class="separator:ga201d49e6c835f3b6ed041147d0bf4898"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8c53c53033259beaf32055154f193a83"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga8c53c53033259beaf32055154f193a83">codes_grib_nearest_find</a> (<a class="el" href="structcodes__nearest.html">codes_nearest</a> *nearest, <a class="el" href="structcodes__handle.html">codes_handle</a> *h, double inlat, double inlon, unsigned long flags, double *outlats, double *outlons, [...]
+<tr class="memdesc:ga8c53c53033259beaf32055154f193a83"><td class="mdescLeft"> </td><td class="mdescRight">Find the 4 nearest points of a latitude longitude point.  <a href="group__iterators.html#ga8c53c53033259beaf32055154f193a83">More...</a><br/></td></tr>
+<tr class="separator:ga8c53c53033259beaf32055154f193a83"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8c3b2ed99693a097211000552876a61d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga8c3b2ed99693a097211000552876a61d">codes_grib_nearest_delete</a> (<a class="el" href="structcodes__nearest.html">codes_nearest</a> *nearest)</td></tr>
+<tr class="memdesc:ga8c3b2ed99693a097211000552876a61d"><td class="mdescLeft"> </td><td class="mdescRight">Frees an nearest from memory.  <a href="group__iterators.html#ga8c3b2ed99693a097211000552876a61d">More...</a><br/></td></tr>
+<tr class="separator:ga8c3b2ed99693a097211000552876a61d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6338ab9e3fb68c25d4fe48a8467cdbfc"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga6338ab9e3fb68c25d4fe48a8467cdbfc">codes_grib_nearest_find_multiple</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, int is_lsm, double *inlats, double *inlons, long npoints, double *outlats, double *outlons, double *values, double *distances, int *indexes)</td></tr>
+<tr class="memdesc:ga6338ab9e3fb68c25d4fe48a8467cdbfc"><td class="mdescLeft"> </td><td class="mdescRight">Find the nearest point of a set of points whose latitudes and longitudes are given in the inlats, inlons arrays respectively.  <a href="group__iterators.html#ga6338ab9e3fb68c25d4fe48a8467cdbfc">More...</a><br/></td></tr>
+<tr class="separator:ga6338ab9e3fb68c25d4fe48a8467cdbfc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaefda2b7765e1b737bcd05a825d231a1d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gaefda2b7765e1b737bcd05a825d231a1d">codes_get_offset</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, size_t *offset)</td></tr>
+<tr class="memdesc:gaefda2b7765e1b737bcd05a825d231a1d"><td class="mdescLeft"> </td><td class="mdescRight">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.  <a href="group__get__set.html#gaefda2b7765e1b737bcd05a825d231a1d">More...</a><br/></td></tr>
+<tr class="separator:gaefda2b7765e1b737bcd05a825d231a1d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga614d4f7a6c789a4fe60ea976b6644343"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga614d4f7a6c789a4fe60ea976b6644343">codes_get_size</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, size_t *size)</td></tr>
+<tr class="memdesc:ga614d4f7a6c789a4fe60ea976b6644343"><td class="mdescLeft"> </td><td class="mdescRight">Get the number of coded value from a key, if several keys of the same name are present, the total sum is returned.  <a href="group__get__set.html#ga614d4f7a6c789a4fe60ea976b6644343">More...</a><br/></td></tr>
+<tr class="separator:ga614d4f7a6c789a4fe60ea976b6644343"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga98d694dc6caa24afdd393440c94c38f8"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga98d694dc6caa24afdd393440c94c38f8">codes_get_length</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, size_t *length)</td></tr>
+<tr class="memdesc:ga98d694dc6caa24afdd393440c94c38f8"><td class="mdescLeft"> </td><td class="mdescRight">Get the length of the string representation of the key, if several keys of the same name are present, the maximum length is returned.  <a href="group__get__set.html#ga98d694dc6caa24afdd393440c94c38f8">More...</a><br/></td></tr>
+<tr class="separator:ga98d694dc6caa24afdd393440c94c38f8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6ff44dddc3bec09f710b0aa8d0dbded7"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga6ff44dddc3bec09f710b0aa8d0dbded7">codes_get_long</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, long *value)</td></tr>
+<tr class="memdesc:ga6ff44dddc3bec09f710b0aa8d0dbded7"><td class="mdescLeft"> </td><td class="mdescRight">Get a long value from a key, if several keys of the same name are present, the last one is returned.  <a href="group__get__set.html#ga6ff44dddc3bec09f710b0aa8d0dbded7">More...</a><br/></td></tr>
+<tr class="separator:ga6ff44dddc3bec09f710b0aa8d0dbded7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga93c1b612b2b70bbbff335b7d227316fc"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga93c1b612b2b70bbbff335b7d227316fc">codes_get_double</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, double *value)</td></tr>
+<tr class="memdesc:ga93c1b612b2b70bbbff335b7d227316fc"><td class="mdescLeft"> </td><td class="mdescRight">Get a double value from a key, if several keys of the same name are present, the last one is returned.  <a href="group__get__set.html#ga93c1b612b2b70bbbff335b7d227316fc">More...</a><br/></td></tr>
+<tr class="separator:ga93c1b612b2b70bbbff335b7d227316fc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga15b9a4d8dae3002f0b4f6ef4f1cfc197"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga15b9a4d8dae3002f0b4f6ef4f1cfc197">codes_get_double_element</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, int i, double *value)</td></tr>
+<tr class="memdesc:ga15b9a4d8dae3002f0b4f6ef4f1cfc197"><td class="mdescLeft"> </td><td class="mdescRight">Get as double the i-th element of the "key" array.  <a href="group__get__set.html#ga15b9a4d8dae3002f0b4f6ef4f1cfc197">More...</a><br/></td></tr>
+<tr class="separator:ga15b9a4d8dae3002f0b4f6ef4f1cfc197"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga853aad2cd2bea6b71b8c61fed6adfe0b"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga853aad2cd2bea6b71b8c61fed6adfe0b">codes_get_double_elements</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, int *i, long size, double *value)</td></tr>
+<tr class="memdesc:ga853aad2cd2bea6b71b8c61fed6adfe0b"><td class="mdescLeft"> </td><td class="mdescRight">Get as double array the elements of the "key" array whose indexes are listed in the input array i.  <a href="group__get__set.html#ga853aad2cd2bea6b71b8c61fed6adfe0b">More...</a><br/></td></tr>
+<tr class="separator:ga853aad2cd2bea6b71b8c61fed6adfe0b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga638d7bbe8dafd11847222a99b259f408"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga638d7bbe8dafd11847222a99b259f408">codes_get_string</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, char *mesg, size_t *length)</td></tr>
+<tr class="memdesc:ga638d7bbe8dafd11847222a99b259f408"><td class="mdescLeft"> </td><td class="mdescRight">Get a string value from a key, if several keys of the same name are present, the last one is returned.  <a href="group__get__set.html#ga638d7bbe8dafd11847222a99b259f408">More...</a><br/></td></tr>
+<tr class="separator:ga638d7bbe8dafd11847222a99b259f408"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga252c3104621144fb370f302f3a3f6755"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga252c3104621144fb370f302f3a3f6755">codes_get_bytes</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, unsigned char *bytes, size_t *length)</td></tr>
+<tr class="memdesc:ga252c3104621144fb370f302f3a3f6755"><td class="mdescLeft"> </td><td class="mdescRight">Get raw bytes values from a key.  <a href="group__get__set.html#ga252c3104621144fb370f302f3a3f6755">More...</a><br/></td></tr>
+<tr class="separator:ga252c3104621144fb370f302f3a3f6755"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga82b919c3196525ec2f21a8378d4cbbf4"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga82b919c3196525ec2f21a8378d4cbbf4">codes_get_double_array</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, double *vals, size_t *length)</td></tr>
+<tr class="memdesc:ga82b919c3196525ec2f21a8378d4cbbf4"><td class="mdescLeft"> </td><td class="mdescRight">Get double array values from a key.  <a href="group__get__set.html#ga82b919c3196525ec2f21a8378d4cbbf4">More...</a><br/></td></tr>
+<tr class="separator:ga82b919c3196525ec2f21a8378d4cbbf4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac43a3c0bf2561ceeb4bcc22d734b53b1"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gac43a3c0bf2561ceeb4bcc22d734b53b1">codes_get_long_array</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, long *vals, size_t *length)</td></tr>
+<tr class="memdesc:gac43a3c0bf2561ceeb4bcc22d734b53b1"><td class="mdescLeft"> </td><td class="mdescRight">Get long array values from a key.  <a href="group__get__set.html#gac43a3c0bf2561ceeb4bcc22d734b53b1">More...</a><br/></td></tr>
+<tr class="separator:gac43a3c0bf2561ceeb4bcc22d734b53b1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaecd9fa4b22117df7569320ddaa2431e1"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gaecd9fa4b22117df7569320ddaa2431e1">codes_copy_namespace</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *dest, const char *name, <a class="el" href="structcodes__handle.html">codes_handle</a> *src)</td></tr>
+<tr class="memdesc:gaecd9fa4b22117df7569320ddaa2431e1"><td class="mdescLeft"> </td><td class="mdescRight">Copy the keys belonging to a given namespace from a source handle to a destination handle.  <a href="group__get__set.html#gaecd9fa4b22117df7569320ddaa2431e1">More...</a><br/></td></tr>
+<tr class="separator:gaecd9fa4b22117df7569320ddaa2431e1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga385881244ca6ef4be9ecee93025c862f"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga385881244ca6ef4be9ecee93025c862f">codes_set_long</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, long val)</td></tr>
+<tr class="memdesc:ga385881244ca6ef4be9ecee93025c862f"><td class="mdescLeft"> </td><td class="mdescRight">Set a long value from a key.  <a href="group__get__set.html#ga385881244ca6ef4be9ecee93025c862f">More...</a><br/></td></tr>
+<tr class="separator:ga385881244ca6ef4be9ecee93025c862f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7d2d68482b903b40b91a0b334855db5f"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga7d2d68482b903b40b91a0b334855db5f">codes_set_double</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, double val)</td></tr>
+<tr class="memdesc:ga7d2d68482b903b40b91a0b334855db5f"><td class="mdescLeft"> </td><td class="mdescRight">Set a double value from a key.  <a href="group__get__set.html#ga7d2d68482b903b40b91a0b334855db5f">More...</a><br/></td></tr>
+<tr class="separator:ga7d2d68482b903b40b91a0b334855db5f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6062cdd5950966bffa72e74708f85368"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga6062cdd5950966bffa72e74708f85368">codes_set_string</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, const char *mesg, size_t *length)</td></tr>
+<tr class="memdesc:ga6062cdd5950966bffa72e74708f85368"><td class="mdescLeft"> </td><td class="mdescRight">Set a string value from a key.  <a href="group__get__set.html#ga6062cdd5950966bffa72e74708f85368">More...</a><br/></td></tr>
+<tr class="separator:ga6062cdd5950966bffa72e74708f85368"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7acb877bea87a39b3778c21dd8de46c2"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga7acb877bea87a39b3778c21dd8de46c2">codes_set_bytes</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, const unsigned char *bytes, size_t *length)</td></tr>
+<tr class="memdesc:ga7acb877bea87a39b3778c21dd8de46c2"><td class="mdescLeft"> </td><td class="mdescRight">Set a bytes array from a key.  <a href="group__get__set.html#ga7acb877bea87a39b3778c21dd8de46c2">More...</a><br/></td></tr>
+<tr class="separator:ga7acb877bea87a39b3778c21dd8de46c2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaff9b5bde2baf126d93f43100e5c1d3f7"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gaff9b5bde2baf126d93f43100e5c1d3f7">codes_set_double_array</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, const double *vals, size_t length)</td></tr>
+<tr class="memdesc:gaff9b5bde2baf126d93f43100e5c1d3f7"><td class="mdescLeft"> </td><td class="mdescRight">Set a double array from a key.  <a href="group__get__set.html#gaff9b5bde2baf126d93f43100e5c1d3f7">More...</a><br/></td></tr>
+<tr class="separator:gaff9b5bde2baf126d93f43100e5c1d3f7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5610a608f1e58996fa48c7ac8f3859a3"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga5610a608f1e58996fa48c7ac8f3859a3">codes_set_force_double_array</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, const double *vals, size_t length)</td></tr>
+<tr class="memdesc:ga5610a608f1e58996fa48c7ac8f3859a3"><td class="mdescLeft"> </td><td class="mdescRight">Same as codes_set_double_array but allows setting of READ-ONLY keys like codedValues.  <a href="group__get__set.html#ga5610a608f1e58996fa48c7ac8f3859a3">More...</a><br/></td></tr>
+<tr class="separator:ga5610a608f1e58996fa48c7ac8f3859a3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gabb904f520644caa008034bd2be9349ec"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gabb904f520644caa008034bd2be9349ec">codes_set_long_array</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, const long *vals, size_t length)</td></tr>
+<tr class="memdesc:gabb904f520644caa008034bd2be9349ec"><td class="mdescLeft"> </td><td class="mdescRight">Set a long array from a key.  <a href="group__get__set.html#gabb904f520644caa008034bd2be9349ec">More...</a><br/></td></tr>
+<tr class="separator:gabb904f520644caa008034bd2be9349ec"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6840ee00df4366a431bedcef609f8ae5"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga6840ee00df4366a431bedcef609f8ae5">codes_set_string_array</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, const char **vals, size_t length)</td></tr>
+<tr class="memdesc:ga6840ee00df4366a431bedcef609f8ae5"><td class="mdescLeft"> </td><td class="mdescRight">Set a string array from a key.  <a href="group__get__set.html#ga6840ee00df4366a431bedcef609f8ae5">More...</a><br/></td></tr>
+<tr class="separator:ga6840ee00df4366a431bedcef609f8ae5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab9cf0dd7ede554cc4b8a56728d768d88"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="eccodes_8h.html#ab9cf0dd7ede554cc4b8a56728d768d88">codes_dump_content</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, FILE *out, const char *mode, unsigned long option_flags, void *arg)</td></tr>
+<tr class="memdesc:ab9cf0dd7ede554cc4b8a56728d768d88"><td class="mdescLeft"> </td><td class="mdescRight">Print all keys, with the context print procedure and dump mode to a resource.  <a href="#ab9cf0dd7ede554cc4b8a56728d768d88">More...</a><br/></td></tr>
+<tr class="separator:ab9cf0dd7ede554cc4b8a56728d768d88"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1d83df194092088785f1d794356d950d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="eccodes_8h.html#a1d83df194092088785f1d794356d950d">codes_dump_action_tree</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, FILE *f)</td></tr>
+<tr class="memdesc:a1d83df194092088785f1d794356d950d"><td class="mdescLeft"> </td><td class="mdescRight">Print all keys from the parsed definition files available in a context.  <a href="#a1d83df194092088785f1d794356d950d">More...</a><br/></td></tr>
+<tr class="separator:a1d83df194092088785f1d794356d950d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3c1086a1abccc58db01609611c3e706d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__context.html">codes_context</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga3c1086a1abccc58db01609611c3e706d">codes_context_get_default</a> (void)</td></tr>
+<tr class="memdesc:ga3c1086a1abccc58db01609611c3e706d"><td class="mdescLeft"> </td><td class="mdescRight">Get the static default context.  <a href="group__context.html#ga3c1086a1abccc58db01609611c3e706d">More...</a><br/></td></tr>
+<tr class="separator:ga3c1086a1abccc58db01609611c3e706d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gae6323d16b5e929f22126d0ddbf43dc7f"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gae6323d16b5e929f22126d0ddbf43dc7f">codes_context_delete</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:gae6323d16b5e929f22126d0ddbf43dc7f"><td class="mdescLeft"> </td><td class="mdescRight">Frees the cached definition files of the context.  <a href="group__context.html#gae6323d16b5e929f22126d0ddbf43dc7f">More...</a><br/></td></tr>
+<tr class="separator:gae6323d16b5e929f22126d0ddbf43dc7f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga504a2b1bd0d3b229c120c8285895b03a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga504a2b1bd0d3b229c120c8285895b03a">codes_gts_header_on</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:ga504a2b1bd0d3b229c120c8285895b03a"><td class="mdescLeft"> </td><td class="mdescRight">Set the GTS header mode on.  <a href="group__context.html#ga504a2b1bd0d3b229c120c8285895b03a">More...</a><br/></td></tr>
+<tr class="separator:ga504a2b1bd0d3b229c120c8285895b03a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5c766bc156cd1ebcf70139965a41e669"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga5c766bc156cd1ebcf70139965a41e669">codes_gts_header_off</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:ga5c766bc156cd1ebcf70139965a41e669"><td class="mdescLeft"> </td><td class="mdescRight">Set the GTS header mode off.  <a href="group__context.html#ga5c766bc156cd1ebcf70139965a41e669">More...</a><br/></td></tr>
+<tr class="separator:ga5c766bc156cd1ebcf70139965a41e669"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga51838183704645cc11a270e5f755c30c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga51838183704645cc11a270e5f755c30c">codes_gribex_mode_on</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:ga51838183704645cc11a270e5f755c30c"><td class="mdescLeft"> </td><td class="mdescRight">Set the GRIBEX mode on.  <a href="group__context.html#ga51838183704645cc11a270e5f755c30c">More...</a><br/></td></tr>
+<tr class="separator:ga51838183704645cc11a270e5f755c30c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga13cba593f6e5b195bfc83bea419d5022"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga13cba593f6e5b195bfc83bea419d5022">codes_get_gribex_mode</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:ga13cba593f6e5b195bfc83bea419d5022"><td class="mdescLeft"> </td><td class="mdescRight">Get the GRIBEX mode.  <a href="group__context.html#ga13cba593f6e5b195bfc83bea419d5022">More...</a><br/></td></tr>
+<tr class="separator:ga13cba593f6e5b195bfc83bea419d5022"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga810b375ccacfb6646e44b8cd0da5ee5b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga810b375ccacfb6646e44b8cd0da5ee5b">codes_gribex_mode_off</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:ga810b375ccacfb6646e44b8cd0da5ee5b"><td class="mdescLeft"> </td><td class="mdescRight">Set the GRIBEX mode off.  <a href="group__context.html#ga810b375ccacfb6646e44b8cd0da5ee5b">More...</a><br/></td></tr>
+<tr class="separator:ga810b375ccacfb6646e44b8cd0da5ee5b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8abf0ff0f52f1e808edf092f2e7c1147"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga8abf0ff0f52f1e808edf092f2e7c1147">codes_context_set_definitions_path</a> (grib_context *c, const char *path)</td></tr>
+<tr class="memdesc:ga8abf0ff0f52f1e808edf092f2e7c1147"><td class="mdescLeft"> </td><td class="mdescRight">Sets the search path for definition files.  <a href="group__context.html#ga8abf0ff0f52f1e808edf092f2e7c1147">More...</a><br/></td></tr>
+<tr class="separator:ga8abf0ff0f52f1e808edf092f2e7c1147"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga4f2f808f560a3b744b4c904b3d1a1c48"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga4f2f808f560a3b744b4c904b3d1a1c48">codes_context_set_samples_path</a> (grib_context *c, const char *path)</td></tr>
+<tr class="memdesc:ga4f2f808f560a3b744b4c904b3d1a1c48"><td class="mdescLeft"> </td><td class="mdescRight">Sets the search path for sample files.  <a href="group__context.html#ga4f2f808f560a3b744b4c904b3d1a1c48">More...</a><br/></td></tr>
+<tr class="separator:ga4f2f808f560a3b744b4c904b3d1a1c48"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7775423a069b2b8b5535b5f68090b847"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga7775423a069b2b8b5535b5f68090b847">codes_grib_multi_support_on</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:ga7775423a069b2b8b5535b5f68090b847"><td class="mdescLeft"> </td><td class="mdescRight">Turn on support for multiple fields in single GRIB messages.  <a href="group__context.html#ga7775423a069b2b8b5535b5f68090b847">More...</a><br/></td></tr>
+<tr class="separator:ga7775423a069b2b8b5535b5f68090b847"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gafb670b14a995b47a9d8896fc5ca67383"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gafb670b14a995b47a9d8896fc5ca67383">codes_grib_multi_support_off</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:gafb670b14a995b47a9d8896fc5ca67383"><td class="mdescLeft"> </td><td class="mdescRight">Turn off support for multiple fields in single GRIB messages.  <a href="group__context.html#gafb670b14a995b47a9d8896fc5ca67383">More...</a><br/></td></tr>
+<tr class="separator:gafb670b14a995b47a9d8896fc5ca67383"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga72e9dabca4fc1d1bbb4cf3e01f77c9fd"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga72e9dabca4fc1d1bbb4cf3e01f77c9fd">codes_grib_multi_support_reset_file</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, FILE *f)</td></tr>
+<tr class="memdesc:ga72e9dabca4fc1d1bbb4cf3e01f77c9fd"><td class="mdescLeft"> </td><td class="mdescRight">Reset file handle in multiple GRIB field support mode.  <a href="group__context.html#ga72e9dabca4fc1d1bbb4cf3e01f77c9fd">More...</a><br/></td></tr>
+<tr class="separator:ga72e9dabca4fc1d1bbb4cf3e01f77c9fd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aad3989fb11cbfce477ce7b42daa7b506"><td class="memItemLeft" align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="eccodes_8h.html#aad3989fb11cbfce477ce7b42daa7b506">codes_get_api_version</a> (void)</td></tr>
+<tr class="memdesc:aad3989fb11cbfce477ce7b42daa7b506"><td class="mdescLeft"> </td><td class="mdescRight">Get the API version.  <a href="#aad3989fb11cbfce477ce7b42daa7b506">More...</a><br/></td></tr>
+<tr class="separator:aad3989fb11cbfce477ce7b42daa7b506"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a82249b16ee12f2e574397f8cccaafb7a"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="eccodes_8h.html#a82249b16ee12f2e574397f8cccaafb7a">codes_get_git_sha1</a> (void)</td></tr>
+<tr class="memdesc:a82249b16ee12f2e574397f8cccaafb7a"><td class="mdescLeft"> </td><td class="mdescRight">Get the Git version control SHA1 identifier.  <a href="#a82249b16ee12f2e574397f8cccaafb7a">More...</a><br/></td></tr>
+<tr class="separator:a82249b16ee12f2e574397f8cccaafb7a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8be52d40a8fb51642720d0b8adf6cdce"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="eccodes_8h.html#a8be52d40a8fb51642720d0b8adf6cdce">codes_print_api_version</a> (FILE *out)</td></tr>
+<tr class="memdesc:a8be52d40a8fb51642720d0b8adf6cdce"><td class="mdescLeft"> </td><td class="mdescRight">Prints the API version.  <a href="#a8be52d40a8fb51642720d0b8adf6cdce">More...</a><br/></td></tr>
+<tr class="separator:a8be52d40a8fb51642720d0b8adf6cdce"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gad3394316cf1f3c779648fe81428adb8f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gad3394316cf1f3c779648fe81428adb8f">codes_keys_iterator_new</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, unsigned long filter_flags, const char *name_space)</td></tr>
+<tr class="separator:gad3394316cf1f3c779648fe81428adb8f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga804b63ac6be7c95aac71a9050008e409"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ga804b63ac6be7c95aac71a9050008e409">codes_keys_iterator_next</a> (<a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> *kiter)</td></tr>
+<tr class="separator:ga804b63ac6be7c95aac71a9050008e409"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga1049604cb5a47359f9c7f7a42571a48b"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ga1049604cb5a47359f9c7f7a42571a48b">codes_keys_iterator_get_name</a> (<a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> *kiter)</td></tr>
+<tr class="separator:ga1049604cb5a47359f9c7f7a42571a48b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gafdafe484a0e5a82732ddcbaec1e272a5"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gafdafe484a0e5a82732ddcbaec1e272a5">codes_keys_iterator_delete</a> (<a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> *kiter)</td></tr>
+<tr class="separator:gafdafe484a0e5a82732ddcbaec1e272a5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga2f611291982ea92cabc0ca70691291bf"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ga2f611291982ea92cabc0ca70691291bf">codes_keys_iterator_rewind</a> (<a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> *kiter)</td></tr>
+<tr class="separator:ga2f611291982ea92cabc0ca70691291bf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1257b15cb014452fd6e6662db06e4ede"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="eccodes_8h.html#a1257b15cb014452fd6e6662db06e4ede">codes_get_error_message</a> (int code)</td></tr>
+<tr class="memdesc:a1257b15cb014452fd6e6662db06e4ede"><td class="mdescLeft"> </td><td class="mdescRight">Convert an error code into a string.  <a href="#a1257b15cb014452fd6e6662db06e4ede">More...</a><br/></td></tr>
+<tr class="separator:a1257b15cb014452fd6e6662db06e4ede"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>The <a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a> C header file. </p>
+<p>This is the only file that must be included to use the <a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a> library from C. </p>
+</div><h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a1d83df194092088785f1d794356d950d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void codes_dump_action_tree </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">FILE * </td>
+          <td class="paramname"><em>f</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Print all keys from the parsed definition files available in a context. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">f</td><td>: the File used to print the keys on </td></tr>
+    <tr><td class="paramname">c</td><td>: the context that contains the cached definition files to be printed </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ab9cf0dd7ede554cc4b8a56728d768d88"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void codes_dump_content </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">FILE * </td>
+          <td class="paramname"><em>out</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>mode</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned long </td>
+          <td class="paramname"><em>option_flags</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"><em>arg</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Print all keys, with the context print procedure and dump mode to a resource. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to be printed </td></tr>
+    <tr><td class="paramname">out</td><td>: output file handle </td></tr>
+    <tr><td class="paramname">mode</td><td>: Examples of available dump modes: debug wmo </td></tr>
+    <tr><td class="paramname">option_flags</td><td>: all the CODES_DUMP_FLAG_x flags can be used </td></tr>
+    <tr><td class="paramname">arg</td><td>: used to provide a format to output data (experimental) </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aad3989fb11cbfce477ce7b42daa7b506"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">long codes_get_api_version </td>
+          <td>(</td>
+          <td class="paramtype">void </td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the API version. </p>
+<dl class="section return"><dt>Returns</dt><dd>API version</dd></dl>
+<p>Get the API version.</p>
+<p>Returns the version of the api as a string in the format "major.minor.revision". </p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a267636dba6361f74b330275a1f8e1ed7">ecCodes::codes_index_get()</a>, and <a class="el" href="namespaceec_codes.html#a92041c59bf04e6db88395077802dfe74">ecCodes::codes_index_select()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1257b15cb014452fd6e6662db06e4ede"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* codes_get_error_message </td>
+          <td>(</td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>code</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Convert an error code into a string. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">code</td><td>: the error code </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the error message </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a82249b16ee12f2e574397f8cccaafb7a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* codes_get_git_sha1 </td>
+          <td>(</td>
+          <td class="paramtype">void </td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the Git version control SHA1 identifier. </p>
+<dl class="section return"><dt>Returns</dt><dd>character string with SHA1 identifier </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a8be52d40a8fb51642720d0b8adf6cdce"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void codes_print_api_version </td>
+          <td>(</td>
+          <td class="paramtype">FILE * </td>
+          <td class="paramname"><em>out</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Prints the API version. </p>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/examples.html b/html/examples.html
deleted file mode 100644
index 9452426..0000000
--- a/html/examples.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: Examples</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li class="current"><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>grib_api Examples</h1>Here is a list of all examples:<ul>
-<li><a class="el" href="clone_8f90-example.html">clone.f90</a>
-<li><a class="el" href="copy__message_8f90-example.html">copy_message.f90</a>
-<li><a class="el" href="count__messages_8f90-example.html">count_messages.f90</a>
-<li><a class="el" href="get_8c-example.html">get.c</a>
-<li><a class="el" href="get_8f90-example.html">get.f90</a>
-<li><a class="el" href="get__data_8f90-example.html">get_data.f90</a>
-<li><a class="el" href="get__fortran_8_f-example.html">get_fortran.F</a>
-<li><a class="el" href="get__pl_8f90-example.html">get_pl.f90</a>
-<li><a class="el" href="get__pv_8f90-example.html">get_pv.f90</a>
-<li><a class="el" href="index_8f90-example.html">index.f90</a>
-<li><a class="el" href="iterator_8c-example.html">iterator.c</a>
-<li><a class="el" href="iterator__fortran_8_f-example.html">iterator_fortran.F</a>
-<li><a class="el" href="keys__iterator_8c-example.html">keys_iterator.c</a>
-<li><a class="el" href="keys__iterator_8f90-example.html">keys_iterator.f90</a>
-<li><a class="el" href="keys__iterator__fortran_8_f-example.html">keys_iterator_fortran.F</a>
-<li><a class="el" href="multi_8c-example.html">multi.c</a>
-<li><a class="el" href="multi_8f90-example.html">multi.f90</a>
-<li><a class="el" href="multi__fortran_8_f-example.html">multi_fortran.F</a>
-<li><a class="el" href="multi__write_8c-example.html">multi_write.c</a>
-<li><a class="el" href="multi__write_8f90-example.html">multi_write.f90</a>
-<li><a class="el" href="nearest_8c-example.html">nearest.c</a>
-<li><a class="el" href="nearest_8f90-example.html">nearest.f90</a>
-<li><a class="el" href="precision_8c-example.html">precision.c</a>
-<li><a class="el" href="precision_8f90-example.html">precision.f90</a>
-<li><a class="el" href="precision__fortran_8_f-example.html">precision_fortran.F</a>
-<li><a class="el" href="print__data_8c-example.html">print_data.c</a>
-<li><a class="el" href="print__data_8f90-example.html">print_data.f90</a>
-<li><a class="el" href="print__data__fortran_8_f-example.html">print_data_fortran.F</a>
-<li><a class="el" href="samples_8f90-example.html">samples.f90</a>
-<li><a class="el" href="set_8c-example.html">set.c</a>
-<li><a class="el" href="set_8f90-example.html">set.f90</a>
-<li><a class="el" href="set__bitmap_8f90-example.html">set_bitmap.f90</a>
-<li><a class="el" href="set__fortran_8_f-example.html">set_fortran.F</a>
-<li><a class="el" href="set__missing_8f90-example.html">set_missing.f90</a>
-<li><a class="el" href="set__pv_8f90-example.html">set_pv.f90</a>
-</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/files.html b/html/files.html
index 0ec539d..720a58c 100644
--- a/html/files.html
+++ b/html/files.html
@@ -1,30 +1,100 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: File Index</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li class="current"><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: File List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
-<div class="tabs">
-  <ul>
-    <li class="current"><a href="files.html"><span>File List</span></a></li>
-    <li><a href="globals.html"><span>Globals</span></a></li>
-  </ul>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
 </div>
-<h1>grib_api File List</h1>Here is a list of all documented files with brief descriptions:<table>
-  <tr><td class="indexkey"><a class="el" href="grib__api_8h.html">grib_api.h</a></td><td class="indexvalue">Copyright 2005-2016 ECMWF </td></tr>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">File List</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="eccodes_8h.html" target="_self">eccodes.h</a></td><td class="desc">The <a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a> C header file </td></tr>
 </table>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
 </body>
 </html>
diff --git a/html/ftv2blank.png b/html/ftv2blank.png
new file mode 100644
index 0000000..63c605b
Binary files /dev/null and b/html/ftv2blank.png differ
diff --git a/html/ftv2cl.png b/html/ftv2cl.png
new file mode 100644
index 0000000..132f657
Binary files /dev/null and b/html/ftv2cl.png differ
diff --git a/html/ftv2doc.png b/html/ftv2doc.png
new file mode 100644
index 0000000..17edabf
Binary files /dev/null and b/html/ftv2doc.png differ
diff --git a/html/ftv2folderclosed.png b/html/ftv2folderclosed.png
new file mode 100644
index 0000000..bb8ab35
Binary files /dev/null and b/html/ftv2folderclosed.png differ
diff --git a/html/ftv2folderopen.png b/html/ftv2folderopen.png
new file mode 100644
index 0000000..d6c7f67
Binary files /dev/null and b/html/ftv2folderopen.png differ
diff --git a/html/ftv2lastnode.png b/html/ftv2lastnode.png
new file mode 100644
index 0000000..63c605b
Binary files /dev/null and b/html/ftv2lastnode.png differ
diff --git a/html/ftv2link.png b/html/ftv2link.png
new file mode 100644
index 0000000..17edabf
Binary files /dev/null and b/html/ftv2link.png differ
diff --git a/html/ftv2mlastnode.png b/html/ftv2mlastnode.png
new file mode 100644
index 0000000..0b63f6d
Binary files /dev/null and b/html/ftv2mlastnode.png differ
diff --git a/html/ftv2mnode.png b/html/ftv2mnode.png
new file mode 100644
index 0000000..0b63f6d
Binary files /dev/null and b/html/ftv2mnode.png differ
diff --git a/html/ftv2mo.png b/html/ftv2mo.png
new file mode 100644
index 0000000..4bfb80f
Binary files /dev/null and b/html/ftv2mo.png differ
diff --git a/html/ftv2node.png b/html/ftv2node.png
new file mode 100644
index 0000000..63c605b
Binary files /dev/null and b/html/ftv2node.png differ
diff --git a/html/ftv2ns.png b/html/ftv2ns.png
new file mode 100644
index 0000000..72e3d71
Binary files /dev/null and b/html/ftv2ns.png differ
diff --git a/html/ftv2plastnode.png b/html/ftv2plastnode.png
new file mode 100644
index 0000000..c6ee22f
Binary files /dev/null and b/html/ftv2plastnode.png differ
diff --git a/html/ftv2pnode.png b/html/ftv2pnode.png
new file mode 100644
index 0000000..c6ee22f
Binary files /dev/null and b/html/ftv2pnode.png differ
diff --git a/html/ftv2splitbar.png b/html/ftv2splitbar.png
new file mode 100644
index 0000000..fe895f2
Binary files /dev/null and b/html/ftv2splitbar.png differ
diff --git a/html/ftv2vertline.png b/html/ftv2vertline.png
new file mode 100644
index 0000000..63c605b
Binary files /dev/null and b/html/ftv2vertline.png differ
diff --git a/html/functions.html b/html/functions.html
new file mode 100644
index 0000000..5049628
--- /dev/null
+++ b/html/functions.html
@@ -0,0 +1,512 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="functions.html"><span>All</span></a></li>
+      <li><a href="functions_func.html"><span>Functions</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow4" class="tabs3">
+    <ul class="tablist">
+      <li><a href="#index_c"><span>c</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<li>codes_any_new_from_file()
+: <a class="el" href="classeccodes.html#aa468943e1c669487375b2e3d46ff84b1">eccodes</a>
+</li>
+<li>codes_bufr_new_from_file()
+: <a class="el" href="classeccodes.html#a94050d64954482cd82ea6f007fdc9ac0">eccodes</a>
+</li>
+<li>codes_bufr_new_from_samples()
+: <a class="el" href="classeccodes.html#a6d32d26f2076db60d78e1c2d222dd01d">eccodes</a>
+</li>
+<li>codes_check()
+: <a class="el" href="classeccodes.html#a1cd5ff5ea308443bfe166974d9ab1363">eccodes</a>
+</li>
+<li>codes_clone()
+: <a class="el" href="classeccodes.html#a94c85dbc797f98a177795ff9a8ad8035">eccodes</a>
+</li>
+<li>codes_close_file()
+: <a class="el" href="classeccodes.html#a436a01aabf91cdbb4c5902a5d1a2886e">eccodes</a>
+</li>
+<li>codes_copy_message()
+: <a class="el" href="classeccodes.html#afdd32c1a78f0a3d54992e0a6a6bfc66b">eccodes</a>
+</li>
+<li>codes_copy_namespace()
+: <a class="el" href="classeccodes.html#a8bba3684a289b1e8c6bcea0b67c45b5d">eccodes</a>
+</li>
+<li>codes_count_in_file()
+: <a class="el" href="classeccodes.html#a0a09420f86caf79873b2fb067e360049">eccodes</a>
+</li>
+<li>codes_dump()
+: <a class="el" href="classeccodes.html#ab5e1ab3efc1981c886e64e467c1b84a1">eccodes</a>
+</li>
+<li>codes_get_byte_array()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#adee61373d840f0f6a73be5d574a47a1e">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#adee61373d840f0f6a73be5d574a47a1e">eccodes</a>
+</li>
+<li>codes_get_error_string()
+: <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">eccodes</a>
+</li>
+<li>codes_get_int()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#a15e9f187ba45e4a334f270884c59651e">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#a15e9f187ba45e4a334f270884c59651e">eccodes</a>
+</li>
+<li>codes_get_int_array()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#a620d907f796a466b9b849be12e96a274">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#a620d907f796a466b9b849be12e96a274">eccodes</a>
+</li>
+<li>codes_get_long()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#ad85e9d6d052fdcbfade2d201357e391d">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#ad85e9d6d052fdcbfade2d201357e391d">eccodes</a>
+</li>
+<li>codes_get_long_array()
+: <a class="el" href="classeccodes.html#a0ff7f18601949da80f10d1614e0d0541">eccodes</a>
+</li>
+<li>codes_get_message_size_int()
+: <a class="el" href="interfaceeccodes_1_1codes__get__message__size.html#af4ff60a9bd8d0c1c0173242897db4816">eccodes::codes_get_message_size</a>
+, <a class="el" href="classeccodes.html#af4ff60a9bd8d0c1c0173242897db4816">eccodes</a>
+</li>
+<li>codes_get_message_size_size_t()
+: <a class="el" href="interfaceeccodes_1_1codes__get__message__size.html#a032408e4f1a842a42fca23218ec85a4d">eccodes::codes_get_message_size</a>
+, <a class="el" href="classeccodes.html#a032408e4f1a842a42fca23218ec85a4d">eccodes</a>
+</li>
+<li>codes_get_real4()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#ab6c505dfdf5a75f51c07683abed39b68">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#ab6c505dfdf5a75f51c07683abed39b68">eccodes</a>
+</li>
+<li>codes_get_real4_array()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#ae1df5b7389172122fe2c84c4156f18d0">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#ae1df5b7389172122fe2c84c4156f18d0">eccodes</a>
+</li>
+<li>codes_get_real4_element()
+: <a class="el" href="interfaceeccodes_1_1codes__get__element.html#a95426fb251262a83fbdcc5ae86968b4b">eccodes::codes_get_element</a>
+, <a class="el" href="classeccodes.html#a95426fb251262a83fbdcc5ae86968b4b">eccodes</a>
+</li>
+<li>codes_get_real4_elements()
+: <a class="el" href="classeccodes.html#a0587c719213f5eb38afbb80cb30a2b8b">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__get__element.html#a0587c719213f5eb38afbb80cb30a2b8b">eccodes::codes_get_element</a>
+</li>
+<li>codes_get_real8()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#a2ca22327e21aca686d29f8953e235839">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#a2ca22327e21aca686d29f8953e235839">eccodes</a>
+</li>
+<li>codes_get_real8_array()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#a4b28e570e54dad5a779e0452d3ed66d4">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#a4b28e570e54dad5a779e0452d3ed66d4">eccodes</a>
+</li>
+<li>codes_get_real8_element()
+: <a class="el" href="interfaceeccodes_1_1codes__get__element.html#ac9ceb83558433f918eac6aeb00b620af">eccodes::codes_get_element</a>
+, <a class="el" href="classeccodes.html#ac9ceb83558433f918eac6aeb00b620af">eccodes</a>
+</li>
+<li>codes_get_real8_elements()
+: <a class="el" href="interfaceeccodes_1_1codes__get__element.html#a1e550ade4f5781f19718fa8bdec802f9">eccodes::codes_get_element</a>
+, <a class="el" href="classeccodes.html#a1e550ade4f5781f19718fa8bdec802f9">eccodes</a>
+</li>
+<li>codes_get_size_int()
+: <a class="el" href="interfaceeccodes_1_1codes__get__size.html#ac566c4909f1ea554517d256a780cf87f">eccodes::codes_get_size</a>
+, <a class="el" href="classeccodes.html#ac566c4909f1ea554517d256a780cf87f">eccodes</a>
+</li>
+<li>codes_get_size_long()
+: <a class="el" href="interfaceeccodes_1_1codes__get__size.html#accd5b68ef585873b05a3f61d7dda3f3a">eccodes::codes_get_size</a>
+, <a class="el" href="classeccodes.html#accd5b68ef585873b05a3f61d7dda3f3a">eccodes</a>
+</li>
+<li>codes_get_string()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#a9b71df8830b162b7773cf4d1446b4303">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#a9b71df8830b162b7773cf4d1446b4303">eccodes</a>
+</li>
+<li>codes_get_string_array()
+: <a class="el" href="classeccodes.html#a731aac9d5d75917e12048573ae86e7c6">eccodes</a>
+</li>
+<li>codes_grib_find_nearest_four_single()
+: <a class="el" href="interfaceeccodes_1_1codes__grib__find__nearest.html#ad4b53c47aecc5fa5ae43c95357d2d690">eccodes::codes_grib_find_nearest</a>
+, <a class="el" href="classeccodes.html#ad4b53c47aecc5fa5ae43c95357d2d690">eccodes</a>
+</li>
+<li>codes_grib_find_nearest_multiple()
+: <a class="el" href="interfaceeccodes_1_1codes__grib__find__nearest.html#acb92b7a78966c0b2f53ee6e288bff673">eccodes::codes_grib_find_nearest</a>
+, <a class="el" href="classeccodes.html#acb92b7a78966c0b2f53ee6e288bff673">eccodes</a>
+</li>
+<li>codes_grib_find_nearest_single()
+: <a class="el" href="interfaceeccodes_1_1codes__grib__find__nearest.html#a036ae036cc766718ad224851d47d99a2">eccodes::codes_grib_find_nearest</a>
+, <a class="el" href="classeccodes.html#a036ae036cc766718ad224851d47d99a2">eccodes</a>
+</li>
+<li>codes_grib_get_data_real4()
+: <a class="el" href="interfaceeccodes_1_1codes__grib__get__data.html#a0e93200c0e6e4bdacaf1bec1e0a29ee7">eccodes::codes_grib_get_data</a>
+, <a class="el" href="classeccodes.html#a0e93200c0e6e4bdacaf1bec1e0a29ee7">eccodes</a>
+</li>
+<li>codes_grib_get_data_real8()
+: <a class="el" href="interfaceeccodes_1_1codes__grib__get__data.html#a043bb1e696da61d06523ad35ae16fe8c">eccodes::codes_grib_get_data</a>
+, <a class="el" href="classeccodes.html#a043bb1e696da61d06523ad35ae16fe8c">eccodes</a>
+</li>
+<li>codes_grib_multi_append()
+: <a class="el" href="classeccodes.html#a385aa2c504656d11812dd461819446ba">eccodes</a>
+</li>
+<li>codes_grib_multi_support_off()
+: <a class="el" href="classeccodes.html#ab11428b591f9ea0ae46e5116ad9e5c7f">eccodes</a>
+</li>
+<li>codes_grib_multi_support_on()
+: <a class="el" href="classeccodes.html#a69d578039c073e637d727078778ca3ef">eccodes</a>
+</li>
+<li>codes_grib_multi_write()
+: <a class="el" href="classeccodes.html#aa1ef915b62ebf910254f05cb619c0168">eccodes</a>
+</li>
+<li>codes_grib_new_from_file()
+: <a class="el" href="classeccodes.html#a7a21cb68f0d5058a63a4ba92a938fd27">eccodes</a>
+</li>
+<li>codes_grib_new_from_samples()
+: <a class="el" href="classeccodes.html#acfc477ba642e007ec55c7e4ce2c31a9d">eccodes</a>
+</li>
+<li>codes_gribex_mode_off()
+: <a class="el" href="classeccodes.html#acb69eeef59ba780c62d7f600915aa986">eccodes</a>
+</li>
+<li>codes_gribex_mode_on()
+: <a class="el" href="classeccodes.html#aa8e36bbbe3caddac4ad7d8bcdfa3cd28">eccodes</a>
+</li>
+<li>codes_index_add_file()
+: <a class="el" href="classeccodes.html#af89d3c57b15bdbd00241358a10b836a8">eccodes</a>
+</li>
+<li>codes_index_create()
+: <a class="el" href="classeccodes.html#a5f52ecf1abe0a68a32517fe2a0d08058">eccodes</a>
+</li>
+<li>codes_index_get_int()
+: <a class="el" href="interfaceeccodes_1_1codes__index__get.html#a26cf731cfda4b350500d8520ea674341">eccodes::codes_index_get</a>
+, <a class="el" href="classeccodes.html#a26cf731cfda4b350500d8520ea674341">eccodes</a>
+</li>
+<li>codes_index_get_long()
+: <a class="el" href="interfaceeccodes_1_1codes__index__get.html#afa9bf87d988de7eb04a9de9982e6112f">eccodes::codes_index_get</a>
+, <a class="el" href="classeccodes.html#afa9bf87d988de7eb04a9de9982e6112f">eccodes</a>
+</li>
+<li>codes_index_get_real8()
+: <a class="el" href="interfaceeccodes_1_1codes__index__get.html#aedc38b28a7a27b5e042f7a5a17c73001">eccodes::codes_index_get</a>
+, <a class="el" href="classeccodes.html#aedc38b28a7a27b5e042f7a5a17c73001">eccodes</a>
+</li>
+<li>codes_index_get_size_int()
+: <a class="el" href="interfaceeccodes_1_1codes__index__get__size.html#aeb1c3a999e4726895a94acb9b0de518c">eccodes::codes_index_get_size</a>
+, <a class="el" href="classeccodes.html#aeb1c3a999e4726895a94acb9b0de518c">eccodes</a>
+</li>
+<li>codes_index_get_size_long()
+: <a class="el" href="interfaceeccodes_1_1codes__index__get__size.html#a0d2104143f36bdfb5c7cccb9b56ae3f0">eccodes::codes_index_get_size</a>
+, <a class="el" href="classeccodes.html#a0d2104143f36bdfb5c7cccb9b56ae3f0">eccodes</a>
+</li>
+<li>codes_index_get_string()
+: <a class="el" href="interfaceeccodes_1_1codes__index__get.html#ae5eb8fbe2de7d547bc92baddaf77adf1">eccodes::codes_index_get</a>
+, <a class="el" href="classeccodes.html#ae5eb8fbe2de7d547bc92baddaf77adf1">eccodes</a>
+</li>
+<li>codes_index_read()
+: <a class="el" href="classeccodes.html#a16dfcaea7b7c6c77794914d0570f5bc9">eccodes</a>
+</li>
+<li>codes_index_release()
+: <a class="el" href="classeccodes.html#a8fba1de775308d8a1f0c035c51e3a42d">eccodes</a>
+</li>
+<li>codes_index_select_int()
+: <a class="el" href="interfaceeccodes_1_1codes__index__select.html#ac84dca14749c6c8f7b1b32dbcb8c8f88">eccodes::codes_index_select</a>
+, <a class="el" href="classeccodes.html#ac84dca14749c6c8f7b1b32dbcb8c8f88">eccodes</a>
+</li>
+<li>codes_index_select_long()
+: <a class="el" href="interfaceeccodes_1_1codes__index__select.html#a6acd94d169fc462c5babb5d654c07612">eccodes::codes_index_select</a>
+, <a class="el" href="classeccodes.html#a6acd94d169fc462c5babb5d654c07612">eccodes</a>
+</li>
+<li>codes_index_select_real8()
+: <a class="el" href="interfaceeccodes_1_1codes__index__select.html#ae1a4e9f83a13d8ce9b046f141ee990cd">eccodes::codes_index_select</a>
+, <a class="el" href="classeccodes.html#ae1a4e9f83a13d8ce9b046f141ee990cd">eccodes</a>
+</li>
+<li>codes_index_select_string()
+: <a class="el" href="interfaceeccodes_1_1codes__index__select.html#a500fe1c101af888362bb60a94c68085e">eccodes::codes_index_select</a>
+, <a class="el" href="classeccodes.html#a500fe1c101af888362bb60a94c68085e">eccodes</a>
+</li>
+<li>codes_index_write()
+: <a class="el" href="classeccodes.html#afd0c12a42f60fe16eabc8b0fca41ff05">eccodes</a>
+</li>
+<li>codes_is_defined()
+: <a class="el" href="classeccodes.html#a4aeb717b8aba0e2898a83d56363bab98">eccodes</a>
+</li>
+<li>codes_is_missing()
+: <a class="el" href="classeccodes.html#aff0e850cce3105f72b76a603e104cce4">eccodes</a>
+</li>
+<li>codes_keys_iterator_delete()
+: <a class="el" href="classeccodes.html#a5d81274245d3a60ab85d657aa11512e5">eccodes</a>
+</li>
+<li>codes_keys_iterator_get_name()
+: <a class="el" href="classeccodes.html#a695b7f3f87bfb465908447ce51024221">eccodes</a>
+</li>
+<li>codes_keys_iterator_new()
+: <a class="el" href="classeccodes.html#ae9e9bae052da5148e4a0ca85f31c69b5">eccodes</a>
+</li>
+<li>codes_keys_iterator_next()
+: <a class="el" href="classeccodes.html#aaaa40acb7f8e05783e106c32a541a66d">eccodes</a>
+</li>
+<li>codes_keys_iterator_rewind()
+: <a class="el" href="classeccodes.html#aa6055f116c22830fc941b6db2e133d25">eccodes</a>
+</li>
+<li>codes_new_from_file()
+: <a class="el" href="classeccodes.html#a5533c6fb8bd7d8f622c89484b7bbdfb6">eccodes</a>
+</li>
+<li>codes_new_from_index()
+: <a class="el" href="classeccodes.html#a2852e5519e2ff8596e461986b99092d7">eccodes</a>
+</li>
+<li>codes_new_from_message_char()
+: <a class="el" href="interfaceeccodes_1_1codes__new__from__message.html#a9734463b78e04c3e803acb25d3314436">eccodes::codes_new_from_message</a>
+, <a class="el" href="classeccodes.html#a9734463b78e04c3e803acb25d3314436">eccodes</a>
+</li>
+<li>codes_new_from_message_int4()
+: <a class="el" href="classeccodes.html#af9d90d4940f54ecebb44acb69a59d496">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__new__from__message.html#af9d90d4940f54ecebb44acb69a59d496">eccodes::codes_new_from_message</a>
+</li>
+<li>codes_open_file()
+: <a class="el" href="classeccodes.html#a28594e26f2f4b92b9c60e943dd8e1be3">eccodes</a>
+</li>
+<li>codes_read_bytes_char()
+: <a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#a30dcd3a6d9d4b084f1dc9d617927b99a">eccodes::codes_read_bytes</a>
+, <a class="el" href="classeccodes.html#a30dcd3a6d9d4b084f1dc9d617927b99a">eccodes</a>
+</li>
+<li>codes_read_bytes_char_size_t()
+: <a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#aea71591e62a4a6f42682ceb5979c0631">eccodes::codes_read_bytes</a>
+, <a class="el" href="classeccodes.html#aea71591e62a4a6f42682ceb5979c0631">eccodes</a>
+</li>
+<li>codes_read_bytes_int4()
+: <a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#a0b75e479138c6fe2b49cacef123a1c8e">eccodes::codes_read_bytes</a>
+, <a class="el" href="classeccodes.html#a0b75e479138c6fe2b49cacef123a1c8e">eccodes</a>
+</li>
+<li>codes_read_bytes_int4_size_t()
+: <a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#ad1be70ac4cc7c2c5775e3bc6b607c4df">eccodes::codes_read_bytes</a>
+, <a class="el" href="classeccodes.html#ad1be70ac4cc7c2c5775e3bc6b607c4df">eccodes</a>
+</li>
+<li>codes_read_bytes_real4()
+: <a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#a19f70122369224f1ef3513bf7f351e86">eccodes::codes_read_bytes</a>
+, <a class="el" href="classeccodes.html#a19f70122369224f1ef3513bf7f351e86">eccodes</a>
+</li>
+<li>codes_read_bytes_real4_size_t()
+: <a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#a9bac4f78f245e52303e85d2ee142d073">eccodes::codes_read_bytes</a>
+, <a class="el" href="classeccodes.html#a9bac4f78f245e52303e85d2ee142d073">eccodes</a>
+</li>
+<li>codes_read_bytes_real8()
+: <a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#a4e1e0bb73d3fafe62685a3f7191334e4">eccodes::codes_read_bytes</a>
+, <a class="el" href="classeccodes.html#a4e1e0bb73d3fafe62685a3f7191334e4">eccodes</a>
+</li>
+<li>codes_read_bytes_real8_size_t()
+: <a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#adec76dd3ecf49b71ded2545054828c3d">eccodes::codes_read_bytes</a>
+, <a class="el" href="classeccodes.html#adec76dd3ecf49b71ded2545054828c3d">eccodes</a>
+</li>
+<li>codes_read_from_file_char()
+: <a class="el" href="interfaceeccodes_1_1codes__read__from__file.html#ab84434f52a4a41e68bf3103c392482ae">eccodes::codes_read_from_file</a>
+, <a class="el" href="classeccodes.html#ab84434f52a4a41e68bf3103c392482ae">eccodes</a>
+</li>
+<li>codes_read_from_file_char_size_t()
+: <a class="el" href="interfaceeccodes_1_1codes__read__from__file.html#a9ca8b8009071657b338508a3d6709b8d">eccodes::codes_read_from_file</a>
+, <a class="el" href="classeccodes.html#a9ca8b8009071657b338508a3d6709b8d">eccodes</a>
+</li>
+<li>codes_read_from_file_int4()
+: <a class="el" href="interfaceeccodes_1_1codes__read__from__file.html#a7b5b61cc34b32aae4c3f2deeacbc50ae">eccodes::codes_read_from_file</a>
+, <a class="el" href="classeccodes.html#a7b5b61cc34b32aae4c3f2deeacbc50ae">eccodes</a>
+</li>
+<li>codes_read_from_file_int4_size_t()
+: <a class="el" href="classeccodes.html#aa04bacd625a2a87d7e490c0361643da3">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__read__from__file.html#aa04bacd625a2a87d7e490c0361643da3">eccodes::codes_read_from_file</a>
+</li>
+<li>codes_read_from_file_real4()
+: <a class="el" href="classeccodes.html#aa4182b2add068f538b335c8efd1a8d5f">eccodes</a>
+</li>
+<li>codes_read_from_file_real4_size_t()
+: <a class="el" href="classeccodes.html#ae866f7aa5270100094390b465e953975">eccodes</a>
+</li>
+<li>codes_read_from_file_real8()
+: <a class="el" href="classeccodes.html#a2ff542236ca5d1bdeb7192c5c8eca94f">eccodes</a>
+</li>
+<li>codes_read_from_file_real8_size_t()
+: <a class="el" href="classeccodes.html#ab8fff9495aaf984fb909367290b45591">eccodes</a>
+</li>
+<li>codes_release()
+: <a class="el" href="classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7">eccodes</a>
+</li>
+<li>codes_set_byte_array()
+: <a class="el" href="classeccodes.html#a292d71c0a7252bdfded6a38aea4284be">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__set.html#a292d71c0a7252bdfded6a38aea4284be">eccodes::codes_set</a>
+</li>
+<li>codes_set_definitions_path()
+: <a class="el" href="classeccodes.html#a8544407e16786d6d72df0fc3cc37ff3a">eccodes</a>
+</li>
+<li>codes_set_int()
+: <a class="el" href="classeccodes.html#ac060bb983b9e515db8ad7edd3d91ce9a">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__set.html#ac060bb983b9e515db8ad7edd3d91ce9a">eccodes::codes_set</a>
+</li>
+<li>codes_set_int_array()
+: <a class="el" href="classeccodes.html#a18b5890c85f15d5fefeefc2b99a09ce5">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__set.html#a18b5890c85f15d5fefeefc2b99a09ce5">eccodes::codes_set</a>
+</li>
+<li>codes_set_long()
+: <a class="el" href="classeccodes.html#a3c9cdc65f00b3c36742206e6e3dde864">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__set.html#a3c9cdc65f00b3c36742206e6e3dde864">eccodes::codes_set</a>
+</li>
+<li>codes_set_long_array()
+: <a class="el" href="interfaceeccodes_1_1codes__set.html#a5fa893fca21268a9c12d93e9d8c664e3">eccodes::codes_set</a>
+, <a class="el" href="classeccodes.html#a5fa893fca21268a9c12d93e9d8c664e3">eccodes</a>
+</li>
+<li>codes_set_missing()
+: <a class="el" href="classeccodes.html#aa85273eb59a545d73f7e3a48516fd5f9">eccodes</a>
+</li>
+<li>codes_set_real4()
+: <a class="el" href="classeccodes.html#a2614a1e015c16370ed18cc360a14663e">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__set.html#a2614a1e015c16370ed18cc360a14663e">eccodes::codes_set</a>
+</li>
+<li>codes_set_real4_array()
+: <a class="el" href="classeccodes.html#aabaefc49c8d603bcf18a627dacc38f15">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__set.html#aabaefc49c8d603bcf18a627dacc38f15">eccodes::codes_set</a>
+</li>
+<li>codes_set_real8()
+: <a class="el" href="interfaceeccodes_1_1codes__set.html#a4b20fe82de5ba6f8355ff8a5d2725b3d">eccodes::codes_set</a>
+, <a class="el" href="classeccodes.html#a4b20fe82de5ba6f8355ff8a5d2725b3d">eccodes</a>
+</li>
+<li>codes_set_real8_array()
+: <a class="el" href="interfaceeccodes_1_1codes__set.html#a14b3bc17ea1ee83936f32dd0fced44a4">eccodes::codes_set</a>
+, <a class="el" href="classeccodes.html#a14b3bc17ea1ee83936f32dd0fced44a4">eccodes</a>
+</li>
+<li>codes_set_samples_path()
+: <a class="el" href="classeccodes.html#af4be467f3273e17111becbd483c25018">eccodes</a>
+</li>
+<li>codes_set_string()
+: <a class="el" href="interfaceeccodes_1_1codes__set.html#a50acfd20f8dff8b4e547135057ef119a">eccodes::codes_set</a>
+, <a class="el" href="classeccodes.html#a50acfd20f8dff8b4e547135057ef119a">eccodes</a>
+</li>
+<li>codes_set_string_array()
+: <a class="el" href="classeccodes.html#aae3ccb53638a4d16daf98d937a96e8b6">eccodes</a>
+</li>
+<li>codes_skip_coded()
+: <a class="el" href="classeccodes.html#a56a1567687b281d07c193ce273c0e1b2">eccodes</a>
+</li>
+<li>codes_skip_computed()
+: <a class="el" href="classeccodes.html#aad63202303a1b6aaf9f5e605622a8095">eccodes</a>
+</li>
+<li>codes_skip_duplicates()
+: <a class="el" href="classeccodes.html#a2f23dd14b726d10d92637719dda7753b">eccodes</a>
+</li>
+<li>codes_skip_read_only()
+: <a class="el" href="classeccodes.html#aa7f01fdbea67a38997eff86255397181">eccodes</a>
+</li>
+<li>codes_write()
+: <a class="el" href="classeccodes.html#ad91213a6e3ee312c50dba0cdbf2bc55d">eccodes</a>
+</li>
+<li>codes_write_bytes_char()
+: <a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#acdb3a889fbd731811821d95d6126e41a">eccodes::codes_write_bytes</a>
+, <a class="el" href="classeccodes.html#acdb3a889fbd731811821d95d6126e41a">eccodes</a>
+</li>
+<li>codes_write_bytes_char_size_t()
+: <a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#a02dd901fef7e6a4cb8ab50ade61e6a66">eccodes::codes_write_bytes</a>
+, <a class="el" href="classeccodes.html#a02dd901fef7e6a4cb8ab50ade61e6a66">eccodes</a>
+</li>
+<li>codes_write_bytes_int4()
+: <a class="el" href="classeccodes.html#abe46cbe07d6a64845bf07e21caa3ae94">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#abe46cbe07d6a64845bf07e21caa3ae94">eccodes::codes_write_bytes</a>
+</li>
+<li>codes_write_bytes_int4_size_t()
+: <a class="el" href="classeccodes.html#a771149b4e451839ed7713540de92ce27">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#a771149b4e451839ed7713540de92ce27">eccodes::codes_write_bytes</a>
+</li>
+<li>codes_write_bytes_real4()
+: <a class="el" href="classeccodes.html#a7f69c7e70900ace352970851a4ee5267">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#a7f69c7e70900ace352970851a4ee5267">eccodes::codes_write_bytes</a>
+</li>
+<li>codes_write_bytes_real4_size_t()
+: <a class="el" href="classeccodes.html#a7467f8b7c399f5579bd4be244de100dc">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#a7467f8b7c399f5579bd4be244de100dc">eccodes::codes_write_bytes</a>
+</li>
+<li>codes_write_bytes_real8()
+: <a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#aabda087d7f8ba266b0b9f307270f876a">eccodes::codes_write_bytes</a>
+, <a class="el" href="classeccodes.html#aabda087d7f8ba266b0b9f307270f876a">eccodes</a>
+</li>
+<li>codes_write_bytes_real8_size_t()
+: <a class="el" href="classeccodes.html#a2d0be96a6b529f7e0b8079318a5376bb">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#a2d0be96a6b529f7e0b8079318a5376bb">eccodes::codes_write_bytes</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/functions_func.html b/html/functions_func.html
new file mode 100644
index 0000000..91dfe71
--- /dev/null
+++ b/html/functions_func.html
@@ -0,0 +1,512 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="functions.html"><span>All</span></a></li>
+      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow4" class="tabs3">
+    <ul class="tablist">
+      <li><a href="#index_c"><span>c</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+ 
+
+<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<li>codes_any_new_from_file()
+: <a class="el" href="classeccodes.html#aa468943e1c669487375b2e3d46ff84b1">eccodes</a>
+</li>
+<li>codes_bufr_new_from_file()
+: <a class="el" href="classeccodes.html#a94050d64954482cd82ea6f007fdc9ac0">eccodes</a>
+</li>
+<li>codes_bufr_new_from_samples()
+: <a class="el" href="classeccodes.html#a6d32d26f2076db60d78e1c2d222dd01d">eccodes</a>
+</li>
+<li>codes_check()
+: <a class="el" href="classeccodes.html#a1cd5ff5ea308443bfe166974d9ab1363">eccodes</a>
+</li>
+<li>codes_clone()
+: <a class="el" href="classeccodes.html#a94c85dbc797f98a177795ff9a8ad8035">eccodes</a>
+</li>
+<li>codes_close_file()
+: <a class="el" href="classeccodes.html#a436a01aabf91cdbb4c5902a5d1a2886e">eccodes</a>
+</li>
+<li>codes_copy_message()
+: <a class="el" href="classeccodes.html#afdd32c1a78f0a3d54992e0a6a6bfc66b">eccodes</a>
+</li>
+<li>codes_copy_namespace()
+: <a class="el" href="classeccodes.html#a8bba3684a289b1e8c6bcea0b67c45b5d">eccodes</a>
+</li>
+<li>codes_count_in_file()
+: <a class="el" href="classeccodes.html#a0a09420f86caf79873b2fb067e360049">eccodes</a>
+</li>
+<li>codes_dump()
+: <a class="el" href="classeccodes.html#ab5e1ab3efc1981c886e64e467c1b84a1">eccodes</a>
+</li>
+<li>codes_get_byte_array()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#adee61373d840f0f6a73be5d574a47a1e">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#adee61373d840f0f6a73be5d574a47a1e">eccodes</a>
+</li>
+<li>codes_get_error_string()
+: <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">eccodes</a>
+</li>
+<li>codes_get_int()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#a15e9f187ba45e4a334f270884c59651e">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#a15e9f187ba45e4a334f270884c59651e">eccodes</a>
+</li>
+<li>codes_get_int_array()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#a620d907f796a466b9b849be12e96a274">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#a620d907f796a466b9b849be12e96a274">eccodes</a>
+</li>
+<li>codes_get_long()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#ad85e9d6d052fdcbfade2d201357e391d">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#ad85e9d6d052fdcbfade2d201357e391d">eccodes</a>
+</li>
+<li>codes_get_long_array()
+: <a class="el" href="classeccodes.html#a0ff7f18601949da80f10d1614e0d0541">eccodes</a>
+</li>
+<li>codes_get_message_size_int()
+: <a class="el" href="interfaceeccodes_1_1codes__get__message__size.html#af4ff60a9bd8d0c1c0173242897db4816">eccodes::codes_get_message_size</a>
+, <a class="el" href="classeccodes.html#af4ff60a9bd8d0c1c0173242897db4816">eccodes</a>
+</li>
+<li>codes_get_message_size_size_t()
+: <a class="el" href="interfaceeccodes_1_1codes__get__message__size.html#a032408e4f1a842a42fca23218ec85a4d">eccodes::codes_get_message_size</a>
+, <a class="el" href="classeccodes.html#a032408e4f1a842a42fca23218ec85a4d">eccodes</a>
+</li>
+<li>codes_get_real4()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#ab6c505dfdf5a75f51c07683abed39b68">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#ab6c505dfdf5a75f51c07683abed39b68">eccodes</a>
+</li>
+<li>codes_get_real4_array()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#ae1df5b7389172122fe2c84c4156f18d0">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#ae1df5b7389172122fe2c84c4156f18d0">eccodes</a>
+</li>
+<li>codes_get_real4_element()
+: <a class="el" href="interfaceeccodes_1_1codes__get__element.html#a95426fb251262a83fbdcc5ae86968b4b">eccodes::codes_get_element</a>
+, <a class="el" href="classeccodes.html#a95426fb251262a83fbdcc5ae86968b4b">eccodes</a>
+</li>
+<li>codes_get_real4_elements()
+: <a class="el" href="classeccodes.html#a0587c719213f5eb38afbb80cb30a2b8b">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__get__element.html#a0587c719213f5eb38afbb80cb30a2b8b">eccodes::codes_get_element</a>
+</li>
+<li>codes_get_real8()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#a2ca22327e21aca686d29f8953e235839">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#a2ca22327e21aca686d29f8953e235839">eccodes</a>
+</li>
+<li>codes_get_real8_array()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#a4b28e570e54dad5a779e0452d3ed66d4">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#a4b28e570e54dad5a779e0452d3ed66d4">eccodes</a>
+</li>
+<li>codes_get_real8_element()
+: <a class="el" href="interfaceeccodes_1_1codes__get__element.html#ac9ceb83558433f918eac6aeb00b620af">eccodes::codes_get_element</a>
+, <a class="el" href="classeccodes.html#ac9ceb83558433f918eac6aeb00b620af">eccodes</a>
+</li>
+<li>codes_get_real8_elements()
+: <a class="el" href="interfaceeccodes_1_1codes__get__element.html#a1e550ade4f5781f19718fa8bdec802f9">eccodes::codes_get_element</a>
+, <a class="el" href="classeccodes.html#a1e550ade4f5781f19718fa8bdec802f9">eccodes</a>
+</li>
+<li>codes_get_size_int()
+: <a class="el" href="interfaceeccodes_1_1codes__get__size.html#ac566c4909f1ea554517d256a780cf87f">eccodes::codes_get_size</a>
+, <a class="el" href="classeccodes.html#ac566c4909f1ea554517d256a780cf87f">eccodes</a>
+</li>
+<li>codes_get_size_long()
+: <a class="el" href="interfaceeccodes_1_1codes__get__size.html#accd5b68ef585873b05a3f61d7dda3f3a">eccodes::codes_get_size</a>
+, <a class="el" href="classeccodes.html#accd5b68ef585873b05a3f61d7dda3f3a">eccodes</a>
+</li>
+<li>codes_get_string()
+: <a class="el" href="interfaceeccodes_1_1codes__get.html#a9b71df8830b162b7773cf4d1446b4303">eccodes::codes_get</a>
+, <a class="el" href="classeccodes.html#a9b71df8830b162b7773cf4d1446b4303">eccodes</a>
+</li>
+<li>codes_get_string_array()
+: <a class="el" href="classeccodes.html#a731aac9d5d75917e12048573ae86e7c6">eccodes</a>
+</li>
+<li>codes_grib_find_nearest_four_single()
+: <a class="el" href="interfaceeccodes_1_1codes__grib__find__nearest.html#ad4b53c47aecc5fa5ae43c95357d2d690">eccodes::codes_grib_find_nearest</a>
+, <a class="el" href="classeccodes.html#ad4b53c47aecc5fa5ae43c95357d2d690">eccodes</a>
+</li>
+<li>codes_grib_find_nearest_multiple()
+: <a class="el" href="interfaceeccodes_1_1codes__grib__find__nearest.html#acb92b7a78966c0b2f53ee6e288bff673">eccodes::codes_grib_find_nearest</a>
+, <a class="el" href="classeccodes.html#acb92b7a78966c0b2f53ee6e288bff673">eccodes</a>
+</li>
+<li>codes_grib_find_nearest_single()
+: <a class="el" href="interfaceeccodes_1_1codes__grib__find__nearest.html#a036ae036cc766718ad224851d47d99a2">eccodes::codes_grib_find_nearest</a>
+, <a class="el" href="classeccodes.html#a036ae036cc766718ad224851d47d99a2">eccodes</a>
+</li>
+<li>codes_grib_get_data_real4()
+: <a class="el" href="interfaceeccodes_1_1codes__grib__get__data.html#a0e93200c0e6e4bdacaf1bec1e0a29ee7">eccodes::codes_grib_get_data</a>
+, <a class="el" href="classeccodes.html#a0e93200c0e6e4bdacaf1bec1e0a29ee7">eccodes</a>
+</li>
+<li>codes_grib_get_data_real8()
+: <a class="el" href="interfaceeccodes_1_1codes__grib__get__data.html#a043bb1e696da61d06523ad35ae16fe8c">eccodes::codes_grib_get_data</a>
+, <a class="el" href="classeccodes.html#a043bb1e696da61d06523ad35ae16fe8c">eccodes</a>
+</li>
+<li>codes_grib_multi_append()
+: <a class="el" href="classeccodes.html#a385aa2c504656d11812dd461819446ba">eccodes</a>
+</li>
+<li>codes_grib_multi_support_off()
+: <a class="el" href="classeccodes.html#ab11428b591f9ea0ae46e5116ad9e5c7f">eccodes</a>
+</li>
+<li>codes_grib_multi_support_on()
+: <a class="el" href="classeccodes.html#a69d578039c073e637d727078778ca3ef">eccodes</a>
+</li>
+<li>codes_grib_multi_write()
+: <a class="el" href="classeccodes.html#aa1ef915b62ebf910254f05cb619c0168">eccodes</a>
+</li>
+<li>codes_grib_new_from_file()
+: <a class="el" href="classeccodes.html#a7a21cb68f0d5058a63a4ba92a938fd27">eccodes</a>
+</li>
+<li>codes_grib_new_from_samples()
+: <a class="el" href="classeccodes.html#acfc477ba642e007ec55c7e4ce2c31a9d">eccodes</a>
+</li>
+<li>codes_gribex_mode_off()
+: <a class="el" href="classeccodes.html#acb69eeef59ba780c62d7f600915aa986">eccodes</a>
+</li>
+<li>codes_gribex_mode_on()
+: <a class="el" href="classeccodes.html#aa8e36bbbe3caddac4ad7d8bcdfa3cd28">eccodes</a>
+</li>
+<li>codes_index_add_file()
+: <a class="el" href="classeccodes.html#af89d3c57b15bdbd00241358a10b836a8">eccodes</a>
+</li>
+<li>codes_index_create()
+: <a class="el" href="classeccodes.html#a5f52ecf1abe0a68a32517fe2a0d08058">eccodes</a>
+</li>
+<li>codes_index_get_int()
+: <a class="el" href="interfaceeccodes_1_1codes__index__get.html#a26cf731cfda4b350500d8520ea674341">eccodes::codes_index_get</a>
+, <a class="el" href="classeccodes.html#a26cf731cfda4b350500d8520ea674341">eccodes</a>
+</li>
+<li>codes_index_get_long()
+: <a class="el" href="interfaceeccodes_1_1codes__index__get.html#afa9bf87d988de7eb04a9de9982e6112f">eccodes::codes_index_get</a>
+, <a class="el" href="classeccodes.html#afa9bf87d988de7eb04a9de9982e6112f">eccodes</a>
+</li>
+<li>codes_index_get_real8()
+: <a class="el" href="interfaceeccodes_1_1codes__index__get.html#aedc38b28a7a27b5e042f7a5a17c73001">eccodes::codes_index_get</a>
+, <a class="el" href="classeccodes.html#aedc38b28a7a27b5e042f7a5a17c73001">eccodes</a>
+</li>
+<li>codes_index_get_size_int()
+: <a class="el" href="interfaceeccodes_1_1codes__index__get__size.html#aeb1c3a999e4726895a94acb9b0de518c">eccodes::codes_index_get_size</a>
+, <a class="el" href="classeccodes.html#aeb1c3a999e4726895a94acb9b0de518c">eccodes</a>
+</li>
+<li>codes_index_get_size_long()
+: <a class="el" href="interfaceeccodes_1_1codes__index__get__size.html#a0d2104143f36bdfb5c7cccb9b56ae3f0">eccodes::codes_index_get_size</a>
+, <a class="el" href="classeccodes.html#a0d2104143f36bdfb5c7cccb9b56ae3f0">eccodes</a>
+</li>
+<li>codes_index_get_string()
+: <a class="el" href="interfaceeccodes_1_1codes__index__get.html#ae5eb8fbe2de7d547bc92baddaf77adf1">eccodes::codes_index_get</a>
+, <a class="el" href="classeccodes.html#ae5eb8fbe2de7d547bc92baddaf77adf1">eccodes</a>
+</li>
+<li>codes_index_read()
+: <a class="el" href="classeccodes.html#a16dfcaea7b7c6c77794914d0570f5bc9">eccodes</a>
+</li>
+<li>codes_index_release()
+: <a class="el" href="classeccodes.html#a8fba1de775308d8a1f0c035c51e3a42d">eccodes</a>
+</li>
+<li>codes_index_select_int()
+: <a class="el" href="interfaceeccodes_1_1codes__index__select.html#ac84dca14749c6c8f7b1b32dbcb8c8f88">eccodes::codes_index_select</a>
+, <a class="el" href="classeccodes.html#ac84dca14749c6c8f7b1b32dbcb8c8f88">eccodes</a>
+</li>
+<li>codes_index_select_long()
+: <a class="el" href="interfaceeccodes_1_1codes__index__select.html#a6acd94d169fc462c5babb5d654c07612">eccodes::codes_index_select</a>
+, <a class="el" href="classeccodes.html#a6acd94d169fc462c5babb5d654c07612">eccodes</a>
+</li>
+<li>codes_index_select_real8()
+: <a class="el" href="interfaceeccodes_1_1codes__index__select.html#ae1a4e9f83a13d8ce9b046f141ee990cd">eccodes::codes_index_select</a>
+, <a class="el" href="classeccodes.html#ae1a4e9f83a13d8ce9b046f141ee990cd">eccodes</a>
+</li>
+<li>codes_index_select_string()
+: <a class="el" href="interfaceeccodes_1_1codes__index__select.html#a500fe1c101af888362bb60a94c68085e">eccodes::codes_index_select</a>
+, <a class="el" href="classeccodes.html#a500fe1c101af888362bb60a94c68085e">eccodes</a>
+</li>
+<li>codes_index_write()
+: <a class="el" href="classeccodes.html#afd0c12a42f60fe16eabc8b0fca41ff05">eccodes</a>
+</li>
+<li>codes_is_defined()
+: <a class="el" href="classeccodes.html#a4aeb717b8aba0e2898a83d56363bab98">eccodes</a>
+</li>
+<li>codes_is_missing()
+: <a class="el" href="classeccodes.html#aff0e850cce3105f72b76a603e104cce4">eccodes</a>
+</li>
+<li>codes_keys_iterator_delete()
+: <a class="el" href="classeccodes.html#a5d81274245d3a60ab85d657aa11512e5">eccodes</a>
+</li>
+<li>codes_keys_iterator_get_name()
+: <a class="el" href="classeccodes.html#a695b7f3f87bfb465908447ce51024221">eccodes</a>
+</li>
+<li>codes_keys_iterator_new()
+: <a class="el" href="classeccodes.html#ae9e9bae052da5148e4a0ca85f31c69b5">eccodes</a>
+</li>
+<li>codes_keys_iterator_next()
+: <a class="el" href="classeccodes.html#aaaa40acb7f8e05783e106c32a541a66d">eccodes</a>
+</li>
+<li>codes_keys_iterator_rewind()
+: <a class="el" href="classeccodes.html#aa6055f116c22830fc941b6db2e133d25">eccodes</a>
+</li>
+<li>codes_new_from_file()
+: <a class="el" href="classeccodes.html#a5533c6fb8bd7d8f622c89484b7bbdfb6">eccodes</a>
+</li>
+<li>codes_new_from_index()
+: <a class="el" href="classeccodes.html#a2852e5519e2ff8596e461986b99092d7">eccodes</a>
+</li>
+<li>codes_new_from_message_char()
+: <a class="el" href="interfaceeccodes_1_1codes__new__from__message.html#a9734463b78e04c3e803acb25d3314436">eccodes::codes_new_from_message</a>
+, <a class="el" href="classeccodes.html#a9734463b78e04c3e803acb25d3314436">eccodes</a>
+</li>
+<li>codes_new_from_message_int4()
+: <a class="el" href="classeccodes.html#af9d90d4940f54ecebb44acb69a59d496">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__new__from__message.html#af9d90d4940f54ecebb44acb69a59d496">eccodes::codes_new_from_message</a>
+</li>
+<li>codes_open_file()
+: <a class="el" href="classeccodes.html#a28594e26f2f4b92b9c60e943dd8e1be3">eccodes</a>
+</li>
+<li>codes_read_bytes_char()
+: <a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#a30dcd3a6d9d4b084f1dc9d617927b99a">eccodes::codes_read_bytes</a>
+, <a class="el" href="classeccodes.html#a30dcd3a6d9d4b084f1dc9d617927b99a">eccodes</a>
+</li>
+<li>codes_read_bytes_char_size_t()
+: <a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#aea71591e62a4a6f42682ceb5979c0631">eccodes::codes_read_bytes</a>
+, <a class="el" href="classeccodes.html#aea71591e62a4a6f42682ceb5979c0631">eccodes</a>
+</li>
+<li>codes_read_bytes_int4()
+: <a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#a0b75e479138c6fe2b49cacef123a1c8e">eccodes::codes_read_bytes</a>
+, <a class="el" href="classeccodes.html#a0b75e479138c6fe2b49cacef123a1c8e">eccodes</a>
+</li>
+<li>codes_read_bytes_int4_size_t()
+: <a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#ad1be70ac4cc7c2c5775e3bc6b607c4df">eccodes::codes_read_bytes</a>
+, <a class="el" href="classeccodes.html#ad1be70ac4cc7c2c5775e3bc6b607c4df">eccodes</a>
+</li>
+<li>codes_read_bytes_real4()
+: <a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#a19f70122369224f1ef3513bf7f351e86">eccodes::codes_read_bytes</a>
+, <a class="el" href="classeccodes.html#a19f70122369224f1ef3513bf7f351e86">eccodes</a>
+</li>
+<li>codes_read_bytes_real4_size_t()
+: <a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#a9bac4f78f245e52303e85d2ee142d073">eccodes::codes_read_bytes</a>
+, <a class="el" href="classeccodes.html#a9bac4f78f245e52303e85d2ee142d073">eccodes</a>
+</li>
+<li>codes_read_bytes_real8()
+: <a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#a4e1e0bb73d3fafe62685a3f7191334e4">eccodes::codes_read_bytes</a>
+, <a class="el" href="classeccodes.html#a4e1e0bb73d3fafe62685a3f7191334e4">eccodes</a>
+</li>
+<li>codes_read_bytes_real8_size_t()
+: <a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#adec76dd3ecf49b71ded2545054828c3d">eccodes::codes_read_bytes</a>
+, <a class="el" href="classeccodes.html#adec76dd3ecf49b71ded2545054828c3d">eccodes</a>
+</li>
+<li>codes_read_from_file_char()
+: <a class="el" href="interfaceeccodes_1_1codes__read__from__file.html#ab84434f52a4a41e68bf3103c392482ae">eccodes::codes_read_from_file</a>
+, <a class="el" href="classeccodes.html#ab84434f52a4a41e68bf3103c392482ae">eccodes</a>
+</li>
+<li>codes_read_from_file_char_size_t()
+: <a class="el" href="interfaceeccodes_1_1codes__read__from__file.html#a9ca8b8009071657b338508a3d6709b8d">eccodes::codes_read_from_file</a>
+, <a class="el" href="classeccodes.html#a9ca8b8009071657b338508a3d6709b8d">eccodes</a>
+</li>
+<li>codes_read_from_file_int4()
+: <a class="el" href="interfaceeccodes_1_1codes__read__from__file.html#a7b5b61cc34b32aae4c3f2deeacbc50ae">eccodes::codes_read_from_file</a>
+, <a class="el" href="classeccodes.html#a7b5b61cc34b32aae4c3f2deeacbc50ae">eccodes</a>
+</li>
+<li>codes_read_from_file_int4_size_t()
+: <a class="el" href="classeccodes.html#aa04bacd625a2a87d7e490c0361643da3">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__read__from__file.html#aa04bacd625a2a87d7e490c0361643da3">eccodes::codes_read_from_file</a>
+</li>
+<li>codes_read_from_file_real4()
+: <a class="el" href="classeccodes.html#aa4182b2add068f538b335c8efd1a8d5f">eccodes</a>
+</li>
+<li>codes_read_from_file_real4_size_t()
+: <a class="el" href="classeccodes.html#ae866f7aa5270100094390b465e953975">eccodes</a>
+</li>
+<li>codes_read_from_file_real8()
+: <a class="el" href="classeccodes.html#a2ff542236ca5d1bdeb7192c5c8eca94f">eccodes</a>
+</li>
+<li>codes_read_from_file_real8_size_t()
+: <a class="el" href="classeccodes.html#ab8fff9495aaf984fb909367290b45591">eccodes</a>
+</li>
+<li>codes_release()
+: <a class="el" href="classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7">eccodes</a>
+</li>
+<li>codes_set_byte_array()
+: <a class="el" href="classeccodes.html#a292d71c0a7252bdfded6a38aea4284be">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__set.html#a292d71c0a7252bdfded6a38aea4284be">eccodes::codes_set</a>
+</li>
+<li>codes_set_definitions_path()
+: <a class="el" href="classeccodes.html#a8544407e16786d6d72df0fc3cc37ff3a">eccodes</a>
+</li>
+<li>codes_set_int()
+: <a class="el" href="classeccodes.html#ac060bb983b9e515db8ad7edd3d91ce9a">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__set.html#ac060bb983b9e515db8ad7edd3d91ce9a">eccodes::codes_set</a>
+</li>
+<li>codes_set_int_array()
+: <a class="el" href="classeccodes.html#a18b5890c85f15d5fefeefc2b99a09ce5">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__set.html#a18b5890c85f15d5fefeefc2b99a09ce5">eccodes::codes_set</a>
+</li>
+<li>codes_set_long()
+: <a class="el" href="classeccodes.html#a3c9cdc65f00b3c36742206e6e3dde864">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__set.html#a3c9cdc65f00b3c36742206e6e3dde864">eccodes::codes_set</a>
+</li>
+<li>codes_set_long_array()
+: <a class="el" href="interfaceeccodes_1_1codes__set.html#a5fa893fca21268a9c12d93e9d8c664e3">eccodes::codes_set</a>
+, <a class="el" href="classeccodes.html#a5fa893fca21268a9c12d93e9d8c664e3">eccodes</a>
+</li>
+<li>codes_set_missing()
+: <a class="el" href="classeccodes.html#aa85273eb59a545d73f7e3a48516fd5f9">eccodes</a>
+</li>
+<li>codes_set_real4()
+: <a class="el" href="classeccodes.html#a2614a1e015c16370ed18cc360a14663e">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__set.html#a2614a1e015c16370ed18cc360a14663e">eccodes::codes_set</a>
+</li>
+<li>codes_set_real4_array()
+: <a class="el" href="classeccodes.html#aabaefc49c8d603bcf18a627dacc38f15">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__set.html#aabaefc49c8d603bcf18a627dacc38f15">eccodes::codes_set</a>
+</li>
+<li>codes_set_real8()
+: <a class="el" href="interfaceeccodes_1_1codes__set.html#a4b20fe82de5ba6f8355ff8a5d2725b3d">eccodes::codes_set</a>
+, <a class="el" href="classeccodes.html#a4b20fe82de5ba6f8355ff8a5d2725b3d">eccodes</a>
+</li>
+<li>codes_set_real8_array()
+: <a class="el" href="interfaceeccodes_1_1codes__set.html#a14b3bc17ea1ee83936f32dd0fced44a4">eccodes::codes_set</a>
+, <a class="el" href="classeccodes.html#a14b3bc17ea1ee83936f32dd0fced44a4">eccodes</a>
+</li>
+<li>codes_set_samples_path()
+: <a class="el" href="classeccodes.html#af4be467f3273e17111becbd483c25018">eccodes</a>
+</li>
+<li>codes_set_string()
+: <a class="el" href="interfaceeccodes_1_1codes__set.html#a50acfd20f8dff8b4e547135057ef119a">eccodes::codes_set</a>
+, <a class="el" href="classeccodes.html#a50acfd20f8dff8b4e547135057ef119a">eccodes</a>
+</li>
+<li>codes_set_string_array()
+: <a class="el" href="classeccodes.html#aae3ccb53638a4d16daf98d937a96e8b6">eccodes</a>
+</li>
+<li>codes_skip_coded()
+: <a class="el" href="classeccodes.html#a56a1567687b281d07c193ce273c0e1b2">eccodes</a>
+</li>
+<li>codes_skip_computed()
+: <a class="el" href="classeccodes.html#aad63202303a1b6aaf9f5e605622a8095">eccodes</a>
+</li>
+<li>codes_skip_duplicates()
+: <a class="el" href="classeccodes.html#a2f23dd14b726d10d92637719dda7753b">eccodes</a>
+</li>
+<li>codes_skip_read_only()
+: <a class="el" href="classeccodes.html#aa7f01fdbea67a38997eff86255397181">eccodes</a>
+</li>
+<li>codes_write()
+: <a class="el" href="classeccodes.html#ad91213a6e3ee312c50dba0cdbf2bc55d">eccodes</a>
+</li>
+<li>codes_write_bytes_char()
+: <a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#acdb3a889fbd731811821d95d6126e41a">eccodes::codes_write_bytes</a>
+, <a class="el" href="classeccodes.html#acdb3a889fbd731811821d95d6126e41a">eccodes</a>
+</li>
+<li>codes_write_bytes_char_size_t()
+: <a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#a02dd901fef7e6a4cb8ab50ade61e6a66">eccodes::codes_write_bytes</a>
+, <a class="el" href="classeccodes.html#a02dd901fef7e6a4cb8ab50ade61e6a66">eccodes</a>
+</li>
+<li>codes_write_bytes_int4()
+: <a class="el" href="classeccodes.html#abe46cbe07d6a64845bf07e21caa3ae94">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#abe46cbe07d6a64845bf07e21caa3ae94">eccodes::codes_write_bytes</a>
+</li>
+<li>codes_write_bytes_int4_size_t()
+: <a class="el" href="classeccodes.html#a771149b4e451839ed7713540de92ce27">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#a771149b4e451839ed7713540de92ce27">eccodes::codes_write_bytes</a>
+</li>
+<li>codes_write_bytes_real4()
+: <a class="el" href="classeccodes.html#a7f69c7e70900ace352970851a4ee5267">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#a7f69c7e70900ace352970851a4ee5267">eccodes::codes_write_bytes</a>
+</li>
+<li>codes_write_bytes_real4_size_t()
+: <a class="el" href="classeccodes.html#a7467f8b7c399f5579bd4be244de100dc">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#a7467f8b7c399f5579bd4be244de100dc">eccodes::codes_write_bytes</a>
+</li>
+<li>codes_write_bytes_real8()
+: <a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#aabda087d7f8ba266b0b9f307270f876a">eccodes::codes_write_bytes</a>
+, <a class="el" href="classeccodes.html#aabda087d7f8ba266b0b9f307270f876a">eccodes</a>
+</li>
+<li>codes_write_bytes_real8_size_t()
+: <a class="el" href="classeccodes.html#a2d0be96a6b529f7e0b8079318a5376bb">eccodes</a>
+, <a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#a2d0be96a6b529f7e0b8079318a5376bb">eccodes::codes_write_bytes</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/get_8c-example.html b/html/get_8c-example.html
deleted file mode 100644
index 481aaf5..0000000
--- a/html/get_8c-example.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: get.c</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>get.c</h1>get.c How to get values through the key names.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
-<a name="l00010"></a>00010 <span class="comment">/*</span>
-<a name="l00011"></a>00011 <span class="comment"> * C Implementation: get</span>
-<a name="l00012"></a>00012 <span class="comment"> *</span>
-<a name="l00013"></a>00013 <span class="comment"> * Description: how to get values using keys.</span>
-<a name="l00014"></a>00014 <span class="comment"> *</span>
-<a name="l00015"></a>00015 <span class="comment"> * Author: Enrico Fucile</span>
-<a name="l00016"></a>00016 <span class="comment"> *</span>
-<a name="l00017"></a>00017 <span class="comment"> *</span>
-<a name="l00018"></a>00018 <span class="comment"> */</span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include <stdio.h></span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include <stdlib.h></span>
-<a name="l00021"></a>00021 
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>"</span>
-<a name="l00023"></a>00023 
-<a name="l00024"></a>00024 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {
-<a name="l00025"></a>00025   <span class="keywordtype">int</span> err = 0;
-<a name="l00026"></a>00026   <span class="keywordtype">double</span> *values = NULL;
-<a name="l00027"></a>00027   <span class="keywordtype">size_t</span> values_len= 0;
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029   <span class="keywordtype">size_t</span> i = 0;
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031   <span class="keywordtype">double</span> latitudeOfFirstGridPointInDegrees;
-<a name="l00032"></a>00032   <span class="keywordtype">double</span> longitudeOfFirstGridPointInDegrees;
-<a name="l00033"></a>00033   <span class="keywordtype">double</span> latitudeOfLastGridPointInDegrees;
-<a name="l00034"></a>00034   <span class="keywordtype">double</span> longitudeOfLastGridPointInDegrees;
-<a name="l00035"></a>00035 
-<a name="l00036"></a>00036   <span class="keywordtype">double</span> jDirectionIncrementInDegrees;
-<a name="l00037"></a>00037   <span class="keywordtype">double</span> iDirectionIncrementInDegrees;
-<a name="l00038"></a>00038 
-<a name="l00039"></a>00039   <span class="keywordtype">long</span> numberOfPointsAlongAParallel;
-<a name="l00040"></a>00040   <span class="keywordtype">long</span> numberOfPointsAlongAMeridian;
-<a name="l00041"></a>00041 
-<a name="l00042"></a>00042   <span class="keywordtype">double</span> average = 0;
-<a name="l00043"></a>00043 
-<a name="l00044"></a>00044   FILE* in = NULL;
-<a name="l00045"></a>00045   <span class="keywordtype">char</span>* filename = <span class="stringliteral">"../../data/regular_latlon_surface.grib1"</span>;
-<a name="l00046"></a>00046   <a name="a0"></a><a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h = NULL;
-<a name="l00047"></a>00047 
-<a name="l00048"></a>00048   in = fopen(filename,<span class="stringliteral">"r"</span>);
-<a name="l00049"></a>00049   <span class="keywordflow">if</span>(!in) {
-<a name="l00050"></a>00050     printf(<span class="stringliteral">"ERROR: unable to open file %s\n"</span>,filename);
-<a name="l00051"></a>00051     <span class="keywordflow">return</span> 1;
-<a name="l00052"></a>00052   }
-<a name="l00053"></a>00053 
-<a name="l00054"></a>00054   <span class="comment">/* create new handle from a message in a file*/</span>
-<a name="l00055"></a>00055   h = <a name="a1"></a><a class="code" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5" title="Create a handle from a file resource.">grib_handle_new_from_file</a>(0,in,&err);
-<a name="l00056"></a>00056   <span class="keywordflow">if</span> (h == NULL) {
-<a name="l00057"></a>00057     printf(<span class="stringliteral">"Error: unable to create handle from file %s\n"</span>,filename);
-<a name="l00058"></a>00058   }
-<a name="l00059"></a>00059 
-<a name="l00060"></a>00060   <span class="comment">/* get as a long*/</span>
-<a name="l00061"></a>00061   GRIB_CHECK(<a name="a2"></a><a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"numberOfPointsAlongAParallel"</span>,&numberOfPointsAlongAParallel),0);
-<a name="l00062"></a>00062   printf(<span class="stringliteral">"numberOfPointsAlongAParallel=%ld\n"</span>,numberOfPointsAlongAParallel);
-<a name="l00063"></a>00063 
-<a name="l00064"></a>00064   <span class="comment">/* get as a long*/</span>
-<a name="l00065"></a>00065   GRIB_CHECK(<a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"numberOfPointsAlongAMeridian"</span>,&numberOfPointsAlongAMeridian),0);
-<a name="l00066"></a>00066   printf(<span class="stringliteral">"numberOfPointsAlongAMeridian=%ld\n"</span>,numberOfPointsAlongAMeridian);
-<a name="l00067"></a>00067 
-<a name="l00068"></a>00068   <span class="comment">/* get as a double*/</span>
-<a name="l00069"></a>00069   GRIB_CHECK(<a name="a3"></a><a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"latitudeOfFirstGridPointInDegrees"</span>,&latitudeOfFirstGridPointInDegrees),0);
-<a name="l00070"></a>00070   printf(<span class="stringliteral">"latitudeOfFirstGridPointInDegrees=%g\n"</span>,latitudeOfFirstGridPointInDegrees);
-<a name="l00071"></a>00071 
-<a name="l00072"></a>00072   <span class="comment">/* get as a double*/</span>
-<a name="l00073"></a>00073   GRIB_CHECK(<a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"longitudeOfFirstGridPointInDegrees"</span>,&longitudeOfFirstGridPointInDegrees),0);
-<a name="l00074"></a>00074   printf(<span class="stringliteral">"longitudeOfFirstGridPointInDegrees=%g\n"</span>,longitudeOfFirstGridPointInDegrees);
-<a name="l00075"></a>00075 
-<a name="l00076"></a>00076   <span class="comment">/* get as a double*/</span>
-<a name="l00077"></a>00077   GRIB_CHECK(<a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"latitudeOfLastGridPointInDegrees"</span>,&latitudeOfLastGridPointInDegrees),0);
-<a name="l00078"></a>00078   printf(<span class="stringliteral">"latitudeOfLastGridPointInDegrees=%g\n"</span>,latitudeOfLastGridPointInDegrees);
-<a name="l00079"></a>00079 
-<a name="l00080"></a>00080   <span class="comment">/* get as a double*/</span>
-<a name="l00081"></a>00081   GRIB_CHECK(<a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"longitudeOfLastGridPointInDegrees"</span>,&longitudeOfLastGridPointInDegrees),0);
-<a name="l00082"></a>00082   printf(<span class="stringliteral">"longitudeOfLastGridPointInDegrees=%g\n"</span>,longitudeOfLastGridPointInDegrees);
-<a name="l00083"></a>00083 
-<a name="l00084"></a>00084   <span class="comment">/* get as a double*/</span>
-<a name="l00085"></a>00085   GRIB_CHECK(<a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"jDirectionIncrementInDegrees"</span>,&jDirectionIncrementInDegrees),0);
-<a name="l00086"></a>00086   printf(<span class="stringliteral">"jDirectionIncrementInDegrees=%g\n"</span>,jDirectionIncrementInDegrees);
-<a name="l00087"></a>00087 
-<a name="l00088"></a>00088   <span class="comment">/* get as a double*/</span>
-<a name="l00089"></a>00089   GRIB_CHECK(<a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"iDirectionIncrementInDegrees"</span>,&iDirectionIncrementInDegrees),0);
-<a name="l00090"></a>00090   printf(<span class="stringliteral">"iDirectionIncrementInDegrees=%g\n"</span>,iDirectionIncrementInDegrees);
-<a name="l00091"></a>00091 
-<a name="l00092"></a>00092   <span class="comment">/* get the size of the values array*/</span>
-<a name="l00093"></a>00093   GRIB_CHECK(<a name="a4"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(h,<span class="stringliteral">"values"</span>,&values_len),0);
-<a name="l00094"></a>00094 
-<a name="l00095"></a>00095   values = malloc(values_len*<span class="keyword">sizeof</span>(<span class="keywordtype">double</span>));
-<a name="l00096"></a>00096 
-<a name="l00097"></a>00097   <span class="comment">/* get data values*/</span>
-<a name="l00098"></a>00098   GRIB_CHECK(<a name="a5"></a><a class="code" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a" title="Get double array values from a key.">grib_get_double_array</a>(h,<span class="stringliteral">"values"</span>,values,&values_len),0);
-<a name="l00099"></a>00099 
-<a name="l00100"></a>00100   average = 0;
-<a name="l00101"></a>00101   <span class="keywordflow">for</span>(i = 0; i < values_len; i++)
-<a name="l00102"></a>00102     average += values[i];
-<a name="l00103"></a>00103 
-<a name="l00104"></a>00104   average /=(double)values_len;
-<a name="l00105"></a>00105 
-<a name="l00106"></a>00106   free(values);
-<a name="l00107"></a>00107 
-<a name="l00108"></a>00108   printf(<span class="stringliteral">"There are %d values, average is %g\n"</span>,(<span class="keywordtype">int</span>)values_len,average);
-<a name="l00109"></a>00109 
-<a name="l00110"></a>00110   <a name="a6"></a><a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);
-<a name="l00111"></a>00111 
-<a name="l00112"></a>00112   fclose(in);
-<a name="l00113"></a>00113   <span class="keywordflow">return</span> 0;
-<a name="l00114"></a>00114 }
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/get_8f90-example.html b/html/get_8f90-example.html
deleted file mode 100644
index 658312c..0000000
--- a/html/get_8f90-example.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: get.f90</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>get.f90</h1>How to get values through the key names.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 ! 
-<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 !
-<a name="l00008"></a>00008 !
-<a name="l00009"></a>00009 !  Description: how to <span class="keyword">get</span> values <span class="keyword">using</span> keys.
-<a name="l00010"></a>00010 !
-<a name="l00011"></a>00011 !  Author: Enrico Fucile 
-<a name="l00012"></a>00012 !
-<a name="l00013"></a>00013 !
-<a name="l00014"></a>00014 program <span class="keyword">get</span>
-<a name="l00015"></a>00015   use grib_api
-<a name="l00016"></a>00016   implicit none
-<a name="l00017"></a>00017   
-<a name="l00018"></a>00018   integer                            ::  ifile
-<a name="l00019"></a>00019   integer                            ::  iret
-<a name="l00020"></a>00020   integer                            ::  igrib
-<a name="l00021"></a>00021   real                               ::  latitudeOfFirstPointInDegrees
-<a name="l00022"></a>00022   real                               ::  longitudeOfFirstPointInDegrees
-<a name="l00023"></a>00023   real                               ::  latitudeOfLastPointInDegrees
-<a name="l00024"></a>00024   real                               ::  longitudeOfLastPointInDegrees
-<a name="l00025"></a>00025   integer                            ::  numberOfPointsAlongAParallel
-<a name="l00026"></a>00026   integer                            ::  numberOfPointsAlongAMeridian
-<a name="l00027"></a>00027   real, dimension(:), allocatable    ::  values
-<a name="l00028"></a>00028   integer                            ::  numberOfValues
-<a name="l00029"></a>00029   real                               ::  average,min_val, max_val
-<a name="l00030"></a>00030   integer                            ::  is_missing
-<a name="l00031"></a>00031   
-<a name="l00032"></a>00032   call grib_open_file(ifile, &
-<a name="l00033"></a>00033        '../../data/reduced_latlon_surface.grib1<span class="charliteral">','</span>r')
-<a name="l00034"></a>00034   
-<a name="l00035"></a>00035   ! Loop on all the messages in a file.
-<a name="l00036"></a>00036   
-<a name="l00037"></a>00037   !     a <span class="keyword">new</span> grib message is loaded from file
-<a name="l00038"></a>00038   !     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
-<a name="l00039"></a>00039   call  grib_new_from_file(ifile,igrib, iret) 
-<a name="l00040"></a>00040   
-<a name="l00041"></a>00041   LOOP: DO WHILE (iret /= <a name="a0"></a><a class="code" href="grib__api_8h.html#3bd3d72fe8bc116ca08c2d4b99203768" title="End of ressource reached.">GRIB_END_OF_FILE</a>)
-<a name="l00042"></a>00042 
-<a name="l00043"></a>00043      !check if the value of the key is MISSING
-<a name="l00044"></a>00044      is_missing=0;
-<a name="l00045"></a>00045      call grib_is_missing(igrib,'numberOfPointsAlongAParallel', &
-<a name="l00046"></a>00046           is_missing);
-<a name="l00047"></a>00047      if ( is_missing /= 1 ) then
-<a name="l00048"></a>00048         !     get as a integer
-<a name="l00049"></a>00049         call grib_get(igrib,'numberOfPointsAlongAParallel', &
-<a name="l00050"></a>00050              numberOfPointsAlongAParallel) 
-<a name="l00051"></a>00051         write(*,*) 'numberOfPointsAlongAParallel=', &
-<a name="l00052"></a>00052              numberOfPointsAlongAParallel
-<a name="l00053"></a>00053      else
-<a name="l00054"></a>00054         write(*,*) 'numberOfPointsAlongAParallel is missing'
-<a name="l00055"></a>00055      endif     
-<a name="l00056"></a>00056      !     get as a integer
-<a name="l00057"></a>00057      call grib_get(igrib,'numberOfPointsAlongAMeridian', &
-<a name="l00058"></a>00058           numberOfPointsAlongAMeridian) 
-<a name="l00059"></a>00059      write(*,*) 'numberOfPointsAlongAMeridian=', &
-<a name="l00060"></a>00060           numberOfPointsAlongAMeridian
-<a name="l00061"></a>00061      
-<a name="l00062"></a>00062      !     get as a real
-<a name="l00063"></a>00063      call grib_get(igrib, 'latitudeOfFirstGridPointInDegrees', &
-<a name="l00064"></a>00064           latitudeOfFirstPointInDegrees) 
-<a name="l00065"></a>00065      write(*,*) 'latitudeOfFirstGridPointInDegrees=', &
-<a name="l00066"></a>00066           latitudeOfFirstPointInDegrees
-<a name="l00067"></a>00067      
-<a name="l00068"></a>00068      !     get as a real
-<a name="l00069"></a>00069      call grib_get(igrib, 'longitudeOfFirstGridPointInDegrees', &
-<a name="l00070"></a>00070           longitudeOfFirstPointInDegrees) 
-<a name="l00071"></a>00071      write(*,*) 'longitudeOfFirstGridPointInDegrees=', &
-<a name="l00072"></a>00072           longitudeOfFirstPointInDegrees
-<a name="l00073"></a>00073      
-<a name="l00074"></a>00074      !     get as a real
-<a name="l00075"></a>00075      call grib_get(igrib, 'latitudeOfLastGridPointInDegrees', &
-<a name="l00076"></a>00076           latitudeOfLastPointInDegrees) 
-<a name="l00077"></a>00077      write(*,*) 'latitudeOfLastGridPointInDegrees=', &
-<a name="l00078"></a>00078           latitudeOfLastPointInDegrees
-<a name="l00079"></a>00079      
-<a name="l00080"></a>00080      !     get as a real
-<a name="l00081"></a>00081      call grib_get(igrib, 'longitudeOfLastGridPointInDegrees', &
-<a name="l00082"></a>00082           longitudeOfLastPointInDegrees) 
-<a name="l00083"></a>00083      write(*,*) 'longitudeOfLastGridPointInDegrees=', &
-<a name="l00084"></a>00084           longitudeOfLastPointInDegrees
-<a name="l00085"></a>00085      
-<a name="l00086"></a>00086      
-<a name="l00087"></a>00087      !     get the size of the values array
-<a name="l00088"></a>00088      call <a name="a1"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,'values',numberOfValues)
-<a name="l00089"></a>00089      write(*,*) 'numberOfValues=',numberOfValues
-<a name="l00090"></a>00090      
-<a name="l00091"></a>00091      allocate(values(numberOfValues), stat=iret)
-<a name="l00092"></a>00092      !     get data values
-<a name="l00093"></a>00093      call grib_get(igrib,'values',values)
-<a name="l00094"></a>00094      call grib_get(igrib,'min',min_val) ! can also be obtained through minval(values)
-<a name="l00095"></a>00095      call grib_get(igrib,'max',max_val) ! can also be obtained through maxval(values)
-<a name="l00096"></a>00096      call grib_get(igrib,'average',average) ! can also be obtained through maxval(values)
-<a name="l00097"></a>00097           
-<a name="l00098"></a>00098      write(*,*)'There are ',numberOfValues, &
-<a name="l00099"></a>00099           ' average is ',average, &
-<a name="l00100"></a>00100           ' min is ',  min_val, &
-<a name="l00101"></a>00101           ' max is ',  max_val
-<a name="l00102"></a>00102      
-<a name="l00103"></a>00103      call grib_release(igrib)
-<a name="l00104"></a>00104      
-<a name="l00105"></a>00105      call grib_new_from_file(ifile,igrib, iret)
-<a name="l00106"></a>00106      
-<a name="l00107"></a>00107   end do LOOP
-<a name="l00108"></a>00108   
-<a name="l00109"></a>00109   call grib_close_file(ifile)
-<a name="l00110"></a>00110   
-<a name="l00111"></a>00111   deallocate(values)
-<a name="l00112"></a>00112 end program get
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/get__data_8f90-example.html b/html/get__data_8f90-example.html
deleted file mode 100644
index 3d9b4cd..0000000
--- a/html/get__data_8f90-example.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: get_data.f90</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>get_data.f90</h1>How to get latitude/longitude/values.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 ! 
-<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 !
-<a name="l00008"></a>00008 !
-<a name="l00009"></a>00009 !  Description: how to <span class="keyword">get</span> lat/lon/values.
-<a name="l00010"></a>00010 !
-<a name="l00011"></a>00011 !
-<a name="l00012"></a>00012 !  Author: Enrico Fucile
-<a name="l00013"></a>00013 !
-<a name="l00014"></a>00014 !
-<a name="l00015"></a>00015 program get_data
-<a name="l00016"></a>00016 use grib_api
-<a name="l00017"></a>00017 implicit none
-<a name="l00018"></a>00018   integer            :: ifile
-<a name="l00019"></a>00019   integer            :: iret,i
-<a name="l00020"></a>00020   real(kind=8),dimension(:),allocatable     :: lats,lons,values
-<a name="l00021"></a>00021   integer(4)        :: numberOfPoints
-<a name="l00022"></a>00022   real(8)  :: missingValue=9999
-<a name="l00023"></a>00023   integer           :: count=0
-<a name="l00024"></a>00024   character(len=256) :: filename
-<a name="l00025"></a>00025 
-<a name="l00026"></a>00026 !     Message identifier.
-<a name="l00027"></a>00027   integer            :: igrib
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029   ifile=5
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031   call grib_open_file(ifile, &
-<a name="l00032"></a>00032        '../../data/reduced_latlon_surface.grib1','R')
-<a name="l00033"></a>00033 
-<a name="l00034"></a>00034 ! Loop on all the messages in a file.
-<a name="l00035"></a>00035 
-<a name="l00036"></a>00036   call grib_new_from_file(ifile,igrib,iret)
-<a name="l00037"></a>00037 
-<a name="l00038"></a>00038   do while (iret/=<a name="a0"></a><a class="code" href="grib__api_8h.html#3bd3d72fe8bc116ca08c2d4b99203768" title="End of ressource reached.">GRIB_END_OF_FILE</a>)
-<a name="l00039"></a>00039     count=count+1
-<a name="l00040"></a>00040     print *, <span class="stringliteral">"===== Message #"</span>,count
-<a name="l00041"></a>00041     call grib_get(igrib,'numberOfPoints',numberOfPoints)
-<a name="l00042"></a>00042     call grib_set(igrib,'missingValue',missingValue)
-<a name="l00043"></a>00043 
-<a name="l00044"></a>00044     allocate(lats(numberOfPoints))
-<a name="l00045"></a>00045     allocate(lons(numberOfPoints))
-<a name="l00046"></a>00046     allocate(values(numberOfPoints))
-<a name="l00047"></a>00047 
-<a name="l00048"></a>00048     call grib_get_data(igrib,lats,lons,values)
-<a name="l00049"></a>00049 
-<a name="l00050"></a>00050     do i=1,numberOfPoints
-<a name="l00051"></a>00051       if (values(i) /= missingValue) then
-<a name="l00052"></a>00052         print *, lats(i),lons(i),values(i)
-<a name="l00053"></a>00053       end if
-<a name="l00054"></a>00054     enddo
-<a name="l00055"></a>00055 
-<a name="l00056"></a>00056     deallocate(lats)
-<a name="l00057"></a>00057     deallocate(lons)
-<a name="l00058"></a>00058     deallocate(values)
-<a name="l00059"></a>00059 
-<a name="l00060"></a>00060     call grib_release(igrib)
-<a name="l00061"></a>00061     call grib_new_from_file(ifile,igrib, iret)
-<a name="l00062"></a>00062 
-<a name="l00063"></a>00063   end do 
-<a name="l00064"></a>00064 
-<a name="l00065"></a>00065 
-<a name="l00066"></a>00066   call grib_close_file(ifile)
-<a name="l00067"></a>00067 
-<a name="l00068"></a>00068 end program 
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/get__fortran_8_f-example.html b/html/get__fortran_8_f-example.html
deleted file mode 100644
index ca92966..0000000
--- a/html/get__fortran_8_f-example.html
+++ /dev/null
@@ -1,151 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: get_fortran.F</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>get_fortran.F</h1>get_fortran.F How to get values through the key names.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 C Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 C This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 C 
-<a name="l00005"></a>00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 C
-<a name="l00008"></a>00008 C  Fortran 77  Implementation: get_fortran
-<a name="l00009"></a>00009 C
-<a name="l00010"></a>00010 C  Description: how to <span class="keyword">get</span> values <span class="keyword">using</span> keys.
-<a name="l00011"></a>00011 C
-<a name="l00012"></a>00012 C  Author: Enrico Fucile
-<a name="l00013"></a>00013 C
-<a name="l00014"></a>00014 C
-<a name="l00015"></a>00015 C
-<a name="l00016"></a>00016       program <span class="keyword">get</span>
-<a name="l00017"></a>00017       implicit none
-<a name="l00018"></a>00018       integer maxNumberOfValues
-<a name="l00019"></a>00019       parameter( maxNumberOfValues = 10000 )
-<a name="l00020"></a>00020       include 'grib_api_f77.h'
-<a name="l00021"></a>00021       integer ifile
-<a name="l00022"></a>00022       integer iret
-<a name="l00023"></a>00023       integer igrib
-<a name="l00024"></a>00024       integer i
-<a name="l00025"></a>00025       real*8 latitudeOfFirstPointInDegrees
-<a name="l00026"></a>00026       real*8 longitudeOfFirstPointInDegrees
-<a name="l00027"></a>00027       real*8 latitudeOfLastPointInDegrees
-<a name="l00028"></a>00028       real*8 longitudeOfLastPointInDegrees
-<a name="l00029"></a>00029       real*8 jDirectionIncrementInDegrees
-<a name="l00030"></a>00030       real*8 iDirectionIncrementInDegrees
-<a name="l00031"></a>00031       integer*4 numberOfPointsAlongAParallel
-<a name="l00032"></a>00032       integer*4 numberOfPointsAlongAMeridian
-<a name="l00033"></a>00033       real*8 values(maxNumberOfValues)
-<a name="l00034"></a>00034       integer*4 numberOfValues
-<a name="l00035"></a>00035       real*8 average
-<a name="l00036"></a>00036       character*256 error
-<a name="l00037"></a>00037       integer*4 size
-<a name="l00038"></a>00038 
-<a name="l00039"></a>00039       size=maxNumberOfValues
-<a name="l00040"></a>00040       ifile=5
-<a name="l00041"></a>00041 
-<a name="l00042"></a>00042       iret=grib_open_file(ifile
-<a name="l00043"></a>00043      X,'../../data/regular_latlon_surface.grib1','r')
-<a name="l00044"></a>00044       call grib_check(iret)
-<a name="l00045"></a>00045 
-<a name="l00046"></a>00046 C     a new grib message is loaded from file
-<a name="l00047"></a>00047 C     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
-<a name="l00048"></a>00048       call grib_check( grib_new_from_file(ifile,igrib) )
-<a name="l00049"></a>00049 
-<a name="l00050"></a>00050 C     get as a integer
-<a name="l00051"></a>00051       call grib_check(grib_get_int(igrib,'numberOfPointsAlongAParallel'
-<a name="l00052"></a>00052      X,numberOfPointsAlongAParallel) )
-<a name="l00053"></a>00053       write(*,*) 'numberOfPointsAlongAParallel='
-<a name="l00054"></a>00054      X,numberOfPointsAlongAParallel
-<a name="l00055"></a>00055 
-<a name="l00056"></a>00056 C     get as a integer
-<a name="l00057"></a>00057       call grib_check( grib_get_int(igrib,'numberOfPointsAlongAMeridian'
-<a name="l00058"></a>00058      X,numberOfPointsAlongAMeridian) )
-<a name="l00059"></a>00059       write(*,*) 'numberOfPointsAlongAMeridian='
-<a name="l00060"></a>00060      X,numberOfPointsAlongAMeridian
-<a name="l00061"></a>00061 
-<a name="l00062"></a>00062 C     get as a real8
-<a name="l00063"></a>00063       call grib_check( grib_get_real8(igrib
-<a name="l00064"></a>00064      X,'latitudeOfFirstGridPointInDegrees'
-<a name="l00065"></a>00065      X,latitudeOfFirstPointInDegrees) )
-<a name="l00066"></a>00066        write(*,*) 'latitudeOfFirstGridPointInDegrees='
-<a name="l00067"></a>00067      X,latitudeOfFirstPointInDegrees
-<a name="l00068"></a>00068 
-<a name="l00069"></a>00069 C     get as a real8
-<a name="l00070"></a>00070       call grib_check( grib_get_real8(igrib
-<a name="l00071"></a>00071      X,'longitudeOfFirstGridPointInDegrees'
-<a name="l00072"></a>00072      X,longitudeOfFirstPointInDegrees) )
-<a name="l00073"></a>00073        write(*,*) 'longitudeOfFirstGridPointInDegrees='
-<a name="l00074"></a>00074      X,longitudeOfFirstPointInDegrees
-<a name="l00075"></a>00075 
-<a name="l00076"></a>00076 C     get as a real8
-<a name="l00077"></a>00077       call grib_check( grib_get_real8(igrib
-<a name="l00078"></a>00078      X,'latitudeOfLastGridPointInDegrees'
-<a name="l00079"></a>00079      X,latitudeOfLastPointInDegrees) )
-<a name="l00080"></a>00080        write(*,*) 'latitudeOfLastGridPointInDegrees='
-<a name="l00081"></a>00081      X,latitudeOfLastPointInDegrees
-<a name="l00082"></a>00082 
-<a name="l00083"></a>00083 C     get as a real8
-<a name="l00084"></a>00084       call grib_check( grib_get_real8(igrib
-<a name="l00085"></a>00085      X,'longitudeOfLastGridPointInDegrees'
-<a name="l00086"></a>00086      X,longitudeOfLastPointInDegrees) )
-<a name="l00087"></a>00087       write(*,*) 'longitudeOfLastGridPointInDegrees='
-<a name="l00088"></a>00088      X,longitudeOfLastPointInDegrees
-<a name="l00089"></a>00089 
-<a name="l00090"></a>00090 C     get as a real8
-<a name="l00091"></a>00091       call grib_check( grib_get_real8(igrib
-<a name="l00092"></a>00092      X,'jDirectionIncrementInDegrees'
-<a name="l00093"></a>00093      X,jDirectionIncrementInDegrees) )
-<a name="l00094"></a>00094       write(*,*) 'jDirectionIncrementInDegrees='
-<a name="l00095"></a>00095      X,jDirectionIncrementInDegrees
-<a name="l00096"></a>00096 
-<a name="l00097"></a>00097 C     get as a real8
-<a name="l00098"></a>00098       call grib_check( grib_get_real8(igrib
-<a name="l00099"></a>00099      X,'iDirectionIncrementInDegrees'
-<a name="l00100"></a>00100      X,iDirectionIncrementInDegrees) )
-<a name="l00101"></a>00101       write(*,*) 'iDirectionIncrementInDegrees='
-<a name="l00102"></a>00102      X,iDirectionIncrementInDegrees
-<a name="l00103"></a>00103 
-<a name="l00104"></a>00104 C     get the size of the values array
-<a name="l00105"></a>00105       call grib_check(<a name="a0"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,'values',numberOfValues))
-<a name="l00106"></a>00106       write(*,*) 'numberOfValues=',numberOfValues
-<a name="l00107"></a>00107 
-<a name="l00108"></a>00108 C     get data values
-<a name="l00109"></a>00109       call grib_check(grib_get_real8_array(igrib,'values',values,size))
-<a name="l00110"></a>00110       if ( size .ne. numberOfValues ) then
-<a name="l00111"></a>00111         write(*,*) 'ERROR: wrong numberOfValues'
-<a name="l00112"></a>00112         stop
-<a name="l00113"></a>00113       endif
-<a name="l00114"></a>00114 
-<a name="l00115"></a>00115       average = 0
-<a name="l00116"></a>00116       do i=1,numberOfValues
-<a name="l00117"></a>00117         average = average + values(i);
-<a name="l00118"></a>00118       enddo
-<a name="l00119"></a>00119 
-<a name="l00120"></a>00120       average =average / numberOfValues
-<a name="l00121"></a>00121 
-<a name="l00122"></a>00122       write(*,*)'There are ',numberOfValues
-<a name="l00123"></a>00123      X,' average is ',average
-<a name="l00124"></a>00124 
-<a name="l00125"></a>00125       call grib_check(grib_release(igrib))
-<a name="l00126"></a>00126 
-<a name="l00127"></a>00127       call grib_check(grib_close_file(ifile))
-<a name="l00128"></a>00128 
-<a name="l00129"></a>00129       end
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/get__pl_8f90-example.html b/html/get__pl_8f90-example.html
deleted file mode 100644
index 4895a2a..0000000
--- a/html/get__pl_8f90-example.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: get_pl.f90</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>get_pl.f90</h1>How to get the list of number of points for each parallel in reduced grids.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 ! 
-<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 !
-<a name="l00008"></a>00008 !
-<a name="l00009"></a>00009 !  Description: how to <span class="keyword">get</span> PL values.
-<a name="l00010"></a>00010 !
-<a name="l00011"></a>00011 !
-<a name="l00012"></a>00012 !  Author: Anne Fouilloux
-<a name="l00013"></a>00013 !
-<a name="l00014"></a>00014 !
-<a name="l00015"></a>00015 program get_pl
-<a name="l00016"></a>00016   use grib_api
-<a name="l00017"></a>00017   implicit none
-<a name="l00018"></a>00018   integer                         :: infile
-<a name="l00019"></a>00019   integer                         :: igrib
-<a name="l00020"></a>00020   integer                         :: PLPresent, nb_pl
-<a name="l00021"></a>00021   real, dimension(:), allocatable :: pl
-<a name="l00022"></a>00022 
-<a name="l00023"></a>00023 
-<a name="l00024"></a>00024   call grib_open_file(infile, &
-<a name="l00025"></a>00025        '../../data/reduced_gaussian_surface.grib1<span class="charliteral">','</span>r')
-<a name="l00026"></a>00026   
-<a name="l00027"></a>00027   !     a <span class="keyword">new</span> grib message is loaded from file
-<a name="l00028"></a>00028   !     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
-<a name="l00029"></a>00029   call grib_new_from_file(infile,igrib)
-<a name="l00030"></a>00030   
-<a name="l00031"></a>00031   !     <span class="keyword">set</span> PVPresent as an integer 
-<a name="l00032"></a>00032   call grib_get(igrib,'PLPresent',PLPresent)
-<a name="l00033"></a>00033   print*, "PLPresent= ", PLPresent
-<a name="l00034"></a>00034   if (PLPresent == 1) then
-<a name="l00035"></a>00035      call <a name="a0"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,'pl',nb_pl)
-<a name="l00036"></a>00036      print*, "there are ", nb_pl, " PL values"
-<a name="l00037"></a>00037      allocate(pl(nb_pl))
-<a name="l00038"></a>00038      call grib_get(igrib,'pl',pl)
-<a name="l00039"></a>00039      print*, "pl = ", pl
-<a name="l00040"></a>00040      deallocate(pl)
-<a name="l00041"></a>00041   else
-<a name="l00042"></a>00042      print*, "There is no PL values in your GRIB message!"
-<a name="l00043"></a>00043   end if
-<a name="l00044"></a>00044   call grib_release(igrib)
-<a name="l00045"></a>00045      
-<a name="l00046"></a>00046   call grib_close_file(infile)
-<a name="l00047"></a>00047 
-<a name="l00048"></a>00048 end program get_pl
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/get__pv_8f90-example.html b/html/get__pv_8f90-example.html
deleted file mode 100644
index 752c8e7..0000000
--- a/html/get__pv_8f90-example.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: get_pv.f90</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>get_pv.f90</h1>How to get the list of levels.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 ! 
-<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 !
-<a name="l00008"></a>00008 !
-<a name="l00009"></a>00009 !  Description: how to <span class="keyword">get</span> PV values.
-<a name="l00010"></a>00010 !
-<a name="l00011"></a>00011 !
-<a name="l00012"></a>00012 !  Author: Anne Fouilloux
-<a name="l00013"></a>00013 !
-<a name="l00014"></a>00014 !
-<a name="l00015"></a>00015 program get_pv
-<a name="l00016"></a>00016   use grib_api
-<a name="l00017"></a>00017   implicit none
-<a name="l00018"></a>00018   integer                         :: infile
-<a name="l00019"></a>00019   integer                         :: igrib
-<a name="l00020"></a>00020   integer                         :: PVPresent, nb_pv
-<a name="l00021"></a>00021   real, dimension(:), allocatable :: pv
-<a name="l00022"></a>00022   
-<a name="l00023"></a>00023 
-<a name="l00024"></a>00024   call grib_open_file(infile, &
-<a name="l00025"></a>00025        '../../data/reduced_gaussian_model_level.grib1<span class="charliteral">','</span>r')
-<a name="l00026"></a>00026   
-<a name="l00027"></a>00027   !     a <span class="keyword">new</span> grib message is loaded from file
-<a name="l00028"></a>00028   !     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
-<a name="l00029"></a>00029   call grib_new_from_file(infile,igrib)
-<a name="l00030"></a>00030   
-<a name="l00031"></a>00031   !     <span class="keyword">set</span> PVPresent as an integer 
-<a name="l00032"></a>00032   call grib_get(igrib,'PVPresent',PVPresent)
-<a name="l00033"></a>00033   print*, "PVPresent = ", PVPresent
-<a name="l00034"></a>00034   if (PVPresent == 1) then
-<a name="l00035"></a>00035      call <a name="a0"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,'pv',nb_pv)
-<a name="l00036"></a>00036      print*, "There are ", nb_pv, " PV values"
-<a name="l00037"></a>00037      allocate(pv(nb_pv))
-<a name="l00038"></a>00038      call grib_get(igrib,'pv',pv)
-<a name="l00039"></a>00039      print*, "pv = ", pv
-<a name="l00040"></a>00040      deallocate(pv)
-<a name="l00041"></a>00041   else
-<a name="l00042"></a>00042      print*, "There is no PV values in your GRIB message!"
-<a name="l00043"></a>00043   end if
-<a name="l00044"></a>00044   call grib_release(igrib)
-<a name="l00045"></a>00045   
-<a name="l00046"></a>00046   call grib_close_file(infile)
-<a name="l00047"></a>00047   
-<a name="l00048"></a>00048 end program get_pv
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/globals.html b/html/globals.html
index 62d1ebe..745a406 100644
--- a/html/globals.html
+++ b/html/globals.html
@@ -1,360 +1,584 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: Data Fields</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li class="current"><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: Globals</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
-<div class="tabs">
-  <ul>
-    <li><a href="files.html"><span>File List</span></a></li>
-    <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-  </ul>
-</div>
-<div class="tabs">
-  <ul>
-    <li class="current"><a href="globals.html"><span>All</span></a></li>
-    <li><a href="globals_func.html"><span>Functions</span></a></li>
-    <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-    <li><a href="globals_defs.html"><span>Defines</span></a></li>
-  </ul>
-</div>
-<div class="tabs">
-  <ul>
-    <li><a href="#index_g"><span>g</span></a></li>
-  </ul>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_defs.html"><span>Macros</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow4" class="tabs3">
+    <ul class="tablist">
+      <li><a href="#index_c"><span>c</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
 </div>
 
-<p>
-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
-<p>
-<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
-<li>GRIB_7777_NOT_FOUND
-: <a class="el" href="grib__api_8h.html#639bb601cfd8d954e49cc7886ea1c6ad">grib_api.h</a>
-<li>GRIB_ARRAY_TOO_SMALL
-: <a class="el" href="grib__api_8h.html#4cfa6d261a3a15912702143929053227">grib_api.h</a>
-<li>GRIB_BUFFER_TOO_SMALL
-: <a class="el" href="grib__api_8h.html#2d8e7aa042bcbaf91aa090a369a33db6">grib_api.h</a>
-<li>GRIB_CODE_NOT_FOUND_IN_TABLE
-: <a class="el" href="grib__api_8h.html#75648d913f443d2a480e408b59884a92">grib_api.h</a>
-<li>GRIB_CONCEPT_NO_MATCH
-: <a class="el" href="grib__api_8h.html#1a973e1ef2c6ae7fb132bdece2563fef">grib_api.h</a>
-<li>GRIB_CONSTANT_FIELD
-: <a class="el" href="grib__api_8h.html#38f3c639d01804ef1240463b2beb44e9">grib_api.h</a>
-<li>grib_context
-: <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_api.h</a>
-<li>grib_context_delete()
-: <a class="el" href="group__context.html#g4bd1c4d8b32c1ae42227420ed2251d57">grib_api.h</a>
-<li>grib_context_get_default()
-: <a class="el" href="group__context.html#g01ce1b8dc121afe1fd8212ceef8c829d">grib_api.h</a>
-<li>grib_context_get_user_data()
-: <a class="el" href="group__context.html#g7063ea5ce72ed460a1978c26dbc6af89">grib_api.h</a>
-<li>grib_context_new()
-: <a class="el" href="group__context.html#gbbb93339feef87a0ef7c415fa484c022">grib_api.h</a>
-<li>grib_context_set_buffer_memory_proc()
-: <a class="el" href="group__context.html#g13ac96fc6a017f896cfe1325fcd7aa6b">grib_api.h</a>
-<li>grib_context_set_dump_mode()
-: <a class="el" href="group__context.html#gd007cf96b681b389dadbbb9e7540e321">grib_api.h</a>
-<li>grib_context_set_logging_proc()
-: <a class="el" href="group__context.html#g09581ce8cdeff9da0f38a78898097b9e">grib_api.h</a>
-<li>grib_context_set_memory_proc()
-: <a class="el" href="group__context.html#gf38d04b9b8438fca7a418b507915030a">grib_api.h</a>
-<li>grib_context_set_path()
-: <a class="el" href="group__context.html#g06f0601960b317f15b78396ed12b1881">grib_api.h</a>
-<li>grib_context_set_persistent_memory_proc()
-: <a class="el" href="group__context.html#g5cd4b2513883a0d5989d5643087c4097">grib_api.h</a>
-<li>grib_context_set_print_proc()
-: <a class="el" href="group__context.html#g68b597e40215c9ced7959c7350980d2f">grib_api.h</a>
-<li>grib_context_set_user_data()
-: <a class="el" href="group__context.html#gec49c14665a9b4faa90a74cb069b9a30">grib_api.h</a>
-<li>grib_copy_namespace()
-: <a class="el" href="group__get__set.html#g6315ad72aaaf7577bc7b9f546c506e74">grib_api.h</a>
-<li>grib_count_in_file()
-: <a class="el" href="group__grib__handle.html#gc7f5cb6af67fd0a42bec5376d5b54682">grib_api.h</a>
-<li>grib_data_eof_proc
-: <a class="el" href="group__context.html#g49b4be77db1a3764ca291e7b45fce366">grib_api.h</a>
-<li>grib_data_read_proc
-: <a class="el" href="group__context.html#gfcaeb1a8fb78e0028906ee1e2ddbfcc0">grib_api.h</a>
-<li>grib_data_seek_proc
-: <a class="el" href="group__context.html#g9d4894f207e7f5d70533371915e45a2d">grib_api.h</a>
-<li>grib_data_tell_proc
-: <a class="el" href="group__context.html#g5fc575ad1d5736763f2d688b82597b09">grib_api.h</a>
-<li>grib_data_write_proc
-: <a class="el" href="group__context.html#g85f5907a2b006b370be8e176e92d0248">grib_api.h</a>
-<li>GRIB_DECODING_ERROR
-: <a class="el" href="grib__api_8h.html#4d24b723749a821f0853a2013d45746c">grib_api.h</a>
-<li>grib_dump_action_tree()
-: <a class="el" href="grib__api_8h.html#e1d347fdb06db3df5b5cba33cd2ea1a1">grib_api.h</a>
-<li>grib_dump_content()
-: <a class="el" href="grib__api_8h.html#67479e527e19f5a5b99696f37994ba21">grib_api.h</a>
-<li>GRIB_ENCODING_ERROR
-: <a class="el" href="grib__api_8h.html#154c771c186435e746ab12d9a48905ab">grib_api.h</a>
-<li>GRIB_END
-: <a class="el" href="grib__api_8h.html#86c56896fe711d7b879f1fbf305fd468">grib_api.h</a>
-<li>GRIB_END_OF_FILE
-: <a class="el" href="grib__api_8h.html#3bd3d72fe8bc116ca08c2d4b99203768">grib_api.h</a>
-<li>GRIB_END_OF_INDEX
-: <a class="el" href="grib__api_8h.html#afa8827ca82c170dc27bcfb723b6ba76">grib_api.h</a>
-<li>GRIB_FILE_NOT_FOUND
-: <a class="el" href="grib__api_8h.html#3441223fb03920c378d38c6f50e98d4a">grib_api.h</a>
-<li>grib_free_proc
-: <a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca">grib_api.h</a>
-<li>GRIB_GEOCALCULUS_PROBLEM
-: <a class="el" href="grib__api_8h.html#482b9d48445b7ad202be877e8cc10ea8">grib_api.h</a>
-<li>grib_get_all_names()
-: <a class="el" href="grib__api_8h.html#289f68694d96f1af8a2c1a8de422e1b2">grib_api.h</a>
-<li>grib_get_api_version()
-: <a class="el" href="grib__api_8h.html#4e9690b3960a8c6607de77d41a47735f">grib_api.h</a>
-<li>grib_get_bytes()
-: <a class="el" href="group__get__set.html#g1b1ac2da661c638dad7d223419d541c6">grib_api.h</a>
-<li>grib_get_context()
-: <a class="el" href="group__context.html#ge4d49e82f57836891aa57fce24b59800">grib_api.h</a>
-<li>grib_get_double()
-: <a class="el" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e">grib_api.h</a>
-<li>grib_get_double_array()
-: <a class="el" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a">grib_api.h</a>
-<li>grib_get_double_element()
-: <a class="el" href="group__get__set.html#gec894541bbc8c4e9093803ce21146fa5">grib_api.h</a>
-<li>grib_get_double_elements()
-: <a class="el" href="group__get__set.html#gdff349943fef1036fcd1dd7a69738a7a">grib_api.h</a>
-<li>grib_get_error_message()
-: <a class="el" href="grib__api_8h.html#8e3f942fa243dd09f04d4ff6d2f43d36">grib_api.h</a>
-<li>grib_get_long()
-: <a class="el" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526">grib_api.h</a>
-<li>grib_get_long_array()
-: <a class="el" href="group__get__set.html#ga05493cedfee55f0b83d27e356123223">grib_api.h</a>
-<li>grib_get_message()
-: <a class="el" href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185">grib_api.h</a>
-<li>grib_get_message_copy()
-: <a class="el" href="group__handling__coded__messages.html#g9248c021d985da70cfeb075e469db874">grib_api.h</a>
-<li>grib_get_offset()
-: <a class="el" href="group__get__set.html#g3b40c8174568a6e2b7563a0e89d20ddf">grib_api.h</a>
-<li>grib_get_size()
-: <a class="el" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245">grib_api.h</a>
-<li>grib_get_string()
-: <a class="el" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053">grib_api.h</a>
-<li>grib_gribex_mode_off()
-: <a class="el" href="group__context.html#g6f6a5612649241d9ecae7e2a288bc436">grib_api.h</a>
-<li>grib_gribex_mode_on()
-: <a class="el" href="group__context.html#ge8e9e3cce24d282a1b34432926b868c0">grib_api.h</a>
-<li>grib_gts_header_off()
-: <a class="el" href="group__context.html#g9a3ce8e25ef3e59387015f906a79901a">grib_api.h</a>
-<li>grib_gts_header_on()
-: <a class="el" href="group__context.html#g8d72ab772809fba49a41b32909770dd1">grib_api.h</a>
-<li>grib_handle
-: <a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_api.h</a>
-<li>grib_handle_clone()
-: <a class="el" href="group__grib__handle.html#ga63c93533fbbe2c8df482e19ca97c651">grib_api.h</a>
-<li>grib_handle_delete()
-: <a class="el" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677">grib_api.h</a>
-<li>grib_handle_new_from_file()
-: <a class="el" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5">grib_api.h</a>
-<li>grib_handle_new_from_index()
-: <a class="el" href="group__grib__index.html#ge7b9b1d59bd37a13de7e631e05606d8c">grib_api.h</a>
-<li>grib_handle_new_from_message()
-: <a class="el" href="group__grib__handle.html#gcf9ab4896fac2fbbe30a33b4d6028a01">grib_api.h</a>
-<li>grib_handle_new_from_message_copy()
-: <a class="el" href="group__grib__handle.html#gba8b4cc36b1a882c8a12716ef011d6be">grib_api.h</a>
-<li>grib_handle_new_from_multi_message()
-: <a class="el" href="group__grib__handle.html#g5990754a829e1d7a7ae4c5a1a8296bf2">grib_api.h</a>
-<li>grib_handle_new_from_samples()
-: <a class="el" href="group__grib__handle.html#gadefac64c19fb5ff06cf805ad4af06ff">grib_api.h</a>
-<li>grib_handle_new_from_template()
-: <a class="el" href="group__grib__handle.html#g11d247e5afa10bd52fb895dc4296143f">grib_api.h</a>
-<li>grib_index
-: <a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_api.h</a>
-<li>grib_index_delete()
-: <a class="el" href="group__grib__index.html#g13f2bb63c67bf8792c6678d3cc3daff7">grib_api.h</a>
-<li>grib_index_get_double()
-: <a class="el" href="group__grib__index.html#g814801233070dfd22304cdb06422d13a">grib_api.h</a>
-<li>grib_index_get_long()
-: <a class="el" href="group__grib__index.html#g85b6b4443f0f1230a7508aa15654697f">grib_api.h</a>
-<li>grib_index_get_size()
-: <a class="el" href="group__grib__index.html#g10236732fcb0c8d8e4a6bd8530d24672">grib_api.h</a>
-<li>grib_index_get_string()
-: <a class="el" href="group__grib__index.html#gd593e39f908bb6a7208be37eb9eba066">grib_api.h</a>
-<li>grib_index_new_from_file()
-: <a class="el" href="group__grib__index.html#g877e704bf0454a6a4ce91b382e808861">grib_api.h</a>
-<li>grib_index_select_double()
-: <a class="el" href="group__grib__index.html#g445565c93345d4c2e8fdbfe0b83fd16f">grib_api.h</a>
-<li>grib_index_select_long()
-: <a class="el" href="group__grib__index.html#g3c1009708be6ae6605b63a48f8dbaa0c">grib_api.h</a>
-<li>grib_index_select_string()
-: <a class="el" href="group__grib__index.html#gc3808ccf7101fc437da4a89a2b28f39d">grib_api.h</a>
-<li>GRIB_INTERNAL_ARRAY_TOO_SMALL
-: <a class="el" href="grib__api_8h.html#aaa04f4cf931846628d4e71e40b02349">grib_api.h</a>
-<li>GRIB_INTERNAL_ERROR
-: <a class="el" href="grib__api_8h.html#f8cf05fc5d45cb95ad0972bdcc3f08d3">grib_api.h</a>
-<li>GRIB_INVALID_ARGUMENT
-: <a class="el" href="grib__api_8h.html#9b9c7d3380e2e440d8c16ec1d49a4c17">grib_api.h</a>
-<li>GRIB_INVALID_FILE
-: <a class="el" href="grib__api_8h.html#c8091f4d703636468d7c303be9e4d881">grib_api.h</a>
-<li>GRIB_INVALID_GRIB
-: <a class="el" href="grib__api_8h.html#533ac9a5250151b97b6c7650db56897d">grib_api.h</a>
-<li>GRIB_INVALID_INDEX
-: <a class="el" href="grib__api_8h.html#519a1c9eddd9ce63ef87fd182c008737">grib_api.h</a>
-<li>GRIB_INVALID_ITERATOR
-: <a class="el" href="grib__api_8h.html#45eb384ee2e382f1acac24594d66c6b0">grib_api.h</a>
-<li>GRIB_INVALID_KEYS_ITERATOR
-: <a class="el" href="grib__api_8h.html#36309323248d2ac3729a4552c2fb1c17">grib_api.h</a>
-<li>GRIB_INVALID_MESSAGE
-: <a class="el" href="grib__api_8h.html#926f6ede936bd30c5339c94f2d84c8ae">grib_api.h</a>
-<li>GRIB_INVALID_NEAREST
-: <a class="el" href="grib__api_8h.html#aa0306c1ea428240fce27176dafbd7fe">grib_api.h</a>
-<li>GRIB_INVALID_ORDERBY
-: <a class="el" href="grib__api_8h.html#762034d39b53d2861f2743b0aec8d2a4">grib_api.h</a>
-<li>GRIB_INVALID_SECTION_NUMBER
-: <a class="el" href="grib__api_8h.html#9d2c9bfa553a51b2fcab92ad31bef8ef">grib_api.h</a>
-<li>GRIB_INVALID_TYPE
-: <a class="el" href="grib__api_8h.html#fc09d64f4cb3ba8d272b9e3c9b5dd363">grib_api.h</a>
-<li>GRIB_IO_PROBLEM
-: <a class="el" href="grib__api_8h.html#a7fe5a55b1005f7c3d14e8bfaee33271">grib_api.h</a>
-<li>grib_iterator
-: <a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_api.h</a>
-<li>grib_iterator_delete()
-: <a class="el" href="group__iterators.html#gd46ed73a16af56e6f3b46fe86ee8a759">grib_api.h</a>
-<li>grib_iterator_has_next()
-: <a class="el" href="group__iterators.html#g7beddf03a8335d5058a0760929af9b65">grib_api.h</a>
-<li>grib_iterator_new()
-: <a class="el" href="group__iterators.html#gefb1f87110bdce732edc9154cf0e7d58">grib_api.h</a>
-<li>grib_iterator_next()
-: <a class="el" href="group__iterators.html#g4f73056dbfdda3de0060559b9b39ea34">grib_api.h</a>
-<li>grib_iterator_previous()
-: <a class="el" href="group__iterators.html#ge33e4a6d3a2222f78ffc43eb7239ce3f">grib_api.h</a>
-<li>grib_iterator_reset()
-: <a class="el" href="group__iterators.html#gb8f3830e919c3c11f11530c08e9956c8">grib_api.h</a>
-<li>grib_keys_iterator
-: <a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_api.h</a>
-<li>GRIB_KEYS_ITERATOR_ALL_KEYS
-: <a class="el" href="group__keys__iterator.html#g0e4d2d943ddd61d0b877060e6fbea405">grib_api.h</a>
-<li>grib_keys_iterator_delete()
-: <a class="el" href="group__keys__iterator.html#g79716d2b701c3dbb3d3a8e633f35a40a">grib_api.h</a>
-<li>grib_keys_iterator_get_name()
-: <a class="el" href="group__keys__iterator.html#gec3348471f770965c07964e286249e12">grib_api.h</a>
-<li>grib_keys_iterator_new()
-: <a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_api.h</a>
-<li>grib_keys_iterator_next()
-: <a class="el" href="group__keys__iterator.html#g28f6ac808ecdc324fa3a47bc7b3f6dec">grib_api.h</a>
-<li>grib_keys_iterator_rewind()
-: <a class="el" href="group__keys__iterator.html#g15ceb24c7b8ac673d948ccdaf1ba5fd6">grib_api.h</a>
-<li>GRIB_KEYS_ITERATOR_SKIP_CODED
-: <a class="el" href="group__keys__iterator.html#g52ad3f33022d82a46cd80cb99a1307ff">grib_api.h</a>
-<li>GRIB_KEYS_ITERATOR_SKIP_COMPUTED
-: <a class="el" href="group__keys__iterator.html#g26fe182483e385904cc68695b1c42131">grib_api.h</a>
-<li>GRIB_KEYS_ITERATOR_SKIP_DUPLICATES
-: <a class="el" href="group__keys__iterator.html#ge64e8f24f3094903d6a686a213f92e4e">grib_api.h</a>
-<li>GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC
-: <a class="el" href="group__keys__iterator.html#g37ad0fca3eb784fed7e2b4a44e1ca2b6">grib_api.h</a>
-<li>GRIB_KEYS_ITERATOR_SKIP_FUNCTION
-: <a class="el" href="group__keys__iterator.html#gcbef496e484e5e18c799f74dd5cdfff7">grib_api.h</a>
-<li>GRIB_KEYS_ITERATOR_SKIP_OPTIONAL
-: <a class="el" href="group__keys__iterator.html#ge665875b6303dab2265bbb088c723860">grib_api.h</a>
-<li>GRIB_KEYS_ITERATOR_SKIP_READ_ONLY
-: <a class="el" href="group__keys__iterator.html#g22b6978a432db7211a270438077f7062">grib_api.h</a>
-<li>grib_log_proc
-: <a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994">grib_api.h</a>
-<li>grib_malloc_proc
-: <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_api.h</a>
-<li>GRIB_MESSAGE_TOO_LARGE
-: <a class="el" href="grib__api_8h.html#1e15e27a144761974cea9e90f2ba168d">grib_api.h</a>
-<li>GRIB_MISSING_KEY
-: <a class="el" href="grib__api_8h.html#8fd56a3beb7556606f644091aba1fcbd">grib_api.h</a>
-<li>grib_multi_handle
-: <a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_api.h</a>
-<li>grib_multi_handle_append()
-: <a class="el" href="group__grib__handle.html#gb723d513ef118d0f2d8c440e15387337">grib_api.h</a>
-<li>grib_multi_handle_delete()
-: <a class="el" href="group__grib__handle.html#g706fb50a5a16b6932adb05d27a8ac626">grib_api.h</a>
-<li>grib_multi_handle_new()
-: <a class="el" href="group__grib__handle.html#g9e1911fcd2b32380937e2d60469d2d22">grib_api.h</a>
-<li>grib_multi_handle_write()
-: <a class="el" href="group__grib__handle.html#g48fc85388ca1ee23f6afa12bb0c125ed">grib_api.h</a>
-<li>grib_multi_support_off()
-: <a class="el" href="group__context.html#gc022270a99922ccc57147670ed2a58d4">grib_api.h</a>
-<li>grib_multi_support_on()
-: <a class="el" href="group__context.html#g3266536e68ebb6d4bbc4a22b29f0e8ea">grib_api.h</a>
-<li>grib_nearest
-: <a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_api.h</a>
-<li>grib_nearest_delete()
-: <a class="el" href="group__iterators.html#g2b3c0069013e1ad7b3e34f30b4659c15">grib_api.h</a>
-<li>grib_nearest_find()
-: <a class="el" href="group__iterators.html#g15043a2482608fb93a0385f3c3e86926">grib_api.h</a>
-<li>grib_nearest_find_multiple()
-: <a class="el" href="group__iterators.html#g4923d7a2e414c743410f1de71bb9648c">grib_api.h</a>
-<li>grib_nearest_new()
-: <a class="el" href="group__iterators.html#g4bd616cf0d0c4f5f147f4a207ddc7687">grib_api.h</a>
-<li>GRIB_NO_DEFINITIONS
-: <a class="el" href="grib__api_8h.html#8cd08a4486ad956bf1f20434f84cd04e">grib_api.h</a>
-<li>GRIB_NO_MORE_IN_SET
-: <a class="el" href="grib__api_8h.html#7fc7702ef0de098b4a58e2fb9c9a442c">grib_api.h</a>
-<li>GRIB_NO_VALUES
-: <a class="el" href="grib__api_8h.html#dfdf56b00d215ff68aeb1adbffc348ce">grib_api.h</a>
-<li>GRIB_NOT_FOUND
-: <a class="el" href="grib__api_8h.html#86c4b3873fded7e8ea28644dcbcd5f87">grib_api.h</a>
-<li>GRIB_NOT_IMPLEMENTED
-: <a class="el" href="grib__api_8h.html#5a0fab73e448bc57ddd04b59506ccd71">grib_api.h</a>
-<li>GRIB_NULL_HANDLE
-: <a class="el" href="grib__api_8h.html#1c5efccc4485ae72e7714d2443e6d89c">grib_api.h</a>
-<li>GRIB_NULL_INDEX
-: <a class="el" href="grib__api_8h.html#042ed38858c5cf72be88cfada1737f3b">grib_api.h</a>
-<li>GRIB_OUT_OF_AREA
-: <a class="el" href="grib__api_8h.html#ba25cca898d918763a9a8a9bd3860f00">grib_api.h</a>
-<li>GRIB_OUT_OF_MEMORY
-: <a class="el" href="grib__api_8h.html#b405f321cbb4b4c7dec9eb1bd4b65b50">grib_api.h</a>
-<li>GRIB_PREMATURE_END_OF_FILE
-: <a class="el" href="grib__api_8h.html#3baff96d54517c85e433f8150642ef0b">grib_api.h</a>
-<li>grib_print_api_version()
-: <a class="el" href="grib__api_8h.html#3cd2a817acbefb3089bfa36d2b40f1db">grib_api.h</a>
-<li>grib_print_proc
-: <a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0">grib_api.h</a>
-<li>GRIB_READ_ONLY
-: <a class="el" href="grib__api_8h.html#e18012f7fad721db7f865655f2b5956e">grib_api.h</a>
-<li>grib_realloc_proc
-: <a class="el" href="group__context.html#gcfc03db8667b1019d896ab2ab47dc12d">grib_api.h</a>
-<li>grib_set_bytes()
-: <a class="el" href="group__get__set.html#g4437bd0aa70cc2c2f942ace67023f4a1">grib_api.h</a>
-<li>grib_set_double()
-: <a class="el" href="group__get__set.html#g3f8802a5d3f2e7557e35e6e83acfc9e9">grib_api.h</a>
-<li>grib_set_double_array()
-: <a class="el" href="group__get__set.html#ga24d87e236a2469309d1176ee5925d77">grib_api.h</a>
-<li>grib_set_long()
-: <a class="el" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2">grib_api.h</a>
-<li>grib_set_long_array()
-: <a class="el" href="group__get__set.html#g6c4697dc7c6f450ad30d0a24a3f87016">grib_api.h</a>
-<li>grib_set_string()
-: <a class="el" href="group__get__set.html#g78143cc64571b454b0aba14246e9a53a">grib_api.h</a>
-<li>GRIB_STRING_TOO_SMALL_FOR_CODE_NAME
-: <a class="el" href="grib__api_8h.html#4c26f350e2a20a2cd810a7e8a890973f">grib_api.h</a>
-<li>GRIB_SUCCESS
-: <a class="el" href="grib__api_8h.html#5ec59f24fc07a0e9d05768e908b9eb41">grib_api.h</a>
-<li>GRIB_SWITCH_NO_MATCH
-: <a class="el" href="grib__api_8h.html#83d93f23c64220209e5c326a38f32003">grib_api.h</a>
-<li>GRIB_VALUE_CANNOT_BE_MISSING
-: <a class="el" href="grib__api_8h.html#b075c9c53912dc18ea9feee1f710cb18">grib_api.h</a>
-<li>GRIB_WRONG_ARRAY_SIZE
-: <a class="el" href="grib__api_8h.html#b04c311e9de064f156fd238dbf04afef">grib_api.h</a>
-<li>GRIB_WRONG_GRID
-: <a class="el" href="grib__api_8h.html#5a73a75bffabf39673ba9bc3a4b164b6">grib_api.h</a>
-<li>GRIB_WRONG_LENGTH
-: <a class="el" href="grib__api_8h.html#1792ca7e8d3e6f3e4bc2dc406408ec8f">grib_api.h</a>
-<li>GRIB_WRONG_STEP
-: <a class="el" href="grib__api_8h.html#08dcf5be008fd3c7a524ab3de96f88c2">grib_api.h</a>
-<li>GRIB_WRONG_STEP_UNIT
-: <a class="el" href="grib__api_8h.html#c10988d7d2b76f906e1281c2a6602b1a">grib_api.h</a>
-<li>GRIB_WRONG_TYPE
-: <a class="el" href="grib__api_8h.html#53847b78a3259d3df6c76042360cbd97">grib_api.h</a>
+<div class="contents">
+<div class="textblock">Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:</div>
+
+<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<li>CODES_7777_NOT_FOUND
+: <a class="el" href="group__errors.html#ga1d805b18a1a77dc05958177d1954ce74">eccodes.h</a>
+</li>
+<li>CODES_ARRAY_TOO_SMALL
+: <a class="el" href="group__errors.html#gaa1ba1cec53cded5eb4497f920dd06fc4">eccodes.h</a>
+</li>
+<li>CODES_ATTRIBUTE_CLASH
+: <a class="el" href="group__errors.html#gab925e86850f2cb23159bf5f349680985">eccodes.h</a>
+</li>
+<li>CODES_ATTRIBUTE_NOT_FOUND
+: <a class="el" href="group__errors.html#ga020cc6141e2618059f63b5aa2a8385f7">eccodes.h</a>
+</li>
+<li>CODES_BUFFER_TOO_SMALL
+: <a class="el" href="group__errors.html#ga28ecc7f18250c721544c587f21acc61f">eccodes.h</a>
+</li>
+<li>codes_bufr_handle_new_from_file()
+: <a class="el" href="group__codes__handle.html#ga6958c3cd7e4059af5c26898a872262ff">eccodes.h</a>
+</li>
+<li>codes_bufr_handle_new_from_samples()
+: <a class="el" href="group__codes__handle.html#ga56d0f831e520ec7bc4a0ca334c63f557">eccodes.h</a>
+</li>
+<li>CODES_CODE_NOT_FOUND_IN_TABLE
+: <a class="el" href="group__errors.html#ga007c99d57492ff8d3d4d14cce1b6b645">eccodes.h</a>
+</li>
+<li>CODES_CONCEPT_NO_MATCH
+: <a class="el" href="group__errors.html#gaacf5638c981fbd97399b83439197c4ba">eccodes.h</a>
+</li>
+<li>CODES_CONSTANT_FIELD
+: <a class="el" href="group__errors.html#gaf24f6cbb1e6a796cc7768aa1d5280d6e">eccodes.h</a>
+</li>
+<li>codes_context_delete()
+: <a class="el" href="group__context.html#gae6323d16b5e929f22126d0ddbf43dc7f">eccodes.h</a>
+</li>
+<li>codes_context_get_default()
+: <a class="el" href="group__context.html#ga3c1086a1abccc58db01609611c3e706d">eccodes.h</a>
+</li>
+<li>codes_context_set_definitions_path()
+: <a class="el" href="group__context.html#ga8abf0ff0f52f1e808edf092f2e7c1147">eccodes.h</a>
+</li>
+<li>codes_context_set_samples_path()
+: <a class="el" href="group__context.html#ga4f2f808f560a3b744b4c904b3d1a1c48">eccodes.h</a>
+</li>
+<li>codes_copy_namespace()
+: <a class="el" href="group__get__set.html#gaecd9fa4b22117df7569320ddaa2431e1">eccodes.h</a>
+</li>
+<li>CODES_CORRUPTED_INDEX
+: <a class="el" href="group__errors.html#ga3e4650042d448cf9ccf2f58913f6d900">eccodes.h</a>
+</li>
+<li>codes_count_in_file()
+: <a class="el" href="group__codes__handle.html#ga4c2203d55c2c3ca792e44e4eb26edfb5">eccodes.h</a>
+</li>
+<li>CODES_DECODING_ERROR
+: <a class="el" href="group__errors.html#ga75df8e941afb735723fec89bd68d4f58">eccodes.h</a>
+</li>
+<li>CODES_DIFFERENT_EDITION
+: <a class="el" href="group__errors.html#gad88a9ff519e455b12ac0bf8e45f95472">eccodes.h</a>
+</li>
+<li>codes_dump_action_tree()
+: <a class="el" href="eccodes_8h.html#a1d83df194092088785f1d794356d950d">eccodes.h</a>
+</li>
+<li>codes_dump_content()
+: <a class="el" href="eccodes_8h.html#ab9cf0dd7ede554cc4b8a56728d768d88">eccodes.h</a>
+</li>
+<li>CODES_ENCODING_ERROR
+: <a class="el" href="group__errors.html#ga817971c5206ff01987a2d16bc0e9dd1f">eccodes.h</a>
+</li>
+<li>CODES_END
+: <a class="el" href="group__errors.html#ga4e95b3f8896dc99e311e02c348266595">eccodes.h</a>
+</li>
+<li>CODES_END_OF_FILE
+: <a class="el" href="group__errors.html#ga0b434e15a3ee76844958fd269feb6de0">eccodes.h</a>
+</li>
+<li>CODES_END_OF_INDEX
+: <a class="el" href="group__errors.html#ga0280b694f20120aef691e13288bf2b30">eccodes.h</a>
+</li>
+<li>CODES_FILE_NOT_FOUND
+: <a class="el" href="group__errors.html#gac7c0c8beed153b8bf32601441c5ef787">eccodes.h</a>
+</li>
+<li>CODES_GEOCALCULUS_PROBLEM
+: <a class="el" href="group__errors.html#ga6bcc67f9220042cb4781bad71fd59f35">eccodes.h</a>
+</li>
+<li>codes_get_api_version()
+: <a class="el" href="eccodes_8h.html#aad3989fb11cbfce477ce7b42daa7b506">eccodes.h</a>
+</li>
+<li>codes_get_bytes()
+: <a class="el" href="group__get__set.html#ga252c3104621144fb370f302f3a3f6755">eccodes.h</a>
+</li>
+<li>codes_get_double()
+: <a class="el" href="group__get__set.html#ga93c1b612b2b70bbbff335b7d227316fc">eccodes.h</a>
+</li>
+<li>codes_get_double_array()
+: <a class="el" href="group__get__set.html#ga82b919c3196525ec2f21a8378d4cbbf4">eccodes.h</a>
+</li>
+<li>codes_get_double_element()
+: <a class="el" href="group__get__set.html#ga15b9a4d8dae3002f0b4f6ef4f1cfc197">eccodes.h</a>
+</li>
+<li>codes_get_double_elements()
+: <a class="el" href="group__get__set.html#ga853aad2cd2bea6b71b8c61fed6adfe0b">eccodes.h</a>
+</li>
+<li>codes_get_error_message()
+: <a class="el" href="eccodes_8h.html#a1257b15cb014452fd6e6662db06e4ede">eccodes.h</a>
+</li>
+<li>codes_get_git_sha1()
+: <a class="el" href="eccodes_8h.html#a82249b16ee12f2e574397f8cccaafb7a">eccodes.h</a>
+</li>
+<li>codes_get_gribex_mode()
+: <a class="el" href="group__context.html#ga13cba593f6e5b195bfc83bea419d5022">eccodes.h</a>
+</li>
+<li>codes_get_length()
+: <a class="el" href="group__get__set.html#ga98d694dc6caa24afdd393440c94c38f8">eccodes.h</a>
+</li>
+<li>codes_get_long()
+: <a class="el" href="group__get__set.html#ga6ff44dddc3bec09f710b0aa8d0dbded7">eccodes.h</a>
+</li>
+<li>codes_get_long_array()
+: <a class="el" href="group__get__set.html#gac43a3c0bf2561ceeb4bcc22d734b53b1">eccodes.h</a>
+</li>
+<li>codes_get_message()
+: <a class="el" href="group__handling__coded__messages.html#ga3d6f22a666e8e8dd7b33c98f2a7f3f62">eccodes.h</a>
+</li>
+<li>codes_get_message_copy()
+: <a class="el" href="group__handling__coded__messages.html#ga8b2cb8c072b886de83a8e089c004a630">eccodes.h</a>
+</li>
+<li>codes_get_offset()
+: <a class="el" href="group__get__set.html#gaefda2b7765e1b737bcd05a825d231a1d">eccodes.h</a>
+</li>
+<li>codes_get_size()
+: <a class="el" href="group__get__set.html#ga614d4f7a6c789a4fe60ea976b6644343">eccodes.h</a>
+</li>
+<li>codes_get_string()
+: <a class="el" href="group__get__set.html#ga638d7bbe8dafd11847222a99b259f408">eccodes.h</a>
+</li>
+<li>codes_grib_get_data()
+: <a class="el" href="group__iterators.html#ga9d8fdb87efce9d49ac54853ee5871e01">eccodes.h</a>
+</li>
+<li>codes_grib_handle_new_from_file()
+: <a class="el" href="group__codes__handle.html#ga36de77229cc3b386d26c1e7b52c21e0e">eccodes.h</a>
+</li>
+<li>codes_grib_handle_new_from_multi_message()
+: <a class="el" href="group__codes__handle.html#ga385864d5f06e1de0e8ee13388ca4117c">eccodes.h</a>
+</li>
+<li>codes_grib_handle_new_from_samples()
+: <a class="el" href="group__codes__handle.html#ga3b281a237e311c6b8fa4bd7096d7e025">eccodes.h</a>
+</li>
+<li>codes_grib_iterator_delete()
+: <a class="el" href="group__iterators.html#ga3999693d3932a62eada0d1de5b594d2f">eccodes.h</a>
+</li>
+<li>codes_grib_iterator_has_next()
+: <a class="el" href="group__iterators.html#ga97dfa89fe0ebed41b238d98bac36db8a">eccodes.h</a>
+</li>
+<li>codes_grib_iterator_new()
+: <a class="el" href="group__iterators.html#ga250295a1b927401bcb1e03aac032396c">eccodes.h</a>
+</li>
+<li>codes_grib_iterator_next()
+: <a class="el" href="group__iterators.html#ga9bc83fc66d5f39ecf123d3c3e5b1fecf">eccodes.h</a>
+</li>
+<li>codes_grib_iterator_previous()
+: <a class="el" href="group__iterators.html#ga93ef62613c251baa5ada3924d3c856ac">eccodes.h</a>
+</li>
+<li>codes_grib_iterator_reset()
+: <a class="el" href="group__iterators.html#ga635320df5854ae08367fed2e5f895e2b">eccodes.h</a>
+</li>
+<li>codes_grib_multi_handle_append()
+: <a class="el" href="group__codes__handle.html#ga068715aab8b82a5d3092064b6bc27f3d">eccodes.h</a>
+</li>
+<li>codes_grib_multi_handle_delete()
+: <a class="el" href="group__codes__handle.html#ga85a955bdd3012ce499e50768e298b849">eccodes.h</a>
+</li>
+<li>codes_grib_multi_handle_new()
+: <a class="el" href="group__codes__handle.html#ga5ff59672d9eab49c0285c8f60e379d88">eccodes.h</a>
+</li>
+<li>codes_grib_multi_handle_write()
+: <a class="el" href="group__codes__handle.html#gac06089d897eea71d8944cc622a45737f">eccodes.h</a>
+</li>
+<li>codes_grib_multi_support_off()
+: <a class="el" href="group__context.html#gafb670b14a995b47a9d8896fc5ca67383">eccodes.h</a>
+</li>
+<li>codes_grib_multi_support_on()
+: <a class="el" href="group__context.html#ga7775423a069b2b8b5535b5f68090b847">eccodes.h</a>
+</li>
+<li>codes_grib_multi_support_reset_file()
+: <a class="el" href="group__context.html#ga72e9dabca4fc1d1bbb4cf3e01f77c9fd">eccodes.h</a>
+</li>
+<li>codes_grib_nearest_delete()
+: <a class="el" href="group__iterators.html#ga8c3b2ed99693a097211000552876a61d">eccodes.h</a>
+</li>
+<li>codes_grib_nearest_find()
+: <a class="el" href="group__iterators.html#ga8c53c53033259beaf32055154f193a83">eccodes.h</a>
+</li>
+<li>codes_grib_nearest_find_multiple()
+: <a class="el" href="group__iterators.html#ga6338ab9e3fb68c25d4fe48a8467cdbfc">eccodes.h</a>
+</li>
+<li>codes_grib_nearest_new()
+: <a class="el" href="group__iterators.html#ga201d49e6c835f3b6ed041147d0bf4898">eccodes.h</a>
+</li>
+<li>codes_gribex_mode_off()
+: <a class="el" href="group__context.html#ga810b375ccacfb6646e44b8cd0da5ee5b">eccodes.h</a>
+</li>
+<li>codes_gribex_mode_on()
+: <a class="el" href="group__context.html#ga51838183704645cc11a270e5f755c30c">eccodes.h</a>
+</li>
+<li>codes_gts_header_off()
+: <a class="el" href="group__context.html#ga5c766bc156cd1ebcf70139965a41e669">eccodes.h</a>
+</li>
+<li>codes_gts_header_on()
+: <a class="el" href="group__context.html#ga504a2b1bd0d3b229c120c8285895b03a">eccodes.h</a>
+</li>
+<li>codes_handle_clone()
+: <a class="el" href="group__codes__handle.html#ga7b226527aa98d90f2bdb470105732878">eccodes.h</a>
+</li>
+<li>codes_handle_delete()
+: <a class="el" href="group__codes__handle.html#ga358ea000ceed775e7367ccab581be978">eccodes.h</a>
+</li>
+<li>codes_handle_new_from_file()
+: <a class="el" href="group__codes__handle.html#ga6ec42bd6272b4a0f2cb2b220b86c71c8">eccodes.h</a>
+</li>
+<li>codes_handle_new_from_index()
+: <a class="el" href="group__codes__index.html#gae1947cf7225ca1809c5491aa671d6b91">eccodes.h</a>
+</li>
+<li>codes_handle_new_from_message()
+: <a class="el" href="group__codes__handle.html#gaece49330c864391261cd6a0c10a18dc2">eccodes.h</a>
+</li>
+<li>codes_handle_new_from_message_copy()
+: <a class="el" href="group__codes__handle.html#ga079df0c709e381812ae13af08c354032">eccodes.h</a>
+</li>
+<li>CODES_HASH_ARRAY_NO_MATCH
+: <a class="el" href="group__errors.html#ga396e92d0fa82b59556c924e0dec759c6">eccodes.h</a>
+</li>
+<li>codes_index_add_file()
+: <a class="el" href="group__codes__index.html#ga8fa6ca199182c48c0327e61ac98dfd00">eccodes.h</a>
+</li>
+<li>codes_index_delete()
+: <a class="el" href="group__codes__index.html#ga03643d8adf2aa7836e1848b20843b31c">eccodes.h</a>
+</li>
+<li>codes_index_get_double()
+: <a class="el" href="group__codes__index.html#ga8a2fae0f5eeb8d708c1831bc1b9b9004">eccodes.h</a>
+</li>
+<li>codes_index_get_long()
+: <a class="el" href="group__codes__index.html#gafb483b993d462b2f0576af70c1aa4cc7">eccodes.h</a>
+</li>
+<li>codes_index_get_size()
+: <a class="el" href="group__codes__index.html#gab1aa5fde30d26360349085efec936c6c">eccodes.h</a>
+</li>
+<li>codes_index_get_string()
+: <a class="el" href="group__codes__index.html#ga86ea092af6a89b0322b873147bba523d">eccodes.h</a>
+</li>
+<li>codes_index_new()
+: <a class="el" href="group__codes__index.html#ga0d7015518d426c012ba6c2b848af96d9">eccodes.h</a>
+</li>
+<li>codes_index_new_from_file()
+: <a class="el" href="group__codes__index.html#ga42b26aa62c53cef50f0bd9e75ed88281">eccodes.h</a>
+</li>
+<li>codes_index_select_double()
+: <a class="el" href="group__codes__index.html#ga3baa4a80cd517d55f088fee7f4630fff">eccodes.h</a>
+</li>
+<li>codes_index_select_long()
+: <a class="el" href="group__codes__index.html#gac0a14aca2fc5385684fdba1cb668959a">eccodes.h</a>
+</li>
+<li>codes_index_select_string()
+: <a class="el" href="group__codes__index.html#gafa8d7b29dfe42d805714db95b5ca044a">eccodes.h</a>
+</li>
+<li>CODES_INTERNAL_ARRAY_TOO_SMALL
+: <a class="el" href="group__errors.html#ga953130174b4f829aeaa4f2122792ce5b">eccodes.h</a>
+</li>
+<li>CODES_INTERNAL_ERROR
+: <a class="el" href="group__errors.html#ga4413dbc23fd50185a76014f0478920a6">eccodes.h</a>
+</li>
+<li>CODES_INVALID_ARGUMENT
+: <a class="el" href="group__errors.html#ga601fbf553afe7bbdaa1c3c784fcad649">eccodes.h</a>
+</li>
+<li>CODES_INVALID_BPV
+: <a class="el" href="group__errors.html#ga5cf46bac2cc3e9dfc9a0dc81644591b4">eccodes.h</a>
+</li>
+<li>CODES_INVALID_FILE
+: <a class="el" href="group__errors.html#gab99b60eded1d7c1ff9adb3521543e956">eccodes.h</a>
+</li>
+<li>CODES_INVALID_GRIB
+: <a class="el" href="group__errors.html#gaa3b634b83f8678b7869cc5ff271a7801">eccodes.h</a>
+</li>
+<li>CODES_INVALID_INDEX
+: <a class="el" href="group__errors.html#ga5f33aa7859af62f31a87afd8fe0643b4">eccodes.h</a>
+</li>
+<li>CODES_INVALID_ITERATOR
+: <a class="el" href="group__errors.html#ga09b7d84b946021eab0179a1f0e8babff">eccodes.h</a>
+</li>
+<li>CODES_INVALID_KEY_VALUE
+: <a class="el" href="group__errors.html#ga713d9143db54f7520a4e0473b73971d8">eccodes.h</a>
+</li>
+<li>CODES_INVALID_KEYS_ITERATOR
+: <a class="el" href="group__errors.html#gaa90810da03e1593e3eb30edcb87da47b">eccodes.h</a>
+</li>
+<li>CODES_INVALID_MESSAGE
+: <a class="el" href="group__errors.html#gad58e1f868ee4e18b4836007d38562b8d">eccodes.h</a>
+</li>
+<li>CODES_INVALID_NEAREST
+: <a class="el" href="group__errors.html#ga3e95bd54244761766d7c39c8a95ee9bf">eccodes.h</a>
+</li>
+<li>CODES_INVALID_ORDERBY
+: <a class="el" href="group__errors.html#ga03f1a92629846f6aef37e5933fa4f5e4">eccodes.h</a>
+</li>
+<li>CODES_INVALID_SECTION_NUMBER
+: <a class="el" href="group__errors.html#gacc7a7e8cdd1e8ccfc8c9a2956d657d5e">eccodes.h</a>
+</li>
+<li>CODES_INVALID_TYPE
+: <a class="el" href="group__errors.html#ga29b65582c871d8c4b0215f38bef6b9c9">eccodes.h</a>
+</li>
+<li>CODES_IO_PROBLEM
+: <a class="el" href="group__errors.html#ga796a3ec1b15abe60dec0c6817564d173">eccodes.h</a>
+</li>
+<li>CODES_KEYS_ITERATOR_ALL_KEYS
+: <a class="el" href="group__keys__iterator.html#gaa0b60d176497f5d4bc34564c31e76cf1">eccodes.h</a>
+</li>
+<li>codes_keys_iterator_delete()
+: <a class="el" href="group__keys__iterator.html#gafdafe484a0e5a82732ddcbaec1e272a5">eccodes.h</a>
+</li>
+<li>codes_keys_iterator_get_name()
+: <a class="el" href="group__keys__iterator.html#ga1049604cb5a47359f9c7f7a42571a48b">eccodes.h</a>
+</li>
+<li>codes_keys_iterator_new()
+: <a class="el" href="group__keys__iterator.html#gad3394316cf1f3c779648fe81428adb8f">eccodes.h</a>
+</li>
+<li>codes_keys_iterator_next()
+: <a class="el" href="group__keys__iterator.html#ga804b63ac6be7c95aac71a9050008e409">eccodes.h</a>
+</li>
+<li>codes_keys_iterator_rewind()
+: <a class="el" href="group__keys__iterator.html#ga2f611291982ea92cabc0ca70691291bf">eccodes.h</a>
+</li>
+<li>CODES_KEYS_ITERATOR_SKIP_CODED
+: <a class="el" href="group__keys__iterator.html#gae3286f2212339d42d43938d9c5c6255c">eccodes.h</a>
+</li>
+<li>CODES_KEYS_ITERATOR_SKIP_COMPUTED
+: <a class="el" href="group__keys__iterator.html#gaaecbb01ec3bd2d67a42aad56c96fb775">eccodes.h</a>
+</li>
+<li>CODES_KEYS_ITERATOR_SKIP_DUPLICATES
+: <a class="el" href="group__keys__iterator.html#ga532be495f6cd54a852288a88bd0a439f">eccodes.h</a>
+</li>
+<li>CODES_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC
+: <a class="el" href="group__keys__iterator.html#ga81f606c554c906f1fed1b9cd432aec00">eccodes.h</a>
+</li>
+<li>CODES_KEYS_ITERATOR_SKIP_FUNCTION
+: <a class="el" href="group__keys__iterator.html#ga441c09493c38e1ab2fc7f296eb12516f">eccodes.h</a>
+</li>
+<li>CODES_KEYS_ITERATOR_SKIP_OPTIONAL
+: <a class="el" href="group__keys__iterator.html#ga6f7115fdd2c821886a43934e4aa16073">eccodes.h</a>
+</li>
+<li>CODES_KEYS_ITERATOR_SKIP_READ_ONLY
+: <a class="el" href="group__keys__iterator.html#ga782b83b0b913da3841eb82921642aaa8">eccodes.h</a>
+</li>
+<li>CODES_MESSAGE_MALFORMED
+: <a class="el" href="group__errors.html#ga05a6fefc41cb1f342d66b1a99887a8bd">eccodes.h</a>
+</li>
+<li>CODES_MESSAGE_TOO_LARGE
+: <a class="el" href="group__errors.html#gafe15d1cbbb9524f6287e99c05265f90b">eccodes.h</a>
+</li>
+<li>CODES_MISSING_BUFR_ENTRY
+: <a class="el" href="group__errors.html#ga8c92dd1dc944244225fa0bf129347cb7">eccodes.h</a>
+</li>
+<li>CODES_MISSING_KEY
+: <a class="el" href="group__errors.html#ga96acfe0a853dd9243975b62aad503dd7">eccodes.h</a>
+</li>
+<li>CODES_NO_DEFINITIONS
+: <a class="el" href="group__errors.html#ga737054a732ef481c72997c4face59a02">eccodes.h</a>
+</li>
+<li>CODES_NO_MORE_IN_SET
+: <a class="el" href="group__errors.html#gaf624d54629a6e8aabce0c5b60667e268">eccodes.h</a>
+</li>
+<li>CODES_NO_VALUES
+: <a class="el" href="group__errors.html#gac1e36f8922e9321ca23c6884742f4fbd">eccodes.h</a>
+</li>
+<li>CODES_NOT_FOUND
+: <a class="el" href="group__errors.html#ga0c9413c3afbe47d2a6f2bba805360084">eccodes.h</a>
+</li>
+<li>CODES_NOT_IMPLEMENTED
+: <a class="el" href="group__errors.html#gaf833ff5b61aa5745728bd8c7dd37e27b">eccodes.h</a>
+</li>
+<li>CODES_NULL_HANDLE
+: <a class="el" href="group__errors.html#gac17665aa8fcb3f6422a80c4a666b47b0">eccodes.h</a>
+</li>
+<li>CODES_NULL_INDEX
+: <a class="el" href="group__errors.html#gabbdcba4ec6e2dd470b8f0611fdd37d52">eccodes.h</a>
+</li>
+<li>CODES_NULL_POINTER
+: <a class="el" href="group__errors.html#gacbe671c157599d6420eb8dfb1e792f6a">eccodes.h</a>
+</li>
+<li>CODES_OUT_OF_AREA
+: <a class="el" href="group__errors.html#ga1535af5117f762da30730d341a27c421">eccodes.h</a>
+</li>
+<li>CODES_OUT_OF_MEMORY
+: <a class="el" href="group__errors.html#gaca540f40b9e09270265636b3689d8c2e">eccodes.h</a>
+</li>
+<li>CODES_OUT_OF_RANGE
+: <a class="el" href="group__errors.html#ga8f0a03b5f41dfe79b5dc501ecc596f7b">eccodes.h</a>
+</li>
+<li>CODES_PREMATURE_END_OF_FILE
+: <a class="el" href="group__errors.html#ga6e92038c31cca9d63ec502de74979044">eccodes.h</a>
+</li>
+<li>codes_print_api_version()
+: <a class="el" href="eccodes_8h.html#a8be52d40a8fb51642720d0b8adf6cdce">eccodes.h</a>
+</li>
+<li>CODES_READ_ONLY
+: <a class="el" href="group__errors.html#gab1809244c05808791f318e1e060592d3">eccodes.h</a>
+</li>
+<li>codes_set_bytes()
+: <a class="el" href="group__get__set.html#ga7acb877bea87a39b3778c21dd8de46c2">eccodes.h</a>
+</li>
+<li>codes_set_double()
+: <a class="el" href="group__get__set.html#ga7d2d68482b903b40b91a0b334855db5f">eccodes.h</a>
+</li>
+<li>codes_set_double_array()
+: <a class="el" href="group__get__set.html#gaff9b5bde2baf126d93f43100e5c1d3f7">eccodes.h</a>
+</li>
+<li>codes_set_force_double_array()
+: <a class="el" href="group__get__set.html#ga5610a608f1e58996fa48c7ac8f3859a3">eccodes.h</a>
+</li>
+<li>codes_set_long()
+: <a class="el" href="group__get__set.html#ga385881244ca6ef4be9ecee93025c862f">eccodes.h</a>
+</li>
+<li>codes_set_long_array()
+: <a class="el" href="group__get__set.html#gabb904f520644caa008034bd2be9349ec">eccodes.h</a>
+</li>
+<li>codes_set_string()
+: <a class="el" href="group__get__set.html#ga6062cdd5950966bffa72e74708f85368">eccodes.h</a>
+</li>
+<li>codes_set_string_array()
+: <a class="el" href="group__get__set.html#ga6840ee00df4366a431bedcef609f8ae5">eccodes.h</a>
+</li>
+<li>CODES_STRING_TOO_SMALL
+: <a class="el" href="group__errors.html#ga2d577c49ec3604d481c12f1bf5539eee">eccodes.h</a>
+</li>
+<li>CODES_SUCCESS
+: <a class="el" href="group__errors.html#ga62529e45321708e65678dfc155f1c842">eccodes.h</a>
+</li>
+<li>CODES_SWITCH_NO_MATCH
+: <a class="el" href="group__errors.html#ga76a9e4341bbdd4fa7aa6f19581294897">eccodes.h</a>
+</li>
+<li>CODES_TOO_MANY_ATTRIBUTES
+: <a class="el" href="group__errors.html#gad4cea7d28dfa21cd2eb03594158bc3d6">eccodes.h</a>
+</li>
+<li>CODES_UNDERFLOW
+: <a class="el" href="group__errors.html#ga4fa596b35745d80ac3def70a91f12c97">eccodes.h</a>
+</li>
+<li>CODES_UNSUPPORTED_EDITION
+: <a class="el" href="group__errors.html#ga4bc4702f061c30bd03ba48a455e1fdd0">eccodes.h</a>
+</li>
+<li>CODES_VALUE_CANNOT_BE_MISSING
+: <a class="el" href="group__errors.html#ga5795dad885ba6527afa8c2301bf8f3a3">eccodes.h</a>
+</li>
+<li>CODES_VALUE_DIFFERENT
+: <a class="el" href="group__errors.html#ga138dc954bee9af6f849c63699d6b6044">eccodes.h</a>
+</li>
+<li>codes_write_message()
+: <a class="el" href="group__codes__handle.html#gac82dbaba240ebf6e76cdbcf2007a6bee">eccodes.h</a>
+</li>
+<li>CODES_WRONG_ARRAY_SIZE
+: <a class="el" href="group__errors.html#ga17496b69f982d69fc5ae83a5f5b785bf">eccodes.h</a>
+</li>
+<li>CODES_WRONG_BITMAP_SIZE
+: <a class="el" href="group__errors.html#gac049ccb7281fecb514b740bd937b6c3b">eccodes.h</a>
+</li>
+<li>CODES_WRONG_CONVERSION
+: <a class="el" href="group__errors.html#ga419b09c45fc88de701bd32dab76c3d83">eccodes.h</a>
+</li>
+<li>CODES_WRONG_GRID
+: <a class="el" href="group__errors.html#gab7fca3278f1c363103a066d1a1f83fba">eccodes.h</a>
+</li>
+<li>CODES_WRONG_LENGTH
+: <a class="el" href="group__errors.html#ga988dcc03601078149deac7e4fecbc22f">eccodes.h</a>
+</li>
+<li>CODES_WRONG_STEP
+: <a class="el" href="group__errors.html#gadb8db78e83ccc396163068af7d71d32e">eccodes.h</a>
+</li>
+<li>CODES_WRONG_STEP_UNIT
+: <a class="el" href="group__errors.html#ga201ef38b0482edf51e93bf94200dca96">eccodes.h</a>
+</li>
+<li>CODES_WRONG_TYPE
+: <a class="el" href="group__errors.html#ga399f4bf77424c64dbb7e94212deffd38">eccodes.h</a>
+</li>
 </ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
 </body>
 </html>
diff --git a/html/globals_defs.html b/html/globals_defs.html
index c0beeb5..c527f20 100644
--- a/html/globals_defs.html
+++ b/html/globals_defs.html
@@ -1,162 +1,332 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: Data Fields</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li class="current"><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: Globals</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
-<div class="tabs">
-  <ul>
-    <li><a href="files.html"><span>File List</span></a></li>
-    <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-  </ul>
-</div>
-<div class="tabs">
-  <ul>
-    <li><a href="globals.html"><span>All</span></a></li>
-    <li><a href="globals_func.html"><span>Functions</span></a></li>
-    <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-    <li class="current"><a href="globals_defs.html"><span>Defines</span></a></li>
-  </ul>
-</div>
-<div class="tabs">
-  <ul>
-    <li><a href="#index_g"><span>g</span></a></li>
-  </ul>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li class="current"><a href="globals_defs.html"><span>Macros</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow4" class="tabs3">
+    <ul class="tablist">
+      <li><a href="#index_c"><span>c</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
 </div>
 
-<p>
- 
-<p>
-<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
-<li>GRIB_7777_NOT_FOUND
-: <a class="el" href="grib__api_8h.html#639bb601cfd8d954e49cc7886ea1c6ad">grib_api.h</a>
-<li>GRIB_ARRAY_TOO_SMALL
-: <a class="el" href="grib__api_8h.html#4cfa6d261a3a15912702143929053227">grib_api.h</a>
-<li>GRIB_BUFFER_TOO_SMALL
-: <a class="el" href="grib__api_8h.html#2d8e7aa042bcbaf91aa090a369a33db6">grib_api.h</a>
-<li>GRIB_CODE_NOT_FOUND_IN_TABLE
-: <a class="el" href="grib__api_8h.html#75648d913f443d2a480e408b59884a92">grib_api.h</a>
-<li>GRIB_CONCEPT_NO_MATCH
-: <a class="el" href="grib__api_8h.html#1a973e1ef2c6ae7fb132bdece2563fef">grib_api.h</a>
-<li>GRIB_CONSTANT_FIELD
-: <a class="el" href="grib__api_8h.html#38f3c639d01804ef1240463b2beb44e9">grib_api.h</a>
-<li>GRIB_DECODING_ERROR
-: <a class="el" href="grib__api_8h.html#4d24b723749a821f0853a2013d45746c">grib_api.h</a>
-<li>GRIB_ENCODING_ERROR
-: <a class="el" href="grib__api_8h.html#154c771c186435e746ab12d9a48905ab">grib_api.h</a>
-<li>GRIB_END
-: <a class="el" href="grib__api_8h.html#86c56896fe711d7b879f1fbf305fd468">grib_api.h</a>
-<li>GRIB_END_OF_FILE
-: <a class="el" href="grib__api_8h.html#3bd3d72fe8bc116ca08c2d4b99203768">grib_api.h</a>
-<li>GRIB_END_OF_INDEX
-: <a class="el" href="grib__api_8h.html#afa8827ca82c170dc27bcfb723b6ba76">grib_api.h</a>
-<li>GRIB_FILE_NOT_FOUND
-: <a class="el" href="grib__api_8h.html#3441223fb03920c378d38c6f50e98d4a">grib_api.h</a>
-<li>GRIB_GEOCALCULUS_PROBLEM
-: <a class="el" href="grib__api_8h.html#482b9d48445b7ad202be877e8cc10ea8">grib_api.h</a>
-<li>GRIB_INTERNAL_ARRAY_TOO_SMALL
-: <a class="el" href="grib__api_8h.html#aaa04f4cf931846628d4e71e40b02349">grib_api.h</a>
-<li>GRIB_INTERNAL_ERROR
-: <a class="el" href="grib__api_8h.html#f8cf05fc5d45cb95ad0972bdcc3f08d3">grib_api.h</a>
-<li>GRIB_INVALID_ARGUMENT
-: <a class="el" href="grib__api_8h.html#9b9c7d3380e2e440d8c16ec1d49a4c17">grib_api.h</a>
-<li>GRIB_INVALID_FILE
-: <a class="el" href="grib__api_8h.html#c8091f4d703636468d7c303be9e4d881">grib_api.h</a>
-<li>GRIB_INVALID_GRIB
-: <a class="el" href="grib__api_8h.html#533ac9a5250151b97b6c7650db56897d">grib_api.h</a>
-<li>GRIB_INVALID_INDEX
-: <a class="el" href="grib__api_8h.html#519a1c9eddd9ce63ef87fd182c008737">grib_api.h</a>
-<li>GRIB_INVALID_ITERATOR
-: <a class="el" href="grib__api_8h.html#45eb384ee2e382f1acac24594d66c6b0">grib_api.h</a>
-<li>GRIB_INVALID_KEYS_ITERATOR
-: <a class="el" href="grib__api_8h.html#36309323248d2ac3729a4552c2fb1c17">grib_api.h</a>
-<li>GRIB_INVALID_MESSAGE
-: <a class="el" href="grib__api_8h.html#926f6ede936bd30c5339c94f2d84c8ae">grib_api.h</a>
-<li>GRIB_INVALID_NEAREST
-: <a class="el" href="grib__api_8h.html#aa0306c1ea428240fce27176dafbd7fe">grib_api.h</a>
-<li>GRIB_INVALID_ORDERBY
-: <a class="el" href="grib__api_8h.html#762034d39b53d2861f2743b0aec8d2a4">grib_api.h</a>
-<li>GRIB_INVALID_SECTION_NUMBER
-: <a class="el" href="grib__api_8h.html#9d2c9bfa553a51b2fcab92ad31bef8ef">grib_api.h</a>
-<li>GRIB_INVALID_TYPE
-: <a class="el" href="grib__api_8h.html#fc09d64f4cb3ba8d272b9e3c9b5dd363">grib_api.h</a>
-<li>GRIB_IO_PROBLEM
-: <a class="el" href="grib__api_8h.html#a7fe5a55b1005f7c3d14e8bfaee33271">grib_api.h</a>
-<li>GRIB_KEYS_ITERATOR_ALL_KEYS
-: <a class="el" href="group__keys__iterator.html#g0e4d2d943ddd61d0b877060e6fbea405">grib_api.h</a>
-<li>GRIB_KEYS_ITERATOR_SKIP_CODED
-: <a class="el" href="group__keys__iterator.html#g52ad3f33022d82a46cd80cb99a1307ff">grib_api.h</a>
-<li>GRIB_KEYS_ITERATOR_SKIP_COMPUTED
-: <a class="el" href="group__keys__iterator.html#g26fe182483e385904cc68695b1c42131">grib_api.h</a>
-<li>GRIB_KEYS_ITERATOR_SKIP_DUPLICATES
-: <a class="el" href="group__keys__iterator.html#ge64e8f24f3094903d6a686a213f92e4e">grib_api.h</a>
-<li>GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC
-: <a class="el" href="group__keys__iterator.html#g37ad0fca3eb784fed7e2b4a44e1ca2b6">grib_api.h</a>
-<li>GRIB_KEYS_ITERATOR_SKIP_FUNCTION
-: <a class="el" href="group__keys__iterator.html#gcbef496e484e5e18c799f74dd5cdfff7">grib_api.h</a>
-<li>GRIB_KEYS_ITERATOR_SKIP_OPTIONAL
-: <a class="el" href="group__keys__iterator.html#ge665875b6303dab2265bbb088c723860">grib_api.h</a>
-<li>GRIB_KEYS_ITERATOR_SKIP_READ_ONLY
-: <a class="el" href="group__keys__iterator.html#g22b6978a432db7211a270438077f7062">grib_api.h</a>
-<li>GRIB_MESSAGE_TOO_LARGE
-: <a class="el" href="grib__api_8h.html#1e15e27a144761974cea9e90f2ba168d">grib_api.h</a>
-<li>GRIB_MISSING_KEY
-: <a class="el" href="grib__api_8h.html#8fd56a3beb7556606f644091aba1fcbd">grib_api.h</a>
-<li>GRIB_NO_DEFINITIONS
-: <a class="el" href="grib__api_8h.html#8cd08a4486ad956bf1f20434f84cd04e">grib_api.h</a>
-<li>GRIB_NO_MORE_IN_SET
-: <a class="el" href="grib__api_8h.html#7fc7702ef0de098b4a58e2fb9c9a442c">grib_api.h</a>
-<li>GRIB_NO_VALUES
-: <a class="el" href="grib__api_8h.html#dfdf56b00d215ff68aeb1adbffc348ce">grib_api.h</a>
-<li>GRIB_NOT_FOUND
-: <a class="el" href="grib__api_8h.html#86c4b3873fded7e8ea28644dcbcd5f87">grib_api.h</a>
-<li>GRIB_NOT_IMPLEMENTED
-: <a class="el" href="grib__api_8h.html#5a0fab73e448bc57ddd04b59506ccd71">grib_api.h</a>
-<li>GRIB_NULL_HANDLE
-: <a class="el" href="grib__api_8h.html#1c5efccc4485ae72e7714d2443e6d89c">grib_api.h</a>
-<li>GRIB_NULL_INDEX
-: <a class="el" href="grib__api_8h.html#042ed38858c5cf72be88cfada1737f3b">grib_api.h</a>
-<li>GRIB_OUT_OF_AREA
-: <a class="el" href="grib__api_8h.html#ba25cca898d918763a9a8a9bd3860f00">grib_api.h</a>
-<li>GRIB_OUT_OF_MEMORY
-: <a class="el" href="grib__api_8h.html#b405f321cbb4b4c7dec9eb1bd4b65b50">grib_api.h</a>
-<li>GRIB_PREMATURE_END_OF_FILE
-: <a class="el" href="grib__api_8h.html#3baff96d54517c85e433f8150642ef0b">grib_api.h</a>
-<li>GRIB_READ_ONLY
-: <a class="el" href="grib__api_8h.html#e18012f7fad721db7f865655f2b5956e">grib_api.h</a>
-<li>GRIB_STRING_TOO_SMALL_FOR_CODE_NAME
-: <a class="el" href="grib__api_8h.html#4c26f350e2a20a2cd810a7e8a890973f">grib_api.h</a>
-<li>GRIB_SUCCESS
-: <a class="el" href="grib__api_8h.html#5ec59f24fc07a0e9d05768e908b9eb41">grib_api.h</a>
-<li>GRIB_SWITCH_NO_MATCH
-: <a class="el" href="grib__api_8h.html#83d93f23c64220209e5c326a38f32003">grib_api.h</a>
-<li>GRIB_VALUE_CANNOT_BE_MISSING
-: <a class="el" href="grib__api_8h.html#b075c9c53912dc18ea9feee1f710cb18">grib_api.h</a>
-<li>GRIB_WRONG_ARRAY_SIZE
-: <a class="el" href="grib__api_8h.html#b04c311e9de064f156fd238dbf04afef">grib_api.h</a>
-<li>GRIB_WRONG_GRID
-: <a class="el" href="grib__api_8h.html#5a73a75bffabf39673ba9bc3a4b164b6">grib_api.h</a>
-<li>GRIB_WRONG_LENGTH
-: <a class="el" href="grib__api_8h.html#1792ca7e8d3e6f3e4bc2dc406408ec8f">grib_api.h</a>
-<li>GRIB_WRONG_STEP
-: <a class="el" href="grib__api_8h.html#08dcf5be008fd3c7a524ab3de96f88c2">grib_api.h</a>
-<li>GRIB_WRONG_STEP_UNIT
-: <a class="el" href="grib__api_8h.html#c10988d7d2b76f906e1281c2a6602b1a">grib_api.h</a>
-<li>GRIB_WRONG_TYPE
-: <a class="el" href="grib__api_8h.html#53847b78a3259d3df6c76042360cbd97">grib_api.h</a>
+<div class="contents">
+ 
+
+<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<li>CODES_7777_NOT_FOUND
+: <a class="el" href="group__errors.html#ga1d805b18a1a77dc05958177d1954ce74">eccodes.h</a>
+</li>
+<li>CODES_ARRAY_TOO_SMALL
+: <a class="el" href="group__errors.html#gaa1ba1cec53cded5eb4497f920dd06fc4">eccodes.h</a>
+</li>
+<li>CODES_ATTRIBUTE_CLASH
+: <a class="el" href="group__errors.html#gab925e86850f2cb23159bf5f349680985">eccodes.h</a>
+</li>
+<li>CODES_ATTRIBUTE_NOT_FOUND
+: <a class="el" href="group__errors.html#ga020cc6141e2618059f63b5aa2a8385f7">eccodes.h</a>
+</li>
+<li>CODES_BUFFER_TOO_SMALL
+: <a class="el" href="group__errors.html#ga28ecc7f18250c721544c587f21acc61f">eccodes.h</a>
+</li>
+<li>CODES_CODE_NOT_FOUND_IN_TABLE
+: <a class="el" href="group__errors.html#ga007c99d57492ff8d3d4d14cce1b6b645">eccodes.h</a>
+</li>
+<li>CODES_CONCEPT_NO_MATCH
+: <a class="el" href="group__errors.html#gaacf5638c981fbd97399b83439197c4ba">eccodes.h</a>
+</li>
+<li>CODES_CONSTANT_FIELD
+: <a class="el" href="group__errors.html#gaf24f6cbb1e6a796cc7768aa1d5280d6e">eccodes.h</a>
+</li>
+<li>CODES_CORRUPTED_INDEX
+: <a class="el" href="group__errors.html#ga3e4650042d448cf9ccf2f58913f6d900">eccodes.h</a>
+</li>
+<li>CODES_DECODING_ERROR
+: <a class="el" href="group__errors.html#ga75df8e941afb735723fec89bd68d4f58">eccodes.h</a>
+</li>
+<li>CODES_DIFFERENT_EDITION
+: <a class="el" href="group__errors.html#gad88a9ff519e455b12ac0bf8e45f95472">eccodes.h</a>
+</li>
+<li>CODES_ENCODING_ERROR
+: <a class="el" href="group__errors.html#ga817971c5206ff01987a2d16bc0e9dd1f">eccodes.h</a>
+</li>
+<li>CODES_END
+: <a class="el" href="group__errors.html#ga4e95b3f8896dc99e311e02c348266595">eccodes.h</a>
+</li>
+<li>CODES_END_OF_FILE
+: <a class="el" href="group__errors.html#ga0b434e15a3ee76844958fd269feb6de0">eccodes.h</a>
+</li>
+<li>CODES_END_OF_INDEX
+: <a class="el" href="group__errors.html#ga0280b694f20120aef691e13288bf2b30">eccodes.h</a>
+</li>
+<li>CODES_FILE_NOT_FOUND
+: <a class="el" href="group__errors.html#gac7c0c8beed153b8bf32601441c5ef787">eccodes.h</a>
+</li>
+<li>CODES_GEOCALCULUS_PROBLEM
+: <a class="el" href="group__errors.html#ga6bcc67f9220042cb4781bad71fd59f35">eccodes.h</a>
+</li>
+<li>CODES_HASH_ARRAY_NO_MATCH
+: <a class="el" href="group__errors.html#ga396e92d0fa82b59556c924e0dec759c6">eccodes.h</a>
+</li>
+<li>CODES_INTERNAL_ARRAY_TOO_SMALL
+: <a class="el" href="group__errors.html#ga953130174b4f829aeaa4f2122792ce5b">eccodes.h</a>
+</li>
+<li>CODES_INTERNAL_ERROR
+: <a class="el" href="group__errors.html#ga4413dbc23fd50185a76014f0478920a6">eccodes.h</a>
+</li>
+<li>CODES_INVALID_ARGUMENT
+: <a class="el" href="group__errors.html#ga601fbf553afe7bbdaa1c3c784fcad649">eccodes.h</a>
+</li>
+<li>CODES_INVALID_BPV
+: <a class="el" href="group__errors.html#ga5cf46bac2cc3e9dfc9a0dc81644591b4">eccodes.h</a>
+</li>
+<li>CODES_INVALID_FILE
+: <a class="el" href="group__errors.html#gab99b60eded1d7c1ff9adb3521543e956">eccodes.h</a>
+</li>
+<li>CODES_INVALID_GRIB
+: <a class="el" href="group__errors.html#gaa3b634b83f8678b7869cc5ff271a7801">eccodes.h</a>
+</li>
+<li>CODES_INVALID_INDEX
+: <a class="el" href="group__errors.html#ga5f33aa7859af62f31a87afd8fe0643b4">eccodes.h</a>
+</li>
+<li>CODES_INVALID_ITERATOR
+: <a class="el" href="group__errors.html#ga09b7d84b946021eab0179a1f0e8babff">eccodes.h</a>
+</li>
+<li>CODES_INVALID_KEY_VALUE
+: <a class="el" href="group__errors.html#ga713d9143db54f7520a4e0473b73971d8">eccodes.h</a>
+</li>
+<li>CODES_INVALID_KEYS_ITERATOR
+: <a class="el" href="group__errors.html#gaa90810da03e1593e3eb30edcb87da47b">eccodes.h</a>
+</li>
+<li>CODES_INVALID_MESSAGE
+: <a class="el" href="group__errors.html#gad58e1f868ee4e18b4836007d38562b8d">eccodes.h</a>
+</li>
+<li>CODES_INVALID_NEAREST
+: <a class="el" href="group__errors.html#ga3e95bd54244761766d7c39c8a95ee9bf">eccodes.h</a>
+</li>
+<li>CODES_INVALID_ORDERBY
+: <a class="el" href="group__errors.html#ga03f1a92629846f6aef37e5933fa4f5e4">eccodes.h</a>
+</li>
+<li>CODES_INVALID_SECTION_NUMBER
+: <a class="el" href="group__errors.html#gacc7a7e8cdd1e8ccfc8c9a2956d657d5e">eccodes.h</a>
+</li>
+<li>CODES_INVALID_TYPE
+: <a class="el" href="group__errors.html#ga29b65582c871d8c4b0215f38bef6b9c9">eccodes.h</a>
+</li>
+<li>CODES_IO_PROBLEM
+: <a class="el" href="group__errors.html#ga796a3ec1b15abe60dec0c6817564d173">eccodes.h</a>
+</li>
+<li>CODES_KEYS_ITERATOR_ALL_KEYS
+: <a class="el" href="group__keys__iterator.html#gaa0b60d176497f5d4bc34564c31e76cf1">eccodes.h</a>
+</li>
+<li>CODES_KEYS_ITERATOR_SKIP_CODED
+: <a class="el" href="group__keys__iterator.html#gae3286f2212339d42d43938d9c5c6255c">eccodes.h</a>
+</li>
+<li>CODES_KEYS_ITERATOR_SKIP_COMPUTED
+: <a class="el" href="group__keys__iterator.html#gaaecbb01ec3bd2d67a42aad56c96fb775">eccodes.h</a>
+</li>
+<li>CODES_KEYS_ITERATOR_SKIP_DUPLICATES
+: <a class="el" href="group__keys__iterator.html#ga532be495f6cd54a852288a88bd0a439f">eccodes.h</a>
+</li>
+<li>CODES_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC
+: <a class="el" href="group__keys__iterator.html#ga81f606c554c906f1fed1b9cd432aec00">eccodes.h</a>
+</li>
+<li>CODES_KEYS_ITERATOR_SKIP_FUNCTION
+: <a class="el" href="group__keys__iterator.html#ga441c09493c38e1ab2fc7f296eb12516f">eccodes.h</a>
+</li>
+<li>CODES_KEYS_ITERATOR_SKIP_OPTIONAL
+: <a class="el" href="group__keys__iterator.html#ga6f7115fdd2c821886a43934e4aa16073">eccodes.h</a>
+</li>
+<li>CODES_KEYS_ITERATOR_SKIP_READ_ONLY
+: <a class="el" href="group__keys__iterator.html#ga782b83b0b913da3841eb82921642aaa8">eccodes.h</a>
+</li>
+<li>CODES_MESSAGE_MALFORMED
+: <a class="el" href="group__errors.html#ga05a6fefc41cb1f342d66b1a99887a8bd">eccodes.h</a>
+</li>
+<li>CODES_MESSAGE_TOO_LARGE
+: <a class="el" href="group__errors.html#gafe15d1cbbb9524f6287e99c05265f90b">eccodes.h</a>
+</li>
+<li>CODES_MISSING_BUFR_ENTRY
+: <a class="el" href="group__errors.html#ga8c92dd1dc944244225fa0bf129347cb7">eccodes.h</a>
+</li>
+<li>CODES_MISSING_KEY
+: <a class="el" href="group__errors.html#ga96acfe0a853dd9243975b62aad503dd7">eccodes.h</a>
+</li>
+<li>CODES_NO_DEFINITIONS
+: <a class="el" href="group__errors.html#ga737054a732ef481c72997c4face59a02">eccodes.h</a>
+</li>
+<li>CODES_NO_MORE_IN_SET
+: <a class="el" href="group__errors.html#gaf624d54629a6e8aabce0c5b60667e268">eccodes.h</a>
+</li>
+<li>CODES_NO_VALUES
+: <a class="el" href="group__errors.html#gac1e36f8922e9321ca23c6884742f4fbd">eccodes.h</a>
+</li>
+<li>CODES_NOT_FOUND
+: <a class="el" href="group__errors.html#ga0c9413c3afbe47d2a6f2bba805360084">eccodes.h</a>
+</li>
+<li>CODES_NOT_IMPLEMENTED
+: <a class="el" href="group__errors.html#gaf833ff5b61aa5745728bd8c7dd37e27b">eccodes.h</a>
+</li>
+<li>CODES_NULL_HANDLE
+: <a class="el" href="group__errors.html#gac17665aa8fcb3f6422a80c4a666b47b0">eccodes.h</a>
+</li>
+<li>CODES_NULL_INDEX
+: <a class="el" href="group__errors.html#gabbdcba4ec6e2dd470b8f0611fdd37d52">eccodes.h</a>
+</li>
+<li>CODES_NULL_POINTER
+: <a class="el" href="group__errors.html#gacbe671c157599d6420eb8dfb1e792f6a">eccodes.h</a>
+</li>
+<li>CODES_OUT_OF_AREA
+: <a class="el" href="group__errors.html#ga1535af5117f762da30730d341a27c421">eccodes.h</a>
+</li>
+<li>CODES_OUT_OF_MEMORY
+: <a class="el" href="group__errors.html#gaca540f40b9e09270265636b3689d8c2e">eccodes.h</a>
+</li>
+<li>CODES_OUT_OF_RANGE
+: <a class="el" href="group__errors.html#ga8f0a03b5f41dfe79b5dc501ecc596f7b">eccodes.h</a>
+</li>
+<li>CODES_PREMATURE_END_OF_FILE
+: <a class="el" href="group__errors.html#ga6e92038c31cca9d63ec502de74979044">eccodes.h</a>
+</li>
+<li>CODES_READ_ONLY
+: <a class="el" href="group__errors.html#gab1809244c05808791f318e1e060592d3">eccodes.h</a>
+</li>
+<li>CODES_STRING_TOO_SMALL
+: <a class="el" href="group__errors.html#ga2d577c49ec3604d481c12f1bf5539eee">eccodes.h</a>
+</li>
+<li>CODES_SUCCESS
+: <a class="el" href="group__errors.html#ga62529e45321708e65678dfc155f1c842">eccodes.h</a>
+</li>
+<li>CODES_SWITCH_NO_MATCH
+: <a class="el" href="group__errors.html#ga76a9e4341bbdd4fa7aa6f19581294897">eccodes.h</a>
+</li>
+<li>CODES_TOO_MANY_ATTRIBUTES
+: <a class="el" href="group__errors.html#gad4cea7d28dfa21cd2eb03594158bc3d6">eccodes.h</a>
+</li>
+<li>CODES_UNDERFLOW
+: <a class="el" href="group__errors.html#ga4fa596b35745d80ac3def70a91f12c97">eccodes.h</a>
+</li>
+<li>CODES_UNSUPPORTED_EDITION
+: <a class="el" href="group__errors.html#ga4bc4702f061c30bd03ba48a455e1fdd0">eccodes.h</a>
+</li>
+<li>CODES_VALUE_CANNOT_BE_MISSING
+: <a class="el" href="group__errors.html#ga5795dad885ba6527afa8c2301bf8f3a3">eccodes.h</a>
+</li>
+<li>CODES_VALUE_DIFFERENT
+: <a class="el" href="group__errors.html#ga138dc954bee9af6f849c63699d6b6044">eccodes.h</a>
+</li>
+<li>CODES_WRONG_ARRAY_SIZE
+: <a class="el" href="group__errors.html#ga17496b69f982d69fc5ae83a5f5b785bf">eccodes.h</a>
+</li>
+<li>CODES_WRONG_BITMAP_SIZE
+: <a class="el" href="group__errors.html#gac049ccb7281fecb514b740bd937b6c3b">eccodes.h</a>
+</li>
+<li>CODES_WRONG_CONVERSION
+: <a class="el" href="group__errors.html#ga419b09c45fc88de701bd32dab76c3d83">eccodes.h</a>
+</li>
+<li>CODES_WRONG_GRID
+: <a class="el" href="group__errors.html#gab7fca3278f1c363103a066d1a1f83fba">eccodes.h</a>
+</li>
+<li>CODES_WRONG_LENGTH
+: <a class="el" href="group__errors.html#ga988dcc03601078149deac7e4fecbc22f">eccodes.h</a>
+</li>
+<li>CODES_WRONG_STEP
+: <a class="el" href="group__errors.html#gadb8db78e83ccc396163068af7d71d32e">eccodes.h</a>
+</li>
+<li>CODES_WRONG_STEP_UNIT
+: <a class="el" href="group__errors.html#ga201ef38b0482edf51e93bf94200dca96">eccodes.h</a>
+</li>
+<li>CODES_WRONG_TYPE
+: <a class="el" href="group__errors.html#ga399f4bf77424c64dbb7e94212deffd38">eccodes.h</a>
+</li>
 </ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
 </body>
 </html>
diff --git a/html/globals_func.html b/html/globals_func.html
index ab4bfe4..f3b4373 100644
--- a/html/globals_func.html
+++ b/html/globals_func.html
@@ -1,210 +1,359 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: Data Fields</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li class="current"><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: Globals</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
-<div class="tabs">
-  <ul>
-    <li><a href="files.html"><span>File List</span></a></li>
-    <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-  </ul>
-</div>
-<div class="tabs">
-  <ul>
-    <li><a href="globals.html"><span>All</span></a></li>
-    <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
-    <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-    <li><a href="globals_defs.html"><span>Defines</span></a></li>
-  </ul>
-</div>
-<div class="tabs">
-  <ul>
-    <li><a href="#index_g"><span>g</span></a></li>
-  </ul>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_defs.html"><span>Macros</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow4" class="tabs3">
+    <ul class="tablist">
+      <li><a href="#index_c"><span>c</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
 </div>
 
-<p>
- 
-<p>
-<h3><a class="anchor" name="index_g">- g -</a></h3><ul>
-<li>grib_context_delete()
-: <a class="el" href="group__context.html#g4bd1c4d8b32c1ae42227420ed2251d57">grib_api.h</a>
-<li>grib_context_get_default()
-: <a class="el" href="group__context.html#g01ce1b8dc121afe1fd8212ceef8c829d">grib_api.h</a>
-<li>grib_context_get_user_data()
-: <a class="el" href="group__context.html#g7063ea5ce72ed460a1978c26dbc6af89">grib_api.h</a>
-<li>grib_context_new()
-: <a class="el" href="group__context.html#gbbb93339feef87a0ef7c415fa484c022">grib_api.h</a>
-<li>grib_context_set_buffer_memory_proc()
-: <a class="el" href="group__context.html#g13ac96fc6a017f896cfe1325fcd7aa6b">grib_api.h</a>
-<li>grib_context_set_dump_mode()
-: <a class="el" href="group__context.html#gd007cf96b681b389dadbbb9e7540e321">grib_api.h</a>
-<li>grib_context_set_logging_proc()
-: <a class="el" href="group__context.html#g09581ce8cdeff9da0f38a78898097b9e">grib_api.h</a>
-<li>grib_context_set_memory_proc()
-: <a class="el" href="group__context.html#gf38d04b9b8438fca7a418b507915030a">grib_api.h</a>
-<li>grib_context_set_path()
-: <a class="el" href="group__context.html#g06f0601960b317f15b78396ed12b1881">grib_api.h</a>
-<li>grib_context_set_persistent_memory_proc()
-: <a class="el" href="group__context.html#g5cd4b2513883a0d5989d5643087c4097">grib_api.h</a>
-<li>grib_context_set_print_proc()
-: <a class="el" href="group__context.html#g68b597e40215c9ced7959c7350980d2f">grib_api.h</a>
-<li>grib_context_set_user_data()
-: <a class="el" href="group__context.html#gec49c14665a9b4faa90a74cb069b9a30">grib_api.h</a>
-<li>grib_copy_namespace()
-: <a class="el" href="group__get__set.html#g6315ad72aaaf7577bc7b9f546c506e74">grib_api.h</a>
-<li>grib_count_in_file()
-: <a class="el" href="group__grib__handle.html#gc7f5cb6af67fd0a42bec5376d5b54682">grib_api.h</a>
-<li>grib_dump_action_tree()
-: <a class="el" href="grib__api_8h.html#e1d347fdb06db3df5b5cba33cd2ea1a1">grib_api.h</a>
-<li>grib_dump_content()
-: <a class="el" href="grib__api_8h.html#67479e527e19f5a5b99696f37994ba21">grib_api.h</a>
-<li>grib_get_all_names()
-: <a class="el" href="grib__api_8h.html#289f68694d96f1af8a2c1a8de422e1b2">grib_api.h</a>
-<li>grib_get_api_version()
-: <a class="el" href="grib__api_8h.html#4e9690b3960a8c6607de77d41a47735f">grib_api.h</a>
-<li>grib_get_bytes()
-: <a class="el" href="group__get__set.html#g1b1ac2da661c638dad7d223419d541c6">grib_api.h</a>
-<li>grib_get_context()
-: <a class="el" href="group__context.html#ge4d49e82f57836891aa57fce24b59800">grib_api.h</a>
-<li>grib_get_double()
-: <a class="el" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e">grib_api.h</a>
-<li>grib_get_double_array()
-: <a class="el" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a">grib_api.h</a>
-<li>grib_get_double_element()
-: <a class="el" href="group__get__set.html#gec894541bbc8c4e9093803ce21146fa5">grib_api.h</a>
-<li>grib_get_double_elements()
-: <a class="el" href="group__get__set.html#gdff349943fef1036fcd1dd7a69738a7a">grib_api.h</a>
-<li>grib_get_error_message()
-: <a class="el" href="grib__api_8h.html#8e3f942fa243dd09f04d4ff6d2f43d36">grib_api.h</a>
-<li>grib_get_long()
-: <a class="el" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526">grib_api.h</a>
-<li>grib_get_long_array()
-: <a class="el" href="group__get__set.html#ga05493cedfee55f0b83d27e356123223">grib_api.h</a>
-<li>grib_get_message()
-: <a class="el" href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185">grib_api.h</a>
-<li>grib_get_message_copy()
-: <a class="el" href="group__handling__coded__messages.html#g9248c021d985da70cfeb075e469db874">grib_api.h</a>
-<li>grib_get_offset()
-: <a class="el" href="group__get__set.html#g3b40c8174568a6e2b7563a0e89d20ddf">grib_api.h</a>
-<li>grib_get_size()
-: <a class="el" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245">grib_api.h</a>
-<li>grib_get_string()
-: <a class="el" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053">grib_api.h</a>
-<li>grib_gribex_mode_off()
-: <a class="el" href="group__context.html#g6f6a5612649241d9ecae7e2a288bc436">grib_api.h</a>
-<li>grib_gribex_mode_on()
-: <a class="el" href="group__context.html#ge8e9e3cce24d282a1b34432926b868c0">grib_api.h</a>
-<li>grib_gts_header_off()
-: <a class="el" href="group__context.html#g9a3ce8e25ef3e59387015f906a79901a">grib_api.h</a>
-<li>grib_gts_header_on()
-: <a class="el" href="group__context.html#g8d72ab772809fba49a41b32909770dd1">grib_api.h</a>
-<li>grib_handle_clone()
-: <a class="el" href="group__grib__handle.html#ga63c93533fbbe2c8df482e19ca97c651">grib_api.h</a>
-<li>grib_handle_delete()
-: <a class="el" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677">grib_api.h</a>
-<li>grib_handle_new_from_file()
-: <a class="el" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5">grib_api.h</a>
-<li>grib_handle_new_from_index()
-: <a class="el" href="group__grib__index.html#ge7b9b1d59bd37a13de7e631e05606d8c">grib_api.h</a>
-<li>grib_handle_new_from_message()
-: <a class="el" href="group__grib__handle.html#gcf9ab4896fac2fbbe30a33b4d6028a01">grib_api.h</a>
-<li>grib_handle_new_from_message_copy()
-: <a class="el" href="group__grib__handle.html#gba8b4cc36b1a882c8a12716ef011d6be">grib_api.h</a>
-<li>grib_handle_new_from_multi_message()
-: <a class="el" href="group__grib__handle.html#g5990754a829e1d7a7ae4c5a1a8296bf2">grib_api.h</a>
-<li>grib_handle_new_from_samples()
-: <a class="el" href="group__grib__handle.html#gadefac64c19fb5ff06cf805ad4af06ff">grib_api.h</a>
-<li>grib_handle_new_from_template()
-: <a class="el" href="group__grib__handle.html#g11d247e5afa10bd52fb895dc4296143f">grib_api.h</a>
-<li>grib_index_delete()
-: <a class="el" href="group__grib__index.html#g13f2bb63c67bf8792c6678d3cc3daff7">grib_api.h</a>
-<li>grib_index_get_double()
-: <a class="el" href="group__grib__index.html#g814801233070dfd22304cdb06422d13a">grib_api.h</a>
-<li>grib_index_get_long()
-: <a class="el" href="group__grib__index.html#g85b6b4443f0f1230a7508aa15654697f">grib_api.h</a>
-<li>grib_index_get_size()
-: <a class="el" href="group__grib__index.html#g10236732fcb0c8d8e4a6bd8530d24672">grib_api.h</a>
-<li>grib_index_get_string()
-: <a class="el" href="group__grib__index.html#gd593e39f908bb6a7208be37eb9eba066">grib_api.h</a>
-<li>grib_index_new_from_file()
-: <a class="el" href="group__grib__index.html#g877e704bf0454a6a4ce91b382e808861">grib_api.h</a>
-<li>grib_index_select_double()
-: <a class="el" href="group__grib__index.html#g445565c93345d4c2e8fdbfe0b83fd16f">grib_api.h</a>
-<li>grib_index_select_long()
-: <a class="el" href="group__grib__index.html#g3c1009708be6ae6605b63a48f8dbaa0c">grib_api.h</a>
-<li>grib_index_select_string()
-: <a class="el" href="group__grib__index.html#gc3808ccf7101fc437da4a89a2b28f39d">grib_api.h</a>
-<li>grib_iterator_delete()
-: <a class="el" href="group__iterators.html#gd46ed73a16af56e6f3b46fe86ee8a759">grib_api.h</a>
-<li>grib_iterator_has_next()
-: <a class="el" href="group__iterators.html#g7beddf03a8335d5058a0760929af9b65">grib_api.h</a>
-<li>grib_iterator_new()
-: <a class="el" href="group__iterators.html#gefb1f87110bdce732edc9154cf0e7d58">grib_api.h</a>
-<li>grib_iterator_next()
-: <a class="el" href="group__iterators.html#g4f73056dbfdda3de0060559b9b39ea34">grib_api.h</a>
-<li>grib_iterator_previous()
-: <a class="el" href="group__iterators.html#ge33e4a6d3a2222f78ffc43eb7239ce3f">grib_api.h</a>
-<li>grib_iterator_reset()
-: <a class="el" href="group__iterators.html#gb8f3830e919c3c11f11530c08e9956c8">grib_api.h</a>
-<li>grib_keys_iterator_delete()
-: <a class="el" href="group__keys__iterator.html#g79716d2b701c3dbb3d3a8e633f35a40a">grib_api.h</a>
-<li>grib_keys_iterator_get_name()
-: <a class="el" href="group__keys__iterator.html#gec3348471f770965c07964e286249e12">grib_api.h</a>
-<li>grib_keys_iterator_new()
-: <a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_api.h</a>
-<li>grib_keys_iterator_next()
-: <a class="el" href="group__keys__iterator.html#g28f6ac808ecdc324fa3a47bc7b3f6dec">grib_api.h</a>
-<li>grib_keys_iterator_rewind()
-: <a class="el" href="group__keys__iterator.html#g15ceb24c7b8ac673d948ccdaf1ba5fd6">grib_api.h</a>
-<li>grib_multi_handle_append()
-: <a class="el" href="group__grib__handle.html#gb723d513ef118d0f2d8c440e15387337">grib_api.h</a>
-<li>grib_multi_handle_delete()
-: <a class="el" href="group__grib__handle.html#g706fb50a5a16b6932adb05d27a8ac626">grib_api.h</a>
-<li>grib_multi_handle_new()
-: <a class="el" href="group__grib__handle.html#g9e1911fcd2b32380937e2d60469d2d22">grib_api.h</a>
-<li>grib_multi_handle_write()
-: <a class="el" href="group__grib__handle.html#g48fc85388ca1ee23f6afa12bb0c125ed">grib_api.h</a>
-<li>grib_multi_support_off()
-: <a class="el" href="group__context.html#gc022270a99922ccc57147670ed2a58d4">grib_api.h</a>
-<li>grib_multi_support_on()
-: <a class="el" href="group__context.html#g3266536e68ebb6d4bbc4a22b29f0e8ea">grib_api.h</a>
-<li>grib_nearest_delete()
-: <a class="el" href="group__iterators.html#g2b3c0069013e1ad7b3e34f30b4659c15">grib_api.h</a>
-<li>grib_nearest_find()
-: <a class="el" href="group__iterators.html#g15043a2482608fb93a0385f3c3e86926">grib_api.h</a>
-<li>grib_nearest_find_multiple()
-: <a class="el" href="group__iterators.html#g4923d7a2e414c743410f1de71bb9648c">grib_api.h</a>
-<li>grib_nearest_new()
-: <a class="el" href="group__iterators.html#g4bd616cf0d0c4f5f147f4a207ddc7687">grib_api.h</a>
-<li>grib_print_api_version()
-: <a class="el" href="grib__api_8h.html#3cd2a817acbefb3089bfa36d2b40f1db">grib_api.h</a>
-<li>grib_set_bytes()
-: <a class="el" href="group__get__set.html#g4437bd0aa70cc2c2f942ace67023f4a1">grib_api.h</a>
-<li>grib_set_double()
-: <a class="el" href="group__get__set.html#g3f8802a5d3f2e7557e35e6e83acfc9e9">grib_api.h</a>
-<li>grib_set_double_array()
-: <a class="el" href="group__get__set.html#ga24d87e236a2469309d1176ee5925d77">grib_api.h</a>
-<li>grib_set_long()
-: <a class="el" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2">grib_api.h</a>
-<li>grib_set_long_array()
-: <a class="el" href="group__get__set.html#g6c4697dc7c6f450ad30d0a24a3f87016">grib_api.h</a>
-<li>grib_set_string()
-: <a class="el" href="group__get__set.html#g78143cc64571b454b0aba14246e9a53a">grib_api.h</a>
+<div class="contents">
+ 
+
+<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<li>codes_bufr_handle_new_from_file()
+: <a class="el" href="group__codes__handle.html#ga6958c3cd7e4059af5c26898a872262ff">eccodes.h</a>
+</li>
+<li>codes_bufr_handle_new_from_samples()
+: <a class="el" href="group__codes__handle.html#ga56d0f831e520ec7bc4a0ca334c63f557">eccodes.h</a>
+</li>
+<li>codes_context_delete()
+: <a class="el" href="group__context.html#gae6323d16b5e929f22126d0ddbf43dc7f">eccodes.h</a>
+</li>
+<li>codes_context_get_default()
+: <a class="el" href="group__context.html#ga3c1086a1abccc58db01609611c3e706d">eccodes.h</a>
+</li>
+<li>codes_context_set_definitions_path()
+: <a class="el" href="group__context.html#ga8abf0ff0f52f1e808edf092f2e7c1147">eccodes.h</a>
+</li>
+<li>codes_context_set_samples_path()
+: <a class="el" href="group__context.html#ga4f2f808f560a3b744b4c904b3d1a1c48">eccodes.h</a>
+</li>
+<li>codes_copy_namespace()
+: <a class="el" href="group__get__set.html#gaecd9fa4b22117df7569320ddaa2431e1">eccodes.h</a>
+</li>
+<li>codes_count_in_file()
+: <a class="el" href="group__codes__handle.html#ga4c2203d55c2c3ca792e44e4eb26edfb5">eccodes.h</a>
+</li>
+<li>codes_dump_action_tree()
+: <a class="el" href="eccodes_8h.html#a1d83df194092088785f1d794356d950d">eccodes.h</a>
+</li>
+<li>codes_dump_content()
+: <a class="el" href="eccodes_8h.html#ab9cf0dd7ede554cc4b8a56728d768d88">eccodes.h</a>
+</li>
+<li>codes_get_api_version()
+: <a class="el" href="eccodes_8h.html#aad3989fb11cbfce477ce7b42daa7b506">eccodes.h</a>
+</li>
+<li>codes_get_bytes()
+: <a class="el" href="group__get__set.html#ga252c3104621144fb370f302f3a3f6755">eccodes.h</a>
+</li>
+<li>codes_get_double()
+: <a class="el" href="group__get__set.html#ga93c1b612b2b70bbbff335b7d227316fc">eccodes.h</a>
+</li>
+<li>codes_get_double_array()
+: <a class="el" href="group__get__set.html#ga82b919c3196525ec2f21a8378d4cbbf4">eccodes.h</a>
+</li>
+<li>codes_get_double_element()
+: <a class="el" href="group__get__set.html#ga15b9a4d8dae3002f0b4f6ef4f1cfc197">eccodes.h</a>
+</li>
+<li>codes_get_double_elements()
+: <a class="el" href="group__get__set.html#ga853aad2cd2bea6b71b8c61fed6adfe0b">eccodes.h</a>
+</li>
+<li>codes_get_error_message()
+: <a class="el" href="eccodes_8h.html#a1257b15cb014452fd6e6662db06e4ede">eccodes.h</a>
+</li>
+<li>codes_get_git_sha1()
+: <a class="el" href="eccodes_8h.html#a82249b16ee12f2e574397f8cccaafb7a">eccodes.h</a>
+</li>
+<li>codes_get_gribex_mode()
+: <a class="el" href="group__context.html#ga13cba593f6e5b195bfc83bea419d5022">eccodes.h</a>
+</li>
+<li>codes_get_length()
+: <a class="el" href="group__get__set.html#ga98d694dc6caa24afdd393440c94c38f8">eccodes.h</a>
+</li>
+<li>codes_get_long()
+: <a class="el" href="group__get__set.html#ga6ff44dddc3bec09f710b0aa8d0dbded7">eccodes.h</a>
+</li>
+<li>codes_get_long_array()
+: <a class="el" href="group__get__set.html#gac43a3c0bf2561ceeb4bcc22d734b53b1">eccodes.h</a>
+</li>
+<li>codes_get_message()
+: <a class="el" href="group__handling__coded__messages.html#ga3d6f22a666e8e8dd7b33c98f2a7f3f62">eccodes.h</a>
+</li>
+<li>codes_get_message_copy()
+: <a class="el" href="group__handling__coded__messages.html#ga8b2cb8c072b886de83a8e089c004a630">eccodes.h</a>
+</li>
+<li>codes_get_offset()
+: <a class="el" href="group__get__set.html#gaefda2b7765e1b737bcd05a825d231a1d">eccodes.h</a>
+</li>
+<li>codes_get_size()
+: <a class="el" href="group__get__set.html#ga614d4f7a6c789a4fe60ea976b6644343">eccodes.h</a>
+</li>
+<li>codes_get_string()
+: <a class="el" href="group__get__set.html#ga638d7bbe8dafd11847222a99b259f408">eccodes.h</a>
+</li>
+<li>codes_grib_get_data()
+: <a class="el" href="group__iterators.html#ga9d8fdb87efce9d49ac54853ee5871e01">eccodes.h</a>
+</li>
+<li>codes_grib_handle_new_from_file()
+: <a class="el" href="group__codes__handle.html#ga36de77229cc3b386d26c1e7b52c21e0e">eccodes.h</a>
+</li>
+<li>codes_grib_handle_new_from_multi_message()
+: <a class="el" href="group__codes__handle.html#ga385864d5f06e1de0e8ee13388ca4117c">eccodes.h</a>
+</li>
+<li>codes_grib_handle_new_from_samples()
+: <a class="el" href="group__codes__handle.html#ga3b281a237e311c6b8fa4bd7096d7e025">eccodes.h</a>
+</li>
+<li>codes_grib_iterator_delete()
+: <a class="el" href="group__iterators.html#ga3999693d3932a62eada0d1de5b594d2f">eccodes.h</a>
+</li>
+<li>codes_grib_iterator_has_next()
+: <a class="el" href="group__iterators.html#ga97dfa89fe0ebed41b238d98bac36db8a">eccodes.h</a>
+</li>
+<li>codes_grib_iterator_new()
+: <a class="el" href="group__iterators.html#ga250295a1b927401bcb1e03aac032396c">eccodes.h</a>
+</li>
+<li>codes_grib_iterator_next()
+: <a class="el" href="group__iterators.html#ga9bc83fc66d5f39ecf123d3c3e5b1fecf">eccodes.h</a>
+</li>
+<li>codes_grib_iterator_previous()
+: <a class="el" href="group__iterators.html#ga93ef62613c251baa5ada3924d3c856ac">eccodes.h</a>
+</li>
+<li>codes_grib_iterator_reset()
+: <a class="el" href="group__iterators.html#ga635320df5854ae08367fed2e5f895e2b">eccodes.h</a>
+</li>
+<li>codes_grib_multi_handle_append()
+: <a class="el" href="group__codes__handle.html#ga068715aab8b82a5d3092064b6bc27f3d">eccodes.h</a>
+</li>
+<li>codes_grib_multi_handle_delete()
+: <a class="el" href="group__codes__handle.html#ga85a955bdd3012ce499e50768e298b849">eccodes.h</a>
+</li>
+<li>codes_grib_multi_handle_new()
+: <a class="el" href="group__codes__handle.html#ga5ff59672d9eab49c0285c8f60e379d88">eccodes.h</a>
+</li>
+<li>codes_grib_multi_handle_write()
+: <a class="el" href="group__codes__handle.html#gac06089d897eea71d8944cc622a45737f">eccodes.h</a>
+</li>
+<li>codes_grib_multi_support_off()
+: <a class="el" href="group__context.html#gafb670b14a995b47a9d8896fc5ca67383">eccodes.h</a>
+</li>
+<li>codes_grib_multi_support_on()
+: <a class="el" href="group__context.html#ga7775423a069b2b8b5535b5f68090b847">eccodes.h</a>
+</li>
+<li>codes_grib_multi_support_reset_file()
+: <a class="el" href="group__context.html#ga72e9dabca4fc1d1bbb4cf3e01f77c9fd">eccodes.h</a>
+</li>
+<li>codes_grib_nearest_delete()
+: <a class="el" href="group__iterators.html#ga8c3b2ed99693a097211000552876a61d">eccodes.h</a>
+</li>
+<li>codes_grib_nearest_find()
+: <a class="el" href="group__iterators.html#ga8c53c53033259beaf32055154f193a83">eccodes.h</a>
+</li>
+<li>codes_grib_nearest_find_multiple()
+: <a class="el" href="group__iterators.html#ga6338ab9e3fb68c25d4fe48a8467cdbfc">eccodes.h</a>
+</li>
+<li>codes_grib_nearest_new()
+: <a class="el" href="group__iterators.html#ga201d49e6c835f3b6ed041147d0bf4898">eccodes.h</a>
+</li>
+<li>codes_gribex_mode_off()
+: <a class="el" href="group__context.html#ga810b375ccacfb6646e44b8cd0da5ee5b">eccodes.h</a>
+</li>
+<li>codes_gribex_mode_on()
+: <a class="el" href="group__context.html#ga51838183704645cc11a270e5f755c30c">eccodes.h</a>
+</li>
+<li>codes_gts_header_off()
+: <a class="el" href="group__context.html#ga5c766bc156cd1ebcf70139965a41e669">eccodes.h</a>
+</li>
+<li>codes_gts_header_on()
+: <a class="el" href="group__context.html#ga504a2b1bd0d3b229c120c8285895b03a">eccodes.h</a>
+</li>
+<li>codes_handle_clone()
+: <a class="el" href="group__codes__handle.html#ga7b226527aa98d90f2bdb470105732878">eccodes.h</a>
+</li>
+<li>codes_handle_delete()
+: <a class="el" href="group__codes__handle.html#ga358ea000ceed775e7367ccab581be978">eccodes.h</a>
+</li>
+<li>codes_handle_new_from_file()
+: <a class="el" href="group__codes__handle.html#ga6ec42bd6272b4a0f2cb2b220b86c71c8">eccodes.h</a>
+</li>
+<li>codes_handle_new_from_index()
+: <a class="el" href="group__codes__index.html#gae1947cf7225ca1809c5491aa671d6b91">eccodes.h</a>
+</li>
+<li>codes_handle_new_from_message()
+: <a class="el" href="group__codes__handle.html#gaece49330c864391261cd6a0c10a18dc2">eccodes.h</a>
+</li>
+<li>codes_handle_new_from_message_copy()
+: <a class="el" href="group__codes__handle.html#ga079df0c709e381812ae13af08c354032">eccodes.h</a>
+</li>
+<li>codes_index_add_file()
+: <a class="el" href="group__codes__index.html#ga8fa6ca199182c48c0327e61ac98dfd00">eccodes.h</a>
+</li>
+<li>codes_index_delete()
+: <a class="el" href="group__codes__index.html#ga03643d8adf2aa7836e1848b20843b31c">eccodes.h</a>
+</li>
+<li>codes_index_get_double()
+: <a class="el" href="group__codes__index.html#ga8a2fae0f5eeb8d708c1831bc1b9b9004">eccodes.h</a>
+</li>
+<li>codes_index_get_long()
+: <a class="el" href="group__codes__index.html#gafb483b993d462b2f0576af70c1aa4cc7">eccodes.h</a>
+</li>
+<li>codes_index_get_size()
+: <a class="el" href="group__codes__index.html#gab1aa5fde30d26360349085efec936c6c">eccodes.h</a>
+</li>
+<li>codes_index_get_string()
+: <a class="el" href="group__codes__index.html#ga86ea092af6a89b0322b873147bba523d">eccodes.h</a>
+</li>
+<li>codes_index_new()
+: <a class="el" href="group__codes__index.html#ga0d7015518d426c012ba6c2b848af96d9">eccodes.h</a>
+</li>
+<li>codes_index_new_from_file()
+: <a class="el" href="group__codes__index.html#ga42b26aa62c53cef50f0bd9e75ed88281">eccodes.h</a>
+</li>
+<li>codes_index_select_double()
+: <a class="el" href="group__codes__index.html#ga3baa4a80cd517d55f088fee7f4630fff">eccodes.h</a>
+</li>
+<li>codes_index_select_long()
+: <a class="el" href="group__codes__index.html#gac0a14aca2fc5385684fdba1cb668959a">eccodes.h</a>
+</li>
+<li>codes_index_select_string()
+: <a class="el" href="group__codes__index.html#gafa8d7b29dfe42d805714db95b5ca044a">eccodes.h</a>
+</li>
+<li>codes_keys_iterator_delete()
+: <a class="el" href="group__keys__iterator.html#gafdafe484a0e5a82732ddcbaec1e272a5">eccodes.h</a>
+</li>
+<li>codes_keys_iterator_get_name()
+: <a class="el" href="group__keys__iterator.html#ga1049604cb5a47359f9c7f7a42571a48b">eccodes.h</a>
+</li>
+<li>codes_keys_iterator_new()
+: <a class="el" href="group__keys__iterator.html#gad3394316cf1f3c779648fe81428adb8f">eccodes.h</a>
+</li>
+<li>codes_keys_iterator_next()
+: <a class="el" href="group__keys__iterator.html#ga804b63ac6be7c95aac71a9050008e409">eccodes.h</a>
+</li>
+<li>codes_keys_iterator_rewind()
+: <a class="el" href="group__keys__iterator.html#ga2f611291982ea92cabc0ca70691291bf">eccodes.h</a>
+</li>
+<li>codes_print_api_version()
+: <a class="el" href="eccodes_8h.html#a8be52d40a8fb51642720d0b8adf6cdce">eccodes.h</a>
+</li>
+<li>codes_set_bytes()
+: <a class="el" href="group__get__set.html#ga7acb877bea87a39b3778c21dd8de46c2">eccodes.h</a>
+</li>
+<li>codes_set_double()
+: <a class="el" href="group__get__set.html#ga7d2d68482b903b40b91a0b334855db5f">eccodes.h</a>
+</li>
+<li>codes_set_double_array()
+: <a class="el" href="group__get__set.html#gaff9b5bde2baf126d93f43100e5c1d3f7">eccodes.h</a>
+</li>
+<li>codes_set_force_double_array()
+: <a class="el" href="group__get__set.html#ga5610a608f1e58996fa48c7ac8f3859a3">eccodes.h</a>
+</li>
+<li>codes_set_long()
+: <a class="el" href="group__get__set.html#ga385881244ca6ef4be9ecee93025c862f">eccodes.h</a>
+</li>
+<li>codes_set_long_array()
+: <a class="el" href="group__get__set.html#gabb904f520644caa008034bd2be9349ec">eccodes.h</a>
+</li>
+<li>codes_set_string()
+: <a class="el" href="group__get__set.html#ga6062cdd5950966bffa72e74708f85368">eccodes.h</a>
+</li>
+<li>codes_set_string_array()
+: <a class="el" href="group__get__set.html#ga6840ee00df4366a431bedcef609f8ae5">eccodes.h</a>
+</li>
+<li>codes_write_message()
+: <a class="el" href="group__codes__handle.html#gac82dbaba240ebf6e76cdbcf2007a6bee">eccodes.h</a>
+</li>
 </ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
 </body>
 </html>
diff --git a/html/globals_type.html b/html/globals_type.html
deleted file mode 100644
index 5bc06ef..0000000
--- a/html/globals_type.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: Data Fields</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li class="current"><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<div class="tabs">
-  <ul>
-    <li><a href="files.html"><span>File List</span></a></li>
-    <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-  </ul>
-</div>
-<div class="tabs">
-  <ul>
-    <li><a href="globals.html"><span>All</span></a></li>
-    <li><a href="globals_func.html"><span>Functions</span></a></li>
-    <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
-    <li><a href="globals_defs.html"><span>Defines</span></a></li>
-  </ul>
-</div>
- 
-<p>
-<ul>
-<li>grib_context
-: <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_api.h</a>
-<li>grib_data_eof_proc
-: <a class="el" href="group__context.html#g49b4be77db1a3764ca291e7b45fce366">grib_api.h</a>
-<li>grib_data_read_proc
-: <a class="el" href="group__context.html#gfcaeb1a8fb78e0028906ee1e2ddbfcc0">grib_api.h</a>
-<li>grib_data_seek_proc
-: <a class="el" href="group__context.html#g9d4894f207e7f5d70533371915e45a2d">grib_api.h</a>
-<li>grib_data_tell_proc
-: <a class="el" href="group__context.html#g5fc575ad1d5736763f2d688b82597b09">grib_api.h</a>
-<li>grib_data_write_proc
-: <a class="el" href="group__context.html#g85f5907a2b006b370be8e176e92d0248">grib_api.h</a>
-<li>grib_free_proc
-: <a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca">grib_api.h</a>
-<li>grib_handle
-: <a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_api.h</a>
-<li>grib_index
-: <a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_api.h</a>
-<li>grib_iterator
-: <a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_api.h</a>
-<li>grib_keys_iterator
-: <a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_api.h</a>
-<li>grib_log_proc
-: <a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994">grib_api.h</a>
-<li>grib_malloc_proc
-: <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_api.h</a>
-<li>grib_multi_handle
-: <a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_api.h</a>
-<li>grib_nearest
-: <a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_api.h</a>
-<li>grib_print_proc
-: <a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0">grib_api.h</a>
-<li>grib_realloc_proc
-: <a class="el" href="group__context.html#gcfc03db8667b1019d896ab2ab47dc12d">grib_api.h</a>
-</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/grib__api_8h.html b/html/grib__api_8h.html
deleted file mode 100644
index 387efb6..0000000
--- a/html/grib__api_8h.html
+++ /dev/null
@@ -1,1602 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: grib_api.h File Reference</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li class="current"><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>grib_api.h File Reference</h1>Copyright 2005-2016 ECMWF. <a href="#_details">More...</a>
-<p>
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g0e4d2d943ddd61d0b877060e6fbea405">GRIB_KEYS_ITERATOR_ALL_KEYS</a>   0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g22b6978a432db7211a270438077f7062">GRIB_KEYS_ITERATOR_SKIP_READ_ONLY</a>   (1<<0)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ge665875b6303dab2265bbb088c723860">GRIB_KEYS_ITERATOR_SKIP_OPTIONAL</a>   (1<<1)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g37ad0fca3eb784fed7e2b4a44e1ca2b6">GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC</a>   (1<<2)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g52ad3f33022d82a46cd80cb99a1307ff">GRIB_KEYS_ITERATOR_SKIP_CODED</a>   (1<<3)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g26fe182483e385904cc68695b1c42131">GRIB_KEYS_ITERATOR_SKIP_COMPUTED</a>   (1<<4)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ge64e8f24f3094903d6a686a213f92e4e">GRIB_KEYS_ITERATOR_SKIP_DUPLICATES</a>   (1<<5)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gcbef496e484e5e18c799f74dd5cdfff7">GRIB_KEYS_ITERATOR_SKIP_FUNCTION</a>   (1<<6)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#5ec59f24fc07a0e9d05768e908b9eb41">GRIB_SUCCESS</a>   0</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">No error.  <a href="#5ec59f24fc07a0e9d05768e908b9eb41"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#3bd3d72fe8bc116ca08c2d4b99203768">GRIB_END_OF_FILE</a>   -1</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">End of ressource reached.  <a href="#3bd3d72fe8bc116ca08c2d4b99203768"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#f8cf05fc5d45cb95ad0972bdcc3f08d3">GRIB_INTERNAL_ERROR</a>   -2</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Internal error.  <a href="#f8cf05fc5d45cb95ad0972bdcc3f08d3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#2d8e7aa042bcbaf91aa090a369a33db6">GRIB_BUFFER_TOO_SMALL</a>   -3</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Passed buffer is too small.  <a href="#2d8e7aa042bcbaf91aa090a369a33db6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#5a0fab73e448bc57ddd04b59506ccd71">GRIB_NOT_IMPLEMENTED</a>   -4</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Function not yet implemented.  <a href="#5a0fab73e448bc57ddd04b59506ccd71"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#639bb601cfd8d954e49cc7886ea1c6ad">GRIB_7777_NOT_FOUND</a>   -5</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Missing 7777 at end of message.  <a href="#639bb601cfd8d954e49cc7886ea1c6ad"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#4cfa6d261a3a15912702143929053227">GRIB_ARRAY_TOO_SMALL</a>   -6</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Passed array is too small.  <a href="#4cfa6d261a3a15912702143929053227"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#3441223fb03920c378d38c6f50e98d4a">GRIB_FILE_NOT_FOUND</a>   -7</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">File not found.  <a href="#3441223fb03920c378d38c6f50e98d4a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#75648d913f443d2a480e408b59884a92">GRIB_CODE_NOT_FOUND_IN_TABLE</a>   -8</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Code not found in code table.  <a href="#75648d913f443d2a480e408b59884a92"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#4c26f350e2a20a2cd810a7e8a890973f">GRIB_STRING_TOO_SMALL_FOR_CODE_NAME</a>   -9</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Code cannot unpack because of string too small.  <a href="#4c26f350e2a20a2cd810a7e8a890973f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#b04c311e9de064f156fd238dbf04afef">GRIB_WRONG_ARRAY_SIZE</a>   -10</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Array size mismatch.  <a href="#b04c311e9de064f156fd238dbf04afef"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#86c4b3873fded7e8ea28644dcbcd5f87">GRIB_NOT_FOUND</a>   -11</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Key/value not found.  <a href="#86c4b3873fded7e8ea28644dcbcd5f87"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#a7fe5a55b1005f7c3d14e8bfaee33271">GRIB_IO_PROBLEM</a>   -12</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Input output problem.  <a href="#a7fe5a55b1005f7c3d14e8bfaee33271"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#926f6ede936bd30c5339c94f2d84c8ae">GRIB_INVALID_MESSAGE</a>   -13</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Message invalid.  <a href="#926f6ede936bd30c5339c94f2d84c8ae"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#4d24b723749a821f0853a2013d45746c">GRIB_DECODING_ERROR</a>   -14</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Decoding invalid.  <a href="#4d24b723749a821f0853a2013d45746c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#154c771c186435e746ab12d9a48905ab">GRIB_ENCODING_ERROR</a>   -15</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Encoding invalid.  <a href="#154c771c186435e746ab12d9a48905ab"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#7fc7702ef0de098b4a58e2fb9c9a442c">GRIB_NO_MORE_IN_SET</a>   -16</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Code cannot unpack because of string too small.  <a href="#7fc7702ef0de098b4a58e2fb9c9a442c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#482b9d48445b7ad202be877e8cc10ea8">GRIB_GEOCALCULUS_PROBLEM</a>   -17</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Problem with calculation of geographic attributes.  <a href="#482b9d48445b7ad202be877e8cc10ea8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#b405f321cbb4b4c7dec9eb1bd4b65b50">GRIB_OUT_OF_MEMORY</a>   -18</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Out of memory.  <a href="#b405f321cbb4b4c7dec9eb1bd4b65b50"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#e18012f7fad721db7f865655f2b5956e">GRIB_READ_ONLY</a>   -19</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Value is read only.  <a href="#e18012f7fad721db7f865655f2b5956e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#9b9c7d3380e2e440d8c16ec1d49a4c17">GRIB_INVALID_ARGUMENT</a>   -20</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid argument.  <a href="#9b9c7d3380e2e440d8c16ec1d49a4c17"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#1c5efccc4485ae72e7714d2443e6d89c">GRIB_NULL_HANDLE</a>   -21</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Null handle.  <a href="#1c5efccc4485ae72e7714d2443e6d89c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#9d2c9bfa553a51b2fcab92ad31bef8ef">GRIB_INVALID_SECTION_NUMBER</a>   -22</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid section number.  <a href="#9d2c9bfa553a51b2fcab92ad31bef8ef"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#b075c9c53912dc18ea9feee1f710cb18">GRIB_VALUE_CANNOT_BE_MISSING</a>   -23</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Value cannot be missing.  <a href="#b075c9c53912dc18ea9feee1f710cb18"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#1792ca7e8d3e6f3e4bc2dc406408ec8f">GRIB_WRONG_LENGTH</a>   -24</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Wrong message length.  <a href="#1792ca7e8d3e6f3e4bc2dc406408ec8f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#fc09d64f4cb3ba8d272b9e3c9b5dd363">GRIB_INVALID_TYPE</a>   -25</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid key type.  <a href="#fc09d64f4cb3ba8d272b9e3c9b5dd363"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#08dcf5be008fd3c7a524ab3de96f88c2">GRIB_WRONG_STEP</a>   -26</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Unable to set step.  <a href="#08dcf5be008fd3c7a524ab3de96f88c2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#c10988d7d2b76f906e1281c2a6602b1a">GRIB_WRONG_STEP_UNIT</a>   -27</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Wrong units for step (step must be integer).  <a href="#c10988d7d2b76f906e1281c2a6602b1a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#c8091f4d703636468d7c303be9e4d881">GRIB_INVALID_FILE</a>   -28</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid file id.  <a href="#c8091f4d703636468d7c303be9e4d881"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#533ac9a5250151b97b6c7650db56897d">GRIB_INVALID_GRIB</a>   -29</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid grib id.  <a href="#533ac9a5250151b97b6c7650db56897d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#519a1c9eddd9ce63ef87fd182c008737">GRIB_INVALID_INDEX</a>   -30</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid index id.  <a href="#519a1c9eddd9ce63ef87fd182c008737"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#45eb384ee2e382f1acac24594d66c6b0">GRIB_INVALID_ITERATOR</a>   -31</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid iterator id.  <a href="#45eb384ee2e382f1acac24594d66c6b0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#36309323248d2ac3729a4552c2fb1c17">GRIB_INVALID_KEYS_ITERATOR</a>   -32</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid keys iterator id.  <a href="#36309323248d2ac3729a4552c2fb1c17"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#aa0306c1ea428240fce27176dafbd7fe">GRIB_INVALID_NEAREST</a>   -33</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid nearest id.  <a href="#aa0306c1ea428240fce27176dafbd7fe"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#762034d39b53d2861f2743b0aec8d2a4">GRIB_INVALID_ORDERBY</a>   -34</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Invalid order by.  <a href="#762034d39b53d2861f2743b0aec8d2a4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#8fd56a3beb7556606f644091aba1fcbd">GRIB_MISSING_KEY</a>   -35</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Missing a key from the fieldset.  <a href="#8fd56a3beb7556606f644091aba1fcbd"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#ba25cca898d918763a9a8a9bd3860f00">GRIB_OUT_OF_AREA</a>   -36</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The point is out of the grid area.  <a href="#ba25cca898d918763a9a8a9bd3860f00"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#1a973e1ef2c6ae7fb132bdece2563fef">GRIB_CONCEPT_NO_MATCH</a>   -37</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Concept no match.  <a href="#1a973e1ef2c6ae7fb132bdece2563fef"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#8cd08a4486ad956bf1f20434f84cd04e">GRIB_NO_DEFINITIONS</a>   -38</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Definitions files not found.  <a href="#8cd08a4486ad956bf1f20434f84cd04e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#53847b78a3259d3df6c76042360cbd97">GRIB_WRONG_TYPE</a>   -39</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Wrong type while packing.  <a href="#53847b78a3259d3df6c76042360cbd97"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#86c56896fe711d7b879f1fbf305fd468">GRIB_END</a>   -40</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">End of resource.  <a href="#86c56896fe711d7b879f1fbf305fd468"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#dfdf56b00d215ff68aeb1adbffc348ce">GRIB_NO_VALUES</a>   -41</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Unable to code a field without values.  <a href="#dfdf56b00d215ff68aeb1adbffc348ce"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#5a73a75bffabf39673ba9bc3a4b164b6">GRIB_WRONG_GRID</a>   -42</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grid description is wrong or inconsistent.  <a href="#5a73a75bffabf39673ba9bc3a4b164b6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#afa8827ca82c170dc27bcfb723b6ba76">GRIB_END_OF_INDEX</a>   -43</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">End of index reached.  <a href="#afa8827ca82c170dc27bcfb723b6ba76"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#042ed38858c5cf72be88cfada1737f3b">GRIB_NULL_INDEX</a>   -44</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Null index.  <a href="#042ed38858c5cf72be88cfada1737f3b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#3baff96d54517c85e433f8150642ef0b">GRIB_PREMATURE_END_OF_FILE</a>   -45</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">End of ressource reached when reading message.  <a href="#3baff96d54517c85e433f8150642ef0b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#aaa04f4cf931846628d4e71e40b02349">GRIB_INTERNAL_ARRAY_TOO_SMALL</a>   -46</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An internal array is too small.  <a href="#aaa04f4cf931846628d4e71e40b02349"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#1e15e27a144761974cea9e90f2ba168d">GRIB_MESSAGE_TOO_LARGE</a>   -47</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Message is too large for the current architecture.  <a href="#1e15e27a144761974cea9e90f2ba168d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#38f3c639d01804ef1240463b2beb44e9">GRIB_CONSTANT_FIELD</a>   -48</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Constant field.  <a href="#38f3c639d01804ef1240463b2beb44e9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#83d93f23c64220209e5c326a38f32003">GRIB_SWITCH_NO_MATCH</a>   -49</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Switch unable to find a matching case.  <a href="#83d93f23c64220209e5c326a38f32003"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
-<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
-<a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
-<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
-<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
-<a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
-<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca">grib_free_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *data)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib free procedure, format of a procedure referenced in the context that is used to free memory.  <a href="group__context.html#g807998f481ebb5ab8916b23669bc38ca"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, size_t length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib malloc procedure, format of a procedure referenced in the context that is used to allocate memory.  <a href="group__context.html#ge40ef151522f628d0a0300861e1869e0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gcfc03db8667b1019d896ab2ab47dc12d">grib_realloc_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *data, size_t length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib realloc procedure, format of a procedure referenced in the context that is used to reallocate memory.  <a href="group__context.html#gcfc03db8667b1019d896ab2ab47dc12d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994">grib_log_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, int level, const char *mesg)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib loc proc, format of a procedure referenced in the context that is used to log internal messages.  <a href="group__context.html#gba007477d7d085d602184ae4df95f994"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0">grib_print_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *descriptor, const char *mesg)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib print proc, format of a procedure referenced in the context that is used to print external messages.  <a href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef size_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gfcaeb1a8fb78e0028906ee1e2ddbfcc0">grib_data_read_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *ptr, size_t size, void *stream)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data read proc, format of a procedure referenced in the context that is used to read from a stream in a resource.  <a href="group__context.html#gfcaeb1a8fb78e0028906ee1e2ddbfcc0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef size_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g85f5907a2b006b370be8e176e92d0248">grib_data_write_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const void *ptr, size_t size, void *stream)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data read write, format of a procedure referenced in the context that is used to write to a stream from a resource.  <a href="group__context.html#g85f5907a2b006b370be8e176e92d0248"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef off_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g5fc575ad1d5736763f2d688b82597b09">grib_data_tell_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *stream)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data tell, format of a procedure referenced in the context that is used to tell the current position in a stream.  <a href="group__context.html#g5fc575ad1d5736763f2d688b82597b09"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef off_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g9d4894f207e7f5d70533371915e45a2d">grib_data_seek_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, off_t offset, int whence, void *stream)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data seek, format of a procedure referenced in the context that is used to seek the current position in a stream.  <a href="group__context.html#g9d4894f207e7f5d70533371915e45a2d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g49b4be77db1a3764ca291e7b45fce366">grib_data_eof_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *stream)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data eof, format of a procedure referenced in the context that is used to test end of file.  <a href="group__context.html#g49b4be77db1a3764ca291e7b45fce366"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#g877e704bf0454a6a4ce91b382e808861">grib_index_new_from_file</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, char *filename, const char *keys, int *err)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new index form a file.  <a href="group__grib__index.html#g877e704bf0454a6a4ce91b382e808861"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#g10236732fcb0c8d8e4a6bd8530d24672">grib_index_get_size</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index, const char *key, size_t *size)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the number of distinct values of the key in argument contained in the index.  <a href="group__grib__index.html#g10236732fcb0c8d8e4a6bd8530d24672"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#g85b6b4443f0f1230a7508aa15654697f">grib_index_get_long</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index, const char *key, long *values, size_t *size)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="group__grib__index.html#g85b6b4443f0f1230a7508aa15654697f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#g814801233070dfd22304cdb06422d13a">grib_index_get_double</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index, const char *key, double *values, size_t *size)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="group__grib__index.html#g814801233070dfd22304cdb06422d13a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#gd593e39f908bb6a7208be37eb9eba066">grib_index_get_string</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index, const char *key, char **values, size_t *size)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="group__grib__index.html#gd593e39f908bb6a7208be37eb9eba066"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#g3c1009708be6ae6605b63a48f8dbaa0c">grib_index_select_long</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index, const char *key, long value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="group__grib__index.html#g3c1009708be6ae6605b63a48f8dbaa0c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#g445565c93345d4c2e8fdbfe0b83fd16f">grib_index_select_double</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index, const char *key, double value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="group__grib__index.html#g445565c93345d4c2e8fdbfe0b83fd16f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#gc3808ccf7101fc437da4a89a2b28f39d">grib_index_select_string</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index, const char *key, char *value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="group__grib__index.html#gc3808ccf7101fc437da4a89a2b28f39d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#ge7b9b1d59bd37a13de7e631e05606d8c">grib_handle_new_from_index</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index, int *err)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new handle from an index after having selected the key values.  <a href="group__grib__index.html#ge7b9b1d59bd37a13de7e631e05606d8c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__index.html#g13f2bb63c67bf8792c6678d3cc3daff7">grib_index_delete</a> (<a class="el" href="group__grib__index.html#g33fe0de8d4b8ef9ab3cced622f091e43">grib_index</a> *index)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Delete the index.  <a href="group__grib__index.html#g13f2bb63c67bf8792c6678d3cc3daff7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gc7f5cb6af67fd0a42bec5376d5b54682">grib_count_in_file</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, FILE *f, int *n)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Counts the messages contained in a file resource.  <a href="group__grib__handle.html#gc7f5cb6af67fd0a42bec5376d5b54682"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5">grib_handle_new_from_file</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, FILE *f, int *error)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a file resource.  <a href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gcf9ab4896fac2fbbe30a33b4d6028a01">grib_handle_new_from_message</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *data, size_t data_len)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message in memory.  <a href="group__grib__handle.html#gcf9ab4896fac2fbbe30a33b4d6028a01"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g5990754a829e1d7a7ae4c5a1a8296bf2">grib_handle_new_from_multi_message</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void **data, size_t *data_len, int *error)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message in memory.  <a href="group__grib__handle.html#g5990754a829e1d7a7ae4c5a1a8296bf2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gba8b4cc36b1a882c8a12716ef011d6be">grib_handle_new_from_message_copy</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const void *data, size_t data_len)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message.  <a href="group__grib__handle.html#gba8b4cc36b1a882c8a12716ef011d6be"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g11d247e5afa10bd52fb895dc4296143f">grib_handle_new_from_template</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const char *res_name)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a read_only template resource.  <a href="group__grib__handle.html#g11d247e5afa10bd52fb895dc4296143f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gadefac64c19fb5ff06cf805ad4af06ff">grib_handle_new_from_samples</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const char *res_name)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a message contained in a samples directory.  <a href="group__grib__handle.html#gadefac64c19fb5ff06cf805ad4af06ff"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#ga63c93533fbbe2c8df482e19ca97c651">grib_handle_clone</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Clone an existing handle using the context of the original handle, The message is copied and reparsed.  <a href="group__grib__handle.html#ga63c93533fbbe2c8df482e19ca97c651"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677">grib_handle_delete</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees a handle, also frees the message if it is not a user message.  <a href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g9e1911fcd2b32380937e2d60469d2d22">grib_multi_handle_new</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an empty multi field handle.  <a href="group__grib__handle.html#g9e1911fcd2b32380937e2d60469d2d22"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gb723d513ef118d0f2d8c440e15387337">grib_multi_handle_append</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, int start_section, <a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> *mh)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Append the sections starting with start_section of the message pointed by h at the end of the multi field handle mh.  <a href="group__grib__handle.html#gb723d513ef118d0f2d8c440e15387337"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g706fb50a5a16b6932adb05d27a8ac626">grib_multi_handle_delete</a> (<a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> *mh)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Delete multi field handle.  <a href="group__grib__handle.html#g706fb50a5a16b6932adb05d27a8ac626"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g48fc85388ca1ee23f6afa12bb0c125ed">grib_multi_handle_write</a> (<a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> *mh, FILE *f)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Write a multi field handle in a file.  <a href="group__grib__handle.html#g48fc85388ca1ee23f6afa12bb0c125ed"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185">grib_get_message</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const void **message, size_t *message_length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">getting the message attached to a handle  <a href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__handling__coded__messages.html#g9248c021d985da70cfeb075e469db874">grib_get_message_copy</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, void *message, size_t *message_length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">getting a copy of the message attached to a handle  <a href="group__handling__coded__messages.html#g9248c021d985da70cfeb075e469db874"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#gefb1f87110bdce732edc9154cf0e7d58">grib_iterator_new</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, unsigned long flags, int *error)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new iterator from a handle, using current geometry and values.  <a href="group__iterators.html#gefb1f87110bdce732edc9154cf0e7d58"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g4f73056dbfdda3de0060559b9b39ea34">grib_iterator_next</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i, double *lat, double *lon, double *value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the next value from an iterator.  <a href="group__iterators.html#g4f73056dbfdda3de0060559b9b39ea34"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ge33e4a6d3a2222f78ffc43eb7239ce3f">grib_iterator_previous</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i, double *lat, double *lon, double *value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the previous value from an iterator.  <a href="group__iterators.html#ge33e4a6d3a2222f78ffc43eb7239ce3f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g7beddf03a8335d5058a0760929af9b65">grib_iterator_has_next</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Test procedure for values in an iterator.  <a href="group__iterators.html#g7beddf03a8335d5058a0760929af9b65"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#gb8f3830e919c3c11f11530c08e9956c8">grib_iterator_reset</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Test procedure for values in an iterator.  <a href="group__iterators.html#gb8f3830e919c3c11f11530c08e9956c8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#gd46ed73a16af56e6f3b46fe86ee8a759">grib_iterator_delete</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees an iterator from memory.  <a href="group__iterators.html#gd46ed73a16af56e6f3b46fe86ee8a759"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g4bd616cf0d0c4f5f147f4a207ddc7687">grib_nearest_new</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, int *error)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new nearest from a handle, using current geometry .  <a href="group__iterators.html#g4bd616cf0d0c4f5f147f4a207ddc7687"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g15043a2482608fb93a0385f3c3e86926">grib_nearest_find</a> (<a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> *nearest, <a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, double inlat, double inlon, unsigned long flags, double *outlats, double *ou [...]
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find the 4 nearest points of a latitude longitude point.  <a href="group__iterators.html#g15043a2482608fb93a0385f3c3e86926"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g2b3c0069013e1ad7b3e34f30b4659c15">grib_nearest_delete</a> (<a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> *nearest)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees an nearest from memory.  <a href="group__iterators.html#g2b3c0069013e1ad7b3e34f30b4659c15"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g4923d7a2e414c743410f1de71bb9648c">grib_nearest_find_multiple</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, int is_lsm, double *inlats, double *inlons, long npoints, double *outlats, double *outlons, double *values, double *distances, int *indexes)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find the nearest point of a set of points whose latitudes and longitudes are given in the inlats, inlons arrays respectively.  <a href="group__iterators.html#g4923d7a2e414c743410f1de71bb9648c"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g3b40c8174568a6e2b7563a0e89d20ddf">grib_get_offset</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, size_t *offset)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">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.  <a href="group__get__set.html#g3b40c8174568a6e2b7563a0e89d20ddf"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245">grib_get_size</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, size_t *size)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the number of coded value from a key, if several keys of the same name are present, the total sum is returned.  <a href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526">grib_get_long</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, long *value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a long value from a key, if several keys of the same name are present, the last one is returned.  <a href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e">grib_get_double</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, double *value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a double value from a key, if several keys of the same name are present, the last one is returned.  <a href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gec894541bbc8c4e9093803ce21146fa5">grib_get_double_element</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, int i, double *value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get as double the i-th element of the "key" array.  <a href="group__get__set.html#gec894541bbc8c4e9093803ce21146fa5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gdff349943fef1036fcd1dd7a69738a7a">grib_get_double_elements</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, int *i, long size, double *value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get as double array the elements of the "key" array whose indexes are listed in the input array i.  <a href="group__get__set.html#gdff349943fef1036fcd1dd7a69738a7a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053">grib_get_string</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, char *mesg, size_t *length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a string value from a key, if several keys of the same name are present, the last one is returned.  <a href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g1b1ac2da661c638dad7d223419d541c6">grib_get_bytes</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, unsigned char *bytes, size_t *length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get raw bytes values from a key.  <a href="group__get__set.html#g1b1ac2da661c638dad7d223419d541c6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a">grib_get_double_array</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, double *vals, size_t *length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get double array values from a key.  <a href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga05493cedfee55f0b83d27e356123223">grib_get_long_array</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, long *vals, size_t *length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get long array values from a key.  <a href="group__get__set.html#ga05493cedfee55f0b83d27e356123223"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g6315ad72aaaf7577bc7b9f546c506e74">grib_copy_namespace</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *dest, const char *name, <a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *src)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy the keys belonging to a given namespace from a source handle to a destination handle.  <a href="group__get__set.html#g6315ad72aaaf7577bc7b9f546c506e74"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2">grib_set_long</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, long val)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a long value from a key.  <a href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g3f8802a5d3f2e7557e35e6e83acfc9e9">grib_set_double</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, double val)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a double value from a key.  <a href="group__get__set.html#g3f8802a5d3f2e7557e35e6e83acfc9e9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g78143cc64571b454b0aba14246e9a53a">grib_set_string</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, const char *mesg, size_t *length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a string value from a key.  <a href="group__get__set.html#g78143cc64571b454b0aba14246e9a53a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g4437bd0aa70cc2c2f942ace67023f4a1">grib_set_bytes</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, const unsigned char *bytes, size_t *length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a bytes array from a key.  <a href="group__get__set.html#g4437bd0aa70cc2c2f942ace67023f4a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga24d87e236a2469309d1176ee5925d77">grib_set_double_array</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, const double *vals, size_t length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a double array from a key.  <a href="group__get__set.html#ga24d87e236a2469309d1176ee5925d77"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g6c4697dc7c6f450ad30d0a24a3f87016">grib_set_long_array</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, const long *vals, size_t length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a long array from a key.  <a href="group__get__set.html#g6c4697dc7c6f450ad30d0a24a3f87016"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#67479e527e19f5a5b99696f37994ba21">grib_dump_content</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, FILE *out, const char *mode, unsigned long option_flags, void *arg)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Print all keys, with the context print procedure and dump mode to a resource.  <a href="#67479e527e19f5a5b99696f37994ba21"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#289f68694d96f1af8a2c1a8de422e1b2">grib_get_all_names</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, char *names)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Gather all names available in a handle to a string, using a space as separator.  <a href="#289f68694d96f1af8a2c1a8de422e1b2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#e1d347fdb06db3df5b5cba33cd2ea1a1">grib_dump_action_tree</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, FILE *f)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Print all keys from the parsed definition files available in a context.  <a href="#e1d347fdb06db3df5b5cba33cd2ea1a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ge4d49e82f57836891aa57fce24b59800">grib_get_context</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Retreive the context from a handle.  <a href="group__context.html#ge4d49e82f57836891aa57fce24b59800"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g01ce1b8dc121afe1fd8212ceef8c829d">grib_context_get_default</a> (void)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the static default context.  <a href="group__context.html#g01ce1b8dc121afe1fd8212ceef8c829d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gbbb93339feef87a0ef7c415fa484c022">grib_context_new</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create and allocate a new context from a parent context.  <a href="group__context.html#gbbb93339feef87a0ef7c415fa484c022"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g4bd1c4d8b32c1ae42227420ed2251d57">grib_context_delete</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees the cached definition files of the context.  <a href="group__context.html#g4bd1c4d8b32c1ae42227420ed2251d57"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g8d72ab772809fba49a41b32909770dd1">grib_gts_header_on</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gts header mode on.  <a href="group__context.html#g8d72ab772809fba49a41b32909770dd1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g9a3ce8e25ef3e59387015f906a79901a">grib_gts_header_off</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gts header mode off.  <a href="group__context.html#g9a3ce8e25ef3e59387015f906a79901a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ge8e9e3cce24d282a1b34432926b868c0">grib_gribex_mode_on</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gribex mode on.  <a href="group__context.html#ge8e9e3cce24d282a1b34432926b868c0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g6f6a5612649241d9ecae7e2a288bc436">grib_gribex_mode_off</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gribex mode off.  <a href="group__context.html#g6f6a5612649241d9ecae7e2a288bc436"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gec49c14665a9b4faa90a74cb069b9a30">grib_context_set_user_data</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *udata)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets user data in a context.  <a href="group__context.html#gec49c14665a9b4faa90a74cb069b9a30"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g7063ea5ce72ed460a1978c26dbc6af89">grib_context_get_user_data</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">get userData from a context  <a href="group__context.html#g7063ea5ce72ed460a1978c26dbc6af89"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gf38d04b9b8438fca7a418b507915030a">grib_context_set_memory_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> griballoc, <a class="el" href="group__context.html#g807998f481ebb5ab8916b236 [...]
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets memory procedures of the context.  <a href="group__context.html#gf38d04b9b8438fca7a418b507915030a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g5cd4b2513883a0d5989d5643087c4097">grib_context_set_persistent_memory_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> griballoc, <a class="el" href="group__context.html#g807998f481ebb [...]
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets memory procedures of the context for persistent data.  <a href="group__context.html#g5cd4b2513883a0d5989d5643087c4097"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g13ac96fc6a017f896cfe1325fcd7aa6b">grib_context_set_buffer_memory_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> griballoc, <a class="el" href="group__context.html#g807998f481ebb5ab8 [...]
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets memory procedures of the context for large buffers.  <a href="group__context.html#g13ac96fc6a017f896cfe1325fcd7aa6b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g06f0601960b317f15b78396ed12b1881">grib_context_set_path</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const char *path)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the context search path for definition files.  <a href="group__context.html#g06f0601960b317f15b78396ed12b1881"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gd007cf96b681b389dadbbb9e7540e321">grib_context_set_dump_mode</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, int mode)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets context dump mode.  <a href="group__context.html#gd007cf96b681b389dadbbb9e7540e321"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g68b597e40215c9ced7959c7350980d2f">grib_context_set_print_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0">grib_print_proc</a> printp)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the context printing procedure used for user interaction.  <a href="group__context.html#g68b597e40215c9ced7959c7350980d2f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g09581ce8cdeff9da0f38a78898097b9e">grib_context_set_logging_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994">grib_log_proc</a> logp)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the context logging procedure used for system (warning, errors, infos .  <a href="group__context.html#g09581ce8cdeff9da0f38a78898097b9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g3266536e68ebb6d4bbc4a22b29f0e8ea">grib_multi_support_on</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Turn on support for multiple fields in single grib messages.  <a href="group__context.html#g3266536e68ebb6d4bbc4a22b29f0e8ea"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gc022270a99922ccc57147670ed2a58d4">grib_multi_support_off</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Turn off support for multiple fields in single grib messages.  <a href="group__context.html#gc022270a99922ccc57147670ed2a58d4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#4e9690b3960a8c6607de77d41a47735f">grib_get_api_version</a> (void)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the api version.  <a href="#4e9690b3960a8c6607de77d41a47735f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#3cd2a817acbefb3089bfa36d2b40f1db">grib_print_api_version</a> (FILE *out)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Prints the api version.  <a href="#3cd2a817acbefb3089bfa36d2b40f1db"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, unsigned long filter_flags, char *name_space)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g28f6ac808ecdc324fa3a47bc7b3f6dec">grib_keys_iterator_next</a> (<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> *kiter)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gec3348471f770965c07964e286249e12">grib_keys_iterator_get_name</a> (<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> *kiter)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g79716d2b701c3dbb3d3a8e633f35a40a">grib_keys_iterator_delete</a> (<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> *kiter)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g15ceb24c7b8ac673d948ccdaf1ba5fd6">grib_keys_iterator_rewind</a> (<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> *kiter)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="grib__api_8h.html#8e3f942fa243dd09f04d4ff6d2f43d36">grib_get_error_message</a> (int code)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convert an error code into a string.  <a href="#8e3f942fa243dd09f04d4ff6d2f43d36"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-Copyright 2005-2016 ECMWF.
-<p>
-This software is licensed under the terms of the Apache Licence Version 2.0
-which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.<br>
-In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.<p>
-grib_api C header file<p>
-This is the only file that must be included to use the grib_api library from C. <hr><h2>Define Documentation</h2>
-<a class="anchor" name="639bb601cfd8d954e49cc7886ea1c6ad"></a><!-- doxytag: member="grib_api.h::GRIB_7777_NOT_FOUND" ref="639bb601cfd8d954e49cc7886ea1c6ad" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_7777_NOT_FOUND   -5          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Missing 7777 at end of message. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="4cfa6d261a3a15912702143929053227"></a><!-- doxytag: member="grib_api.h::GRIB_ARRAY_TOO_SMALL" ref="4cfa6d261a3a15912702143929053227" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_ARRAY_TOO_SMALL   -6          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Passed array is too small. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="2d8e7aa042bcbaf91aa090a369a33db6"></a><!-- doxytag: member="grib_api.h::GRIB_BUFFER_TOO_SMALL" ref="2d8e7aa042bcbaf91aa090a369a33db6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_BUFFER_TOO_SMALL   -3          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Passed buffer is too small. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="75648d913f443d2a480e408b59884a92"></a><!-- doxytag: member="grib_api.h::GRIB_CODE_NOT_FOUND_IN_TABLE" ref="75648d913f443d2a480e408b59884a92" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_CODE_NOT_FOUND_IN_TABLE   -8          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Code not found in code table. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="1a973e1ef2c6ae7fb132bdece2563fef"></a><!-- doxytag: member="grib_api.h::GRIB_CONCEPT_NO_MATCH" ref="1a973e1ef2c6ae7fb132bdece2563fef" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_CONCEPT_NO_MATCH   -37          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Concept no match. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="38f3c639d01804ef1240463b2beb44e9"></a><!-- doxytag: member="grib_api.h::GRIB_CONSTANT_FIELD" ref="38f3c639d01804ef1240463b2beb44e9" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_CONSTANT_FIELD   -48          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Constant field. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="4d24b723749a821f0853a2013d45746c"></a><!-- doxytag: member="grib_api.h::GRIB_DECODING_ERROR" ref="4d24b723749a821f0853a2013d45746c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_DECODING_ERROR   -14          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Decoding invalid. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="154c771c186435e746ab12d9a48905ab"></a><!-- doxytag: member="grib_api.h::GRIB_ENCODING_ERROR" ref="154c771c186435e746ab12d9a48905ab" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_ENCODING_ERROR   -15          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Encoding invalid. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="86c56896fe711d7b879f1fbf305fd468"></a><!-- doxytag: member="grib_api.h::GRIB_END" ref="86c56896fe711d7b879f1fbf305fd468" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_END   -40          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-End of resource. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="3bd3d72fe8bc116ca08c2d4b99203768"></a><!-- doxytag: member="grib_api.h::GRIB_END_OF_FILE" ref="3bd3d72fe8bc116ca08c2d4b99203768" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_END_OF_FILE   -1          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-End of ressource reached. 
-<p>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="get_8f90-example.html#a0">get.f90</a>, <a class="el" href="get__data_8f90-example.html#a0">get_data.f90</a>, <a class="el" href="keys__iterator_8f90-example.html#a0">keys_iterator.f90</a>, <a class="el" href="multi_8f90-example.html#a2">multi.f90</a>, and <a class="el" href="samples_8f90-example.html#a1">samples.f90</a>.</dl>
-</div>
-</div><p>
-<a class="anchor" name="afa8827ca82c170dc27bcfb723b6ba76"></a><!-- doxytag: member="grib_api.h::GRIB_END_OF_INDEX" ref="afa8827ca82c170dc27bcfb723b6ba76" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_END_OF_INDEX   -43          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-End of index reached. 
-<p>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="index_8f90-example.html#a1">index.f90</a>.</dl>
-</div>
-</div><p>
-<a class="anchor" name="3441223fb03920c378d38c6f50e98d4a"></a><!-- doxytag: member="grib_api.h::GRIB_FILE_NOT_FOUND" ref="3441223fb03920c378d38c6f50e98d4a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_FILE_NOT_FOUND   -7          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-File not found. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="482b9d48445b7ad202be877e8cc10ea8"></a><!-- doxytag: member="grib_api.h::GRIB_GEOCALCULUS_PROBLEM" ref="482b9d48445b7ad202be877e8cc10ea8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_GEOCALCULUS_PROBLEM   -17          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Problem with calculation of geographic attributes. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="aaa04f4cf931846628d4e71e40b02349"></a><!-- doxytag: member="grib_api.h::GRIB_INTERNAL_ARRAY_TOO_SMALL" ref="aaa04f4cf931846628d4e71e40b02349" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_INTERNAL_ARRAY_TOO_SMALL   -46          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-An internal array is too small. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="f8cf05fc5d45cb95ad0972bdcc3f08d3"></a><!-- doxytag: member="grib_api.h::GRIB_INTERNAL_ERROR" ref="f8cf05fc5d45cb95ad0972bdcc3f08d3" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_INTERNAL_ERROR   -2          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Internal error. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="9b9c7d3380e2e440d8c16ec1d49a4c17"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_ARGUMENT" ref="9b9c7d3380e2e440d8c16ec1d49a4c17" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_INVALID_ARGUMENT   -20          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Invalid argument. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="c8091f4d703636468d7c303be9e4d881"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_FILE" ref="c8091f4d703636468d7c303be9e4d881" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_INVALID_FILE   -28          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Invalid file id. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="533ac9a5250151b97b6c7650db56897d"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_GRIB" ref="533ac9a5250151b97b6c7650db56897d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_INVALID_GRIB   -29          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Invalid grib id. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="519a1c9eddd9ce63ef87fd182c008737"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_INDEX" ref="519a1c9eddd9ce63ef87fd182c008737" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_INVALID_INDEX   -30          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Invalid index id. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="45eb384ee2e382f1acac24594d66c6b0"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_ITERATOR" ref="45eb384ee2e382f1acac24594d66c6b0" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_INVALID_ITERATOR   -31          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Invalid iterator id. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="36309323248d2ac3729a4552c2fb1c17"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_KEYS_ITERATOR" ref="36309323248d2ac3729a4552c2fb1c17" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_INVALID_KEYS_ITERATOR   -32          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Invalid keys iterator id. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="926f6ede936bd30c5339c94f2d84c8ae"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_MESSAGE" ref="926f6ede936bd30c5339c94f2d84c8ae" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_INVALID_MESSAGE   -13          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Message invalid. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="aa0306c1ea428240fce27176dafbd7fe"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_NEAREST" ref="aa0306c1ea428240fce27176dafbd7fe" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_INVALID_NEAREST   -33          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Invalid nearest id. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="762034d39b53d2861f2743b0aec8d2a4"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_ORDERBY" ref="762034d39b53d2861f2743b0aec8d2a4" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_INVALID_ORDERBY   -34          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Invalid order by. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="9d2c9bfa553a51b2fcab92ad31bef8ef"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_SECTION_NUMBER" ref="9d2c9bfa553a51b2fcab92ad31bef8ef" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_INVALID_SECTION_NUMBER   -22          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Invalid section number. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="fc09d64f4cb3ba8d272b9e3c9b5dd363"></a><!-- doxytag: member="grib_api.h::GRIB_INVALID_TYPE" ref="fc09d64f4cb3ba8d272b9e3c9b5dd363" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_INVALID_TYPE   -25          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Invalid key type. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="a7fe5a55b1005f7c3d14e8bfaee33271"></a><!-- doxytag: member="grib_api.h::GRIB_IO_PROBLEM" ref="a7fe5a55b1005f7c3d14e8bfaee33271" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_IO_PROBLEM   -12          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Input output problem. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="1e15e27a144761974cea9e90f2ba168d"></a><!-- doxytag: member="grib_api.h::GRIB_MESSAGE_TOO_LARGE" ref="1e15e27a144761974cea9e90f2ba168d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_MESSAGE_TOO_LARGE   -47          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Message is too large for the current architecture. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="8fd56a3beb7556606f644091aba1fcbd"></a><!-- doxytag: member="grib_api.h::GRIB_MISSING_KEY" ref="8fd56a3beb7556606f644091aba1fcbd" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_MISSING_KEY   -35          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Missing a key from the fieldset. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="8cd08a4486ad956bf1f20434f84cd04e"></a><!-- doxytag: member="grib_api.h::GRIB_NO_DEFINITIONS" ref="8cd08a4486ad956bf1f20434f84cd04e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_NO_DEFINITIONS   -38          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Definitions files not found. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="7fc7702ef0de098b4a58e2fb9c9a442c"></a><!-- doxytag: member="grib_api.h::GRIB_NO_MORE_IN_SET" ref="7fc7702ef0de098b4a58e2fb9c9a442c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_NO_MORE_IN_SET   -16          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Code cannot unpack because of string too small. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="dfdf56b00d215ff68aeb1adbffc348ce"></a><!-- doxytag: member="grib_api.h::GRIB_NO_VALUES" ref="dfdf56b00d215ff68aeb1adbffc348ce" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_NO_VALUES   -41          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Unable to code a field without values. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="86c4b3873fded7e8ea28644dcbcd5f87"></a><!-- doxytag: member="grib_api.h::GRIB_NOT_FOUND" ref="86c4b3873fded7e8ea28644dcbcd5f87" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_NOT_FOUND   -11          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Key/value not found. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="5a0fab73e448bc57ddd04b59506ccd71"></a><!-- doxytag: member="grib_api.h::GRIB_NOT_IMPLEMENTED" ref="5a0fab73e448bc57ddd04b59506ccd71" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_NOT_IMPLEMENTED   -4          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Function not yet implemented. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="1c5efccc4485ae72e7714d2443e6d89c"></a><!-- doxytag: member="grib_api.h::GRIB_NULL_HANDLE" ref="1c5efccc4485ae72e7714d2443e6d89c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_NULL_HANDLE   -21          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Null handle. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="042ed38858c5cf72be88cfada1737f3b"></a><!-- doxytag: member="grib_api.h::GRIB_NULL_INDEX" ref="042ed38858c5cf72be88cfada1737f3b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_NULL_INDEX   -44          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Null index. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="ba25cca898d918763a9a8a9bd3860f00"></a><!-- doxytag: member="grib_api.h::GRIB_OUT_OF_AREA" ref="ba25cca898d918763a9a8a9bd3860f00" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_OUT_OF_AREA   -36          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-The point is out of the grid area. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="b405f321cbb4b4c7dec9eb1bd4b65b50"></a><!-- doxytag: member="grib_api.h::GRIB_OUT_OF_MEMORY" ref="b405f321cbb4b4c7dec9eb1bd4b65b50" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_OUT_OF_MEMORY   -18          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Out of memory. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="3baff96d54517c85e433f8150642ef0b"></a><!-- doxytag: member="grib_api.h::GRIB_PREMATURE_END_OF_FILE" ref="3baff96d54517c85e433f8150642ef0b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_PREMATURE_END_OF_FILE   -45          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-End of ressource reached when reading message. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="e18012f7fad721db7f865655f2b5956e"></a><!-- doxytag: member="grib_api.h::GRIB_READ_ONLY" ref="e18012f7fad721db7f865655f2b5956e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_READ_ONLY   -19          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Value is read only. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="4c26f350e2a20a2cd810a7e8a890973f"></a><!-- doxytag: member="grib_api.h::GRIB_STRING_TOO_SMALL_FOR_CODE_NAME" ref="4c26f350e2a20a2cd810a7e8a890973f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_STRING_TOO_SMALL_FOR_CODE_NAME   -9          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Code cannot unpack because of string too small. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="5ec59f24fc07a0e9d05768e908b9eb41"></a><!-- doxytag: member="grib_api.h::GRIB_SUCCESS" ref="5ec59f24fc07a0e9d05768e908b9eb41" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_SUCCESS   0          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-No error. 
-<p>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="iterator_8c-example.html#a3">iterator.c</a>.</dl>
-</div>
-</div><p>
-<a class="anchor" name="83d93f23c64220209e5c326a38f32003"></a><!-- doxytag: member="grib_api.h::GRIB_SWITCH_NO_MATCH" ref="83d93f23c64220209e5c326a38f32003" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_SWITCH_NO_MATCH   -49          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Switch unable to find a matching case. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="b075c9c53912dc18ea9feee1f710cb18"></a><!-- doxytag: member="grib_api.h::GRIB_VALUE_CANNOT_BE_MISSING" ref="b075c9c53912dc18ea9feee1f710cb18" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_VALUE_CANNOT_BE_MISSING   -23          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Value cannot be missing. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="b04c311e9de064f156fd238dbf04afef"></a><!-- doxytag: member="grib_api.h::GRIB_WRONG_ARRAY_SIZE" ref="b04c311e9de064f156fd238dbf04afef" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_WRONG_ARRAY_SIZE   -10          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Array size mismatch. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="5a73a75bffabf39673ba9bc3a4b164b6"></a><!-- doxytag: member="grib_api.h::GRIB_WRONG_GRID" ref="5a73a75bffabf39673ba9bc3a4b164b6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_WRONG_GRID   -42          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Grid description is wrong or inconsistent. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="1792ca7e8d3e6f3e4bc2dc406408ec8f"></a><!-- doxytag: member="grib_api.h::GRIB_WRONG_LENGTH" ref="1792ca7e8d3e6f3e4bc2dc406408ec8f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_WRONG_LENGTH   -24          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Wrong message length. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="08dcf5be008fd3c7a524ab3de96f88c2"></a><!-- doxytag: member="grib_api.h::GRIB_WRONG_STEP" ref="08dcf5be008fd3c7a524ab3de96f88c2" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_WRONG_STEP   -26          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Unable to set step. 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="c10988d7d2b76f906e1281c2a6602b1a"></a><!-- doxytag: member="grib_api.h::GRIB_WRONG_STEP_UNIT" ref="c10988d7d2b76f906e1281c2a6602b1a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_WRONG_STEP_UNIT   -27          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Wrong units for step (step must be integer). 
-<p>
-
-</div>
-</div><p>
-<a class="anchor" name="53847b78a3259d3df6c76042360cbd97"></a><!-- doxytag: member="grib_api.h::GRIB_WRONG_TYPE" ref="53847b78a3259d3df6c76042360cbd97" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_WRONG_TYPE   -39          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Wrong type while packing. 
-<p>
-
-</div>
-</div><p>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="8e7f259b6dec023add23b2a5ddd93bad"></a><!-- doxytag: member="grib_api.h::grib_context" ref="8e7f259b6dec023add23b2a5ddd93bad" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef struct <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Grib context, structure containing the memory methods, the parsers and the formats. 
-</div>
-</div><p>
-<a class="anchor" name="8f20a42a04122a55dec71774c70a51c5"></a><!-- doxytag: member="grib_api.h::grib_iterator" ref="8f20a42a04122a55dec71774c70a51c5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef struct <a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> <a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Grib iterator, structure supporting a geographic iteration of values on a grib message. <dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="iterator_8c-example.html#a1">iterator.c</a>.</dl>
-</div>
-</div><p>
-<a class="anchor" name="1b47558cfe02835ba44213ee4d45fd9b"></a><!-- doxytag: member="grib_api.h::grib_nearest" ref="1b47558cfe02835ba44213ee4d45fd9b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef struct <a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> <a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Grib nearest, structure used to find the nearest points of a latitude longitude point. <dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="nearest_8c-example.html#a1">nearest.c</a>.</dl>
-</div>
-</div><p>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="e1d347fdb06db3df5b5cba33cd2ea1a1"></a><!-- doxytag: member="grib_api.h::grib_dump_action_tree" ref="e1d347fdb06db3df5b5cba33cd2ea1a1" args="(grib_context *c, FILE *f)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void grib_dump_action_tree           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">FILE * </td>
-          <td class="paramname"> <em>f</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Print all keys from the parsed definition files available in a context. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>: the File used to print the keys on </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context that containd the cached definition files to be printed </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="67479e527e19f5a5b99696f37994ba21"></a><!-- doxytag: member="grib_api.h::grib_dump_content" ref="67479e527e19f5a5b99696f37994ba21" args="(grib_handle *h, FILE *out, const char *mode, unsigned long option_flags, void *arg)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void grib_dump_content           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">FILE * </td>
-          <td class="paramname"> <em>out</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>mode</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned long </td>
-          <td class="paramname"> <em>option_flags</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">void * </td>
-          <td class="paramname"> <em>arg</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Print all keys, with the context print procedure and dump mode to a resource. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to be printed </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>out</em> </td><td>: output file handle </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mode</em> </td><td>: available dump modes are: debug wmo c_code </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>option_flags</em> </td><td>: all the GRIB_DUMP_FLAG_x flags can be used </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>arg</em> </td><td>: used to provide a format to output data (experimental) </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="289f68694d96f1af8a2c1a8de422e1b2"></a><!-- doxytag: member="grib_api.h::grib_get_all_names" ref="289f68694d96f1af8a2c1a8de422e1b2" args="(grib_handle *h, char *names)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void grib_get_all_names           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">char * </td>
-          <td class="paramname"> <em>names</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Gather all names available in a handle to a string, using a space as separator. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle used to gather the keys </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>names</em> </td><td>: the sting to be filled with the names </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="4e9690b3960a8c6607de77d41a47735f"></a><!-- doxytag: member="grib_api.h::grib_get_api_version" ref="4e9690b3960a8c6607de77d41a47735f" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">long grib_get_api_version           </td>
-          <td>(</td>
-          <td class="paramtype">void </td>
-          <td class="paramname">          </td>
-          <td> ) </td>
-          <td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the api version. 
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>api version </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="8e3f942fa243dd09f04d4ff6d2f43d36"></a><!-- doxytag: member="grib_api.h::grib_get_error_message" ref="8e3f942fa243dd09f04d4ff6d2f43d36" args="(int code)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const char* grib_get_error_message           </td>
-          <td>(</td>
-          <td class="paramtype">int </td>
-          <td class="paramname"> <em>code</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Convert an error code into a string. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>code</em> </td><td>: the error code </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the error message </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="3cd2a817acbefb3089bfa36d2b40f1db"></a><!-- doxytag: member="grib_api.h::grib_print_api_version" ref="3cd2a817acbefb3089bfa36d2b40f1db" args="(FILE *out)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void grib_print_api_version           </td>
-          <td>(</td>
-          <td class="paramtype">FILE * </td>
-          <td class="paramname"> <em>out</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Prints the api version. 
-<p>
-
-</div>
-</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/grib_compare.html b/html/grib_compare.html
deleted file mode 100644
index 59f34c1..0000000
--- a/html/grib_compare.html
+++ /dev/null
@@ -1,281 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: grib_compare</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1><a class="anchor" name="grib_compare">grib_compare</a></h1><h2><a class="anchor" name="DESCRIPTION">
-DESCRIPTION</a></h2>
-Compare grib messages contained in two files. If some differences are found it fails returning an error code. Floating point values are compared exactly by default, different tolerance can be defined see -P -A -R. Default behaviour: absolute error=0, bit-by-bit compare, same order in files.<h2><a class="anchor" name="USAGE">
-USAGE</a></h2>
-grib_compare [options] grib_file grib_file<h2><a class="anchor" name="OPTIONS">
-OPTIONS</a></h2>
--r <br>
- Compare files in which the messages are not in the same order. This option is time expensive. <br>
- <br>
- -b key,key,... <br>
- All the keys in this list are skipped in the comparison. Bit-by-bit compare on. <br>
- <br>
- -e <br>
- edition independent compare. It is used to compare grib edition 1 and 2. <br>
- <br>
- -c key[:l/d/s/n],key[:l/d/s/n],... <br>
- Only the listed keys or namespaces (:n) are compared. The optional letter after the colon is used to force the type in the comparison: l->integer, d->float, s->string, n->namespace. See -a option. Incompatible with -H option. <br>
- <br>
- -a <br>
- -c option modifier. The keys listed with the option -c will be added to the list of keys compared without -c. <br>
- <br>
- -H <br>
- Compare only message headers. Bit-by-bit compare on. Incompatible with -c option. <br>
- <br>
- -R key1=relative_error1,key2=relative_error2,... <br>
- Compare floating point values using the relative error as tolerance. key1=relative_error will compare key1 using relative_error1. all=relative_error will compare all the floating point keys using relative_error. Default all=0. <br>
- <br>
- -A absolute error <br>
- Compare floating point values using the absolute error as tolerance. Default is absolute error=0 <br>
- <br>
- -P <br>
- Compare data values using the packing error as tolerance. <br>
- <br>
- -T factor <br>
- Compare data values using factor multipied by the tolerance specified in options -P -R -A. <br>
- <br>
- -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,... <br>
- Where clause. Grib messages are processed only if they match all the key/value constraints. A valid constraint is of type key=value or key!=value. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be specified. Default type is string. <br>
- <br>
- -f <br>
- Force. Force the execution not to fail on error. <br>
- <br>
- -V <br>
- Version. <br>
- <br>
- -7 <br>
- Does not fail when the message has wrong length <br>
- <br>
- -v <br>
- Verbose. <br>
- <br>
- <h2><a class="anchor" name="grib_compare_examples">
-grib_compare examples</a></h2>
-<ol type=1>
-<li>The default behaviour for grib_compare without any option is to perform a bit by bit comparison of the two messages. If the messages are found to be bitwise different then grib_compare switches to a "key based" mode to find out which coded keys are different. To see how grib_compare works we first set the shortName=2d (2 metre dew point temperature) in the file regular_latlon_surface.grib1<br>
- <div class="fragment"><pre class="fragment">
->grib_set -s shortName=2d regular_latlon_surface.grib1 2d.grib1
-</pre></div> Then we can compare the two fields with grib_compare.<br>
- <div class="fragment"><pre class="fragment">
->grib_compare regular_latlon_surface.grib1 2d.grib1
-
--- GRIB #1 -- shortName=2t paramId=167 stepRange=0 levelType=sfc level=0 packingType=grid_simple gridType=regular_ll --
-long [indicatorOfParameter]: [167] != [168]
-</pre></div> In the output we see that the only "coded" key with different values in the two messages is indicatorOfParameter which is the relevant key for the parameter information. The comparison can be forced to be successful listing the keys with different values in the -b option. <div class="fragment"><pre class="fragment">
->grib_compare -b indicatorOfParameter regular_latlon_surface.grib1 2d.grib1
-</pre></div> <br>
-<br>
-</li><li>Two grib messages can be very different because they have different edition, but they can contain the same identical information in the header and the same data. To see how grib_compare can help in comparing messages with different edition we do <div class="fragment"><pre class="fragment">
->grib_set edition=2 reduced_gaussian_model_level.grib1 reduced_gaussian_model_level.grib2
-</pre></div> Then we compare the two fields with grib_compare.<br>
- <div class="fragment"><pre class="fragment">
->grib_compare reduced_gaussian_model_level.grib1 reduced_gaussian_model_level.grib2
-
--- GRIB #1 -- shortName=t paramId=130 stepRange=0 levelType=ml level=1 packingType=grid_simple gridType=reduced_gg --
-long [totalLength]: [10908] != [10996]
-long [editionNumber]: [1] != [2]
-long [section1Length]: [52] != [21]
-[table2Version] not found in 2nd field
-[gridDefinition] not found in 2nd field
-[indicatorOfParameter] not found in 2nd field
-[indicatorOfTypeOfLevel] not found in 2nd field
-[yearOfCentury] not found in 2nd field
-[unitOfTimeRange] not found in 2nd field
-[P1] not found in 2nd field
-[P2] not found in 2nd field
-[numberIncludedInAverage] not found in 2nd field
-[numberMissingFromAveragesOrAccumulations] not found in 2nd field
-[centuryOfReferenceTimeOfData] not found in 2nd field
-[reservedNeedNotBePresent] not found in 2nd field
-[localDefinitionNumber] not found in 2nd field
-[perturbationNumber] not found in 2nd field
-[numberOfForecastsInEnsemble] not found in 2nd field
-[padding_local1_1] not found in 2nd field
-long [section2Length]: [896] != [17]
-[pvlLocation] not found in 2nd field
-[dataRepresentationType] not found in 2nd field
-long [latitudeOfFirstGridPoint]: [87864] != [87864000]
-long [latitudeOfLastGridPoint]: [-87864] != [-87864000]
-long [longitudeOfLastGridPoint]: [357188] != [357188000]
-[padding_grid4_1] not found in 2nd field
-long [section4Length]: [9948] != [770]
-[dataFlag] not found in 2nd field
-</pre></div> It is clear that the two messages are coded in a very different way. If we now add the -e option, the tool will compare only the higher level information common between the two messages. <div class="fragment"><pre class="fragment">
->grib_compare -e reduced_gaussian_model_level.grib1 reduced_gaussian_model_level.grib2
-</pre></div> The comparison is successful because the two messages contain the same information coded in two different ways. We can display the list of keys used by grib_compare adding the option -v (verbose). <div class="fragment"><pre class="fragment">
->grib_compare -ve reduced_gaussian_model_level.grib1 reduced_gaussian_model_level.grib2
-reduced_gaussian_model_level.grib2
-  comparing centre as string
-  comparing paramId as string
-  comparing shortName as string
-  comparing typeOfLevel as string
-  comparing level as long
-  comparing pv as double  (184 values) tolerance=0
-  comparing latitudeOfFirstGridPointInDegrees as double  (1 values) tolerance=0.0005
-  comparing longitudeOfFirstGridPointInDegrees as double  (1 values) tolerance=0.0005
-  comparing latitudeOfLastGridPointInDegrees as double  (1 values) tolerance=0.0005
-  comparing longitudeOfLastGridPointInDegrees as double  (1 values) tolerance=0.0005
-  comparing iDirectionIncrementInDegrees is set to missing in both fields
-  comparing N as long
-  comparing iScansNegatively as long
-  comparing jScansPositively as long
-  comparing jPointsAreConsecutive as long
-  comparing pl as long
-  comparing gridType as string
-  comparing packedValues as double  (6114 values) tolerance=0
-  comparing param as string
-  comparing levtype as string
-  comparing levelist as long
-  comparing date as long
-  comparing time as long
-  comparing step as long
-  comparing class as long
-  comparing type as long
-  comparing stream as long
-  comparing expver as string
-  comparing domain as string
-
-1 of 1 grib messages in reduced_gaussian_model_level.grib2
-
-1 of 1 total grib messages in 1 files
-</pre></div> For each key the type used in the comparison is reported and for the floating point keys also the tolerance used is printed. <br>
-<br>
-</li><li>Some options are provided to compare only a set of keys in the messages. The option -H is used to compare only the headers coded in the message, it doesn't compare the data values. The option "-c key1:[l/d/s/n],key2:[l/d/s/n],... " can be used to compare a set of keys or namespaces. The letter after the colon is optional and it is used to force the type used in the comparison which is otherwise assumed to be the native type of the key. The possible types are:<ul>
-<li>:l -> integer (C type long)</li><li>:d -> floating point (C type double)</li><li>:s -> string</li><li>:n -> namespace.</li></ul>
-When the type "n" is used all the set of keys belonging to the specified namespace are compared assuming their own native type. To illustrate how these options work we change the values coded in a message using grib_filter with the following rules file (see <a class="el" href="grib_filter.html">grib_filter</a>). <div class="fragment"><pre class="fragment">
-set bitsPerValue=10;
-set values={1,2.5,3,4,5,6,70};
-write "first.grib1";
-set values={1,2.5,5,4,5,6,70};
-write "second.grib1";
-</pre></div> We first compare the two files using the -H option (only headers are compared). <div class="fragment"><pre class="fragment">
->grib_compare -H first.grib1 second.grib1
-</pre></div> The comparison is successful because the data are not compared. To compare only the data we have to compare the "data namespace". <div class="fragment"><pre class="fragment">
->grib_compare -c data:n first.grib1 second.grib1
-
--- GRIB #1 -- shortName=t paramId=130 stepRange=0 levelType=ml level=1 packingType=grid_simple gridType=reduced_gg --
-double [packedValues]: 1 out of 7 different,  max absolute diff. = 2, relative diff. = 0.4
-	max diff. element 2: 3.00000000000000000000e+00 5.00000000000000000000e+00
-	tolerance=0 packingError: [0.04] [0.04]
-	values max= [70.04]  [70.04]         min= [1] [1]
-</pre></div> The comparison is showing that one of seven values is different in a comparison with the (default) absolute tolerance=0. We can change the tolerance with the -A option: <div class="fragment"><pre class="fragment">
->grib_compare -A 2 -c data:n first.grib1 second.grib1
-</pre></div> and we see that the comparison is successful if the absolute tolerance is set to 2. We can also set the relative tolerance for each key with the option -R: <div class="fragment"><pre class="fragment">
->grib_compare -R packedValues=0.4 -c data:n first.grib1 second.grib1
-</pre></div> and we get again a successful comparison because the relative tolerance is bigger than the relative absolute difference of two corresponding values. Another possible choice for the tolerance is to be equal to the packingError, which is the error due to the packing algorithm. If we change the decimalPrecision of a packed field we introduce a packing error sometimes bigger than the original packing error. <div class="fragment"><pre class="fragment">
->grib_set -s changeDecimalPrecision=0 first.grib1 third.grib1
-</pre></div> and we compare the two fields using the -P option (tolerance=packingError). <div class="fragment"><pre class="fragment">
->grib_compare -P -c data:n first.grib1 third.grib1
-</pre></div> the comparison is successful because their difference is within the biggest of the two packing error. With the option -P the comparison is failing only if the original data coded are different, not if the packing precision is changed. If we try again to compare the fields without the -P option: <div class="fragment"><pre class="fragment">
->grib_compare -c data:n first.grib1 third.grib1
-
--- GRIB #1 -- shortName=t paramId=130 stepRange=0 levelType=ml level=1 packingType=grid_simple gridType=reduced_gg --
-double [packedValues]: 4 out of 7 different,  max absolute diff. = 0.48, relative diff. = 0.16
-	max diff. element 1: 2.52000000000000001776e+00 3.00000000000000000000e+00
-	tolerance=0 packingError: [0.04] [0.5]
-	values max= [70.04]  [70]         min= [1] [1]
-</pre></div> we see that some values are different and that the maximum absolute differenc is close to the biggest packing error (max diff=0.48 packingError=0.5). The packing error was chosen to be 0.5 by setting decimalPrecision to 0 which means that we don't need to preserve any decimal figure.<br>
-<br>
-</li><li>When we already know that the fields are not numerically identical, but have similar statistical characteristics we can compare their statistics namespaces: <div class="fragment"><pre class="fragment">
->grib_compare -c statistics:n first.grib1 third.grib1
-
--- GRIB #1 -- shortName=t paramId=130 stepRange=0 levelType=ml level=1 packingType=grid_simple gridType=reduced_gg --
-double [max]: [7.00400000000000062528e+01] != [7.00000000000000000000e+01]
-	absolute diff. = 0.04, relative diff. = 0.000571102
-	tolerance=0
-double [avg]: [1.30914285714285707485e+01] != [1.31428571428571423496e+01]
-	absolute diff. = 0.0514286, relative diff. = 0.00391304
-	tolerance=0
-double [sd]: [2.32994686809877009637e+01] != [2.32589679873534969090e+01]
-	absolute diff. = 0.0405007, relative diff. = 0.00173827
-	tolerance=0
-double [skew]: [-1.41592875700515623549e+01] != [-1.41669971380493855406e+01]
-	absolute diff. = 0.00770957, relative diff. = 0.000544192
-	tolerance=0
-double [kurt]: [7.32364710785659567271e-01] != [7.32723797489455375143e-01]
-	absolute diff. = 0.000359087, relative diff. = 0.000490071
-	tolerance=0
-</pre></div> and we see that maximum, minimum, average, standard deviation, skewness and kurtosis are compared. While the values are different by 0.48 the statistics comparison shows that the difference in the statistical values is never bigger than 0.052 <div class="fragment"><pre class="fragment">
->grib_compare -A 0.052 -c statistics:n first.grib1 third.grib1
-</pre></div> The statistics namespace is available also for spherical harmonics data and provides information about the field in the geographic space computing them in the spectral space for performance reasons. <br>
-<br>
-</li><li>When a file contains several fields and some keys are different, it is useful to have a summary report of the keys found different in the messages. This can be obtained with the option -f. We change few keys in a file: <div class="fragment"><pre class="fragment">
->grib_set -w typeOfLevel=surface -s step=48 tigge_pf_ecmwf.grib2 out.grib2
-</pre></div> and comparing with the -f option: <div class="fragment"><pre class="fragment">
->grib_compare -f tigge_pf_ecmwf.grib2 out.grib2
-
--- GRIB #9 -- shortName=skt paramId=235 stepRange=96 levelType=sfc level=0 packingType=grid_simple gridType=regular_ll --
-long [forecastTime]: [96] != [48]
-
--- GRIB #10 -- shortName=sd paramId=228141 stepRange=96 levelType=sfc level=0 packingType=grid_simple gridType=regular_ll --
-long [forecastTime]: [96] != [48]
-
--- GRIB #11 -- shortName=sf paramId=228144 stepRange=0-96 levelType=sfc level=0 packingType=grid_simple gridType=regular_ll --
-long [dayOfEndOfOverallTimeInterval]: [26] != [24]
-long [lengthOfTimeRange]: [96] != [48]
-
-...  output deleted 
-
-## ERRORS SUMMARY #######
-##
-## Summary of different key values 
-## forecastTime ( 3 different )
-## dayOfEndOfOverallTimeInterval ( 11 different )
-## lengthOfTimeRange ( 11 different )
-##
-## 14 different messages out of 38
-
-</pre></div> we get a list of all the different messages in the files and a summary report of the different keys. <br>
-<br>
-</li><li>We can change the order of the messages in a file using grib_copy with the -B option: <div class="fragment"><pre class="fragment">
->grib_copy -B typeOfLevel tigge_pf_ecmwf.grib2 out.grib2
-</pre></div> If we now compare the two files: <div class="fragment"><pre class="fragment">
->grib_compare -f tigge_pf_ecmwf.grib2 out.grib2
-
--- GRIB #1 -- shortName=10u paramId=165 stepRange=96 levelType=sfc level=10 packingType=grid_simple gridType=regular_ll --
-long [discipline]: [0] != [2]
-long [totalLength]: [1555] != [990]
-long [parameterCategory]: [2] != [0]
-long [parameterNumber]: [2] != [22]
-long [scaledValueOfFirstFixedSurface]: [10] != [0]
-long [typeOfSecondFixedSurface]: [255] != [106]
-scaleFactorOfSecondFixedSurface is set to missing in 1st field is not missing in 2nd field
-scaledValueOfSecondFixedSurface is set to missing in 1st field is not missing in 2nd field
-long [numberOfValues]: [684] != [239]
-double [referenceValue]: [-1.57229328155517578125e+01] != [4.15843811035156250000e+01]
-	absolute diff. = 57.3073, relative diff. = 1.3781
-	tolerance=3.8147e-06
-long [binaryScaleFactor]: [-10] != [-15]
-long [bitsPerValue]: [16] != [24]
-long [section6Length]: [6] != [92]
-long [bitMapIndicator]: [255] != [0]
-long [section7Length]: [1373] != [722]
-[codedValues] has different size: 1st field: 684, 2nd field: 239
-...    very long output 
-</pre></div> the comparison is failing because of the different order of the messages. We can use the -r option to compare the files assuming that the messages are not in the same order: <div class="fragment"><pre class="fragment">
->grib_compare -r tigge_pf_ecmwf.grib2 out.grib2
-</pre></div> and we have a successful comparison because for each message in the first file an identical message is found in the second file. This option should be used carefully as it is very time expensive.</li></ol>
-<p>
-<br>
-<br>
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/grib_convert.html b/html/grib_convert.html
deleted file mode 100644
index 8847a8f..0000000
--- a/html/grib_convert.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: grib_convert</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1><a class="anchor" name="grib_convert">grib_convert</a></h1><h2><a class="anchor" name="DESCRIPTION">
-DESCRIPTION</a></h2>
-It converts grib messages applying the rules from a conversion_rules file. The rules are of the type "keyname = value;" and if blocks are allowed as if ( keyname1 == value1 || keyname2 != value2 && keyname3 == value3 ) { keyname4 = value4; }<h2><a class="anchor" name="USAGE">
-USAGE</a></h2>
-grib_convert [options] conversion_rules grib_file grib_file ... output_grib_file<h2><a class="anchor" name="OPTIONS">
-OPTIONS</a></h2>
--f <br>
- Force. Force the execution not to fail on error. <br>
- <br>
- -M <br>
- Multi-grib support off. Turn off support for multiple fields in single grib message <br>
- <br>
- -g <br>
- Copy GTS header. <br>
- <br>
- -G <br>
- GRIBEX compatibility mode. <br>
- <br>
- -V <br>
- Version. <br>
- <br>
- -7 <br>
- Does not fail when the message has wrong length <br>
- <br>
- -v <br>
- Verbose. <br>
- <br>
- <h2><a class="anchor" name="grib_convert_examples">
-grib_convert examples</a></h2>
-The following grib_convert rules convert all the grib messages contained in the input files in grib edition 2 and if a 2 metre temperature is found also the keys contained in the culy bracket are changed.<br>
- <div class="fragment"><pre class="fragment">editionNumber = 2;
-<span class="keywordflow">if</span>( indicatorOfParameter == 11 && indicatorOfTypeOfLevel == 105)
-{
-    productDefinitionTemplateNumber = 1;
-    typeOfFirstFixedSurface         = 103;
-    scaleFactorOfFirstFixedSurface  = 0;
-    scaledValueOfFirstFixedSurface  = 2;
-}
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/grib_copy.html b/html/grib_copy.html
deleted file mode 100644
index 587f918..0000000
--- a/html/grib_copy.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: grib_copy</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1><a class="anchor" name="grib_copy">grib_copy</a></h1><h2><a class="anchor" name="DESCRIPTION">
-DESCRIPTION</a></h2>
-Copies the content of grib files printing values of some keys.<h2><a class="anchor" name="USAGE">
-USAGE</a></h2>
-grib_copy [options] grib_file grib_file ... output_grib_file<h2><a class="anchor" name="OPTIONS">
-OPTIONS</a></h2>
--f <br>
- Force. Force the execution not to fail on error. <br>
- <br>
- -r <br>
- Repack data. Sometimes after setting some keys involving properties of the packing algorithm a repacking of data is needed. This repacking is performed setting this -r option. <br>
- <br>
- -p key[:{s/d/l}],key[:{s/d/l}],... <br>
- Declaration of keys to print. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be requested. Default type is string. <br>
- <br>
- -P key[:{s/d/l}],key[:{s/d/l}],... <br>
- As -p adding the declared keys to the default list. <br>
- <br>
- -w key[:{s/d/l}]=value,key[:{s/d/l}]=value,... <br>
- Where clause. Only grib messages matching the key/value constraints are copied to the output_grib_file. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be defined. Default type is string. <br>
- <br>
- -B order by directive <br>
- Order by. The output will be ordered according the order by directive. Order by example: "step asc, centre desc" (step ascending and centre discending) <br>
- <br>
- -V <br>
- Version. <br>
- <br>
- -W width <br>
- Minimum width of each column in output. Default is 10. <br>
- <br>
- -M <br>
- Multi-grib support off. Turn off support for multiple fields in single grib message <br>
- <br>
- -g <br>
- Copy GTS header. <br>
- <br>
- -G <br>
- GRIBEX compatibility mode. <br>
- <br>
- -7 <br>
- Does not fail when the message has wrong length <br>
- <br>
- -v <br>
- Verbose. <br>
- <br>
- <h2><a class="anchor" name="grib_copy_examples">
-grib_copy examples</a></h2>
-<ol type=1>
-<li>To copy only the pressure levels from a file<br>
- <div class="fragment"><pre class="fragment">
-> grib_copy -w levtype=pl ../data/tigge_pf_ecmwf.grib2 out.grib
-</pre></div><br>
-</li><li>To copy only the fields that are not on pressure levels from a file<br>
- <div class="fragment"><pre class="fragment">
-> grib_copy -w levtype!=pl ../data/tigge_pf_ecmwf.grib2 out.grib
-</pre></div><br>
-</li><li>A grib_file with multi field messages can be converted in single field messages with a simple grib_copy.<br>
- <div class="fragment"><pre class="fragment">
-> grib_copy multi.grib simple.grib
-</pre></div><br>
- </li></ol>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/grib_debug.html b/html/grib_debug.html
deleted file mode 100644
index 5132e3e..0000000
--- a/html/grib_debug.html
+++ /dev/null
@@ -1,649 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: grib_debug</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1><a class="anchor" name="grib_debug">grib_debug</a></h1><h2><a class="anchor" name="DESCRIPTION">
-DESCRIPTION</a></h2>
-Dump the content of a grib file in debug mode.<h2><a class="anchor" name="USAGE">
-USAGE</a></h2>
-grib_debug [options] grib_file grib_file ...<h2><a class="anchor" name="OPTIONS">
-OPTIONS</a></h2>
--V <br>
- Version. <br>
- <br>
- <h2><a class="anchor" name="grib_debug_examples">
-grib_debug examples</a></h2>
-Dumping in a WMO documentation style with hexadecimal octet values (-H)<br>
- and with the aliases of each key listed in square brackets (-a).<br>
-<br>
- grib_dump -Ha ../data/reduced_gaussian_model_level.grib1<br>
- <div class="fragment"><pre class="fragment">
-***** FILE: ../data/reduced_gaussian_model_level.grib1 
-======================   MESSAGE 1 ( length=10142 )            ======================
-======================   SECTION_0 ( length=0, padding=0 )     ======================
-1-4       identifier = GRIB
-5-7       totalLength = 10142 ( 0x00 0x27 0x9E )
-8         editionNumber = 1 ( 0x01 ) [ls.edition]
-======================   SECTION_1 ( length=52, padding=0 )    ======================
-1-3       section1Length = 52 ( 0x00 0x00 0x34 )
-4         gribTablesVersionNo = 128 ( 0x80 ) [table2Version]
-5         identificationOfOriginatingGeneratingCentre = 98 ( 0x62 ) [European Center for Medium-Range Weather Forecasts (grib1/0.table) ] [ls.centre, identificationOfCentre, originatingCentre]
-6         generatingProcessIdentifier = 128 ( 0x80 ) [generatingProcessIdentificationNumber, process]
-7         gridDefinition = 255 ( 0xFF )
-8         section1Flags = 128 [10000000]
-9         indicatorOfParameter = 130 ( 0x82 ) [T Temperature K (grib1/2.98.128.table) ]
-10        indicatorOfTypeOfLevel = 109 ( 0x6D ) [Hybrid level level number (2 octets) (grib1/3.table) ] [ls.levelType, typeOfLevel, typeOfFirstFixedSurface, mars.levtype]
-11-12     lev = 1 ( 0x00 0x01 ) [topLevel, bottomLevel, ls.level, mars.levelist]
-13        yearOfCentury = 7 ( 0x07 )
-14        month = 3 ( 0x03 )
-15        day = 18 ( 0x12 )
-16        hour = 12 ( 0x0C )
-17        minute = 0 ( 0x00 )
-18        indicatorOfUnitOfTimeRange = 1 ( 0x01 ) [Hour (grib1/4.table) ]
-19        periodOfTime = 0 ( 0x00 ) [P1]
-20        periodOfTimeIntervals = 0 ( 0x00 ) [P2]
-21        timeRangeIndicator = 0 ( 0x00 ) [Forecast product valid at reference time + P1 (P1>0) (grib1/5.table) ]
-22-23     numberIncludedInAverage = 0 ( 0x00 0x00 )
-24        numberMissingFromAveragesOrAccumulations = 0 ( 0x00 )
-25        centuryOfReferenceTimeOfData = 21 ( 0x15 )
-26        identificationOfOriginatingGeneratingSubCentre = 0 ( 0x00 ) [Absent (grib1/0.table) ] [subCentre]
-27-28     decimalScaleFactor = 2 ( 0x00 0x02 )
-29-40     reservedNeedNotBePresent = 12 {
-               00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
-            } # pad reservedNeedNotBePresent 
-41        localDefinitionNumber = 1 ( 0x01 )
-42        marsClass = 1 ( 0x01 ) [Operational archive (mars/class.table) ] [mars.class]
-43        marsType = 2 ( 0x02 ) [Analysis (mars/type.table) ] [ls.dataType, mars.type]
-44-45     marsStream = 1025 ( 0x04 0x01 ) [Atmospheric model (mars/stream.table) ] [mars.stream]
-46-49     experimentVersionNumber = 0001 [mars.expver]
-50        perturbationNumber = 0 ( 0x00 )
-51        numberOfForecastsInEnsemble = 0 ( 0x00 )
-52        padding_local1_1 = 1 {
-                     00
-                  } # pad padding_local1_1 
-======================   SECTION_2 ( length=896, padding=0 )   ======================
-1-3       section2Length = 896 ( 0x00 0x03 0x80 )
-4         numberOfVerticalCoordinateValues = 184 ( 0xB8 ) [NV, numberOfCoordinatesValues]
-5         pvlLocation = 33 ( 0x21 )
-6         dataRepresentationType = 4 ( 0x04 ) [Gaussian Latitude/Longitude Grid (grib1/6.table) ]
-7-8       numberOfPointsAlongAParallel = MISSING ( 0xFF 0xFF ) [geography.Ni]
-9-10      numberOfPointsAlongAMeridian = 64 ( 0x00 0x40 ) [geography.Nj]
-11-13     latitudeOfFirstGridPoint = 87864 ( 0x01 0x57 0x38 ) [La1]
-14-16     longitudeOfFirstGridPoint = 0 ( 0x00 0x00 0x00 ) [Lo1]
-17        resolutionAndComponentFlags = 0 [00000000]
-18-20     latitudeOfLastGridPoint = -87864 ( 0x81 0x57 0x38 ) [La2]
-21-23     longitudeOfLastGridPoint = 357188 ( 0x05 0x73 0x44 ) [Lo2]
-24-25     iDirectionIncrement = MISSING ( 0xFF 0xFF ) [Di]
-26-27     numberOfParallelsBetweenAPoleAndTheEquator = 32 ( 0x00 0x20 )
-28        scanningMode = 0 [00000000]
-29-32     padding_grid4_1 = 4 {
-                  00, 00, 00, 00
-               } # pad padding_grid4_1 
-33-768    pv = (184,736) {
-         0,    2.00004,    3.98083,    7.38719,    12.9083,    21.4136,    33.9529,    51.7466, 
-   76.1677,    108.716,    150.986,    204.637,    271.356,    352.824,    450.686,    566.519, 
-   701.813,    857.946,    1036.17,    1237.59,    1463.16,    1713.71,    1989.87,    2292.16, 
-    2620.9,     2976.3,    3358.43,     3767.2,    4202.42,    4663.78,    5150.86,    5663.16, 
-   6199.84,    6759.73,    7341.47,    7942.93,    8564.62,     9208.3,    9873.56,    10558.9, 
-   11262.5,    11982.7,    12713.9,    13453.2,      14192,    14922.7,    15638.1,    16329.6, 
-   16990.6,    17613.3,      18191,      18717,    19184.5,    19587.5,    19919.8,    20175.4, 
-   20348.9,    20434.2,    20426.2,      20319,      20107,    19785.4,    19348.8,    18798.8, 
-   18141.3,    17385.6,    16544.6,    15633.6,    14665.6,    13653.2,    12608.4,    11543.2, 
-   10471.3,    9405.22,    8356.25,    7335.16,    6353.92,     5422.8,    4550.21,    3743.46, 
-   3010.15,     2356.2,    1784.85,    1297.66,    895.194,    576.314,    336.772,    162.043, 
-   54.2083,    6.57563,    0.00316,          0,          0,          0,          0,          0, 
-         0,          0,          0,          0
-... 84 more values
-} # ibmfloat pv 
-769-896   pl = (64,128) {
-        20,         27,         36,         40,         45,         50,         60,         64, 
-        72,         75,         80,         90,         90,         96,        100,        108, 
-       108,        120,        120,        120,        128,        128,        128,        128, 
-       128,        128,        128,        128,        128,        128,        128,        128, 
-       128,        128,        128,        128,        128,        128,        128,        128, 
-       128,        128,        128,        128,        120,        120,        120,        108, 
-       108,        100,         96,         90,         90,         80,         75,         72, 
-        64,         60,         50,         45,         40,         36,         27,         20
-} # unsigned pl 
-======================   SECTION_4 ( length=9182, padding=0 )   ======================
-1-3       section4Length = 9182 ( 0x00 0x23 0xDE )
-4         dataFlag = 0 [00000000]
-5-6       binaryScaleFactor = 0 ( 0x00 0x00 )
-7-10      referenceValue = 17402.8
-11        numberOfBitsContainingEachPackedValue = 12 ( 0x0C ) [nbp, numberOfBits, bitsPerValue]
-12-9182   values = (6114,9171) {
-   203.778,    203.468,    202.958,    202.348,    201.758,    201.278,    200.888,    200.558, 
-   200.268,    200.078,    200.068,    200.318,    200.808,    201.458,    202.138,    202.758, 
-   203.248,    203.588,    203.798,    203.878,    205.968,    205.418,    204.438,    203.218, 
-   202.008,    201.128,    200.708,    200.598,    200.478,    200.228,    199.908,    199.528, 
-   199.108,    198.708,    198.528,    198.748,    199.458,    200.488,    201.548,    202.478, 
-   203.358,    204.178,    204.808,    205.198,    205.508,    205.838,    206.068,    207.338, 
-   206.488,    205.198,    203.798,    202.548,    201.528,    200.848,    200.638,    200.818, 
-   201.028,    200.888,    200.308,    199.638,    199.228,    199.018,    198.738,    198.328, 
-   197.868,    197.358,    196.928,    196.858,    197.348,    198.368,    199.638,    200.758, 
-   201.538,    202.288,    203.338,    204.438,    205.158,    205.558,    205.938,    206.438, 
-   207.008,    207.468,    207.638,    207.178,    206.658,    205.398,    203.788,    202.468, 
-   201.338,    200.298,    199.938,    200.318,    200.608,    200.478,    200.008,    199.208, 
-   198.278,    197.708,    197.558,    197.318
-... 6014 more values
-} # data_g1simple_packing values 
-======================   SECTION_5 ( length=4, padding=0 )     ======================
-1-4       7777 = 7777
-</pre></div><br>
- <br>
- <br>
- How to obtain all the key names available in a grib file.<br>
-<br>
- grib_dump -D ../data/regular_latlon_surface.grib1 <div class="fragment"><pre class="fragment">
-***** FILE: ../data/regular_latlon_surface.grib1 
-======================   MESSAGE 1 ( length=1100 )             ======================
-0-0 constant oneConstant = 1
-0-0 constant oneMillionConstant = 1000000
-0-0 offset_file offset = 0
-0-0 count_file count = 1
-0-0 count_total countTotal = 1
-0-0 lookup kindOfProduct = 1196575042 [GRIB 1196575042 0-4]
-0-0 lookup GRIBEditionNumber = 1 [? 1 7-1]
-======> section GRIB (1100,1100,0)
-   0-0 constant grib1divider = 1000
-   0-0 constant ieeeFloats = 0
-   0-0 transient dummy = 1
-   ======> section section_0 (0,0,0)
-      ----> label empty 
-   <===== section section_0
-   0-4 ascii identifier = GRIB
-   4-7 g1_message_length totalLength = 1100
-   7-8 unsigned editionNumber = 1 [ls.edition]
-   ======> section section_1 (52,52,0)
-      8-8 constant ECMWF = 98
-      8-8 position offsetSection1 = 8
-      8-11 section_length section1Length = 52
-      11-12 unsigned gribTablesVersionNo = 128 [table2Version]
-      12-13 codetable identificationOfOriginatingGeneratingCentre = 98 [European Center for Medium-Range Weather Forecasts (grib1/0.table) ] [ls.centre, identificationOfCentre, originatingCentre]
-      13-14 unsigned generatingProcessIdentifier = 128 [generatingProcessIdentificationNumber, process]
-      14-15 unsigned gridDefinition = 255
-      15-16 codeflag section1Flags = 128 [10000000:(1=1)  Section 2 included;(2=0)  Section 3 omited:grib1/1.table]
-      16-17 codetable indicatorOfParameter = 167 [2T 2 metre temperature K (grib1/2.98.128.table) ]
-      17-17 sprintf marsParam = 167.128 [mars.param, ls.param]
-      17-18 codetable indicatorOfTypeOfLevel = 1 [Surface (of the Earth, which includes sea surface) (grib1/3.table) ] [ls.levelType, typeOfLevel, typeOfFirstFixedSurface, mars.levtype]
-      18-20 unsigned lev = 0 [topLevel, bottomLevel, ls.level, mars.levelist]
-      20-21 unsigned yearOfCentury = 7
-      21-22 unsigned month = 3
-      22-23 unsigned day = 18
-      23-24 unsigned hour = 12
-      24-25 unsigned minute = 0
-      25-25 constant second = 0
-      25-26 codetable indicatorOfUnitOfTimeRange = 1 [Hour (grib1/4.table) ]
-      26-27 unsigned periodOfTime = 0 [P1]
-      27-28 unsigned periodOfTimeIntervals = 0 [P2]
-      28-29 codetable timeRangeIndicator = 0 [Forecast product valid at reference time + P1 (P1>0) (grib1/5.table) ]
-      29-31 unsigned numberIncludedInAverage = 0
-      31-32 unsigned numberMissingFromAveragesOrAccumulations = 0
-      32-33 unsigned centuryOfReferenceTimeOfData = 21
-      33-34 codetable identificationOfOriginatingGeneratingSubCentre = 0 [Absent (grib1/0.table) ] [subCentre]
-      34-36 signed decimalScaleFactor = 0
-      36-36 transient setLocalDefinition = 0
-      36-48 pad reservedNeedNotBePresent = 12 {
-         00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
-      } # pad reservedNeedNotBePresent 
-      48-48 g1date dataDate = 20070318 [mars.date, ls.date]
-      48-48 evaluate year = 2007
-      48-48 g1monthlydate monthlyDate = 20070301
-      48-48 time dataTime = 1200 [mars.time]
-      48-48 g1startstep marsStartStep = 0 [mars.startStep]
-      48-48 g1endstep marsEndStep = 0 [mars.endStep]
-      48-48 g1step marsStep = 0 [mars.step, ls.step, forecastTime]
-      48-48 g1verificationdate verificationDate = 20070318
-      48-48 g1monthlydate monthlyVerificationDate = 20070301
-      48-48 g1day_of_the_year_date dayOfTheYearDate = 2007-078
-      48-48 constant wrongPadding = 0
-      48-48 constant localUsePresent = 1
-      48-48 g1param parameter = 167
-      48-49 unsigned localDefinitionNumber = 1
-      ======> section localDefinition (11,11,0)
-         ======> section mars_labeling (8,8,0)
-            49-50 codetable marsClass = 1 [Operational archive (mars/class.table) ] [mars.class]
-            50-51 codetable marsType = 2 [Analysis (mars/type.table) ] [ls.dataType, mars.type]
-            51-53 codetable marsStream = 1025 [Atmospheric model (mars/stream.table) ] [mars.stream]
-            53-57 ksec1expver experimentVersionNumber = 0001 [mars.expver]
-            57-57 constant SimulationsOf30Days = s3
-            57-57 constant TYPE_S3 = 22
-         <===== section mars_labeling
-         57-58 unsigned perturbationNumber = 0
-         58-59 unsigned numberOfForecastsInEnsemble = 0
-         59-60 pad padding_local1_1 = 1 {
-            00
-         } # pad padding_local1_1 
-      <===== section localDefinition
-      60-60 transient centreForTableNumber = 98
-      60-60 section_padding localExtensionPadding = 0 {}
-      60-60 section_padding section1Padding = 0 {}
-      60-60 padtoeven evenpadding_sec1 = 0 {}
-      60-60 concept grib1_short_name = 2T [ls.short_name]
-      60-60 concept grib1_name = 2_metre_temperature [name]
-      60-60 concept grib1_units = K [units]
-   <===== section section_1
-   60-60 bit gridDescriptionSectionPresent = 1 [GDSPresent]
-   60-60 bit bitmapPresent = 0 [bitmapSectionPresent]
-   ======> section section_2 (32,32,0)
-      60-60 position offsetSection2 = 60
-      60-63 section_length section2Length = 32
-      63-64 unsigned numberOfVerticalCoordinateValues = 0 [NV, numberOfCoordinatesValues]
-      64-64 constant neitherPresent = 255
-      64-65 unsigned pvlLocation = 255
-      65-66 codetable dataRepresentationType = 0 [Latitude/Longitude Grid (grib1/6.table) ]
-      ======> section dataRepresentation (22,22,0)
-         66-66 constant gridDefinitionTemplateNumber = 0
-         66-68 unsigned numberOfPointsAlongAParallel = 16 [Ni]
-         68-70 unsigned numberOfPointsAlongAMeridian = 31 [Nj]
-         70-73 signed latitudeOfFirstGridPoint = 60000 [La1]
-         73-73 scale latitudeOfFirstGridPointInDegrees = 60 [geography.laFirst]
-         73-76 signed longitudeOfFirstGridPoint = 0 [Lo1]
-         76-76 scale longitudeOfFirstGridPointInDegrees = 0 [geography.loFirst]
-         76-77 codeflag resolutionAndComponentFlags = 128 [10000000:(1=1)  Direction increments given;(2=0)  Earth assumed spherical with radius = 6367.47 km;(5=0)  u and v components resolved relative to easterly and northerly directions:grib1/7.table]
-         77-77 bit ijDirectionIncrementGiven = 1 [iDirectionIncrementGiven, jDirectionIncrementGiven, DiGiven, DjGiven]
-         77-77 bit earthIsOblate = 0
-         77-77 bit resolutionAndComponentFlags3 = 0
-         77-77 bit resolutionAndComponentFlags4 = 0
-         77-77 bit uvRelativeToGrid = 0
-         77-77 bit resolutionAndComponentFlags6 = 0
-         77-77 bit resolutionAndComponentFlags7 = 0
-         77-77 bit resolutionAndComponentFlags8 = 0
-         77-80 signed latitudeOfLastGridPoint = 0 [La2]
-         80-80 scale latitudeOfLastGridPointInDegrees = 0 [geography.laLast]
-         80-83 signed longitudeOfLastGridPoint = 30000 [Lo2]
-         83-83 transient longitudeOfLastGridPointG1to2 = 30000
-         83-83 scale longitudeOfLastGridPointInDegrees = 30 [geography.loLast]
-         83-85 unsigned iDirectionIncrement = 2000 [Di]
-         85-87 unsigned jDirectionIncrement = 2000 [Dj]
-         87-88 codeflag scanningMode = 0 [00000000:(1=0)  Points scan in +i direction;(2=0)  Points scan in -j direction;(3=0)  Adjacent points in i direction are consecutive :grib1/8.table]
-         88-88 bit iScansNegatively = 0
-         88-88 bit jScansPositively = 0
-         88-88 bit jPointsAreConsecutive = 0
-         88-88 constant iScansPositively = 1
-         88-88 bit scanningMode4 = 0
-         88-88 bit scanningMode5 = 0
-         88-88 bit scanningMode6 = 0
-         88-88 bit scanningMode7 = 0
-         88-88 bit scanningMode8 = 0
-         88-88 latlon_increment jDirectionIncrementInDegrees = 2 [geography.jInc, geography.gridNorthSouth]
-         88-88 latlon_increment iDirectionIncrementInDegrees = 2 [geography.iInc, geography.gridWestEast]
-         ----> iterator ITERATOR 
-      <===== section dataRepresentation
-      88-88 position endGridDefinition = 88
-      88-88 transient PVPresent = 0
-      88-88 position offsetBeforePV = 88
-      88-88 position offsetBeforePL = 88
-      88-88 transient PLPresent = 0 [reducedGrid]
-      88-92 padto padding_sec2_1 = 4 {
-         00, 00, 00, 00
-      } # padto padding_sec2_1 
-      92-92 padtoeven padding_sec2_3 = 0 {}
-   <===== section section_2
-   92-92 position endOfHeadersMaker = 92
-   92-92 transient missingValue = 9999
-   92-92 constant tableReference = 0
-   ======> section section_4 (1004,1004,0)
-      92-92 position offsetSection4 = 92
-      92-95 g1_section4_length section4Length = 1004
-      95-95 g1_half_byte_codeflag halfByte = 8
-      95-96 codeflag dataFlag = 8 [00001000:(1=0)  Grid-point data;(2=0)  Simple packing;(3=0)  Floating point values are represented;(4=0)  No additional flags at octet 14:grib1/11.table]
-      96-98 signed binaryScaleFactor = -10
-      98-102 ibmfloat referenceValue = 269.587
-      102-103 unsigned numberOfBitsContainingEachPackedValue = 16 [nbp, numberOfBits, bitsPerValue]
-      103-103 bit sphericalHarmonics = 0
-      103-103 bit complexPacking = 0
-      103-103 bit integerPointValues = 0
-      103-103 bit additionalFlagPresent = 0
-      ======> section dataValues (993,993,0)
-         103-103 constant dataRepresentationTemplateNumber = 0
-         103-103 position offsetBeforeData = 103
-         103-103 constant bitMapIndicator = 255
-         103-1096 data_g1simple_packing values = (496,993) {
-               277.704,    277.797,    278.103,    274.598,    269.587,    278.345,    277.213,     278.19, 
-               277.853,    276.747,    274.361,    273.636,    274.593,    273.782,    273.016,    274.316, 
-               278.492,    278.792,    278.836,    278.333,    277.389,    278.525,    278.175,    277.255, 
-               277.383,    278.047,    277.877,    276.213,     273.99,    278.333,     278.58,    277.642, 
-               278.865,    278.997,    278.509,    278.983,    279.527,    279.414,      278.8,    278.749, 
-               278.895,    279.056,    278.699,    278.426,    276.601,    277.491,    279.646,    279.198, 
-               279.108,    279.156,    279.406,    279.527,    280.344,    280.869,    279.951,    281.621, 
-               281.221,    280.676,    281.049,    280.354,    279.025,    278.192,     280.05,    280.375, 
-                280.68,    281.269,    281.406,    281.483,    279.454,    280.641,    282.984,    282.578, 
-               281.797,    281.542,    281.854,      281.5,    279.917,    280.529,    282.008,    281.102, 
-               282.223,    282.727,    280.315,    278.539,    280.066,    280.789,    280.517,    282.883, 
-               283.897,    285.161,    285.779,    285.847,    281.973,    282.869,    281.926,    280.816, 
-                282.48,    281.894,    281.035,    281.722
-            ... 396 more values
-         } # data_g1simple_packing values 
-      <===== section dataValues
-      1096-1096 size valuesCount = 496
-      1096-1096 concept typeOfGrid = regular_ll [ls.gridType]
-      1096-1096 concept typeOfPacking = grid_simple [ls.packingType, dataRepresentation]
-      1096-1096 padtoeven padding_sec4_1 = 0 {}
-   <===== section section_4
-   ======> section section_5 (4,4,0)
-      ----> label gribSection5 
-      1096-1096 position offsetSection5 = 1096
-      1096-1100 ascii 7777 = 7777
-   <===== section section_5
-<===== section GRIB
-</pre></div><br>
- <br>
-<br>
- How to obtain a C code example from a grib file.<br>
-<br>
- grib_dump -C ../data/regular_latlon_surface.grib1<br>
- <div class="fragment"><pre class="fragment"><span class="preprocessor">#include <<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>></span>
-
-<span class="comment">/* This code was generated automatically */</span>
-
-
-<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keyword">const</span> <span class="keywordtype">char</span>** argv)
-{
-    <a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h     = NULL;
-    <span class="keywordtype">size_t</span> size        = 0;
-    <span class="keywordtype">double</span>* v          = NULL;
-    FILE* f            = NULL;
-    <span class="keyword">const</span> <span class="keywordtype">char</span>* p      = NULL;
-    <span class="keyword">const</span> <span class="keywordtype">void</span>* buffer = NULL;
-
-    <span class="keywordflow">if</span>(argc != 2) {
-       fprintf(stderr,<span class="stringliteral">"usage: %s out\n"</span>,argv[0]);
-        exit(1);
-    }
-
-    h = <a class="code" href="group__grib__handle.html#g11d247e5afa10bd52fb895dc4296143f" title="Create a handle from a read_only template resource.">grib_handle_new_from_template</a>(NULL,<span class="stringliteral">"GRIB2"</span>);
-    <span class="keywordflow">if</span>(!h) {
-        fprintf(stderr,<span class="stringliteral">"Cannot create grib handle\n"</span>);
-        exit(1);
-    }
-
-
-    <span class="comment">/* empty */</span>
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"editionNumber"</span>,1),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"gribTablesVersionNo"</span>,128),0);
-
-    <span class="comment">/* 98 = European Center for Medium-Range Weather Forecasts (grib1/0.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"identificationOfOriginatingGeneratingCentre"</span>,98),0);
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"generatingProcessIdentifier"</span>,128),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"gridDefinition"</span>,255),0);
-
-    <span class="comment">/* 128 = 10000000</span>
-<span class="comment">    (1=1)  Section 2 included</span>
-<span class="comment">    (2=0)  Section 3 omited</span>
-<span class="comment">    See grib1/1.table */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"section1Flags"</span>,128),0);
-
-
-    <span class="comment">/* 167 = 2T 2 metre temperature K (grib1/2.98.128.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"indicatorOfParameter"</span>,167),0);
-
-
-    <span class="comment">/* 1 = Surface (of the Earth, which includes sea surface) (grib1/3.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"indicatorOfTypeOfLevel"</span>,1),0);
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"lev"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"yearOfCentury"</span>,7),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"month"</span>,3),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"day"</span>,18),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"hour"</span>,12),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"minute"</span>,0),0);
-
-    <span class="comment">/* 1 = Hour (grib1/4.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"indicatorOfUnitOfTimeRange"</span>,1),0);
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"periodOfTime"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"periodOfTimeIntervals"</span>,0),0);
-
-    <span class="comment">/* 0 = Forecast product valid at reference time + P1 (P1>0) (grib1/5.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"timeRangeIndicator"</span>,0),0);
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberIncludedInAverage"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberMissingFromAveragesOrAccumulations"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"centuryOfReferenceTimeOfData"</span>,21),0);
-
-    <span class="comment">/* 0 = Absent (grib1/0.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"identificationOfOriginatingGeneratingSubCentre"</span>,0),0);
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"decimalScaleFactor"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"localDefinitionNumber"</span>,1),0);
-
-    <span class="comment">/* 1 = Operational archive (mars/class.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"marsClass"</span>,1),0);
-
-
-    <span class="comment">/* 2 = Analysis (mars/type.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"marsType"</span>,2),0);
-
-
-    <span class="comment">/* 1025 = Atmospheric model (mars/stream.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"marsStream"</span>,1025),0);
-
-    p    = <span class="stringliteral">"0001"</span>;
-    size = strlen(p)+1;
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g78143cc64571b454b0aba14246e9a53a" title="Set a string value from a key.">grib_set_string</a>(h,<span class="stringliteral">"experimentVersionNumber"</span>,p,&size),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"perturbationNumber"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberOfForecastsInEnsemble"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberOfVerticalCoordinateValues"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"pvlLocation"</span>,255),0);
-
-    <span class="comment">/* 0 = Latitude/Longitude Grid (grib1/6.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"dataRepresentationType"</span>,0),0);
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberOfPointsAlongAParallel"</span>,16),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberOfPointsAlongAMeridian"</span>,31),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"latitudeOfFirstGridPoint"</span>,60000),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"longitudeOfFirstGridPoint"</span>,0),0);
-
-    <span class="comment">/* 128 = 10000000</span>
-<span class="comment">    (1=1)  Direction increments given</span>
-<span class="comment">    (2=0)  Earth assumed spherical with radius = 6367.47 km</span>
-<span class="comment">    (5=0)  u and v components resolved relative to easterly and northerly directions</span>
-<span class="comment">    See grib1/7.table */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"resolutionAndComponentFlags"</span>,128),0);
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"latitudeOfLastGridPoint"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"longitudeOfLastGridPoint"</span>,30000),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"iDirectionIncrement"</span>,2000),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"jDirectionIncrement"</span>,2000),0);
-
-    <span class="comment">/* 0 = 00000000</span>
-<span class="comment">    (1=0)  Points scan in +i direction</span>
-<span class="comment">    (2=0)  Points scan in -j direction</span>
-<span class="comment">    (3=0)  Adjacent points in i direction are consecutive </span>
-<span class="comment">    See grib1/8.table */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"scanningMode"</span>,0),0);
-
-
-    <span class="comment">/* ITERATOR */</span>
-
-
-    <span class="comment">/* 8 = 00001000</span>
-<span class="comment">    (1=0)  Grid-point data</span>
-<span class="comment">    (2=0)  Simple packing</span>
-<span class="comment">    (3=0)  Floating point values are represented</span>
-<span class="comment">    (4=0)  No additional flags at octet 14</span>
-<span class="comment">    See grib1/11.table */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"dataFlag"</span>,8),0);
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberOfBitsContainingEachPackedValue"</span>,16),0);
-    size = 496;
-    v    = (<span class="keywordtype">double</span>*)calloc(size,<span class="keyword">sizeof</span>(<span class="keywordtype">double</span>));
-    <span class="keywordflow">if</span>(!v) {
-        fprintf(stderr,<span class="stringliteral">"failed to allocate %d bytes\n"</span>,size*<span class="keyword">sizeof</span>(<span class="keywordtype">double</span>));
-        exit(1);
-    }
-
-    v[   0] = 277.704; v[   1] = 277.797; v[   2] = 278.103; v[   3] = 274.598;
-    v[   4] = 269.587; v[   5] = 278.345; v[   6] = 277.213; v[   7] =  278.19;
-    v[   8] = 277.853; v[   9] = 276.747; v[  10] = 274.361; v[  11] = 273.636;
-    v[  12] = 274.593; v[  13] = 273.782; v[  14] = 273.016; v[  15] = 274.316;
-    v[  16] = 278.492; v[  17] = 278.792; v[  18] = 278.836; v[  19] = 278.333;
-    v[  20] = 277.389; v[  21] = 278.525; v[  22] = 278.175; v[  23] = 277.255;
-    v[  24] = 277.383; v[  25] = 278.047; v[  26] = 277.877; v[  27] = 276.213;
-    v[  28] =  273.99; v[  29] = 278.333; v[  30] =  278.58; v[  31] = 277.642;
-    v[  32] = 278.865; v[  33] = 278.997; v[  34] = 278.509; v[  35] = 278.983;
-    v[  36] = 279.527; v[  37] = 279.414; v[  38] =   278.8; v[  39] = 278.749;
-    v[  40] = 278.895; v[  41] = 279.056; v[  42] = 278.699; v[  43] = 278.426;
-    v[  44] = 276.601; v[  45] = 277.491; v[  46] = 279.646; v[  47] = 279.198;
-    v[  48] = 279.108; v[  49] = 279.156; v[  50] = 279.406; v[  51] = 279.527;
-    v[  52] = 280.344; v[  53] = 280.869; v[  54] = 279.951; v[  55] = 281.621;
-    v[  56] = 281.221; v[  57] = 280.676; v[  58] = 281.049; v[  59] = 280.354;
-    v[  60] = 279.025; v[  61] = 278.192; v[  62] =  280.05; v[  63] = 280.375;
-    v[  64] =  280.68; v[  65] = 281.269; v[  66] = 281.406; v[  67] = 281.483;
-    v[  68] = 279.454; v[  69] = 280.641; v[  70] = 282.984; v[  71] = 282.578;
-    v[  72] = 281.797; v[  73] = 281.542; v[  74] = 281.854; v[  75] =   281.5;
-    v[  76] = 279.917; v[  77] = 280.529; v[  78] = 282.008; v[  79] = 281.102;
-    v[  80] = 282.223; v[  81] = 282.727; v[  82] = 280.315; v[  83] = 278.539;
-    v[  84] = 280.066; v[  85] = 280.789; v[  86] = 280.517; v[  87] = 282.883;
-    v[  88] = 283.897; v[  89] = 285.161; v[  90] = 285.779; v[  91] = 285.847;
-    v[  92] = 281.973; v[  93] = 282.869; v[  94] = 281.926; v[  95] = 280.816;
-    v[  96] =  282.48; v[  97] = 281.894; v[  98] = 281.035; v[  99] = 281.722;
-    v[ 100] = 279.978; v[ 101] = 284.138; v[ 102] = 287.234; v[ 103] = 287.831;
-    v[ 104] = 288.452; v[ 105] = 289.882; v[ 106] = 287.776; v[ 107] = 287.946;
-    v[ 108] = 281.466; v[ 109] = 284.771; v[ 110] = 283.343; v[ 111] = 282.477;
-    v[ 112] = 284.723; v[ 113] = 280.869; v[ 114] = 285.693; v[ 115] = 284.132;
-    v[ 116] = 276.881; v[ 117] = 283.388; v[ 118] = 287.295; v[ 119] = 286.764;
-    v[ 120] = 291.798; v[ 121] = 291.607; v[ 122] = 290.086; v[ 123] = 286.769;
-    v[ 124] =  284.24; v[ 125] = 280.884; v[ 126] = 286.866; v[ 127] = 284.694;
-    v[ 128] = 285.417; v[ 129] = 283.823; v[ 130] = 289.898; v[ 131] = 290.317;
-    v[ 132] = 287.031; v[ 133] = 287.949; v[ 134] = 289.263; v[ 135] = 289.869;
-    v[ 136] = 289.926; v[ 137] = 289.535; v[ 138] = 289.817; v[ 139] = 287.768;
-    v[ 140] = 290.394; v[ 141] = 290.294; v[ 142] = 287.069; v[ 143] = 281.759;
-    v[ 144] = 289.132; v[ 145] = 287.316; v[ 146] = 287.548; v[ 147] = 287.181;
-    v[ 148] = 287.645; v[ 149] = 289.492; v[ 150] = 288.956; v[ 151] = 286.634;
-    v[ 152] =   289.7; v[ 153] = 289.189; v[ 154] = 287.704; v[ 155] = 291.151;
-    v[ 156] = 286.208; v[ 157] = 291.093; v[ 158] = 284.818; v[ 159] = 282.097;
-    v[ 160] = 289.244; v[ 161] = 288.263; v[ 162] = 289.545; v[ 163] = 290.018;
-    v[ 164] = 289.881; v[ 165] = 290.215; v[ 166] = 289.999; v[ 167] = 289.447;
-    v[ 168] = 284.105; v[ 169] = 290.686; v[ 170] = 288.128; v[ 171] = 290.241;
-    v[ 172] = 289.116; v[ 173] = 289.576; v[ 174] =   291.8; v[ 175] =  286.35;
-    v[ 176] = 289.239; v[ 177] = 289.525; v[ 178] =  289.45; v[ 179] = 290.114;
-    v[ 180] = 290.301; v[ 181] = 289.429; v[ 182] = 290.005; v[ 183] = 287.195;
-    v[ 184] = 289.823; v[ 185] = 290.313; v[ 186] = 290.792; v[ 187] = 286.693;
-    v[ 188] = 291.941; v[ 189] = 290.783; v[ 190] = 290.818; v[ 191] = 287.234;
-    v[ 192] = 287.001; v[ 193] =  287.49; v[ 194] = 286.791; v[ 195] =  286.71;
-    v[ 196] = 287.182; v[ 197] =  290.49; v[ 198] = 290.322; v[ 199] = 289.957;
-    v[ 200] = 290.056; v[ 201] = 289.915; v[ 202] = 289.917; v[ 203] = 290.251;
-    v[ 204] = 290.502; v[ 205] = 290.782; v[ 206] = 291.367; v[ 207] = 291.025;
-    v[ 208] = 290.326; v[ 209] = 285.912; v[ 210] = 290.003; v[ 211] = 294.341;
-    v[ 212] = 294.048; v[ 213] = 291.771; v[ 214] = 290.675; v[ 215] = 291.203;
-    v[ 216] = 291.478; v[ 217] = 290.939; v[ 218] = 290.555; v[ 219] = 289.821;
-    v[ 220] = 290.126; v[ 221] = 291.021; v[ 222] = 291.243; v[ 223] = 290.761;
-    v[ 224] =  291.05; v[ 225] = 291.556; v[ 226] = 292.386; v[ 227] = 293.149;
-    v[ 228] = 293.301; v[ 229] = 291.821; v[ 230] = 290.157; v[ 231] = 293.427;
-    v[ 232] = 292.629; v[ 233] =  292.25; v[ 234] =  294.59; v[ 235] = 296.421;
-    v[ 236] =  296.16; v[ 237] = 290.221; v[ 238] = 290.882; v[ 239] = 290.864;
-    v[ 240] =  294.69; v[ 241] = 294.224; v[ 242] = 294.332; v[ 243] = 293.917;
-    v[ 244] = 292.863; v[ 245] = 293.005; v[ 246] = 292.814; v[ 247] = 295.443;
-    v[ 248] = 296.665; v[ 249] = 298.566; v[ 250] = 298.846; v[ 251] = 298.165;
-    v[ 252] = 297.105; v[ 253] = 294.729; v[ 254] = 294.968; v[ 255] = 293.305;
-    v[ 256] = 298.003; v[ 257] = 296.402; v[ 258] =  295.03; v[ 259] = 295.649;
-    v[ 260] = 295.811; v[ 261] = 297.203; v[ 262] = 298.222; v[ 263] =  297.12;
-    v[ 264] = 299.167; v[ 265] = 298.919; v[ 266] = 298.372; v[ 267] = 297.932;
-    v[ 268] =  296.47; v[ 269] = 295.208; v[ 270] = 294.647; v[ 271] = 294.034;
-    v[ 272] = 300.407; v[ 273] = 301.659; v[ 274] = 300.621; v[ 275] = 297.093;
-    v[ 276] = 295.676; v[ 277] = 298.434; v[ 278] = 298.906; v[ 279] = 302.369;
-    v[ 280] = 300.815; v[ 281] = 299.277; v[ 282] = 298.643; v[ 283] = 298.381;
-    v[ 284] = 296.632; v[ 285] = 294.887; v[ 286] = 295.411; v[ 287] = 293.665;
-    v[ 288] = 303.051; v[ 289] = 304.741; v[ 290] = 304.555; v[ 291] = 301.901;
-    v[ 292] = 301.846; v[ 293] = 300.793; v[ 294] = 302.141; v[ 295] = 300.521;
-    v[ 296] =  300.74; v[ 297] = 301.164; v[ 298] = 299.811; v[ 299] = 298.146;
-    v[ 300] = 298.443; v[ 301] = 293.905; v[ 302] = 295.545; v[ 303] = 296.185;
-    v[ 304] = 306.254; v[ 305] = 307.698; v[ 306] = 307.503; v[ 307] =  304.62;
-    v[ 308] = 304.458; v[ 309] = 303.097; v[ 310] =  303.69; v[ 311] = 303.482;
-    v[ 312] = 303.514; v[ 313] = 304.001; v[ 314] = 299.346; v[ 315] = 298.529;
-    v[ 316] = 297.935; v[ 317] = 295.495; v[ 318] = 295.846; v[ 319] = 296.122;
-    v[ 320] = 309.596; v[ 321] = 308.059; v[ 322] = 305.473; v[ 323] = 305.581;
-    v[ 324] =  306.11; v[ 325] = 303.994; v[ 326] = 304.602; v[ 327] = 304.286;
-    v[ 328] =  304.18; v[ 329] = 305.511; v[ 330] = 300.083; v[ 331] =  299.69;
-    v[ 332] = 297.061; v[ 333] = 296.252; v[ 334] = 296.508; v[ 335] = 298.427;
-    v[ 336] = 309.837; v[ 337] = 309.568; v[ 338] = 308.175; v[ 339] = 306.983;
-    v[ 340] = 307.399; v[ 341] = 303.002; v[ 342] = 303.582; v[ 343] = 303.765;
-    v[ 344] = 304.829; v[ 345] = 303.815; v[ 346] = 302.952; v[ 347] = 301.263;
-    v[ 348] = 296.397; v[ 349] = 298.184; v[ 350] = 297.765; v[ 351] = 299.807;
-    v[ 352] = 311.829; v[ 353] =  309.43; v[ 354] = 307.672; v[ 355] = 307.068;
-    v[ 356] = 306.384; v[ 357] = 304.862; v[ 358] = 304.397; v[ 359] = 303.944;
-    v[ 360] = 304.673; v[ 361] = 304.326; v[ 362] = 303.948; v[ 363] = 302.827;
-    v[ 364] = 297.377; v[ 365] = 296.722; v[ 366] = 298.711; v[ 367] = 300.744;
-    v[ 368] = 310.353; v[ 369] = 309.716; v[ 370] =  309.28; v[ 371] = 308.163;
-    v[ 372] = 306.711; v[ 373] =  305.75; v[ 374] =  304.74; v[ 375] = 305.384;
-    v[ 376] = 304.885; v[ 377] = 305.735; v[ 378] =  307.71; v[ 379] = 303.764;
-    v[ 380] = 303.073; v[ 381] =  300.87; v[ 382] = 300.858; v[ 383] = 302.205;
-    v[ 384] = 311.264; v[ 385] = 311.085; v[ 386] = 310.432; v[ 387] =  308.94;
-    v[ 388] = 305.619; v[ 389] =     307; v[ 390] = 306.413; v[ 391] = 307.649;
-    v[ 392] = 308.429; v[ 393] = 309.358; v[ 394] = 309.365; v[ 395] = 307.933;
-    v[ 396] =  306.15; v[ 397] = 305.126; v[ 398] = 305.611; v[ 399] = 303.336;
-    v[ 400] = 309.947; v[ 401] = 309.562; v[ 402] = 309.339; v[ 403] = 310.316;
-    v[ 404] = 308.055; v[ 405] = 307.565; v[ 406] = 310.605; v[ 407] =   308.4;
-    v[ 408] = 309.219; v[ 409] = 310.801; v[ 410] = 310.525; v[ 411] =  309.65;
-    v[ 412] = 306.611; v[ 413] = 306.033; v[ 414] = 307.988; v[ 415] = 308.941;
-    v[ 416] =   308.4; v[ 417] = 307.615; v[ 418] = 307.404; v[ 419] = 308.381;
-    v[ 420] = 309.778; v[ 421] = 311.715; v[ 422] = 308.409; v[ 423] = 307.156;
-    v[ 424] = 308.715; v[ 425] = 307.201; v[ 426] = 310.448; v[ 427] =  309.24;
-    v[ 428] = 306.716; v[ 429] = 307.307; v[ 430] = 309.062; v[ 431] = 309.776;
-    v[ 432] = 303.033; v[ 433] =  302.76; v[ 434] = 303.071; v[ 435] = 306.578;
-    v[ 436] = 309.819; v[ 437] = 305.046; v[ 438] = 309.764; v[ 439] = 307.857;
-    v[ 440] = 301.171; v[ 441] = 302.783; v[ 442] = 301.107; v[ 443] = 300.429;
-    v[ 444] = 303.189; v[ 445] = 304.585; v[ 446] = 303.709; v[ 447] = 307.132;
-    v[ 448] = 302.315; v[ 449] = 302.922; v[ 450] = 302.593; v[ 451] = 302.476;
-    v[ 452] = 302.132; v[ 453] = 305.953; v[ 454] = 300.132; v[ 455] = 301.361;
-    v[ 456] = 302.355; v[ 457] = 304.042; v[ 458] = 302.175; v[ 459] = 297.057;
-    v[ 460] = 296.072; v[ 461] = 296.644; v[ 462] = 296.895; v[ 463] =  296.22;
-    v[ 464] = 300.897; v[ 465] = 300.839; v[ 466] = 300.899; v[ 467] = 301.941;
-    v[ 468] = 302.709; v[ 469] = 301.495; v[ 470] = 302.248; v[ 471] = 301.468;
-    v[ 472] = 303.598; v[ 473] = 304.599; v[ 474] = 299.779; v[ 475] =   297.9;
-    v[ 476] = 295.564; v[ 477] = 296.015; v[ 478] = 293.688; v[ 479] = 294.294;
-    v[ 480] = 300.801; v[ 481] = 300.724; v[ 482] = 301.204; v[ 483] = 302.463;
-    v[ 484] = 302.885; v[ 485] = 305.413; v[ 486] = 305.523; v[ 487] = 303.672;
-    v[ 488] = 304.547; v[ 489] = 303.334; v[ 490] = 301.616; v[ 491] = 298.654;
-    v[ 492] = 297.975; v[ 493] = 295.379; v[ 494] =  293.83; v[ 495] = 300.082;
-   
-    GRIB_CHECK(<a class="code" href="group__get__set.html#ga24d87e236a2469309d1176ee5925d77" title="Set a double array from a key.">grib_set_double_array</a>(h,<span class="stringliteral">"values"</span>,v,size),0);
-    free(v);
-
-    <span class="comment">/* gribSection5 */</span>
-
-<span class="comment">/* Save the message */</span>
-
-    f = fopen(argv[1],<span class="stringliteral">"w"</span>);
-    <span class="keywordflow">if</span>(!f) {
-        perror(argv[1]);
-        exit(1);
-    }
-
-    GRIB_CHECK(<a class="code" href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185" title="getting the message attached to a handle">grib_get_message</a>(h,&buffer,&size),0);
-
-    <span class="keywordflow">if</span>(fwrite(buffer,1,size,f) != size) {
-        perror(argv[1]);
-        exit(1);
-    }
-
-    <span class="keywordflow">if</span>(fclose(f)) {
-        perror(argv[1]);
-        exit(1);
-    }
-
-    <a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);
-    <span class="keywordflow">return</span> 0;
-}
-</pre></div><br>
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/grib_dump.html b/html/grib_dump.html
deleted file mode 100644
index f30b6a4..0000000
--- a/html/grib_dump.html
+++ /dev/null
@@ -1,242 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: grib_dump</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1><a class="anchor" name="grib_dump">grib_dump</a></h1><h2><a class="anchor" name="DESCRIPTION">
-DESCRIPTION</a></h2>
-Dump the content of a grib file in different formats.<h2><a class="anchor" name="USAGE">
-USAGE</a></h2>
-grib_dump [options] grib_file grib_file ...<h2><a class="anchor" name="OPTIONS">
-OPTIONS</a></h2>
--O <br>
- Octet mode. WMO documentation style dump. <br>
- <br>
- -D <br>
- Debug mode. <br>
- <br>
- -P key[:{s/d/l}],key[:{s/d/l}],... <br>
- As -p adding the declared keys to the default list. <br>
- <br>
- -d <br>
- Print all data values. Available only in C mode <br>
- <br>
- -C <br>
- C code mode. A C code program generating the grib message is dumped. <br>
- <br>
- -t <br>
- Print type information. <br>
- <br>
- -H <br>
- Print octet content in hexadecimal format. <br>
- <br>
- -a <br>
- Dump aliases. <br>
- <br>
- -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,... <br>
- Where clause. Grib messages are processed only if they match all the key/value constraints. A valid constraint is of type key=value or key!=value. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be specified. Default type is string. <br>
- <br>
- -M <br>
- Multi-grib support off. Turn off support for multiple fields in single grib message <br>
- <br>
- -7 <br>
- Does not fail when the message has wrong length <br>
- <br>
- -V <br>
- Version. <br>
- <br>
- -G <br>
- GRIBEX compatibility mode. <br>
- <br>
- <h2><a class="anchor" name="grib_dump_examples">
-grib_dump examples</a></h2>
-<ol type=1>
-<li>To dump in a WMO documentation style with hexadecimal octet values (-H)<br>
- <div class="fragment"><pre class="fragment">
->grib_dump -H ../data/reduced_gaussian_model_level.grib1
-</pre></div><br>
-</li><li>To obtain all the key names available in a grib file.<br>
- <div class="fragment"><pre class="fragment">
-> grib_dump -D ../data/regular_latlon_surface.grib1
-</pre></div><br>
-</li><li>To obtain a C code example from a grib file.<br>
- <div class="fragment"><pre class="fragment">>grib_dump -C ../data/regular_latlon_surface.grib1
-<span class="preprocessor">#include <<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>></span>
-
-<span class="comment">/* This code was generated automatically */</span>
-
-
-<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keyword">const</span> <span class="keywordtype">char</span>** argv)
-{
-    <a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h     = NULL;
-    <span class="keywordtype">size_t</span> size        = 0;
-    <span class="keywordtype">double</span>* vdouble    = NULL;
-    <span class="keywordtype">long</span>* vlong        = NULL;
-    FILE* f            = NULL;
-    <span class="keyword">const</span> <span class="keywordtype">char</span>* p      = NULL;
-    <span class="keyword">const</span> <span class="keywordtype">void</span>* buffer = NULL;
-
-    <span class="keywordflow">if</span>(argc != 2) {
-       fprintf(stderr,<span class="stringliteral">"usage: %s out\n"</span>,argv[0]);
-        exit(1);
-    }
-
-    h = <a class="code" href="group__grib__handle.html#gadefac64c19fb5ff06cf805ad4af06ff" title="Create a handle from a message contained in a samples directory.">grib_handle_new_from_samples</a>(NULL,<span class="stringliteral">"GRIB1"</span>);
-    <span class="keywordflow">if</span>(!h) {
-        fprintf(stderr,<span class="stringliteral">"Cannot create grib handle\n"</span>);
-        exit(1);
-    }
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"editionNumber"</span>,1),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"table2Version"</span>,128),0);
-
-    <span class="comment">/* 98 = European Center for Medium-Range Weather Forecasts (grib1/0.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"centre"</span>,98),0);
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"generatingProcessIdentifier"</span>,130),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"gridDefinition"</span>,255),0);
-
-    <span class="comment">/* 128 = 10000000</span>
-<span class="comment">    (1=1)  Section 2 included</span>
-<span class="comment">    (2=0)  Section 3 omited</span>
-<span class="comment">    See grib1/1.table */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"section1Flags"</span>,128),0);
-
-
-    <span class="comment">/* 167 = 2 metre temperature  (K)  (grib1/2.98.128.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"indicatorOfParameter"</span>,167),0);
-
-
-    <span class="comment">/* 1 = Surface  (of the Earth, which includes sea surface)  (grib1/3.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"indicatorOfTypeOfLevel"</span>,1),0);
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"level"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"yearOfCentury"</span>,8),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"month"</span>,2),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"day"</span>,6),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"hour"</span>,12),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"minute"</span>,0),0);
-
-    <span class="comment">/* 1 = Hour (grib1/4.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"unitOfTimeRange"</span>,1),0);
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"P1"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"P2"</span>,0),0);
-
-    <span class="comment">/* 0 = Forecast product valid at reference time + P1  (P1>0)  (grib1/5.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"timeRangeIndicator"</span>,0),0);
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberIncludedInAverage"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberMissingFromAveragesOrAccumulations"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"centuryOfReferenceTimeOfData"</span>,21),0);
-
-    <span class="comment">/* 0 = Unknown code table entry (grib1/0.ecmf.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"subCentre"</span>,0),0);
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"decimalScaleFactor"</span>,0),0);
-
-    <span class="comment">/* 1 = MARS labelling or ensemble forecast data (grib1/localDefinitionNumber.98.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"localDefinitionNumber"</span>,1),0);
-
-
-    <span class="comment">/* 1 = Operational archive (mars/class.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"marsClass"</span>,1),0);
-
-
-    <span class="comment">/* 2 = Analysis (mars/type.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"marsType"</span>,2),0);
-
-
-    <span class="comment">/* 1025 = Atmospheric model (mars/stream.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"marsStream"</span>,1025),0);
-
-    p    = <span class="stringliteral">"0001"</span>;
-    size = strlen(p)+1;
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g78143cc64571b454b0aba14246e9a53a" title="Set a string value from a key.">grib_set_string</a>(h,<span class="stringliteral">"experimentVersionNumber"</span>,p,&size),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"perturbationNumber"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberOfForecastsInEnsemble"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"numberOfVerticalCoordinateValues"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"pvlLocation"</span>,255),0);
-
-    <span class="comment">/* 0 = Latitude/Longitude Grid (grib1/6.table)  */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"dataRepresentationType"</span>,0),0);
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"Ni"</span>,16),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"Nj"</span>,31),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"latitudeOfFirstGridPoint"</span>,60000),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"longitudeOfFirstGridPoint"</span>,0),0);
-
-    <span class="comment">/* 128 = 10000000</span>
-<span class="comment">    (1=1)  Direction increments given</span>
-<span class="comment">    (2=0)  Earth assumed spherical with radius = 6367.47 km</span>
-<span class="comment">    (5=0)  u and v components resolved relative to easterly and northerly directions</span>
-<span class="comment">    See grib1/7.table */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"resolutionAndComponentFlags"</span>,128),0);
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"latitudeOfLastGridPoint"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"longitudeOfLastGridPoint"</span>,30000),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"iDirectionIncrement"</span>,2000),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"jDirectionIncrement"</span>,2000),0);
-
-    <span class="comment">/* 0 = 00000000</span>
-<span class="comment">    (1=0)  Points scan in +i direction</span>
-<span class="comment">    (2=0)  Points scan in -j direction</span>
-<span class="comment">    (3=0)  Adjacent points in i direction are consecutive </span>
-<span class="comment">    See grib1/8.table */</span>
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"scanningMode"</span>,0),0);
-
-
-    <span class="comment">/* ITERATOR */</span>
-
-
-    <span class="comment">/* NEAREST */</span>
-
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"bitsPerValue"</span>,16),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"sphericalHarmonics"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"complexPacking"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"integerPointValues"</span>,0),0);
-    GRIB_CHECK(<a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"additionalFlagPresent"</span>,0),0);
-
-    <span class="comment">/* gribSection5 */</span>
-
-<span class="comment">/* Save the message */</span>
-
-    f = fopen(argv[1],<span class="stringliteral">"w"</span>);
-    <span class="keywordflow">if</span>(!f) {
-        perror(argv[1]);
-        exit(1);
-    }
-
-    GRIB_CHECK(<a class="code" href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185" title="getting the message attached to a handle">grib_get_message</a>(h,&buffer,&size),0);
-
-    <span class="keywordflow">if</span>(fwrite(buffer,1,size,f) != size) {
-        perror(argv[1]);
-        exit(1);
-    }
-
-    <span class="keywordflow">if</span>(fclose(f)) {
-        perror(argv[1]);
-        exit(1);
-    }
-
-    <a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);
-    <span class="keywordflow">return</span> 0;
-}
-</pre></div><br>
- </li></ol>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/grib_dump_examples.html b/html/grib_dump_examples.html
deleted file mode 100644
index e44ec3c..0000000
--- a/html/grib_dump_examples.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: grib_dump examples</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1><a class="anchor" name="grib_dump_examples">grib_dump examples</a></h1>With the -O option you can get only the keys actually coded into the message, with the -a option the aliases of each key are printed. <a class="el" href="grib_dump.html">grib_dump</a> -Oa "grib_file" <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/grib_examples.html b/html/grib_examples.html
deleted file mode 100644
index fe57c0b..0000000
--- a/html/grib_examples.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: Grib API examples</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1><a class="anchor" name="grib_examples">Grib API examples</a></h1>The main features of the grib_api are explained here through some simple examples that can be taken as a starting point to write more complex programs.<br>
-<h2><a class="anchor" name="fortran90">
-Fortran 90</a></h2>
-<ul>
-<li><a class="el" href="index_8f90-example.html">index.f90</a> how to access a grib file through an index.</li><li><a class="el" href="get_8f90-example.html">get.f90</a> how to get values through the key names.</li><li><a class="el" href="count__messages_8f90-example.html">count_messages.f90</a> count the messages in a file and loop through them.</li><li><a class="el" href="get__pl_8f90-example.html">get_pl.f90</a> how to get the list of number of points for each parallel in reduced grid [...]
-<h2><a class="anchor" name="C">
-C</a></h2>
-<ul>
-<li><a class="el" href="get_8c-example.html">get.c</a> is an example showing how to get values through the key names.</li><li><a class="el" href="set_8c-example.html">set.c</a> is an example illustrating how to set values through the key names.</li><li><a class="el" href="keys__iterator_8c-example.html">keys_iterator.c</a> explains how to get the names of all the keys defined in a message and how to iterate through them.</li><li><a class="el" href="iterator_8c-example.html">iterator.c</a [...]
-<h2><a class="anchor" name="fortran77">
-Fortran 77</a></h2>
-<ul>
-<li><a class="el" href="get__fortran_8_f-example.html">get_fortran.F</a> is an example showing how to get values through the key names.</li><li><a class="el" href="set__fortran_8_f-example.html">set_fortran.F</a> is an example illustrating how to set values through the key names.</li><li><a class="el" href="keys__iterator__fortran_8_f-example.html">keys_iterator_fortran.F</a> explains how to get the names of all the keys defined in a message and how to iterate through them.</li><li><a cl [...]
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/grib_filter.html b/html/grib_filter.html
deleted file mode 100644
index d054d98..0000000
--- a/html/grib_filter.html
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: grib_filter</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1><a class="anchor" name="grib_filter">grib_filter</a></h1><h2><a class="anchor" name="DESCRIPTION">
-DESCRIPTION</a></h2>
-Apply the rules defined in rules_file to each grib message in the grib files provided as arguments.<h2><a class="anchor" name="USAGE">
-USAGE</a></h2>
-grib_filter [options] rules_file grib_file grib_file ...<h2><a class="anchor" name="OPTIONS">
-OPTIONS</a></h2>
--f <br>
- Force. Force the execution not to fail on error. <br>
- <br>
- -o output_grib_file <br>
- Output grib is written to ouput_grib_file. If an ouput grib file is required and -o is not used, theouput grib is written to filtered.out <br>
- <br>
- -M <br>
- Multi-grib support off. Turn off support for multiple fields in single grib message <br>
- <br>
- -V <br>
- Version. <br>
- <br>
- -g <br>
- Copy GTS header. <br>
- <br>
- -G <br>
- GRIBEX compatibility mode. <br>
- <br>
- -7 <br>
- Does not fail when the message has wrong length <br>
- <br>
- -v <br>
- Verbose. <br>
- <br>
- <h2><a class="anchor" name="grib_filter_examples">
-grib_filter examples</a></h2>
-<ol type=1>
-<li>The rules accepted by grib_filter are different from the grib_convert rules due to the kind of work grib_filter it is supposed to do.<br>
- The main difference between grib_filter and grib_convert is that the convert is a 1 field in input 1 field in output tool, while the filter is a 1 field in input as many field you need in output. At this aim the filter syntax allows a write in the form: write "filename". So that it is possible repeating as many write you need or using a parametrised write to send the output to many files. <br>
- The grib_filter processes sequentially all the grib messages contained in the input file and it applies the rules to each one. <br>
- Since the filename used in the write statement can contain some key values, taken from the grib processed when applying the "write rule", several files are produced in output containing fields with the same value of the keys used in the file name. <br>
- Indeed if we write a rules_file containing the only statement:<br>
- <br>
- <div class="fragment"><pre class="fragment">
-write "../data/split/[centre]_[date]_[dataType]_[levelType].grib[editionNumber]";
-</pre></div><br>
- Applying this rules_file to the ../data/tigge_pf_ecmwf.grib2 grib file we obtain several files in the ../data/split directory containting fields splitted according their keys values<br>
- <div class="fragment"><pre class="fragment">
->grib_filter rules_file ../data/tigge_pf_ecmwf.grib2
->ls ../data/split
-ecmf_20060619_pf_sfc.grib2
-ecmf_20060630_pf_sfc.grib2
-ecmf_20070122_pf_pl.grib2
-ecmf_20070122_pf_pt.grib2
-ecmf_20070122_pf_pv.grib2
-ecmf_20070122_pf_sfc.grib2
-</pre></div><br>
-</li><li>The key values in the file name can also be obtained in a different format by indicating explicitly the type required after a colon.<ul>
-<li>:l for long</li><li>:d for double</li><li>:s for string</li></ul>
-The following statement works in a slightly different way from the previous example, including in the output file name the long values for centre and dataType.<br>
- <div class="fragment"><pre class="fragment">
-write "../data/split/[centre:l]_[date]_[dataType:l]_[levelType].grib[editionNumber]";
-</pre></div><br>
- Running the same command again we obtain a different list of files.<br>
- <div class="fragment"><pre class="fragment">
->grib_filter rules_file ../data/tigge_pf_ecmwf.grib2
->ls ../data/split
-98_20060619_4_sfc.grib2
-98_20060630_4_sfc.grib2
-98_20070122_4_pl.grib2
-98_20070122_4_pt.grib2
-98_20070122_4_pv.grib2
-98_20070122_4_sfc.grib2
-</pre></div><br>
-</li><li>Other statements are allowed in the grib_filter syntax:<ul>
-<li>if ( condition ) { statement;}<br>
- The condition can be made using ==,!= and joining single block conditions with || and && <br>
- The statement can be any valid statement also another nested condition<br>
-</li><li>set keyname = keyvalue;</li><li>print "string to print also with key values like in the file name"</li><li>transient keyname1 = keyname2;</li><li>comments beginning with #</li></ul>
-A complex example of grib_filter rules is the following to change temperature in a grib edition 1 file. <div class="fragment"><pre class="fragment">
-# Temperature
-if ( level == 850 && indicatorOfParameter == 11 ) {
-    print "found indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]";
-    transient oldtype = type ;
-    set identificationOfOriginatingGeneratingSubCentre=98;
-    set gribTablesVersionNo = 128;
-    set indicatorOfParameter = 130;
-    set localDefinitionNumber=1;
-    set marsClass="od";
-    set marsStream="kwbc";
-    # Negatively/Positively Perturbed Forecast
-    if ( oldtype == 2 || oldtype == 3 ) {
-      set marsType="pf";
-      set experimentVersionNumber="4001";
-    }
-    # Control Forecast
-    if ( oldtype == 1 ) {
-      set marsType="cf";
-      set experimentVersionNumber="0001";
-    }
-    set numberOfForecastsInEnsemble=11;
-    write;
-    print "indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]";
-    print;
-}
-</pre></div><br>
- </li></ol>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/grib_get.html b/html/grib_get.html
deleted file mode 100644
index ee8b0aa..0000000
--- a/html/grib_get.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: grib_get</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1><a class="anchor" name="grib_get">grib_get</a></h1><h2><a class="anchor" name="DESCRIPTION">
-DESCRIPTION</a></h2>
-Get values of some keys from a grib file. It is similar to grib_ls, but fails returning an error code when an error occurs (e.g. key not found).<h2><a class="anchor" name="USAGE">
-USAGE</a></h2>
-grib_get [options] grib_file grib_file ...<h2><a class="anchor" name="OPTIONS">
-OPTIONS</a></h2>
--f <br>
- Force. Force the execution not to fail on error. <br>
- <br>
- -p key[:{s/d/l}],key[:{s/d/l}],... <br>
- Declaration of keys to print. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be requested. Default type is string. <br>
- <br>
- -F format <br>
- C style format for floating point values. <br>
- <br>
- -l Latitude,Longitude[,MODE,file] <br>
- Value close to the point of a Latitude/Longitude. Allowed values for MODE are: 4 (4 values in the nearest points are printed) Default 1 (the value at the nearest point is printed) file (file is used as mask. The closer point with mask value>=0.5 is printed) <br>
- <br>
- -P key[:{s/d/l}],key[:{s/d/l}],... <br>
- As -p adding the declared keys to the default list. <br>
- <br>
- -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,... <br>
- Where clause. Grib messages are processed only if they match all the key/value constraints. A valid constraint is of type key=value or key!=value. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be specified. Default type is string. <br>
- <br>
- -n namespace <br>
- All the keys belonging to namespace are printed. <br>
- <br>
- -V <br>
- Version. <br>
- <br>
- -W width <br>
- Minimum width of each column in output. Default is 10. <br>
- <br>
- -m <br>
- Mars keys are printed. <br>
- <br>
- -M <br>
- Multi-grib support off. Turn off support for multiple fields in single grib message <br>
- <br>
- -g <br>
- Copy GTS header. <br>
- <br>
- -G <br>
- GRIBEX compatibility mode. <br>
- <br>
- -7 <br>
- Does not fail when the message has wrong length <br>
- <br>
- <h2><a class="anchor" name="grib_get_examples">
-grib_get examples</a></h2>
-<ol type=1>
-<li>grib_get fails if a key is not found.<br>
- <div class="fragment"><pre class="fragment">
->grib_get -p gribname ../data/tigge_pf_ecmwf.grib2
-
-</pre></div></li><li>To get the step of the first GRIB message in a file: <br>
- <div class="fragment"><pre class="fragment">
->grib_get -w count=1 -p step ../data/tigge_pf_ecmwf.grib2
-</pre></div> </li></ol>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/grib_get_data.html b/html/grib_get_data.html
deleted file mode 100644
index bcb3446..0000000
--- a/html/grib_get_data.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: grib_get_data</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1><a class="anchor" name="grib_get_data">grib_get_data</a></h1><h2><a class="anchor" name="DESCRIPTION">
-DESCRIPTION</a></h2>
-Print a latitude, longitude, data values list<h2><a class="anchor" name="USAGE">
-USAGE</a></h2>
-grib_get_data [options] grib_file grib_file ...<h2><a class="anchor" name="OPTIONS">
-OPTIONS</a></h2>
--M <br>
- Multi-grib support off. Turn off support for multiple fields in single grib message <br>
- <br>
- -m missingValue <br>
- The missing value is given through this option. Any string is allowed and it is printed in place of the missing values. Default is to skip the missing values. <br>
- <br>
- -p key[:{s/d/l}],key[:{s/d/l}],... <br>
- Declaration of keys to print. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be requested. Default type is string. <br>
- <br>
- -R key1=relative_error1,key2=relative_error2,... <br>
- Compare floating point values using the relative error as tolerance. key1=relative_error will compare key1 using relative_error1. all=relative_error will compare all the floating point keys using relative_error. Default all=0. <br>
- <br>
- -F format <br>
- C style format for values. Default is "%.10e" <br>
- <br>
- -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,... <br>
- Where clause. Grib messages are processed only if they match all the key/value constraints. A valid constraint is of type key=value or key!=value. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be specified. Default type is string. <br>
- <br>
- -f <br>
- Force. Force the execution not to fail on error. <br>
- <br>
- -G <br>
- GRIBEX compatibility mode. <br>
- <br>
- -7 <br>
- Does not fail when the message has wrong length <br>
- <br>
- -V <br>
- Version. <br>
- <br>
- <h2><a class="anchor" name="grib_get_data_examples">
-grib_get_data examples</a></h2>
-<ol type=1>
-<li>To get a latitude, longitude, value list, skipping the missing values(=9999) <div class="fragment"><pre class="fragment">
->grib_get_data ../data/reduced_gaussian_model_level.grib2
-</pre></div></li><li>If you want to define your missing value=1111 and to print the string missing in place of it <div class="fragment"><pre class="fragment">
->grib_get_data -m 1111:missing ../data/reduced_gaussian_model_level.grib2
-</pre></div></li><li>If you want to print the value of other keys with the data value list <div class="fragment"><pre class="fragment">
->grib_get_data -p centre,level,step ../data/reduced_gaussian_model_level.grib2
-</pre></div> </li></ol>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/grib_keys.html b/html/grib_keys.html
deleted file mode 100644
index f0e550f..0000000
--- a/html/grib_keys.html
+++ /dev/null
@@ -1,153 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: grib_keys</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1><a class="anchor" name="grib_keys">grib_keys</a></h1><h2><a class="anchor" name="DESCRIPTION">
-DESCRIPTION</a></h2>
-Lists the keys available for a type of grib (-T option) or in a grib message from a file (-F option).<h2><a class="anchor" name="USAGE">
-USAGE</a></h2>
-grib_keys [options]<h2><a class="anchor" name="OPTIONS">
-OPTIONS</a></h2>
--T type <br>
- To print the keys available in the given grib type. For a list of the availeble types see -L option. <br>
- <br>
- -F file <br>
- To print the keys available in the grib file. <br>
- <br>
- -x <br>
- Print the extended set of keys. <br>
- <br>
- -c <br>
- Print only coded keys. <br>
- <br>
- -L <br>
- List of available types. <br>
- <br>
- -t <br>
- Print type information. <br>
- <br>
- -a <br>
- Dump aliases. <br>
- <br>
- <h2><a class="anchor" name="grib_keys_examples">
-grib_keys examples</a></h2>
-<ol type=1>
-<li>With the -L option a list of the available templates is printed <br>
- <div class="fragment"><pre class="fragment">
-> grib_keys -L \n
-GRIB1
-GRIB2
-reduced_gg_ml_grib2
-reduced_gg_pl_grib1
-reduced_gg_sfc_grib1
-reduced_gg_ml_grib1
-reduced_gg_pl_grib2
-reduced_gg_sfc_grib2
-reduced_gg_sfc_jpeg_grib2
-reduced_ll_sfc_grib1
-reduced_ll_sfc_grib2
-regular_gg_ml_grib1
-regular_gg_ml_grib2
-regular_gg_pl_grib1
-regular_gg_pl_grib2
-regular_ll_sfc_grib1
-regular_ll_sfc_grib2
-regular_ll_pl_grib1
-regular_ll_pl_grib2
-sh_ml_grib1
-sh_ml_grib2
-sh_pl_grib1
-sh_pl_grib2
-</pre></div><br>
-</li><li>To print the standard set of key available for a given type<br>
- <div class="fragment"><pre class="fragment">
-> grib_keys -T regular_ll_sfc_grib1
-=================== regular_ll_sfc_grib1 
-editionNumber
-====> SECTION 1 <==== 
-table2Version
-centre
-generatingProcessIdentifier
-indicatorOfParameter
-marsParam (read only)
-indicatorOfTypeOfLevel
-level
-timeRangeIndicator
-subCentre
-decimalScaleFactor
-dataDate
-dataTime
-stepUnits
-stepRange
-startStep
-endStep
-localDefinitionNumber
-marsClass
-marsType
-marsStream
-experimentVersionNumber
-perturbationNumber
-numberOfForecastsInEnsemble
-name (read only)
-units (read only)
-bitmapPresent
-====> SECTION 2 <==== 
-numberOfVerticalCoordinateValues
-Ni
-Nj
-latitudeOfFirstGridPointInDegrees
-longitudeOfFirstGridPointInDegrees
-earthIsOblate
-uvRelativeToGrid
-latitudeOfLastGridPointInDegrees
-longitudeOfLastGridPointInDegrees
-DjInDegrees
-DiInDegrees
-iScansNegatively
-jScansPositively
-jPointsAreConsecutive
-alternativeRowScanning (read only)
-numberOfDataPoints (read only)
-numberOfValues (read only)
-missingValue
-====> SECTION 4 <==== 
-binaryScaleFactor (read only)
-referenceValue (read only)
-bitsPerValue
-sphericalHarmonics
-complexPacking
-integerPointValues
-additionalFlagPresent
-typeOfPacking
-values
-numberOfCodedValues (read only)
-maximum (read only)
-minimum (read only)
-average (read only)
-numberOfMissing (read only)
-standardDeviation (read only)
-skewness (read only)
-kurtosis (read only)
-isConstant (read only)
-typeOfGrid
-getNumberOfValues (read only)
-====> SECTION 5 <==== 
-</pre></div><br>
- </li></ol>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/grib_ls.html b/html/grib_ls.html
deleted file mode 100644
index b622cf7..0000000
--- a/html/grib_ls.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: grib_ls</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1><a class="anchor" name="grib_ls">grib_ls</a></h1><h2><a class="anchor" name="DESCRIPTION">
-DESCRIPTION</a></h2>
-List content of grib files printing values of some keys. It does not fail when a key is not found.<h2><a class="anchor" name="USAGE">
-USAGE</a></h2>
-grib_ls [options] grib_file grib_file ...<h2><a class="anchor" name="OPTIONS">
-OPTIONS</a></h2>
--p key[:{s/d/l}],key[:{s/d/l}],... <br>
- Declaration of keys to print. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be requested. Default type is string. <br>
- <br>
- -F format <br>
- C style format for floating point values. <br>
- <br>
- -P key[:{s/d/l}],key[:{s/d/l}],... <br>
- As -p adding the declared keys to the default list. <br>
- <br>
- -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,... <br>
- Where clause. Grib messages are processed only if they match all the key/value constraints. A valid constraint is of type key=value or key!=value. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be specified. Default type is string. <br>
- <br>
- -B order by directive <br>
- Order by. The output will be ordered according the order by directive. Order by example: "step asc, centre desc" (step ascending and centre discending) <br>
- <br>
- -l Latitude,Longitude[,MODE,file] <br>
- Value close to the point of a Latitude/Longitude. Allowed values for MODE are: 4 (4 values in the nearest points are printed) Default 1 (the value at the nearest point is printed) file (file is used as mask. The closer point with mask value>=0.5 is printed) <br>
- <br>
- -i index <br>
- Data value corresponding to the given index is printed. <br>
- <br>
- -n namespace <br>
- All the keys belonging to namespace are printed. <br>
- <br>
- -m <br>
- Mars keys are printed. <br>
- <br>
- -V <br>
- Version. <br>
- <br>
- -W width <br>
- Minimum width of each column in output. Default is 10. <br>
- <br>
- -M <br>
- Multi-grib support off. Turn off support for multiple fields in single grib message <br>
- <br>
- -g <br>
- Copy GTS header. <br>
- <br>
- -G <br>
- GRIBEX compatibility mode. <br>
- <br>
- -7 <br>
- Does not fail when the message has wrong length <br>
- <br>
- <h2><a class="anchor" name="grib_ls_examples">
-grib_ls examples</a></h2>
-<ol type=1>
-<li>Without options a default list of keys is printed. <br>
- The default list is different depending on the type of grib message. <br>
- <div class="fragment"><pre class="fragment">
-> grib_ls ../data/reduced*.grib1 ../data/regular*.grib1 ../data/reduced*.grib2 \n
-</pre></div><br>
-</li><li>To print offset and count number in file use the keys offset and count<br>
- Also the total count in a set of files is available as countTotal<br>
- <div class="fragment"><pre class="fragment">
-> grib_ls -p offset,count,countTotal ../data/reduced*.grib1
-</pre></div><br>
-</li><li>To list only a subset of messages use the -w (where option).<br>
- Only the pressure levels are listed with the following line.<br>
- <div class="fragment"><pre class="fragment">
-> grib_ls -w levType=pl ../tigge_pf_ecmwf.grib2 
-</pre></div><br>
-</li><li>All the grib messages not on pressure levels are listed as follows:<br>
- <div class="fragment"><pre class="fragment">
-> grib_ls -w levType!=pl ../tigge_pf_ecmwf.grib2 
-</pre></div><br>
- </li></ol>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/grib_set.html b/html/grib_set.html
deleted file mode 100644
index 9a1976e..0000000
--- a/html/grib_set.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: grib_set</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1><a class="anchor" name="grib_set">grib_set</a></h1><h2><a class="anchor" name="DESCRIPTION">
-DESCRIPTION</a></h2>
-Sets key/value pairs in the input grib file and writes each message to the output_grib_file. It fails when an error occurs (e.g. key not found).<h2><a class="anchor" name="USAGE">
-USAGE</a></h2>
-grib_set [options] grib_file grib_file ... output_grib_file<h2><a class="anchor" name="OPTIONS">
-OPTIONS</a></h2>
--s key[:{s/d/l}]=value,key[:{s/d/l}]=value,... <br>
- Key/values to set. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be defined. By default the native type is set. <br>
- <br>
- -r <br>
- Repack data. Sometimes after setting some keys involving properties of the packing algorithm a repacking of data is needed. This repacking is performed setting this -r option. <br>
- <br>
- -d value <br>
- Set all the data values to "value". <br>
- <br>
- -p key[:{s/d/l}],key[:{s/d/l}],... <br>
- Declaration of keys to print. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be requested. Default type is string. <br>
- <br>
- -P key[:{s/d/l}],key[:{s/d/l}],... <br>
- As -p adding the declared keys to the default list. <br>
- <br>
- -w key[:{s/d/l}]=value,key[:{s/d/l}]=value,... <br>
- Where clause. Set is only executed for grib messages matching all the key/value constraints. If a grib message does not match the constraints it is copied unchanged to the output_grib_file. This behaviour can be changed setting the option -S. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be defined. Default type is string. <br>
- <br>
- -7 <br>
- Does not fail when the message has wrong length <br>
- <br>
- -S <br>
- Strict. Only grib messages matching all the constraints are copied to the output file <br>
- <br>
- -V <br>
- Version. <br>
- <br>
- -M <br>
- Multi-grib support off. Turn off support for multiple fields in single grib message <br>
- <br>
- -g <br>
- Copy GTS header. <br>
- <br>
- -G <br>
- GRIBEX compatibility mode. <br>
- <br>
- -f <br>
- Force. Force the execution not to fail on error. <br>
- <br>
- -v <br>
- Verbose. <br>
- <br>
- <h2><a class="anchor" name="grib_set_examples">
-grib_set examples</a></h2>
-<ol type=1>
-<li>To set productDefinitionTemplateNumber=2 only for the fields with productDefinitionTemplateNumber=11 <br>
- <div class="fragment"><pre class="fragment">
->grib_set -s productDefinitionTemplateNumber=2 -w productDefinitionTemplateNumber=11 ../data/tigge_pf_ecmwf.grib2 out.grib2
-</pre></div><br>
-</li><li>To set productDefinitionTemplateNumber=2 only for the fields for which productDefinitionTemplateNumber is not equal to 11 <br>
- <div class="fragment"><pre class="fragment">
->grib_set -s productDefinitionTemplateNumber=2 -w productDefinitionTemplateNumber!=11 tigge_pf_ecmwf.grib2 out.grib2
-</pre></div><br>
-</li><li>When a key is not used all the bits of its value should be set to 1 to indicate that it is missing. Since the length (number of octet) is different from a key to another, the value that we have to code for missing keys is not unique. To give an easy way to set a key to missing a string "missing" or "MISSING" is accepted by grib_set as follows:<br>
- <div class="fragment"><pre class="fragment">
->grib_set -s scaleFactorOfFirstFixedSurface=missing,scaledValueOfFirstFixedSurface=MISSING ../data/regular_latlon_surface.grib2 out.grib2
-</pre></div><br>
- Since some values can not be set to missing you can get an error for those keys.</li><li>To set scaleFactorOfSecondFixedSurface to missing only for the fields for which scaleFactorOfSecondFixedSurface is not missing: <br>
- <div class="fragment"><pre class="fragment">
->grib_set -s scaleFactorOfSecondFixedSurface=missing -w scaleFactorOfSecondFixedSurface!=missing tigge_pf_ecmwf.grib2 out.grib2
-</pre></div><br>
-</li><li>It's possible to produce a grib edition 2 file from a grib edition 1 just changing the edition number with grib_set. At this stage of development all the geography parameters, level and time information is correctly translated, for the product definition extra set calls must be done. To do this properly <a class="el" href="grib_convert.html">grib_convert</a> is suggested. <br>
- <div class="fragment"><pre class="fragment">
-grib_set -s editionNumber=2 ../data/reduced_gaussian_pressure_level.grib1
-</pre></div><br>
-</li><li>With grib edition 2 is possible to compress data using the jpeg algorithm. To change packing algorithm from grid_simple (simple packing) to grid_jpeg (jpeg2000 packing):<br>
- <div class="fragment"><pre class="fragment">
->grib_set -s packingType=grid_jpeg ../data/regular_gaussian_model_level.grib2 out.grib2
-</pre></div><br>
-</li><li>It's possible to ask grib_api to calculate the number of bits per value needed to pack a given field with a fixed number of decimal digits of precision. For example if we want to pack a temperature expressed in Kelvin with 1 digits of precision after the decimal point we can set changeDecimalPrecision=1 <br>
- <div class="fragment"><pre class="fragment">
->grib_set -s changeDecimalPrecision=1 ../data/regular_latlon_surface.grib2 ../data/out.grib2
-rm -f ../data/out.grib2 | true
-./grib_set -s changeDecimalPrecision=1 ../data/regular_latlon_surface.grib2 ../data/out.grib2
-</pre></div><br>
- </li></ol>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/group__codes__handle.html b/html/group__codes__handle.html
new file mode 100644
index 0000000..7de41f1
--- /dev/null
+++ b/html/group__codes__handle.html
@@ -0,0 +1,774 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: The message handle</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Data Structures</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">The message handle</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcodes__handle.html">codes_handle</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcodes__multi__handle.html">codes_multi_handle</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga4c2203d55c2c3ca792e44e4eb26edfb5"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga4c2203d55c2c3ca792e44e4eb26edfb5">codes_count_in_file</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, FILE *f, int *n)</td></tr>
+<tr class="memdesc:ga4c2203d55c2c3ca792e44e4eb26edfb5"><td class="mdescLeft"> </td><td class="mdescRight">Counts the messages contained in a file resource.  <a href="#ga4c2203d55c2c3ca792e44e4eb26edfb5">More...</a><br/></td></tr>
+<tr class="separator:ga4c2203d55c2c3ca792e44e4eb26edfb5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6ec42bd6272b4a0f2cb2b220b86c71c8"><td class="memItemLeft" align="right" valign="top">grib_handle * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga6ec42bd6272b4a0f2cb2b220b86c71c8">codes_handle_new_from_file</a> (grib_context *c, FILE *f, ProductKind product, int *error)</td></tr>
+<tr class="memdesc:ga6ec42bd6272b4a0f2cb2b220b86c71c8"><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a file resource.  <a href="#ga6ec42bd6272b4a0f2cb2b220b86c71c8">More...</a><br/></td></tr>
+<tr class="separator:ga6ec42bd6272b4a0f2cb2b220b86c71c8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga36de77229cc3b386d26c1e7b52c21e0e"><td class="memItemLeft" align="right" valign="top">grib_handle * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga36de77229cc3b386d26c1e7b52c21e0e">codes_grib_handle_new_from_file</a> (grib_context *c, FILE *f, int *error)</td></tr>
+<tr class="memdesc:ga36de77229cc3b386d26c1e7b52c21e0e"><td class="mdescLeft"> </td><td class="mdescRight">Create a GRIB handle from a file resource.  <a href="#ga36de77229cc3b386d26c1e7b52c21e0e">More...</a><br/></td></tr>
+<tr class="separator:ga36de77229cc3b386d26c1e7b52c21e0e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6958c3cd7e4059af5c26898a872262ff"><td class="memItemLeft" align="right" valign="top">grib_handle * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga6958c3cd7e4059af5c26898a872262ff">codes_bufr_handle_new_from_file</a> (grib_context *c, FILE *f, int *error)</td></tr>
+<tr class="memdesc:ga6958c3cd7e4059af5c26898a872262ff"><td class="mdescLeft"> </td><td class="mdescRight">Create a BUFR handle from a file resource.  <a href="#ga6958c3cd7e4059af5c26898a872262ff">More...</a><br/></td></tr>
+<tr class="separator:ga6958c3cd7e4059af5c26898a872262ff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac82dbaba240ebf6e76cdbcf2007a6bee"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#gac82dbaba240ebf6e76cdbcf2007a6bee">codes_write_message</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *file, const char *mode)</td></tr>
+<tr class="memdesc:gac82dbaba240ebf6e76cdbcf2007a6bee"><td class="mdescLeft"> </td><td class="mdescRight">Write a coded message to a file.  <a href="#gac82dbaba240ebf6e76cdbcf2007a6bee">More...</a><br/></td></tr>
+<tr class="separator:gac82dbaba240ebf6e76cdbcf2007a6bee"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaece49330c864391261cd6a0c10a18dc2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#gaece49330c864391261cd6a0c10a18dc2">codes_handle_new_from_message</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, void *data, size_t data_len)</td></tr>
+<tr class="memdesc:gaece49330c864391261cd6a0c10a18dc2"><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message in memory.  <a href="#gaece49330c864391261cd6a0c10a18dc2">More...</a><br/></td></tr>
+<tr class="separator:gaece49330c864391261cd6a0c10a18dc2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga385864d5f06e1de0e8ee13388ca4117c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga385864d5f06e1de0e8ee13388ca4117c">codes_grib_handle_new_from_multi_message</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, void **data, size_t *data_len, int *error)</td></tr>
+<tr class="memdesc:ga385864d5f06e1de0e8ee13388ca4117c"><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message in memory.  <a href="#ga385864d5f06e1de0e8ee13388ca4117c">More...</a><br/></td></tr>
+<tr class="separator:ga385864d5f06e1de0e8ee13388ca4117c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga079df0c709e381812ae13af08c354032"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga079df0c709e381812ae13af08c354032">codes_handle_new_from_message_copy</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, const void *data, size_t data_len)</td></tr>
+<tr class="memdesc:ga079df0c709e381812ae13af08c354032"><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message.  <a href="#ga079df0c709e381812ae13af08c354032">More...</a><br/></td></tr>
+<tr class="separator:ga079df0c709e381812ae13af08c354032"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3b281a237e311c6b8fa4bd7096d7e025"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga3b281a237e311c6b8fa4bd7096d7e025">codes_grib_handle_new_from_samples</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, const char *res_name)</td></tr>
+<tr class="memdesc:ga3b281a237e311c6b8fa4bd7096d7e025"><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a GRIB message contained in a samples directory.  <a href="#ga3b281a237e311c6b8fa4bd7096d7e025">More...</a><br/></td></tr>
+<tr class="separator:ga3b281a237e311c6b8fa4bd7096d7e025"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga56d0f831e520ec7bc4a0ca334c63f557"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga56d0f831e520ec7bc4a0ca334c63f557">codes_bufr_handle_new_from_samples</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, const char *res_name)</td></tr>
+<tr class="memdesc:ga56d0f831e520ec7bc4a0ca334c63f557"><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a BUFR message contained in a samples directory.  <a href="#ga56d0f831e520ec7bc4a0ca334c63f557">More...</a><br/></td></tr>
+<tr class="separator:ga56d0f831e520ec7bc4a0ca334c63f557"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7b226527aa98d90f2bdb470105732878"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga7b226527aa98d90f2bdb470105732878">codes_handle_clone</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h)</td></tr>
+<tr class="memdesc:ga7b226527aa98d90f2bdb470105732878"><td class="mdescLeft"> </td><td class="mdescRight">Clone an existing handle using the context of the original handle, The message is copied and reparsed.  <a href="#ga7b226527aa98d90f2bdb470105732878">More...</a><br/></td></tr>
+<tr class="separator:ga7b226527aa98d90f2bdb470105732878"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga358ea000ceed775e7367ccab581be978"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga358ea000ceed775e7367ccab581be978">codes_handle_delete</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h)</td></tr>
+<tr class="memdesc:ga358ea000ceed775e7367ccab581be978"><td class="mdescLeft"> </td><td class="mdescRight">Frees a handle, also frees the message if it is not a user message.  <a href="#ga358ea000ceed775e7367ccab581be978">More...</a><br/></td></tr>
+<tr class="separator:ga358ea000ceed775e7367ccab581be978"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5ff59672d9eab49c0285c8f60e379d88"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__multi__handle.html">codes_multi_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga5ff59672d9eab49c0285c8f60e379d88">codes_grib_multi_handle_new</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:ga5ff59672d9eab49c0285c8f60e379d88"><td class="mdescLeft"> </td><td class="mdescRight">Create an empty multi-field GRIB handle.  <a href="#ga5ff59672d9eab49c0285c8f60e379d88">More...</a><br/></td></tr>
+<tr class="separator:ga5ff59672d9eab49c0285c8f60e379d88"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga068715aab8b82a5d3092064b6bc27f3d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga068715aab8b82a5d3092064b6bc27f3d">codes_grib_multi_handle_append</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, int start_section, <a class="el" href="structcodes__multi__handle.html">codes_multi_handle</a> *mh)</td></tr>
+<tr class="memdesc:ga068715aab8b82a5d3092064b6bc27f3d"><td class="mdescLeft"> </td><td class="mdescRight">Append the sections starting with start_section of the message pointed by h at the end of the multi-field GRIB handle mh.  <a href="#ga068715aab8b82a5d3092064b6bc27f3d">More...</a><br/></td></tr>
+<tr class="separator:ga068715aab8b82a5d3092064b6bc27f3d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga85a955bdd3012ce499e50768e298b849"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#ga85a955bdd3012ce499e50768e298b849">codes_grib_multi_handle_delete</a> (<a class="el" href="structcodes__multi__handle.html">codes_multi_handle</a> *mh)</td></tr>
+<tr class="memdesc:ga85a955bdd3012ce499e50768e298b849"><td class="mdescLeft"> </td><td class="mdescRight">Delete multi-field GRIB handle.  <a href="#ga85a955bdd3012ce499e50768e298b849">More...</a><br/></td></tr>
+<tr class="separator:ga85a955bdd3012ce499e50768e298b849"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac06089d897eea71d8944cc622a45737f"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__handle.html#gac06089d897eea71d8944cc622a45737f">codes_grib_multi_handle_write</a> (<a class="el" href="structcodes__multi__handle.html">codes_multi_handle</a> *mh, FILE *f)</td></tr>
+<tr class="memdesc:gac06089d897eea71d8944cc622a45737f"><td class="mdescLeft"> </td><td class="mdescRight">Write a multi-field GRIB handle in a file.  <a href="#gac06089d897eea71d8944cc622a45737f">More...</a><br/></td></tr>
+<tr class="separator:gac06089d897eea71d8944cc622a45737f"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>The <a class="el" href="structcodes__handle.html">codes_handle</a> is the structure giving access to parsed message values by keys. </p>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ga6958c3cd7e4059af5c26898a872262ff"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">grib_handle* codes_bufr_handle_new_from_file </td>
+          <td>(</td>
+          <td class="paramtype">grib_context * </td>
+          <td class="paramname"><em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">FILE * </td>
+          <td class="paramname"><em>f</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"><em>error</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a BUFR handle from a file resource. </p>
+<p>The file is read until a BUFR message is found. The message is then copied. Remember always to delete the handle when it is not needed anymore to avoid memory leaks.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context from which the handle will be created (NULL for default context) </td></tr>
+    <tr><td class="paramname">f</td><td>: the file resource </td></tr>
+    <tr><td class="paramname">error</td><td>: error code set if the returned handle is NULL and the end of file is not reached </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the new handle, NULL if the resource is invalid or a problem is encountered </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga56d0f831e520ec7bc4a0ca334c63f557"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structcodes__handle.html">codes_handle</a>* codes_bufr_handle_new_from_samples </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>res_name</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a handle from a BUFR message contained in a samples directory. </p>
+<p>The message is copied at the creation of the handle</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context from which the handle will be created (NULL for default context) </td></tr>
+    <tr><td class="paramname">res_name</td><td>: the resource name </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the new handle, NULL if the resource is invalid or a problem is encountered </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga4c2203d55c2c3ca792e44e4eb26edfb5"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_count_in_file </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">FILE * </td>
+          <td class="paramname"><em>f</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"><em>n</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Counts the messages contained in a file resource. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context from which the handle will be created (NULL for default context) </td></tr>
+    <tr><td class="paramname">f</td><td>: the file resource </td></tr>
+    <tr><td class="paramname">n</td><td>: the number of messages in the file </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga36de77229cc3b386d26c1e7b52c21e0e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">grib_handle* codes_grib_handle_new_from_file </td>
+          <td>(</td>
+          <td class="paramtype">grib_context * </td>
+          <td class="paramname"><em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">FILE * </td>
+          <td class="paramname"><em>f</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"><em>error</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a GRIB handle from a file resource. </p>
+<p>The file is read until a GRIB message is found. The message is then copied. Remember always to delete the handle when it is not needed anymore to avoid memory leaks.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context from which the handle will be created (NULL for default context) </td></tr>
+    <tr><td class="paramname">f</td><td>: the file resource </td></tr>
+    <tr><td class="paramname">error</td><td>: error code set if the returned handle is NULL and the end of file is not reached </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the new handle, NULL if the resource is invalid or a problem is encountered </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga385864d5f06e1de0e8ee13388ca4117c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structcodes__handle.html">codes_handle</a>* codes_grib_handle_new_from_multi_message </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void ** </td>
+          <td class="paramname"><em>data</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"><em>data_len</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"><em>error</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a handle from a user message in memory. </p>
+<p>The message will not be freed at the end. The message will be copied as soon as a modification is needed. This function works also with multi field messages.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context from which the handle will be created (NULL for default context) </td></tr>
+    <tr><td class="paramname">data</td><td>: the actual message </td></tr>
+    <tr><td class="paramname">data_len</td><td>: the length of the message in number of bytes </td></tr>
+    <tr><td class="paramname">error</td><td>: error code </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the new handle, NULL if the message is invalid or a problem is encountered </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga3b281a237e311c6b8fa4bd7096d7e025"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structcodes__handle.html">codes_handle</a>* codes_grib_handle_new_from_samples </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>res_name</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a handle from a GRIB message contained in a samples directory. </p>
+<p>The message is copied at the creation of the handle</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context from which the handle will be created (NULL for default context) </td></tr>
+    <tr><td class="paramname">res_name</td><td>: the resource name </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the new handle, NULL if the resource is invalid or a problem is encountered </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga068715aab8b82a5d3092064b6bc27f3d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_grib_multi_handle_append </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>start_section</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structcodes__multi__handle.html">codes_multi_handle</a> * </td>
+          <td class="paramname"><em>mh</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Append the sections starting with start_section of the message pointed by h at the end of the multi-field GRIB handle mh. </p>
+<p>Remember always to delete the multi-handle when it is not needed any more to avoid memory leaks.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: The handle from which the sections are copied. </td></tr>
+    <tr><td class="paramname">start_section</td><td>: section number. Starting from this section all the sections to the end of the message will be copied. </td></tr>
+    <tr><td class="paramname">mh</td><td>: The multi-field handle on which the sections are appended. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga85a955bdd3012ce499e50768e298b849"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_grib_multi_handle_delete </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__multi__handle.html">codes_multi_handle</a> * </td>
+          <td class="paramname"><em>mh</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Delete multi-field GRIB handle. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">mh</td><td>: The multi-field handle to be deleted. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga5ff59672d9eab49c0285c8f60e379d88"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structcodes__multi__handle.html">codes_multi_handle</a>* codes_grib_multi_handle_new </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create an empty multi-field GRIB handle. </p>
+<p>Remember always to delete the multi-handle when it is not needed any more to avoid memory leaks.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context from which the handle will be created (NULL for default context) </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gac06089d897eea71d8944cc622a45737f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_grib_multi_handle_write </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__multi__handle.html">codes_multi_handle</a> * </td>
+          <td class="paramname"><em>mh</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">FILE * </td>
+          <td class="paramname"><em>f</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write a multi-field GRIB handle in a file. </p>
+<p>Remember always to delete the multi-handle when it is not needed any more to avoid memory leaks.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">mh</td><td>: The multi-field GRIB handle to be written. </td></tr>
+    <tr><td class="paramname">f</td><td>: File on which the file handle is written. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga7b226527aa98d90f2bdb470105732878"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structcodes__handle.html">codes_handle</a>* codes_handle_clone </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Clone an existing handle using the context of the original handle, The message is copied and reparsed. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: The handle to be cloned </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the new handle, NULL if the message is invalid or a problem is encountered </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga358ea000ceed775e7367ccab581be978"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_handle_delete </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Frees a handle, also frees the message if it is not a user message. </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__codes__handle.html#gaece49330c864391261cd6a0c10a18dc2" title="Create a handle from a user message in memory. ">codes_handle_new_from_message</a> </dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: The handle to be deleted </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga6ec42bd6272b4a0f2cb2b220b86c71c8"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">grib_handle* codes_handle_new_from_file </td>
+          <td>(</td>
+          <td class="paramtype">grib_context * </td>
+          <td class="paramname"><em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">FILE * </td>
+          <td class="paramname"><em>f</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ProductKind </td>
+          <td class="paramname"><em>product</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"><em>error</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a handle from a file resource. </p>
+<p>The file is read until a message is found. The message is then copied. Remember always to delete the handle when it is not needed anymore to avoid memory leaks.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context from which the handle will be created (NULL for default context) </td></tr>
+    <tr><td class="paramname">f</td><td>: the file resource </td></tr>
+    <tr><td class="paramname">product</td><td>: the kind of product e.g. PRODUCT_GRIB, PRODUCT_BUFR </td></tr>
+    <tr><td class="paramname">error</td><td>: error code set if the returned handle is NULL and the end of file is not reached </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the new handle, NULL if the resource is invalid or a problem is encountered </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gaece49330c864391261cd6a0c10a18dc2"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structcodes__handle.html">codes_handle</a>* codes_handle_new_from_message </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"><em>data</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"><em>data_len</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a handle from a user message in memory. </p>
+<p>The message will not be freed at the end. The message will be copied as soon as a modification is needed.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context from which the handle will be created (NULL for default context) </td></tr>
+    <tr><td class="paramname">data</td><td>: the actual message </td></tr>
+    <tr><td class="paramname">data_len</td><td>: the length of the message in number of bytes </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the new handle, NULL if the message is invalid or a problem is encountered </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga079df0c709e381812ae13af08c354032"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structcodes__handle.html">codes_handle</a>* codes_handle_new_from_message_copy </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void * </td>
+          <td class="paramname"><em>data</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"><em>data_len</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a handle from a user message. </p>
+<p>The message is copied and will be freed with the handle</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context from which the handle will be created (NULL for default context) </td></tr>
+    <tr><td class="paramname">data</td><td>: the actual message </td></tr>
+    <tr><td class="paramname">data_len</td><td>: the length of the message in number of bytes </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the new handle, NULL if the message is invalid or a problem is encountered </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gac82dbaba240ebf6e76cdbcf2007a6bee"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_write_message </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>file</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>mode</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write a coded message to a file. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: <a class="el" href="structcodes__handle.html">codes_handle</a> to be written </td></tr>
+    <tr><td class="paramname">file</td><td>: name of the output file </td></tr>
+    <tr><td class="paramname">mode</td><td>: mode </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/group__codes__index.html b/html/group__codes__index.html
new file mode 100644
index 0000000..2a614d9
--- /dev/null
+++ b/html/group__codes__index.html
@@ -0,0 +1,660 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: The indexing feature</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Data Structures</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">The indexing feature</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcodes__index.html">codes_index</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga42b26aa62c53cef50f0bd9e75ed88281"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__index.html">codes_index</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#ga42b26aa62c53cef50f0bd9e75ed88281">codes_index_new_from_file</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, char *filename, const char *keys, int *err)</td></tr>
+<tr class="memdesc:ga42b26aa62c53cef50f0bd9e75ed88281"><td class="mdescLeft"> </td><td class="mdescRight">Create a new index form a file.  <a href="#ga42b26aa62c53cef50f0bd9e75ed88281">More...</a><br/></td></tr>
+<tr class="separator:ga42b26aa62c53cef50f0bd9e75ed88281"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga0d7015518d426c012ba6c2b848af96d9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__index.html">codes_index</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#ga0d7015518d426c012ba6c2b848af96d9">codes_index_new</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, const char *keys, int *err)</td></tr>
+<tr class="memdesc:ga0d7015518d426c012ba6c2b848af96d9"><td class="mdescLeft"> </td><td class="mdescRight">Create a new index based on a set of keys.  <a href="#ga0d7015518d426c012ba6c2b848af96d9">More...</a><br/></td></tr>
+<tr class="separator:ga0d7015518d426c012ba6c2b848af96d9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8fa6ca199182c48c0327e61ac98dfd00"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#ga8fa6ca199182c48c0327e61ac98dfd00">codes_index_add_file</a> (grib_index *index, const char *filename)</td></tr>
+<tr class="memdesc:ga8fa6ca199182c48c0327e61ac98dfd00"><td class="mdescLeft"> </td><td class="mdescRight">Indexes the file given in argument in the index given in argument.  <a href="#ga8fa6ca199182c48c0327e61ac98dfd00">More...</a><br/></td></tr>
+<tr class="separator:ga8fa6ca199182c48c0327e61ac98dfd00"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gab1aa5fde30d26360349085efec936c6c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#gab1aa5fde30d26360349085efec936c6c">codes_index_get_size</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index, const char *key, size_t *size)</td></tr>
+<tr class="memdesc:gab1aa5fde30d26360349085efec936c6c"><td class="mdescLeft"> </td><td class="mdescRight">Get the number of distinct values of the key in argument contained in the index.  <a href="#gab1aa5fde30d26360349085efec936c6c">More...</a><br/></td></tr>
+<tr class="separator:gab1aa5fde30d26360349085efec936c6c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gafb483b993d462b2f0576af70c1aa4cc7"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#gafb483b993d462b2f0576af70c1aa4cc7">codes_index_get_long</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index, const char *key, long *values, size_t *size)</td></tr>
+<tr class="memdesc:gafb483b993d462b2f0576af70c1aa4cc7"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="#gafb483b993d462b2f0576af70c1aa4cc7">More...</a><br/></td></tr>
+<tr class="separator:gafb483b993d462b2f0576af70c1aa4cc7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8a2fae0f5eeb8d708c1831bc1b9b9004"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#ga8a2fae0f5eeb8d708c1831bc1b9b9004">codes_index_get_double</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index, const char *key, double *values, size_t *size)</td></tr>
+<tr class="memdesc:ga8a2fae0f5eeb8d708c1831bc1b9b9004"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="#ga8a2fae0f5eeb8d708c1831bc1b9b9004">More...</a><br/></td></tr>
+<tr class="separator:ga8a2fae0f5eeb8d708c1831bc1b9b9004"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga86ea092af6a89b0322b873147bba523d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#ga86ea092af6a89b0322b873147bba523d">codes_index_get_string</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index, const char *key, char **values, size_t *size)</td></tr>
+<tr class="memdesc:ga86ea092af6a89b0322b873147bba523d"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="#ga86ea092af6a89b0322b873147bba523d">More...</a><br/></td></tr>
+<tr class="separator:ga86ea092af6a89b0322b873147bba523d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac0a14aca2fc5385684fdba1cb668959a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#gac0a14aca2fc5385684fdba1cb668959a">codes_index_select_long</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index, const char *key, long value)</td></tr>
+<tr class="memdesc:gac0a14aca2fc5385684fdba1cb668959a"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="#gac0a14aca2fc5385684fdba1cb668959a">More...</a><br/></td></tr>
+<tr class="separator:gac0a14aca2fc5385684fdba1cb668959a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3baa4a80cd517d55f088fee7f4630fff"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#ga3baa4a80cd517d55f088fee7f4630fff">codes_index_select_double</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index, const char *key, double value)</td></tr>
+<tr class="memdesc:ga3baa4a80cd517d55f088fee7f4630fff"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="#ga3baa4a80cd517d55f088fee7f4630fff">More...</a><br/></td></tr>
+<tr class="separator:ga3baa4a80cd517d55f088fee7f4630fff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gafa8d7b29dfe42d805714db95b5ca044a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#gafa8d7b29dfe42d805714db95b5ca044a">codes_index_select_string</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index, const char *key, char *value)</td></tr>
+<tr class="memdesc:gafa8d7b29dfe42d805714db95b5ca044a"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="#gafa8d7b29dfe42d805714db95b5ca044a">More...</a><br/></td></tr>
+<tr class="separator:gafa8d7b29dfe42d805714db95b5ca044a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gae1947cf7225ca1809c5491aa671d6b91"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#gae1947cf7225ca1809c5491aa671d6b91">codes_handle_new_from_index</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index, int *err)</td></tr>
+<tr class="memdesc:gae1947cf7225ca1809c5491aa671d6b91"><td class="mdescLeft"> </td><td class="mdescRight">Create a new handle from an index after having selected the key values.  <a href="#gae1947cf7225ca1809c5491aa671d6b91">More...</a><br/></td></tr>
+<tr class="separator:gae1947cf7225ca1809c5491aa671d6b91"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga03643d8adf2aa7836e1848b20843b31c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__codes__index.html#ga03643d8adf2aa7836e1848b20843b31c">codes_index_delete</a> (<a class="el" href="structcodes__index.html">codes_index</a> *index)</td></tr>
+<tr class="memdesc:ga03643d8adf2aa7836e1848b20843b31c"><td class="mdescLeft"> </td><td class="mdescRight">Delete the index.  <a href="#ga03643d8adf2aa7836e1848b20843b31c">More...</a><br/></td></tr>
+<tr class="separator:ga03643d8adf2aa7836e1848b20843b31c"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>The <a class="el" href="structcodes__index.html">codes_index</a> is the structure giving indexed access to messages in a file. </p>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="gae1947cf7225ca1809c5491aa671d6b91"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structcodes__handle.html">codes_handle</a>* codes_handle_new_from_index </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__index.html">codes_index</a> * </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"><em>err</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new handle from an index after having selected the key values. </p>
+<p>All the keys belonging to the index must be selected before calling this function. Successive calls to this function will return all the handles compatible with the constraints defined selecting the values of the index keys. When no more handles are available from the index a NULL pointer is returned and the err variable is set to CODES_END_OF_INDEX.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">index</td><td>: an index created from a file. </td></tr>
+    <tr><td class="paramname">err</td><td>: 0 if OK, integer value on error. CODES_END_OF_INDEX when no more handles are contained in the index. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>grib handle. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga8fa6ca199182c48c0327e61ac98dfd00"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_index_add_file </td>
+          <td>(</td>
+          <td class="paramtype">grib_index * </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>filename</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Indexes the file given in argument in the index given in argument. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">index</td><td>: index </td></tr>
+    <tr><td class="paramname">filename</td><td>: name of the file of messages to be indexed </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga03643d8adf2aa7836e1848b20843b31c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void codes_index_delete </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__index.html">codes_index</a> * </td>
+          <td class="paramname"><em>index</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Delete the index. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">index</td><td>: index to be deleted. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga8a2fae0f5eeb8d708c1831bc1b9b9004"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_index_get_double </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__index.html">codes_index</a> * </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"><em>size</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index. This function is used when the type of the key was explicitly defined as double or when the native type of the key is double.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">index</td><td>: an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>: key for which the values are returned </td></tr>
+    <tr><td class="paramname">values</td><td>: array of values. The array must be allocated before entering this function and its size must be enough to contain all the values. </td></tr>
+    <tr><td class="paramname">size</td><td>: size of the values array </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gafb483b993d462b2f0576af70c1aa4cc7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_index_get_long </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__index.html">codes_index</a> * </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long * </td>
+          <td class="paramname"><em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"><em>size</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index. This function is used when the type of the key was explicitly defined as long or when the native type of the key is long.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">index</td><td>: an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>: key for which the values are returned </td></tr>
+    <tr><td class="paramname">values</td><td>: array of values. The array must be allocated before entering this function and its size must be enough to contain all the values. </td></tr>
+    <tr><td class="paramname">size</td><td>: size of the values array </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gab1aa5fde30d26360349085efec936c6c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_index_get_size </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__index.html">codes_index</a> * </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"><em>size</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the number of distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">index</td><td>: an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>: key for which the number of values is computed </td></tr>
+    <tr><td class="paramname">size</td><td>: number of distinct values of the key in the index </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga86ea092af6a89b0322b873147bba523d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_index_get_string </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__index.html">codes_index</a> * </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char ** </td>
+          <td class="paramname"><em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"><em>size</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index. This function is used when the type of the key was explicitly defined as string or when the native type of the key is string.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">index</td><td>: an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>: key for which the values are returned </td></tr>
+    <tr><td class="paramname">values</td><td>: array of values. The array must be allocated before entering this function and its size must be enough to contain all the values. </td></tr>
+    <tr><td class="paramname">size</td><td>: size of the values array </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga0d7015518d426c012ba6c2b848af96d9"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structcodes__index.html">codes_index</a>* codes_index_new </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>keys</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"><em>err</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new index based on a set of keys. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: context (NULL for default context) </td></tr>
+    <tr><td class="paramname">keys</td><td>: comma separated list of keys for the index. The type of the key can be explicitly declared appending :l for long, (or alternatively :i) :d for double, :s for string to the key name. If the type is not declared explicitly, the native type is assumed. </td></tr>
+    <tr><td class="paramname">err</td><td>: 0 if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the newly created index </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga42b26aa62c53cef50f0bd9e75ed88281"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structcodes__index.html">codes_index</a>* codes_index_new_from_file </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char * </td>
+          <td class="paramname"><em>filename</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>keys</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"><em>err</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new index form a file. </p>
+<p>The file is indexed with the keys in argument.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: context (NULL for default context) </td></tr>
+    <tr><td class="paramname">filename</td><td>: name of the file of messages to be indexed </td></tr>
+    <tr><td class="paramname">keys</td><td>: comma separated list of keys for the index. The type of the key can be explicitly declared appending :l for long, (or alternatively :i) :d for double, :s for string to the key name. If the type is not declared explicitly, the native type is assumed. </td></tr>
+    <tr><td class="paramname">err</td><td>: 0 if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>the newly created index </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga3baa4a80cd517d55f088fee7f4630fff"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_index_select_double </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__index.html">codes_index</a> * </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Select the message subset with key==value. </p>
+<p>The value is a double. The key must have been created with double type or have double as native type if the type was not explicitly defined in the index creation.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">index</td><td>: an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>: key to be selected </td></tr>
+    <tr><td class="paramname">value</td><td>: value of the key to select </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gac0a14aca2fc5385684fdba1cb668959a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_index_select_long </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__index.html">codes_index</a> * </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Select the message subset with key==value. </p>
+<p>The value is a long. The key must have been created with long type or have long as native type if the type was not explicitly defined in the index creation.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">index</td><td>: an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>: key to be selected </td></tr>
+    <tr><td class="paramname">value</td><td>: value of the key to select </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="gafa8d7b29dfe42d805714db95b5ca044a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_index_select_string </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__index.html">codes_index</a> * </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char * </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Select the message subset with key==value. </p>
+<p>The value is a string. The key must have been created with string type or have string as native type if the type was not explicitly defined in the index creation.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">index</td><td>: an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>: key to be selected </td></tr>
+    <tr><td class="paramname">value</td><td>: value of the key to select </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/group__context.html b/html/group__context.html
index df607bf..35bde5e 100644
--- a/html/group__context.html
+++ b/html/group__context.html
@@ -1,1016 +1,454 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: The context object</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>The context object</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca">grib_free_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *data)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib free procedure, format of a procedure referenced in the context that is used to free memory.  <a href="#g807998f481ebb5ab8916b23669bc38ca"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, size_t length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib malloc procedure, format of a procedure referenced in the context that is used to allocate memory.  <a href="#ge40ef151522f628d0a0300861e1869e0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gcfc03db8667b1019d896ab2ab47dc12d">grib_realloc_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *data, size_t length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib realloc procedure, format of a procedure referenced in the context that is used to reallocate memory.  <a href="#gcfc03db8667b1019d896ab2ab47dc12d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994">grib_log_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, int level, const char *mesg)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib loc proc, format of a procedure referenced in the context that is used to log internal messages.  <a href="#gba007477d7d085d602184ae4df95f994"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0">grib_print_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *descriptor, const char *mesg)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib print proc, format of a procedure referenced in the context that is used to print external messages.  <a href="#gd18d790f8aabf46e6b766eab07b535a0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef size_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gfcaeb1a8fb78e0028906ee1e2ddbfcc0">grib_data_read_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *ptr, size_t size, void *stream)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data read proc, format of a procedure referenced in the context that is used to read from a stream in a resource.  <a href="#gfcaeb1a8fb78e0028906ee1e2ddbfcc0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef size_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g85f5907a2b006b370be8e176e92d0248">grib_data_write_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const void *ptr, size_t size, void *stream)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data read write, format of a procedure referenced in the context that is used to write to a stream from a resource.  <a href="#g85f5907a2b006b370be8e176e92d0248"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef off_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g5fc575ad1d5736763f2d688b82597b09">grib_data_tell_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *stream)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data tell, format of a procedure referenced in the context that is used to tell the current position in a stream.  <a href="#g5fc575ad1d5736763f2d688b82597b09"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef off_t(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g9d4894f207e7f5d70533371915e45a2d">grib_data_seek_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, off_t offset, int whence, void *stream)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data seek, format of a procedure referenced in the context that is used to seek the current position in a stream.  <a href="#g9d4894f207e7f5d70533371915e45a2d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g49b4be77db1a3764ca291e7b45fce366">grib_data_eof_proc</a> )(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *stream)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Grib data eof, format of a procedure referenced in the context that is used to test end of file.  <a href="#g49b4be77db1a3764ca291e7b45fce366"></a><br></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ge4d49e82f57836891aa57fce24b59800">grib_get_context</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Retreive the context from a handle.  <a href="#ge4d49e82f57836891aa57fce24b59800"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g01ce1b8dc121afe1fd8212ceef8c829d">grib_context_get_default</a> (void)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the static default context.  <a href="#g01ce1b8dc121afe1fd8212ceef8c829d"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gbbb93339feef87a0ef7c415fa484c022">grib_context_new</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create and allocate a new context from a parent context.  <a href="#gbbb93339feef87a0ef7c415fa484c022"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g4bd1c4d8b32c1ae42227420ed2251d57">grib_context_delete</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees the cached definition files of the context.  <a href="#g4bd1c4d8b32c1ae42227420ed2251d57"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g8d72ab772809fba49a41b32909770dd1">grib_gts_header_on</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gts header mode on.  <a href="#g8d72ab772809fba49a41b32909770dd1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g9a3ce8e25ef3e59387015f906a79901a">grib_gts_header_off</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gts header mode off.  <a href="#g9a3ce8e25ef3e59387015f906a79901a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ge8e9e3cce24d282a1b34432926b868c0">grib_gribex_mode_on</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gribex mode on.  <a href="#ge8e9e3cce24d282a1b34432926b868c0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g6f6a5612649241d9ecae7e2a288bc436">grib_gribex_mode_off</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the gribex mode off.  <a href="#g6f6a5612649241d9ecae7e2a288bc436"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gec49c14665a9b4faa90a74cb069b9a30">grib_context_set_user_data</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *udata)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets user data in a context.  <a href="#gec49c14665a9b4faa90a74cb069b9a30"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g7063ea5ce72ed460a1978c26dbc6af89">grib_context_get_user_data</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">get userData from a context  <a href="#g7063ea5ce72ed460a1978c26dbc6af89"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gf38d04b9b8438fca7a418b507915030a">grib_context_set_memory_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> griballoc, <a class="el" href="group__context.html#g807998f481ebb5ab8916b236 [...]
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets memory procedures of the context.  <a href="#gf38d04b9b8438fca7a418b507915030a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g5cd4b2513883a0d5989d5643087c4097">grib_context_set_persistent_memory_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> griballoc, <a class="el" href="group__context.html#g807998f481ebb [...]
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets memory procedures of the context for persistent data.  <a href="#g5cd4b2513883a0d5989d5643087c4097"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g13ac96fc6a017f896cfe1325fcd7aa6b">grib_context_set_buffer_memory_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> griballoc, <a class="el" href="group__context.html#g807998f481ebb5ab8 [...]
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets memory procedures of the context for large buffers.  <a href="#g13ac96fc6a017f896cfe1325fcd7aa6b"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g06f0601960b317f15b78396ed12b1881">grib_context_set_path</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const char *path)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the context search path for definition files.  <a href="#g06f0601960b317f15b78396ed12b1881"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gd007cf96b681b389dadbbb9e7540e321">grib_context_set_dump_mode</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, int mode)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets context dump mode.  <a href="#gd007cf96b681b389dadbbb9e7540e321"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g68b597e40215c9ced7959c7350980d2f">grib_context_set_print_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0">grib_print_proc</a> printp)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the context printing procedure used for user interaction.  <a href="#g68b597e40215c9ced7959c7350980d2f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g09581ce8cdeff9da0f38a78898097b9e">grib_context_set_logging_proc</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, <a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994">grib_log_proc</a> logp)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the context logging procedure used for system (warning, errors, infos .  <a href="#g09581ce8cdeff9da0f38a78898097b9e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#g3266536e68ebb6d4bbc4a22b29f0e8ea">grib_multi_support_on</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Turn on support for multiple fields in single grib messages.  <a href="#g3266536e68ebb6d4bbc4a22b29f0e8ea"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gc022270a99922ccc57147670ed2a58d4">grib_multi_support_off</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Turn off support for multiple fields in single grib messages.  <a href="#gc022270a99922ccc57147670ed2a58d4"></a><br></td></tr>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: The context object</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
 </table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The context is a long life configuration object of the grib_api. It is used to define special allocation and free routines or to set special grib_api behaviours and variables. <hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="g49b4be77db1a3764ca291e7b45fce366"></a><!-- doxytag: member="grib_api.h::grib_data_eof_proc" ref="g49b4be77db1a3764ca291e7b45fce366" args=")(const grib_context *c, void *stream)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef int(* <a class="el" href="group__context.html#g49b4be77db1a3764ca291e7b45fce366">grib_data_eof_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *stream)          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Grib data eof, format of a procedure referenced in the context that is used to test end of file. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the tell will apply </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>*stream</em> </td><td>: the stream </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the position in the stream </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gfcaeb1a8fb78e0028906ee1e2ddbfcc0"></a><!-- doxytag: member="grib_api.h::grib_data_read_proc" ref="gfcaeb1a8fb78e0028906ee1e2ddbfcc0" args=")(const grib_context *c, void *ptr, size_t size, void *stream)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef size_t(* <a class="el" href="group__context.html#gfcaeb1a8fb78e0028906ee1e2ddbfcc0">grib_data_read_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *ptr, size_t size, void *stream)          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Grib data read proc, format of a procedure referenced in the context that is used to read from a stream in a resource. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the read will apply </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>*ptr</em> </td><td>: the resource </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>: size to read </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>*stream</em> </td><td>: the stream </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>size read </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g9d4894f207e7f5d70533371915e45a2d"></a><!-- doxytag: member="grib_api.h::grib_data_seek_proc" ref="g9d4894f207e7f5d70533371915e45a2d" args=")(const grib_context *c, off_t offset, int whence, void *stream)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef off_t(* <a class="el" href="group__context.html#g9d4894f207e7f5d70533371915e45a2d">grib_data_seek_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, off_t offset, int whence, void *stream)          </td>
-        </tr>
-      </table>
 </div>
-<div class="memdoc">
-
-<p>
-Grib data seek, format of a procedure referenced in the context that is used to seek the current position in a stream. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the tell will apply </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>offset</em> </td><td>: the offset to seek to </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>whence</em> </td><td>: If whence is set to SEEK_SET, SEEK_CUR, or SEEK_END, the offset is relative to the start of the file, the current position indicator, or end-of-file, respectively. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>*stream</em> </td><td>: the stream </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g5fc575ad1d5736763f2d688b82597b09"></a><!-- doxytag: member="grib_api.h::grib_data_tell_proc" ref="g5fc575ad1d5736763f2d688b82597b09" args=")(const grib_context *c, void *stream)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef off_t(* <a class="el" href="group__context.html#g5fc575ad1d5736763f2d688b82597b09">grib_data_tell_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *stream)          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Grib data tell, format of a procedure referenced in the context that is used to tell the current position in a stream. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the tell will apply </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>*stream</em> </td><td>: the stream </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the position in the stream </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g85f5907a2b006b370be8e176e92d0248"></a><!-- doxytag: member="grib_api.h::grib_data_write_proc" ref="g85f5907a2b006b370be8e176e92d0248" args=")(const grib_context *c, const void *ptr, size_t size, void *stream)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef size_t(* <a class="el" href="group__context.html#g85f5907a2b006b370be8e176e92d0248">grib_data_write_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const void *ptr, size_t size, void *stream)          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Grib data read write, format of a procedure referenced in the context that is used to write to a stream from a resource. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the write will apply </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>*ptr</em> </td><td>: the resource </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>: size to read </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>*stream</em> </td><td>: the stream </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>size written </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g807998f481ebb5ab8916b23669bc38ca"></a><!-- doxytag: member="grib_api.h::grib_free_proc" ref="g807998f481ebb5ab8916b23669bc38ca" args=")(const grib_context *c, void *data)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef void(* <a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca">grib_free_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *data)          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Grib free procedure, format of a procedure referenced in the context that is used to free memory. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the memory freeing will apply </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>: pointer to the data to be freed must match </td></tr>
-  </table>
-</dl>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0" title="Grib malloc procedure, format of a procedure referenced in the context that is used...">grib_malloc_proc</a> </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gba007477d7d085d602184ae4df95f994"></a><!-- doxytag: member="grib_api.h::grib_log_proc" ref="gba007477d7d085d602184ae4df95f994" args=")(const grib_context *c, int level, const char *mesg)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef void(* <a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994">grib_log_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, int level, const char *mesg)          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Grib loc proc, format of a procedure referenced in the context that is used to log internal messages. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the logging will apply </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>level</em> </td><td>: the log level, as defined in log modes </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mesg</em> </td><td>: the message to be logged </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="ge40ef151522f628d0a0300861e1869e0"></a><!-- doxytag: member="grib_api.h::grib_malloc_proc" ref="ge40ef151522f628d0a0300861e1869e0" args=")(const grib_context *c, size_t length)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef void*(* <a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, size_t length)          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Grib malloc procedure, format of a procedure referenced in the context that is used to allocate memory. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the memory allocation will apply </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: length to be allocated in number of bytes </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer to the alocated memory, NULL if no memory can be allocated must match </dd></dl>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca" title="Grib free procedure, format of a procedure referenced in the context that is used...">grib_free_proc</a> </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gd18d790f8aabf46e6b766eab07b535a0"></a><!-- doxytag: member="grib_api.h::grib_print_proc" ref="gd18d790f8aabf46e6b766eab07b535a0" args=")(const grib_context *c, void *descriptor, const char *mesg)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef void(* <a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0">grib_print_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *descriptor, const char *mesg)          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Grib print proc, format of a procedure referenced in the context that is used to print external messages. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the logging will apply </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>descriptor</em> </td><td>: the structure to be printed on, must match the implementation </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mesg</em> </td><td>: the message to be printed </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gcfc03db8667b1019d896ab2ab47dc12d"></a><!-- doxytag: member="grib_api.h::grib_realloc_proc" ref="gcfc03db8667b1019d896ab2ab47dc12d" args=")(const grib_context *c, void *data, size_t length)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef void*(* <a class="el" href="group__context.html#gcfc03db8667b1019d896ab2ab47dc12d">grib_realloc_proc</a>)(const <a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *data, size_t length)          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Grib realloc procedure, format of a procedure referenced in the context that is used to reallocate memory. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context where the memory allocation will apply </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>: pointer to the data to be reallocated </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: length to be allocated in number of bytes </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer to the alocated memory </dd></dl>
-
-</div>
-</div><p>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="g4bd1c4d8b32c1ae42227420ed2251d57"></a><!-- doxytag: member="grib_api.h::grib_context_delete" ref="g4bd1c4d8b32c1ae42227420ed2251d57" args="(grib_context *c)" -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">The context object</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga3c1086a1abccc58db01609611c3e706d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__context.html">codes_context</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga3c1086a1abccc58db01609611c3e706d">codes_context_get_default</a> (void)</td></tr>
+<tr class="memdesc:ga3c1086a1abccc58db01609611c3e706d"><td class="mdescLeft"> </td><td class="mdescRight">Get the static default context.  <a href="#ga3c1086a1abccc58db01609611c3e706d">More...</a><br/></td></tr>
+<tr class="separator:ga3c1086a1abccc58db01609611c3e706d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gae6323d16b5e929f22126d0ddbf43dc7f"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gae6323d16b5e929f22126d0ddbf43dc7f">codes_context_delete</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:gae6323d16b5e929f22126d0ddbf43dc7f"><td class="mdescLeft"> </td><td class="mdescRight">Frees the cached definition files of the context.  <a href="#gae6323d16b5e929f22126d0ddbf43dc7f">More...</a><br/></td></tr>
+<tr class="separator:gae6323d16b5e929f22126d0ddbf43dc7f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga504a2b1bd0d3b229c120c8285895b03a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga504a2b1bd0d3b229c120c8285895b03a">codes_gts_header_on</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:ga504a2b1bd0d3b229c120c8285895b03a"><td class="mdescLeft"> </td><td class="mdescRight">Set the GTS header mode on.  <a href="#ga504a2b1bd0d3b229c120c8285895b03a">More...</a><br/></td></tr>
+<tr class="separator:ga504a2b1bd0d3b229c120c8285895b03a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5c766bc156cd1ebcf70139965a41e669"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga5c766bc156cd1ebcf70139965a41e669">codes_gts_header_off</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:ga5c766bc156cd1ebcf70139965a41e669"><td class="mdescLeft"> </td><td class="mdescRight">Set the GTS header mode off.  <a href="#ga5c766bc156cd1ebcf70139965a41e669">More...</a><br/></td></tr>
+<tr class="separator:ga5c766bc156cd1ebcf70139965a41e669"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga51838183704645cc11a270e5f755c30c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga51838183704645cc11a270e5f755c30c">codes_gribex_mode_on</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:ga51838183704645cc11a270e5f755c30c"><td class="mdescLeft"> </td><td class="mdescRight">Set the GRIBEX mode on.  <a href="#ga51838183704645cc11a270e5f755c30c">More...</a><br/></td></tr>
+<tr class="separator:ga51838183704645cc11a270e5f755c30c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga13cba593f6e5b195bfc83bea419d5022"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga13cba593f6e5b195bfc83bea419d5022">codes_get_gribex_mode</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:ga13cba593f6e5b195bfc83bea419d5022"><td class="mdescLeft"> </td><td class="mdescRight">Get the GRIBEX mode.  <a href="#ga13cba593f6e5b195bfc83bea419d5022">More...</a><br/></td></tr>
+<tr class="separator:ga13cba593f6e5b195bfc83bea419d5022"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga810b375ccacfb6646e44b8cd0da5ee5b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga810b375ccacfb6646e44b8cd0da5ee5b">codes_gribex_mode_off</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:ga810b375ccacfb6646e44b8cd0da5ee5b"><td class="mdescLeft"> </td><td class="mdescRight">Set the GRIBEX mode off.  <a href="#ga810b375ccacfb6646e44b8cd0da5ee5b">More...</a><br/></td></tr>
+<tr class="separator:ga810b375ccacfb6646e44b8cd0da5ee5b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8abf0ff0f52f1e808edf092f2e7c1147"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga8abf0ff0f52f1e808edf092f2e7c1147">codes_context_set_definitions_path</a> (grib_context *c, const char *path)</td></tr>
+<tr class="memdesc:ga8abf0ff0f52f1e808edf092f2e7c1147"><td class="mdescLeft"> </td><td class="mdescRight">Sets the search path for definition files.  <a href="#ga8abf0ff0f52f1e808edf092f2e7c1147">More...</a><br/></td></tr>
+<tr class="separator:ga8abf0ff0f52f1e808edf092f2e7c1147"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga4f2f808f560a3b744b4c904b3d1a1c48"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga4f2f808f560a3b744b4c904b3d1a1c48">codes_context_set_samples_path</a> (grib_context *c, const char *path)</td></tr>
+<tr class="memdesc:ga4f2f808f560a3b744b4c904b3d1a1c48"><td class="mdescLeft"> </td><td class="mdescRight">Sets the search path for sample files.  <a href="#ga4f2f808f560a3b744b4c904b3d1a1c48">More...</a><br/></td></tr>
+<tr class="separator:ga4f2f808f560a3b744b4c904b3d1a1c48"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7775423a069b2b8b5535b5f68090b847"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga7775423a069b2b8b5535b5f68090b847">codes_grib_multi_support_on</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:ga7775423a069b2b8b5535b5f68090b847"><td class="mdescLeft"> </td><td class="mdescRight">Turn on support for multiple fields in single GRIB messages.  <a href="#ga7775423a069b2b8b5535b5f68090b847">More...</a><br/></td></tr>
+<tr class="separator:ga7775423a069b2b8b5535b5f68090b847"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gafb670b14a995b47a9d8896fc5ca67383"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gafb670b14a995b47a9d8896fc5ca67383">codes_grib_multi_support_off</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c)</td></tr>
+<tr class="memdesc:gafb670b14a995b47a9d8896fc5ca67383"><td class="mdescLeft"> </td><td class="mdescRight">Turn off support for multiple fields in single GRIB messages.  <a href="#gafb670b14a995b47a9d8896fc5ca67383">More...</a><br/></td></tr>
+<tr class="separator:gafb670b14a995b47a9d8896fc5ca67383"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga72e9dabca4fc1d1bbb4cf3e01f77c9fd"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga72e9dabca4fc1d1bbb4cf3e01f77c9fd">codes_grib_multi_support_reset_file</a> (<a class="el" href="structcodes__context.html">codes_context</a> *c, FILE *f)</td></tr>
+<tr class="memdesc:ga72e9dabca4fc1d1bbb4cf3e01f77c9fd"><td class="mdescLeft"> </td><td class="mdescRight">Reset file handle in multiple GRIB field support mode.  <a href="#ga72e9dabca4fc1d1bbb4cf3e01f77c9fd">More...</a><br/></td></tr>
+<tr class="separator:ga72e9dabca4fc1d1bbb4cf3e01f77c9fd"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>The context is a long life configuration object of eccodes. It is used to define special allocation and free routines or to set special eccodes behaviours and variables. </p>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="gae6323d16b5e929f22126d0ddbf43dc7f"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void grib_context_delete           </td>
+          <td class="memname">void codes_context_delete </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em></td><td>)</td>
+          <td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Frees the cached definition files of the context. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be deleted </td></tr>
+<p>Frees the cached definition files of the context. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context to be deleted </td></tr>
   </table>
+  </dd>
 </dl>
 
 </div>
-</div><p>
-<a class="anchor" name="g01ce1b8dc121afe1fd8212ceef8c829d"></a><!-- doxytag: member="grib_api.h::grib_context_get_default" ref="g01ce1b8dc121afe1fd8212ceef8c829d" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a>* grib_context_get_default           </td>
-          <td>(</td>
-          <td class="paramtype">void </td>
-          <td class="paramname">          </td>
-          <td> ) </td>
-          <td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get the static default context. 
-<p>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the default context, NULL it the context is not available </dd></dl>
-
 </div>
-</div><p>
-<a class="anchor" name="g7063ea5ce72ed460a1978c26dbc6af89"></a><!-- doxytag: member="grib_api.h::grib_context_get_user_data" ref="g7063ea5ce72ed460a1978c26dbc6af89" args="(grib_context *c)" -->
+<a class="anchor" id="ga3c1086a1abccc58db01609611c3e706d"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void* grib_context_get_user_data           </td>
+          <td class="memname"><a class="el" href="structcodes__context.html">codes_context</a>* codes_context_get_default </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
+          <td class="paramtype">void </td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-get userData from a context 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from which the user data will be retreived </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the user data referenced in the context </dd></dl>
+<p>Get the static default context. </p>
+<dl class="section return"><dt>Returns</dt><dd>the default context, NULL it the context is not available </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="gbbb93339feef87a0ef7c415fa484c022"></a><!-- doxytag: member="grib_api.h::grib_context_new" ref="gbbb93339feef87a0ef7c415fa484c022" args="(grib_context *c)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a>* grib_context_new           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create and allocate a new context from a parent context. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be cloned, NULL for default context </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new and empty context, NULL if error </dd></dl>
-
 </div>
-</div><p>
-<a class="anchor" name="g13ac96fc6a017f896cfe1325fcd7aa6b"></a><!-- doxytag: member="grib_api.h::grib_context_set_buffer_memory_proc" ref="g13ac96fc6a017f896cfe1325fcd7aa6b" args="(grib_context *c, grib_malloc_proc griballoc, grib_free_proc gribfree, grib_realloc_proc gribrealloc)" -->
+<a class="anchor" id="ga8abf0ff0f52f1e808edf092f2e7c1147"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void grib_context_set_buffer_memory_proc           </td>
+          <td class="memname">void codes_context_set_definitions_path </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> </td>
-          <td class="paramname"> <em>griballoc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca">grib_free_proc</a> </td>
-          <td class="paramname"> <em>gribfree</em>, </td>
+          <td class="paramtype">grib_context * </td>
+          <td class="paramname"><em>c</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype"><a class="el" href="group__context.html#gcfc03db8667b1019d896ab2ab47dc12d">grib_realloc_proc</a> </td>
-          <td class="paramname"> <em>gribrealloc</em></td><td> </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>path</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Sets memory procedures of the context for large buffers. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>griballoc</em> </td><td>: the memory allocation procedure to be set </td></tr>
-  </table>
-</dl>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0" title="Grib malloc procedure, format of a procedure referenced in the context that is used...">grib_malloc_proc</a> </dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gribfree</em> </td><td>: the memory freeing procedure to be set </td></tr>
+<p>Sets the search path for definition files. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context to be modified </td></tr>
+    <tr><td class="paramname">path</td><td>: the search path for definition files </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca" title="Grib free procedure, format of a procedure referenced in the context that is used...">grib_free_proc</a> </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="gd007cf96b681b389dadbbb9e7540e321"></a><!-- doxytag: member="grib_api.h::grib_context_set_dump_mode" ref="gd007cf96b681b389dadbbb9e7540e321" args="(grib_context *c, int mode)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void grib_context_set_dump_mode           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int </td>
-          <td class="paramname"> <em>mode</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Sets context dump mode. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mode</em> </td><td>: the log mode to be set </td></tr>
-  </table>
-</dl>
-
 </div>
-</div><p>
-<a class="anchor" name="g09581ce8cdeff9da0f38a78898097b9e"></a><!-- doxytag: member="grib_api.h::grib_context_set_logging_proc" ref="g09581ce8cdeff9da0f38a78898097b9e" args="(grib_context *c, grib_log_proc logp)" -->
+<a class="anchor" id="ga4f2f808f560a3b744b4c904b3d1a1c48"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void grib_context_set_logging_proc           </td>
+          <td class="memname">void codes_context_set_samples_path </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>, </td>
+          <td class="paramtype">grib_context * </td>
+          <td class="paramname"><em>c</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype"><a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994">grib_log_proc</a> </td>
-          <td class="paramname"> <em>logp</em></td><td> </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>path</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Sets the context logging procedure used for system (warning, errors, infos . 
-<p>
-..) messages<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>logp</em> </td><td>: the logging procedure to be set </td></tr>
+<p>Sets the search path for sample files. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context to be modified </td></tr>
+    <tr><td class="paramname">path</td><td>: the search path for sample files </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#gba007477d7d085d602184ae4df95f994" title="Grib loc proc, format of a procedure referenced in the context that is used to log...">grib_log_proc</a> </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="gf38d04b9b8438fca7a418b507915030a"></a><!-- doxytag: member="grib_api.h::grib_context_set_memory_proc" ref="gf38d04b9b8438fca7a418b507915030a" args="(grib_context *c, grib_malloc_proc griballoc, grib_free_proc gribfree, grib_realloc_proc gribrealloc)" -->
+</div>
+<a class="anchor" id="ga13cba593f6e5b195bfc83bea419d5022"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void grib_context_set_memory_proc           </td>
+          <td class="memname">int codes_get_gribex_mode </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> </td>
-          <td class="paramname"> <em>griballoc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca">grib_free_proc</a> </td>
-          <td class="paramname"> <em>gribfree</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__context.html#gcfc03db8667b1019d896ab2ab47dc12d">grib_realloc_proc</a> </td>
-          <td class="paramname"> <em>gribrealloc</em></td><td> </td>
-        </tr>
-        <tr>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em></td><td>)</td>
           <td></td>
-          <td>)</td>
-          <td></td><td></td><td width="100%"></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Sets memory procedures of the context. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>griballoc</em> </td><td>: the memory allocation procedure to be set </td></tr>
-  </table>
-</dl>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0" title="Grib malloc procedure, format of a procedure referenced in the context that is used...">grib_malloc_proc</a> </dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gribfree</em> </td><td>: the memory freeing procedure to be set </td></tr>
+<p>Get the GRIBEX mode. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca" title="Grib free procedure, format of a procedure referenced in the context that is used...">grib_free_proc</a> </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="g06f0601960b317f15b78396ed12b1881"></a><!-- doxytag: member="grib_api.h::grib_context_set_path" ref="g06f0601960b317f15b78396ed12b1881" args="(grib_context *c, const char *path)" -->
+</div>
+<a class="anchor" id="gafb670b14a995b47a9d8896fc5ca67383"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void grib_context_set_path           </td>
+          <td class="memname">void codes_grib_multi_support_off </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>path</em></td><td> </td>
-        </tr>
-        <tr>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em></td><td>)</td>
           <td></td>
-          <td>)</td>
-          <td></td><td></td><td width="100%"></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Sets the context search path for definition files. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>path</em> </td><td>: the search path to be set </td></tr>
+<p>Turn off support for multiple fields in single GRIB messages. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context to be modified </td></tr>
   </table>
+  </dd>
 </dl>
 
 </div>
-</div><p>
-<a class="anchor" name="g5cd4b2513883a0d5989d5643087c4097"></a><!-- doxytag: member="grib_api.h::grib_context_set_persistent_memory_proc" ref="g5cd4b2513883a0d5989d5643087c4097" args="(grib_context *c, grib_malloc_proc griballoc, grib_free_proc gribfree)" -->
+</div>
+<a class="anchor" id="ga7775423a069b2b8b5535b5f68090b847"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void grib_context_set_persistent_memory_proc           </td>
+          <td class="memname">void codes_grib_multi_support_on </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0">grib_malloc_proc</a> </td>
-          <td class="paramname"> <em>griballoc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca">grib_free_proc</a> </td>
-          <td class="paramname"> <em>gribfree</em></td><td> </td>
-        </tr>
-        <tr>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em></td><td>)</td>
           <td></td>
-          <td>)</td>
-          <td></td><td></td><td width="100%"></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Sets memory procedures of the context for persistent data. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>griballoc</em> </td><td>: the memory allocation procedure to be set </td></tr>
+<p>Turn on support for multiple fields in single GRIB messages. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context to be modified </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#ge40ef151522f628d0a0300861e1869e0" title="Grib malloc procedure, format of a procedure referenced in the context that is used...">grib_malloc_proc</a> </dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>gribfree</em> </td><td>: the memory freeing procedure to be set </td></tr>
-  </table>
-</dl>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#g807998f481ebb5ab8916b23669bc38ca" title="Grib free procedure, format of a procedure referenced in the context that is used...">grib_free_proc</a> </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="g68b597e40215c9ced7959c7350980d2f"></a><!-- doxytag: member="grib_api.h::grib_context_set_print_proc" ref="g68b597e40215c9ced7959c7350980d2f" args="(grib_context *c, grib_print_proc printp)" -->
+</div>
+<a class="anchor" id="ga72e9dabca4fc1d1bbb4cf3e01f77c9fd"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void grib_context_set_print_proc           </td>
+          <td class="memname">void codes_grib_multi_support_reset_file </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype"><a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0">grib_print_proc</a> </td>
-          <td class="paramname"> <em>printp</em></td><td> </td>
+          <td class="paramtype">FILE * </td>
+          <td class="paramname"><em>f</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Sets the context printing procedure used for user interaction. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>printp</em> </td><td>: the printing procedure to be set </td></tr>
+<p>Reset file handle in multiple GRIB field support mode. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context to be modified </td></tr>
+    <tr><td class="paramname">f</td><td>: the file pointer </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__context.html#gd18d790f8aabf46e6b766eab07b535a0" title="Grib print proc, format of a procedure referenced in the context that is used to...">grib_print_proc</a> </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="gec49c14665a9b4faa90a74cb069b9a30"></a><!-- doxytag: member="grib_api.h::grib_context_set_user_data" ref="gec49c14665a9b4faa90a74cb069b9a30" args="(grib_context *c, void *udata)" -->
+</div>
+<a class="anchor" id="ga810b375ccacfb6646e44b8cd0da5ee5b"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void grib_context_set_user_data           </td>
+          <td class="memname">void codes_gribex_mode_off </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em></td><td>)</td>
           <td></td>
-          <td class="paramtype">void * </td>
-          <td class="paramname"> <em>udata</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td width="100%"></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Sets user data in a context. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>udata</em> </td><td>: the user data to set </td></tr>
+<p>Set the GRIBEX mode off. </p>
+<p>GRIB files won't be always compatible with GRIBEX.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context </td></tr>
   </table>
+  </dd>
 </dl>
 
 </div>
-</div><p>
-<a class="anchor" name="ge4d49e82f57836891aa57fce24b59800"></a><!-- doxytag: member="grib_api.h::grib_get_context" ref="ge4d49e82f57836891aa57fce24b59800" args="(grib_handle *h)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a>* grib_get_context           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Retreive the context from a handle. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle used to retreive the context from </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>The handle's context, NULL it the handle is invalid </dd></dl>
-
 </div>
-</div><p>
-<a class="anchor" name="g6f6a5612649241d9ecae7e2a288bc436"></a><!-- doxytag: member="grib_api.h::grib_gribex_mode_off" ref="g6f6a5612649241d9ecae7e2a288bc436" args="(grib_context *c)" -->
+<a class="anchor" id="ga51838183704645cc11a270e5f755c30c"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void grib_gribex_mode_off           </td>
+          <td class="memname">void codes_gribex_mode_on </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em></td><td>)</td>
+          <td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Set the gribex mode off. 
-<p>
-Grib files won't be always compatible with gribex.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be deleted </td></tr>
+<p>Set the GRIBEX mode on. </p>
+<p>GRIB files will be compatible with GRIBEX.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context </td></tr>
   </table>
+  </dd>
 </dl>
 
 </div>
-</div><p>
-<a class="anchor" name="ge8e9e3cce24d282a1b34432926b868c0"></a><!-- doxytag: member="grib_api.h::grib_gribex_mode_on" ref="ge8e9e3cce24d282a1b34432926b868c0" args="(grib_context *c)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void grib_gribex_mode_on           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set the gribex mode on. 
-<p>
-Grib files will be compatible with gribex.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be deleted </td></tr>
-  </table>
-</dl>
-
 </div>
-</div><p>
-<a class="anchor" name="g9a3ce8e25ef3e59387015f906a79901a"></a><!-- doxytag: member="grib_api.h::grib_gts_header_off" ref="g9a3ce8e25ef3e59387015f906a79901a" args="(grib_context *c)" -->
+<a class="anchor" id="ga5c766bc156cd1ebcf70139965a41e669"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void grib_gts_header_off           </td>
+          <td class="memname">void codes_gts_header_off </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em></td><td>)</td>
+          <td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Set the gts header mode off. 
-<p>
-The GTS headers will be deleted.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be deleted </td></tr>
+<p>Set the GTS header mode off. </p>
+<p>The GTS headers will be deleted.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context </td></tr>
   </table>
+  </dd>
 </dl>
 
 </div>
-</div><p>
-<a class="anchor" name="g8d72ab772809fba49a41b32909770dd1"></a><!-- doxytag: member="grib_api.h::grib_gts_header_on" ref="g8d72ab772809fba49a41b32909770dd1" args="(grib_context *c)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void grib_gts_header_on           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
-        </tr>
-      </table>
 </div>
-<div class="memdoc">
-
-<p>
-Set the gts header mode on. 
-<p>
-The GTS headers will be preserved.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be deleted </td></tr>
-  </table>
-</dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gc022270a99922ccc57147670ed2a58d4"></a><!-- doxytag: member="grib_api.h::grib_multi_support_off" ref="gc022270a99922ccc57147670ed2a58d4" args="(grib_context *c)" -->
+<a class="anchor" id="ga504a2b1bd0d3b229c120c8285895b03a"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">void grib_multi_support_off           </td>
+          <td class="memname">void codes_gts_header_on </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
+          <td class="paramtype"><a class="el" href="structcodes__context.html">codes_context</a> * </td>
+          <td class="paramname"><em>c</em></td><td>)</td>
+          <td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Turn off support for multiple fields in single grib messages. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
+<p>Set the GTS header mode on. </p>
+<p>The GTS headers will be preserved.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">c</td><td>: the context </td></tr>
   </table>
+  </dd>
 </dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="multi_8f90-example.html#a1">multi.f90</a>, and <a class="el" href="multi__fortran_8_f-example.html#a1">multi_fortran.F</a>.</dl>
-</div>
-</div><p>
-<a class="anchor" name="g3266536e68ebb6d4bbc4a22b29f0e8ea"></a><!-- doxytag: member="grib_api.h::grib_multi_support_on" ref="g3266536e68ebb6d4bbc4a22b29f0e8ea" args="(grib_context *c)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void grib_multi_support_on           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
 
-<p>
-Turn on support for multiple fields in single grib messages. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context to be modified </td></tr>
-  </table>
-</dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="multi_8c-example.html#a1">multi.c</a>, <a class="el" href="multi_8f90-example.html#a0">multi.f90</a>, and <a class="el" href="multi__fortran_8_f-example.html#a0">multi_fortran.F</a>.</dl>
 </div>
-</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
 </body>
 </html>
diff --git a/html/group__environment.html b/html/group__environment.html
new file mode 100644
index 0000000..1af243a
--- /dev/null
+++ b/html/group__environment.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: Environment variables</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">Environment variables</div>  </div>
+</div><!--header-->
+<div class="contents">
+<p>Environment variables applicable to <a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a>:</p>
+<p><b>ECCODES_DEBUG</b> - If set to 1, it will enable debug level logging messages to be displayed by the library.</p>
+<p><b>ECCODES_FAIL_IF_LOG_MESSAGE</b> - If set to 1, it will cause the library to exit when an error or warning is encountered.</p>
+<p><b>ECCODES_IO_BUFFER_SIZE</b> - Defines the size in bytes of the buffer used in the IO calls from Fortran and in the tools.</p>
+<p><b>ECCODES_NO_ABORT</b> - When set to 1 it causes <a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a> not to abort execution on failing asserts.</p>
+<p><b>ECCODES_GRIB_WRITE_ON_FAIL</b> - When set to 1 it will write the last processed GRIB message in a file named $PID_$FILEID_error.grib on failure in a fortran function used without the return code argument.</p>
+<p><b>ECCODES_DEFINITION_PATH</b> - Set to the folder containing the set of definition files you want <a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a> to use instead of the default one.</p>
+<p><b>ECCODES_GRIBEX_MODE_ON</b> - When set to 1 it will enable the GRIBEX compatibility mode and <a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a> will produce GRIB messages readable by GRIBEX.</p>
+<p><b>ECCODES_GRIB_IEEE_PACKING</b> - Accepted values 32 or 64 for 32 or 64 bits IEEE floating point respectively. The GRIB message produced will contain data written in IEEE floating point without packing.</p>
+<p><b>ECCODES_SAMPLES_PATH</b> - Set to the folder containing the set of samples you want <a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a> to use instead of the default one. </p>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/group__errors.html b/html/group__errors.html
new file mode 100644
index 0000000..41f2cc5
--- /dev/null
+++ b/html/group__errors.html
@@ -0,0 +1,1238 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: Error codes</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Macros</a>  </div>
+  <div class="headertitle">
+<div class="title">Error codes</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:ga62529e45321708e65678dfc155f1c842"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga62529e45321708e65678dfc155f1c842">CODES_SUCCESS</a>   0</td></tr>
+<tr class="memdesc:ga62529e45321708e65678dfc155f1c842"><td class="mdescLeft"> </td><td class="mdescRight">No error.  <a href="#ga62529e45321708e65678dfc155f1c842">More...</a><br/></td></tr>
+<tr class="separator:ga62529e45321708e65678dfc155f1c842"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga0b434e15a3ee76844958fd269feb6de0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga0b434e15a3ee76844958fd269feb6de0">CODES_END_OF_FILE</a>   -1</td></tr>
+<tr class="memdesc:ga0b434e15a3ee76844958fd269feb6de0"><td class="mdescLeft"> </td><td class="mdescRight">End of resource reached.  <a href="#ga0b434e15a3ee76844958fd269feb6de0">More...</a><br/></td></tr>
+<tr class="separator:ga0b434e15a3ee76844958fd269feb6de0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga4413dbc23fd50185a76014f0478920a6"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga4413dbc23fd50185a76014f0478920a6">CODES_INTERNAL_ERROR</a>   -2</td></tr>
+<tr class="memdesc:ga4413dbc23fd50185a76014f0478920a6"><td class="mdescLeft"> </td><td class="mdescRight">Internal error.  <a href="#ga4413dbc23fd50185a76014f0478920a6">More...</a><br/></td></tr>
+<tr class="separator:ga4413dbc23fd50185a76014f0478920a6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga28ecc7f18250c721544c587f21acc61f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga28ecc7f18250c721544c587f21acc61f">CODES_BUFFER_TOO_SMALL</a>   -3</td></tr>
+<tr class="memdesc:ga28ecc7f18250c721544c587f21acc61f"><td class="mdescLeft"> </td><td class="mdescRight">Passed buffer is too small.  <a href="#ga28ecc7f18250c721544c587f21acc61f">More...</a><br/></td></tr>
+<tr class="separator:ga28ecc7f18250c721544c587f21acc61f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaf833ff5b61aa5745728bd8c7dd37e27b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaf833ff5b61aa5745728bd8c7dd37e27b">CODES_NOT_IMPLEMENTED</a>   -4</td></tr>
+<tr class="memdesc:gaf833ff5b61aa5745728bd8c7dd37e27b"><td class="mdescLeft"> </td><td class="mdescRight">Function not yet implemented.  <a href="#gaf833ff5b61aa5745728bd8c7dd37e27b">More...</a><br/></td></tr>
+<tr class="separator:gaf833ff5b61aa5745728bd8c7dd37e27b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga1d805b18a1a77dc05958177d1954ce74"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga1d805b18a1a77dc05958177d1954ce74">CODES_7777_NOT_FOUND</a>   -5</td></tr>
+<tr class="memdesc:ga1d805b18a1a77dc05958177d1954ce74"><td class="mdescLeft"> </td><td class="mdescRight">Missing 7777 at end of message.  <a href="#ga1d805b18a1a77dc05958177d1954ce74">More...</a><br/></td></tr>
+<tr class="separator:ga1d805b18a1a77dc05958177d1954ce74"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaa1ba1cec53cded5eb4497f920dd06fc4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaa1ba1cec53cded5eb4497f920dd06fc4">CODES_ARRAY_TOO_SMALL</a>   -6</td></tr>
+<tr class="memdesc:gaa1ba1cec53cded5eb4497f920dd06fc4"><td class="mdescLeft"> </td><td class="mdescRight">Passed array is too small.  <a href="#gaa1ba1cec53cded5eb4497f920dd06fc4">More...</a><br/></td></tr>
+<tr class="separator:gaa1ba1cec53cded5eb4497f920dd06fc4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac7c0c8beed153b8bf32601441c5ef787"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gac7c0c8beed153b8bf32601441c5ef787">CODES_FILE_NOT_FOUND</a>   -7</td></tr>
+<tr class="memdesc:gac7c0c8beed153b8bf32601441c5ef787"><td class="mdescLeft"> </td><td class="mdescRight">File not found.  <a href="#gac7c0c8beed153b8bf32601441c5ef787">More...</a><br/></td></tr>
+<tr class="separator:gac7c0c8beed153b8bf32601441c5ef787"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga007c99d57492ff8d3d4d14cce1b6b645"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga007c99d57492ff8d3d4d14cce1b6b645">CODES_CODE_NOT_FOUND_IN_TABLE</a>   -8</td></tr>
+<tr class="memdesc:ga007c99d57492ff8d3d4d14cce1b6b645"><td class="mdescLeft"> </td><td class="mdescRight">Code not found in code table.  <a href="#ga007c99d57492ff8d3d4d14cce1b6b645">More...</a><br/></td></tr>
+<tr class="separator:ga007c99d57492ff8d3d4d14cce1b6b645"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga17496b69f982d69fc5ae83a5f5b785bf"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga17496b69f982d69fc5ae83a5f5b785bf">CODES_WRONG_ARRAY_SIZE</a>   -9</td></tr>
+<tr class="memdesc:ga17496b69f982d69fc5ae83a5f5b785bf"><td class="mdescLeft"> </td><td class="mdescRight">Array size mismatch.  <a href="#ga17496b69f982d69fc5ae83a5f5b785bf">More...</a><br/></td></tr>
+<tr class="separator:ga17496b69f982d69fc5ae83a5f5b785bf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga0c9413c3afbe47d2a6f2bba805360084"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga0c9413c3afbe47d2a6f2bba805360084">CODES_NOT_FOUND</a>   -10</td></tr>
+<tr class="memdesc:ga0c9413c3afbe47d2a6f2bba805360084"><td class="mdescLeft"> </td><td class="mdescRight">Key/value not found.  <a href="#ga0c9413c3afbe47d2a6f2bba805360084">More...</a><br/></td></tr>
+<tr class="separator:ga0c9413c3afbe47d2a6f2bba805360084"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga796a3ec1b15abe60dec0c6817564d173"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga796a3ec1b15abe60dec0c6817564d173">CODES_IO_PROBLEM</a>   -11</td></tr>
+<tr class="memdesc:ga796a3ec1b15abe60dec0c6817564d173"><td class="mdescLeft"> </td><td class="mdescRight">Input output problem.  <a href="#ga796a3ec1b15abe60dec0c6817564d173">More...</a><br/></td></tr>
+<tr class="separator:ga796a3ec1b15abe60dec0c6817564d173"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gad58e1f868ee4e18b4836007d38562b8d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gad58e1f868ee4e18b4836007d38562b8d">CODES_INVALID_MESSAGE</a>   -12</td></tr>
+<tr class="memdesc:gad58e1f868ee4e18b4836007d38562b8d"><td class="mdescLeft"> </td><td class="mdescRight">Message invalid.  <a href="#gad58e1f868ee4e18b4836007d38562b8d">More...</a><br/></td></tr>
+<tr class="separator:gad58e1f868ee4e18b4836007d38562b8d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga75df8e941afb735723fec89bd68d4f58"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga75df8e941afb735723fec89bd68d4f58">CODES_DECODING_ERROR</a>   -13</td></tr>
+<tr class="memdesc:ga75df8e941afb735723fec89bd68d4f58"><td class="mdescLeft"> </td><td class="mdescRight">Decoding invalid.  <a href="#ga75df8e941afb735723fec89bd68d4f58">More...</a><br/></td></tr>
+<tr class="separator:ga75df8e941afb735723fec89bd68d4f58"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga817971c5206ff01987a2d16bc0e9dd1f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga817971c5206ff01987a2d16bc0e9dd1f">CODES_ENCODING_ERROR</a>   -14</td></tr>
+<tr class="memdesc:ga817971c5206ff01987a2d16bc0e9dd1f"><td class="mdescLeft"> </td><td class="mdescRight">Encoding invalid.  <a href="#ga817971c5206ff01987a2d16bc0e9dd1f">More...</a><br/></td></tr>
+<tr class="separator:ga817971c5206ff01987a2d16bc0e9dd1f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaf624d54629a6e8aabce0c5b60667e268"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaf624d54629a6e8aabce0c5b60667e268">CODES_NO_MORE_IN_SET</a>   -15</td></tr>
+<tr class="memdesc:gaf624d54629a6e8aabce0c5b60667e268"><td class="mdescLeft"> </td><td class="mdescRight">Code cannot unpack because of string too small.  <a href="#gaf624d54629a6e8aabce0c5b60667e268">More...</a><br/></td></tr>
+<tr class="separator:gaf624d54629a6e8aabce0c5b60667e268"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6bcc67f9220042cb4781bad71fd59f35"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga6bcc67f9220042cb4781bad71fd59f35">CODES_GEOCALCULUS_PROBLEM</a>   -16</td></tr>
+<tr class="memdesc:ga6bcc67f9220042cb4781bad71fd59f35"><td class="mdescLeft"> </td><td class="mdescRight">Problem with calculation of geographic attributes.  <a href="#ga6bcc67f9220042cb4781bad71fd59f35">More...</a><br/></td></tr>
+<tr class="separator:ga6bcc67f9220042cb4781bad71fd59f35"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaca540f40b9e09270265636b3689d8c2e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaca540f40b9e09270265636b3689d8c2e">CODES_OUT_OF_MEMORY</a>   -17</td></tr>
+<tr class="memdesc:gaca540f40b9e09270265636b3689d8c2e"><td class="mdescLeft"> </td><td class="mdescRight">Out of memory.  <a href="#gaca540f40b9e09270265636b3689d8c2e">More...</a><br/></td></tr>
+<tr class="separator:gaca540f40b9e09270265636b3689d8c2e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gab1809244c05808791f318e1e060592d3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gab1809244c05808791f318e1e060592d3">CODES_READ_ONLY</a>   -18</td></tr>
+<tr class="memdesc:gab1809244c05808791f318e1e060592d3"><td class="mdescLeft"> </td><td class="mdescRight">Value is read only.  <a href="#gab1809244c05808791f318e1e060592d3">More...</a><br/></td></tr>
+<tr class="separator:gab1809244c05808791f318e1e060592d3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga601fbf553afe7bbdaa1c3c784fcad649"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga601fbf553afe7bbdaa1c3c784fcad649">CODES_INVALID_ARGUMENT</a>   -19</td></tr>
+<tr class="memdesc:ga601fbf553afe7bbdaa1c3c784fcad649"><td class="mdescLeft"> </td><td class="mdescRight">Invalid argument.  <a href="#ga601fbf553afe7bbdaa1c3c784fcad649">More...</a><br/></td></tr>
+<tr class="separator:ga601fbf553afe7bbdaa1c3c784fcad649"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac17665aa8fcb3f6422a80c4a666b47b0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gac17665aa8fcb3f6422a80c4a666b47b0">CODES_NULL_HANDLE</a>   -20</td></tr>
+<tr class="memdesc:gac17665aa8fcb3f6422a80c4a666b47b0"><td class="mdescLeft"> </td><td class="mdescRight">Null handle.  <a href="#gac17665aa8fcb3f6422a80c4a666b47b0">More...</a><br/></td></tr>
+<tr class="separator:gac17665aa8fcb3f6422a80c4a666b47b0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gacc7a7e8cdd1e8ccfc8c9a2956d657d5e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gacc7a7e8cdd1e8ccfc8c9a2956d657d5e">CODES_INVALID_SECTION_NUMBER</a>   -21</td></tr>
+<tr class="memdesc:gacc7a7e8cdd1e8ccfc8c9a2956d657d5e"><td class="mdescLeft"> </td><td class="mdescRight">Invalid section number.  <a href="#gacc7a7e8cdd1e8ccfc8c9a2956d657d5e">More...</a><br/></td></tr>
+<tr class="separator:gacc7a7e8cdd1e8ccfc8c9a2956d657d5e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5795dad885ba6527afa8c2301bf8f3a3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga5795dad885ba6527afa8c2301bf8f3a3">CODES_VALUE_CANNOT_BE_MISSING</a>   -22</td></tr>
+<tr class="memdesc:ga5795dad885ba6527afa8c2301bf8f3a3"><td class="mdescLeft"> </td><td class="mdescRight">Value cannot be missing.  <a href="#ga5795dad885ba6527afa8c2301bf8f3a3">More...</a><br/></td></tr>
+<tr class="separator:ga5795dad885ba6527afa8c2301bf8f3a3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga988dcc03601078149deac7e4fecbc22f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga988dcc03601078149deac7e4fecbc22f">CODES_WRONG_LENGTH</a>   -23</td></tr>
+<tr class="memdesc:ga988dcc03601078149deac7e4fecbc22f"><td class="mdescLeft"> </td><td class="mdescRight">Wrong message length.  <a href="#ga988dcc03601078149deac7e4fecbc22f">More...</a><br/></td></tr>
+<tr class="separator:ga988dcc03601078149deac7e4fecbc22f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga29b65582c871d8c4b0215f38bef6b9c9"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga29b65582c871d8c4b0215f38bef6b9c9">CODES_INVALID_TYPE</a>   -24</td></tr>
+<tr class="memdesc:ga29b65582c871d8c4b0215f38bef6b9c9"><td class="mdescLeft"> </td><td class="mdescRight">Invalid key type.  <a href="#ga29b65582c871d8c4b0215f38bef6b9c9">More...</a><br/></td></tr>
+<tr class="separator:ga29b65582c871d8c4b0215f38bef6b9c9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gadb8db78e83ccc396163068af7d71d32e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gadb8db78e83ccc396163068af7d71d32e">CODES_WRONG_STEP</a>   -25</td></tr>
+<tr class="memdesc:gadb8db78e83ccc396163068af7d71d32e"><td class="mdescLeft"> </td><td class="mdescRight">Unable to set step.  <a href="#gadb8db78e83ccc396163068af7d71d32e">More...</a><br/></td></tr>
+<tr class="separator:gadb8db78e83ccc396163068af7d71d32e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga201ef38b0482edf51e93bf94200dca96"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga201ef38b0482edf51e93bf94200dca96">CODES_WRONG_STEP_UNIT</a>   -26</td></tr>
+<tr class="memdesc:ga201ef38b0482edf51e93bf94200dca96"><td class="mdescLeft"> </td><td class="mdescRight">Wrong units for step (step must be integer)  <a href="#ga201ef38b0482edf51e93bf94200dca96">More...</a><br/></td></tr>
+<tr class="separator:ga201ef38b0482edf51e93bf94200dca96"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gab99b60eded1d7c1ff9adb3521543e956"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gab99b60eded1d7c1ff9adb3521543e956">CODES_INVALID_FILE</a>   -27</td></tr>
+<tr class="memdesc:gab99b60eded1d7c1ff9adb3521543e956"><td class="mdescLeft"> </td><td class="mdescRight">Invalid file id.  <a href="#gab99b60eded1d7c1ff9adb3521543e956">More...</a><br/></td></tr>
+<tr class="separator:gab99b60eded1d7c1ff9adb3521543e956"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaa3b634b83f8678b7869cc5ff271a7801"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaa3b634b83f8678b7869cc5ff271a7801">CODES_INVALID_GRIB</a>   -28</td></tr>
+<tr class="memdesc:gaa3b634b83f8678b7869cc5ff271a7801"><td class="mdescLeft"> </td><td class="mdescRight">Invalid grib id.  <a href="#gaa3b634b83f8678b7869cc5ff271a7801">More...</a><br/></td></tr>
+<tr class="separator:gaa3b634b83f8678b7869cc5ff271a7801"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5f33aa7859af62f31a87afd8fe0643b4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga5f33aa7859af62f31a87afd8fe0643b4">CODES_INVALID_INDEX</a>   -29</td></tr>
+<tr class="memdesc:ga5f33aa7859af62f31a87afd8fe0643b4"><td class="mdescLeft"> </td><td class="mdescRight">Invalid index id.  <a href="#ga5f33aa7859af62f31a87afd8fe0643b4">More...</a><br/></td></tr>
+<tr class="separator:ga5f33aa7859af62f31a87afd8fe0643b4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga09b7d84b946021eab0179a1f0e8babff"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga09b7d84b946021eab0179a1f0e8babff">CODES_INVALID_ITERATOR</a>   -30</td></tr>
+<tr class="memdesc:ga09b7d84b946021eab0179a1f0e8babff"><td class="mdescLeft"> </td><td class="mdescRight">Invalid iterator id.  <a href="#ga09b7d84b946021eab0179a1f0e8babff">More...</a><br/></td></tr>
+<tr class="separator:ga09b7d84b946021eab0179a1f0e8babff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaa90810da03e1593e3eb30edcb87da47b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaa90810da03e1593e3eb30edcb87da47b">CODES_INVALID_KEYS_ITERATOR</a>   -31</td></tr>
+<tr class="memdesc:gaa90810da03e1593e3eb30edcb87da47b"><td class="mdescLeft"> </td><td class="mdescRight">Invalid keys iterator id.  <a href="#gaa90810da03e1593e3eb30edcb87da47b">More...</a><br/></td></tr>
+<tr class="separator:gaa90810da03e1593e3eb30edcb87da47b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3e95bd54244761766d7c39c8a95ee9bf"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga3e95bd54244761766d7c39c8a95ee9bf">CODES_INVALID_NEAREST</a>   -32</td></tr>
+<tr class="memdesc:ga3e95bd54244761766d7c39c8a95ee9bf"><td class="mdescLeft"> </td><td class="mdescRight">Invalid nearest id.  <a href="#ga3e95bd54244761766d7c39c8a95ee9bf">More...</a><br/></td></tr>
+<tr class="separator:ga3e95bd54244761766d7c39c8a95ee9bf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga03f1a92629846f6aef37e5933fa4f5e4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga03f1a92629846f6aef37e5933fa4f5e4">CODES_INVALID_ORDERBY</a>   -33</td></tr>
+<tr class="memdesc:ga03f1a92629846f6aef37e5933fa4f5e4"><td class="mdescLeft"> </td><td class="mdescRight">Invalid order by.  <a href="#ga03f1a92629846f6aef37e5933fa4f5e4">More...</a><br/></td></tr>
+<tr class="separator:ga03f1a92629846f6aef37e5933fa4f5e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga96acfe0a853dd9243975b62aad503dd7"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga96acfe0a853dd9243975b62aad503dd7">CODES_MISSING_KEY</a>   -34</td></tr>
+<tr class="memdesc:ga96acfe0a853dd9243975b62aad503dd7"><td class="mdescLeft"> </td><td class="mdescRight">Missing a key from the fieldset.  <a href="#ga96acfe0a853dd9243975b62aad503dd7">More...</a><br/></td></tr>
+<tr class="separator:ga96acfe0a853dd9243975b62aad503dd7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga1535af5117f762da30730d341a27c421"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga1535af5117f762da30730d341a27c421">CODES_OUT_OF_AREA</a>   -35</td></tr>
+<tr class="memdesc:ga1535af5117f762da30730d341a27c421"><td class="mdescLeft"> </td><td class="mdescRight">The point is out of the grid area.  <a href="#ga1535af5117f762da30730d341a27c421">More...</a><br/></td></tr>
+<tr class="separator:ga1535af5117f762da30730d341a27c421"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaacf5638c981fbd97399b83439197c4ba"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaacf5638c981fbd97399b83439197c4ba">CODES_CONCEPT_NO_MATCH</a>   -36</td></tr>
+<tr class="memdesc:gaacf5638c981fbd97399b83439197c4ba"><td class="mdescLeft"> </td><td class="mdescRight">Concept no match.  <a href="#gaacf5638c981fbd97399b83439197c4ba">More...</a><br/></td></tr>
+<tr class="separator:gaacf5638c981fbd97399b83439197c4ba"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga396e92d0fa82b59556c924e0dec759c6"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga396e92d0fa82b59556c924e0dec759c6">CODES_HASH_ARRAY_NO_MATCH</a>   -37</td></tr>
+<tr class="memdesc:ga396e92d0fa82b59556c924e0dec759c6"><td class="mdescLeft"> </td><td class="mdescRight">Hash array no match.  <a href="#ga396e92d0fa82b59556c924e0dec759c6">More...</a><br/></td></tr>
+<tr class="separator:ga396e92d0fa82b59556c924e0dec759c6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga737054a732ef481c72997c4face59a02"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga737054a732ef481c72997c4face59a02">CODES_NO_DEFINITIONS</a>   -38</td></tr>
+<tr class="memdesc:ga737054a732ef481c72997c4face59a02"><td class="mdescLeft"> </td><td class="mdescRight">Definitions files not found.  <a href="#ga737054a732ef481c72997c4face59a02">More...</a><br/></td></tr>
+<tr class="separator:ga737054a732ef481c72997c4face59a02"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga399f4bf77424c64dbb7e94212deffd38"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga399f4bf77424c64dbb7e94212deffd38">CODES_WRONG_TYPE</a>   -39</td></tr>
+<tr class="memdesc:ga399f4bf77424c64dbb7e94212deffd38"><td class="mdescLeft"> </td><td class="mdescRight">Wrong type while packing.  <a href="#ga399f4bf77424c64dbb7e94212deffd38">More...</a><br/></td></tr>
+<tr class="separator:ga399f4bf77424c64dbb7e94212deffd38"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga4e95b3f8896dc99e311e02c348266595"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga4e95b3f8896dc99e311e02c348266595">CODES_END</a>   -40</td></tr>
+<tr class="memdesc:ga4e95b3f8896dc99e311e02c348266595"><td class="mdescLeft"> </td><td class="mdescRight">End of resource.  <a href="#ga4e95b3f8896dc99e311e02c348266595">More...</a><br/></td></tr>
+<tr class="separator:ga4e95b3f8896dc99e311e02c348266595"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac1e36f8922e9321ca23c6884742f4fbd"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gac1e36f8922e9321ca23c6884742f4fbd">CODES_NO_VALUES</a>   -41</td></tr>
+<tr class="memdesc:gac1e36f8922e9321ca23c6884742f4fbd"><td class="mdescLeft"> </td><td class="mdescRight">Unable to code a field without values.  <a href="#gac1e36f8922e9321ca23c6884742f4fbd">More...</a><br/></td></tr>
+<tr class="separator:gac1e36f8922e9321ca23c6884742f4fbd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gab7fca3278f1c363103a066d1a1f83fba"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gab7fca3278f1c363103a066d1a1f83fba">CODES_WRONG_GRID</a>   -42</td></tr>
+<tr class="memdesc:gab7fca3278f1c363103a066d1a1f83fba"><td class="mdescLeft"> </td><td class="mdescRight">Grid description is wrong or inconsistent.  <a href="#gab7fca3278f1c363103a066d1a1f83fba">More...</a><br/></td></tr>
+<tr class="separator:gab7fca3278f1c363103a066d1a1f83fba"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga0280b694f20120aef691e13288bf2b30"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga0280b694f20120aef691e13288bf2b30">CODES_END_OF_INDEX</a>   -43</td></tr>
+<tr class="memdesc:ga0280b694f20120aef691e13288bf2b30"><td class="mdescLeft"> </td><td class="mdescRight">End of index reached.  <a href="#ga0280b694f20120aef691e13288bf2b30">More...</a><br/></td></tr>
+<tr class="separator:ga0280b694f20120aef691e13288bf2b30"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gabbdcba4ec6e2dd470b8f0611fdd37d52"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gabbdcba4ec6e2dd470b8f0611fdd37d52">CODES_NULL_INDEX</a>   -44</td></tr>
+<tr class="memdesc:gabbdcba4ec6e2dd470b8f0611fdd37d52"><td class="mdescLeft"> </td><td class="mdescRight">Null index.  <a href="#gabbdcba4ec6e2dd470b8f0611fdd37d52">More...</a><br/></td></tr>
+<tr class="separator:gabbdcba4ec6e2dd470b8f0611fdd37d52"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6e92038c31cca9d63ec502de74979044"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga6e92038c31cca9d63ec502de74979044">CODES_PREMATURE_END_OF_FILE</a>   -45</td></tr>
+<tr class="memdesc:ga6e92038c31cca9d63ec502de74979044"><td class="mdescLeft"> </td><td class="mdescRight">End of resource reached when reading message.  <a href="#ga6e92038c31cca9d63ec502de74979044">More...</a><br/></td></tr>
+<tr class="separator:ga6e92038c31cca9d63ec502de74979044"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga953130174b4f829aeaa4f2122792ce5b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga953130174b4f829aeaa4f2122792ce5b">CODES_INTERNAL_ARRAY_TOO_SMALL</a>   -46</td></tr>
+<tr class="memdesc:ga953130174b4f829aeaa4f2122792ce5b"><td class="mdescLeft"> </td><td class="mdescRight">An internal array is too small.  <a href="#ga953130174b4f829aeaa4f2122792ce5b">More...</a><br/></td></tr>
+<tr class="separator:ga953130174b4f829aeaa4f2122792ce5b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gafe15d1cbbb9524f6287e99c05265f90b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gafe15d1cbbb9524f6287e99c05265f90b">CODES_MESSAGE_TOO_LARGE</a>   -47</td></tr>
+<tr class="memdesc:gafe15d1cbbb9524f6287e99c05265f90b"><td class="mdescLeft"> </td><td class="mdescRight">Message is too large for the current architecture.  <a href="#gafe15d1cbbb9524f6287e99c05265f90b">More...</a><br/></td></tr>
+<tr class="separator:gafe15d1cbbb9524f6287e99c05265f90b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaf24f6cbb1e6a796cc7768aa1d5280d6e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaf24f6cbb1e6a796cc7768aa1d5280d6e">CODES_CONSTANT_FIELD</a>   -48</td></tr>
+<tr class="memdesc:gaf24f6cbb1e6a796cc7768aa1d5280d6e"><td class="mdescLeft"> </td><td class="mdescRight">Constant field.  <a href="#gaf24f6cbb1e6a796cc7768aa1d5280d6e">More...</a><br/></td></tr>
+<tr class="separator:gaf24f6cbb1e6a796cc7768aa1d5280d6e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga76a9e4341bbdd4fa7aa6f19581294897"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga76a9e4341bbdd4fa7aa6f19581294897">CODES_SWITCH_NO_MATCH</a>   -49</td></tr>
+<tr class="memdesc:ga76a9e4341bbdd4fa7aa6f19581294897"><td class="mdescLeft"> </td><td class="mdescRight">Switch unable to find a matching case.  <a href="#ga76a9e4341bbdd4fa7aa6f19581294897">More...</a><br/></td></tr>
+<tr class="separator:ga76a9e4341bbdd4fa7aa6f19581294897"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga4fa596b35745d80ac3def70a91f12c97"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga4fa596b35745d80ac3def70a91f12c97">CODES_UNDERFLOW</a>   -50</td></tr>
+<tr class="memdesc:ga4fa596b35745d80ac3def70a91f12c97"><td class="mdescLeft"> </td><td class="mdescRight">Underflow.  <a href="#ga4fa596b35745d80ac3def70a91f12c97">More...</a><br/></td></tr>
+<tr class="separator:ga4fa596b35745d80ac3def70a91f12c97"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga05a6fefc41cb1f342d66b1a99887a8bd"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga05a6fefc41cb1f342d66b1a99887a8bd">CODES_MESSAGE_MALFORMED</a>   -51</td></tr>
+<tr class="memdesc:ga05a6fefc41cb1f342d66b1a99887a8bd"><td class="mdescLeft"> </td><td class="mdescRight">Message malformed.  <a href="#ga05a6fefc41cb1f342d66b1a99887a8bd">More...</a><br/></td></tr>
+<tr class="separator:ga05a6fefc41cb1f342d66b1a99887a8bd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3e4650042d448cf9ccf2f58913f6d900"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga3e4650042d448cf9ccf2f58913f6d900">CODES_CORRUPTED_INDEX</a>   -52</td></tr>
+<tr class="memdesc:ga3e4650042d448cf9ccf2f58913f6d900"><td class="mdescLeft"> </td><td class="mdescRight">Index is corrupted.  <a href="#ga3e4650042d448cf9ccf2f58913f6d900">More...</a><br/></td></tr>
+<tr class="separator:ga3e4650042d448cf9ccf2f58913f6d900"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5cf46bac2cc3e9dfc9a0dc81644591b4"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga5cf46bac2cc3e9dfc9a0dc81644591b4">CODES_INVALID_BPV</a>   -53</td></tr>
+<tr class="memdesc:ga5cf46bac2cc3e9dfc9a0dc81644591b4"><td class="mdescLeft"> </td><td class="mdescRight">Invalid number of bits per value.  <a href="#ga5cf46bac2cc3e9dfc9a0dc81644591b4">More...</a><br/></td></tr>
+<tr class="separator:ga5cf46bac2cc3e9dfc9a0dc81644591b4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gad88a9ff519e455b12ac0bf8e45f95472"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gad88a9ff519e455b12ac0bf8e45f95472">CODES_DIFFERENT_EDITION</a>   -54</td></tr>
+<tr class="memdesc:gad88a9ff519e455b12ac0bf8e45f95472"><td class="mdescLeft"> </td><td class="mdescRight">Edition of two messages is different.  <a href="#gad88a9ff519e455b12ac0bf8e45f95472">More...</a><br/></td></tr>
+<tr class="separator:gad88a9ff519e455b12ac0bf8e45f95472"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga138dc954bee9af6f849c63699d6b6044"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga138dc954bee9af6f849c63699d6b6044">CODES_VALUE_DIFFERENT</a>   -55</td></tr>
+<tr class="memdesc:ga138dc954bee9af6f849c63699d6b6044"><td class="mdescLeft"> </td><td class="mdescRight">Value is different.  <a href="#ga138dc954bee9af6f849c63699d6b6044">More...</a><br/></td></tr>
+<tr class="separator:ga138dc954bee9af6f849c63699d6b6044"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga713d9143db54f7520a4e0473b73971d8"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga713d9143db54f7520a4e0473b73971d8">CODES_INVALID_KEY_VALUE</a>   -56</td></tr>
+<tr class="memdesc:ga713d9143db54f7520a4e0473b73971d8"><td class="mdescLeft"> </td><td class="mdescRight">Invalid key value.  <a href="#ga713d9143db54f7520a4e0473b73971d8">More...</a><br/></td></tr>
+<tr class="separator:ga713d9143db54f7520a4e0473b73971d8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga2d577c49ec3604d481c12f1bf5539eee"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga2d577c49ec3604d481c12f1bf5539eee">CODES_STRING_TOO_SMALL</a>   -57</td></tr>
+<tr class="memdesc:ga2d577c49ec3604d481c12f1bf5539eee"><td class="mdescLeft"> </td><td class="mdescRight">String is smaller than requested.  <a href="#ga2d577c49ec3604d481c12f1bf5539eee">More...</a><br/></td></tr>
+<tr class="separator:ga2d577c49ec3604d481c12f1bf5539eee"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga419b09c45fc88de701bd32dab76c3d83"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga419b09c45fc88de701bd32dab76c3d83">CODES_WRONG_CONVERSION</a>   -58</td></tr>
+<tr class="memdesc:ga419b09c45fc88de701bd32dab76c3d83"><td class="mdescLeft"> </td><td class="mdescRight">Wrong type conversion.  <a href="#ga419b09c45fc88de701bd32dab76c3d83">More...</a><br/></td></tr>
+<tr class="separator:ga419b09c45fc88de701bd32dab76c3d83"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8c92dd1dc944244225fa0bf129347cb7"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga8c92dd1dc944244225fa0bf129347cb7">CODES_MISSING_BUFR_ENTRY</a>   -59</td></tr>
+<tr class="memdesc:ga8c92dd1dc944244225fa0bf129347cb7"><td class="mdescLeft"> </td><td class="mdescRight">Missing BUFR table entry for descriptor.  <a href="#ga8c92dd1dc944244225fa0bf129347cb7">More...</a><br/></td></tr>
+<tr class="separator:ga8c92dd1dc944244225fa0bf129347cb7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gacbe671c157599d6420eb8dfb1e792f6a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gacbe671c157599d6420eb8dfb1e792f6a">CODES_NULL_POINTER</a>   -60</td></tr>
+<tr class="memdesc:gacbe671c157599d6420eb8dfb1e792f6a"><td class="mdescLeft"> </td><td class="mdescRight">Null pointer.  <a href="#gacbe671c157599d6420eb8dfb1e792f6a">More...</a><br/></td></tr>
+<tr class="separator:gacbe671c157599d6420eb8dfb1e792f6a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gab925e86850f2cb23159bf5f349680985"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gab925e86850f2cb23159bf5f349680985">CODES_ATTRIBUTE_CLASH</a>   -61</td></tr>
+<tr class="memdesc:gab925e86850f2cb23159bf5f349680985"><td class="mdescLeft"> </td><td class="mdescRight">Attribute is already present, cannot add.  <a href="#gab925e86850f2cb23159bf5f349680985">More...</a><br/></td></tr>
+<tr class="separator:gab925e86850f2cb23159bf5f349680985"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gad4cea7d28dfa21cd2eb03594158bc3d6"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gad4cea7d28dfa21cd2eb03594158bc3d6">CODES_TOO_MANY_ATTRIBUTES</a>   -62</td></tr>
+<tr class="memdesc:gad4cea7d28dfa21cd2eb03594158bc3d6"><td class="mdescLeft"> </td><td class="mdescRight">Too many attributes.  <a href="#gad4cea7d28dfa21cd2eb03594158bc3d6">More...</a><br/></td></tr>
+<tr class="separator:gad4cea7d28dfa21cd2eb03594158bc3d6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga020cc6141e2618059f63b5aa2a8385f7"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga020cc6141e2618059f63b5aa2a8385f7">CODES_ATTRIBUTE_NOT_FOUND</a>   -63</td></tr>
+<tr class="memdesc:ga020cc6141e2618059f63b5aa2a8385f7"><td class="mdescLeft"> </td><td class="mdescRight">Attribute not found.  <a href="#ga020cc6141e2618059f63b5aa2a8385f7">More...</a><br/></td></tr>
+<tr class="separator:ga020cc6141e2618059f63b5aa2a8385f7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga4bc4702f061c30bd03ba48a455e1fdd0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga4bc4702f061c30bd03ba48a455e1fdd0">CODES_UNSUPPORTED_EDITION</a>   -64</td></tr>
+<tr class="memdesc:ga4bc4702f061c30bd03ba48a455e1fdd0"><td class="mdescLeft"> </td><td class="mdescRight">Edition not supported.  <a href="#ga4bc4702f061c30bd03ba48a455e1fdd0">More...</a><br/></td></tr>
+<tr class="separator:ga4bc4702f061c30bd03ba48a455e1fdd0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8f0a03b5f41dfe79b5dc501ecc596f7b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga8f0a03b5f41dfe79b5dc501ecc596f7b">CODES_OUT_OF_RANGE</a>   -65</td></tr>
+<tr class="memdesc:ga8f0a03b5f41dfe79b5dc501ecc596f7b"><td class="mdescLeft"> </td><td class="mdescRight">Value out of coding range.  <a href="#ga8f0a03b5f41dfe79b5dc501ecc596f7b">More...</a><br/></td></tr>
+<tr class="separator:ga8f0a03b5f41dfe79b5dc501ecc596f7b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac049ccb7281fecb514b740bd937b6c3b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gac049ccb7281fecb514b740bd937b6c3b">CODES_WRONG_BITMAP_SIZE</a>   -66</td></tr>
+<tr class="memdesc:gac049ccb7281fecb514b740bd937b6c3b"><td class="mdescLeft"> </td><td class="mdescRight">Size of bitmap is incorrect.  <a href="#gac049ccb7281fecb514b740bd937b6c3b">More...</a><br/></td></tr>
+<tr class="separator:gac049ccb7281fecb514b740bd937b6c3b"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>Error codes returned by the eccodes functions. </p>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a class="anchor" id="ga1d805b18a1a77dc05958177d1954ce74"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_7777_NOT_FOUND   -5</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Missing 7777 at end of message. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaa1ba1cec53cded5eb4497f920dd06fc4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_ARRAY_TOO_SMALL   -6</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Passed array is too small. </p>
+
+</div>
+</div>
+<a class="anchor" id="gab925e86850f2cb23159bf5f349680985"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_ATTRIBUTE_CLASH   -61</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Attribute is already present, cannot add. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga020cc6141e2618059f63b5aa2a8385f7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_ATTRIBUTE_NOT_FOUND   -63</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Attribute not found. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga28ecc7f18250c721544c587f21acc61f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_BUFFER_TOO_SMALL   -3</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Passed buffer is too small. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga007c99d57492ff8d3d4d14cce1b6b645"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_CODE_NOT_FOUND_IN_TABLE   -8</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Code not found in code table. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaacf5638c981fbd97399b83439197c4ba"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_CONCEPT_NO_MATCH   -36</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Concept no match. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaf24f6cbb1e6a796cc7768aa1d5280d6e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_CONSTANT_FIELD   -48</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Constant field. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga3e4650042d448cf9ccf2f58913f6d900"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_CORRUPTED_INDEX   -52</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Index is corrupted. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga75df8e941afb735723fec89bd68d4f58"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_DECODING_ERROR   -13</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Decoding invalid. </p>
+
+</div>
+</div>
+<a class="anchor" id="gad88a9ff519e455b12ac0bf8e45f95472"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_DIFFERENT_EDITION   -54</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Edition of two messages is different. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga817971c5206ff01987a2d16bc0e9dd1f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_ENCODING_ERROR   -14</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Encoding invalid. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga4e95b3f8896dc99e311e02c348266595"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_END   -40</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>End of resource. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga0b434e15a3ee76844958fd269feb6de0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_END_OF_FILE   -1</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>End of resource reached. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga0280b694f20120aef691e13288bf2b30"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_END_OF_INDEX   -43</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>End of index reached. </p>
+
+</div>
+</div>
+<a class="anchor" id="gac7c0c8beed153b8bf32601441c5ef787"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_FILE_NOT_FOUND   -7</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>File not found. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga6bcc67f9220042cb4781bad71fd59f35"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_GEOCALCULUS_PROBLEM   -16</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Problem with calculation of geographic attributes. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga396e92d0fa82b59556c924e0dec759c6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_HASH_ARRAY_NO_MATCH   -37</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Hash array no match. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga953130174b4f829aeaa4f2122792ce5b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_INTERNAL_ARRAY_TOO_SMALL   -46</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>An internal array is too small. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga4413dbc23fd50185a76014f0478920a6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_INTERNAL_ERROR   -2</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Internal error. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga601fbf553afe7bbdaa1c3c784fcad649"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_INVALID_ARGUMENT   -19</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Invalid argument. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga5cf46bac2cc3e9dfc9a0dc81644591b4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_INVALID_BPV   -53</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Invalid number of bits per value. </p>
+
+</div>
+</div>
+<a class="anchor" id="gab99b60eded1d7c1ff9adb3521543e956"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_INVALID_FILE   -27</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Invalid file id. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaa3b634b83f8678b7869cc5ff271a7801"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_INVALID_GRIB   -28</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Invalid grib id. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga5f33aa7859af62f31a87afd8fe0643b4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_INVALID_INDEX   -29</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Invalid index id. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga09b7d84b946021eab0179a1f0e8babff"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_INVALID_ITERATOR   -30</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Invalid iterator id. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga713d9143db54f7520a4e0473b73971d8"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_INVALID_KEY_VALUE   -56</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Invalid key value. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaa90810da03e1593e3eb30edcb87da47b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_INVALID_KEYS_ITERATOR   -31</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Invalid keys iterator id. </p>
+
+</div>
+</div>
+<a class="anchor" id="gad58e1f868ee4e18b4836007d38562b8d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_INVALID_MESSAGE   -12</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Message invalid. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga3e95bd54244761766d7c39c8a95ee9bf"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_INVALID_NEAREST   -32</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Invalid nearest id. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga03f1a92629846f6aef37e5933fa4f5e4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_INVALID_ORDERBY   -33</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Invalid order by. </p>
+
+</div>
+</div>
+<a class="anchor" id="gacc7a7e8cdd1e8ccfc8c9a2956d657d5e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_INVALID_SECTION_NUMBER   -21</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Invalid section number. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga29b65582c871d8c4b0215f38bef6b9c9"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_INVALID_TYPE   -24</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Invalid key type. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga796a3ec1b15abe60dec0c6817564d173"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_IO_PROBLEM   -11</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Input output problem. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga05a6fefc41cb1f342d66b1a99887a8bd"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_MESSAGE_MALFORMED   -51</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Message malformed. </p>
+
+</div>
+</div>
+<a class="anchor" id="gafe15d1cbbb9524f6287e99c05265f90b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_MESSAGE_TOO_LARGE   -47</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Message is too large for the current architecture. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga8c92dd1dc944244225fa0bf129347cb7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_MISSING_BUFR_ENTRY   -59</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Missing BUFR table entry for descriptor. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga96acfe0a853dd9243975b62aad503dd7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_MISSING_KEY   -34</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Missing a key from the fieldset. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga737054a732ef481c72997c4face59a02"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_NO_DEFINITIONS   -38</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Definitions files not found. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaf624d54629a6e8aabce0c5b60667e268"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_NO_MORE_IN_SET   -15</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Code cannot unpack because of string too small. </p>
+
+</div>
+</div>
+<a class="anchor" id="gac1e36f8922e9321ca23c6884742f4fbd"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_NO_VALUES   -41</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Unable to code a field without values. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga0c9413c3afbe47d2a6f2bba805360084"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_NOT_FOUND   -10</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Key/value not found. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaf833ff5b61aa5745728bd8c7dd37e27b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_NOT_IMPLEMENTED   -4</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Function not yet implemented. </p>
+
+</div>
+</div>
+<a class="anchor" id="gac17665aa8fcb3f6422a80c4a666b47b0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_NULL_HANDLE   -20</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Null handle. </p>
+
+</div>
+</div>
+<a class="anchor" id="gabbdcba4ec6e2dd470b8f0611fdd37d52"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_NULL_INDEX   -44</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Null index. </p>
+
+</div>
+</div>
+<a class="anchor" id="gacbe671c157599d6420eb8dfb1e792f6a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_NULL_POINTER   -60</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Null pointer. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga1535af5117f762da30730d341a27c421"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_OUT_OF_AREA   -35</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The point is out of the grid area. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaca540f40b9e09270265636b3689d8c2e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_OUT_OF_MEMORY   -17</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Out of memory. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga8f0a03b5f41dfe79b5dc501ecc596f7b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_OUT_OF_RANGE   -65</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Value out of coding range. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga6e92038c31cca9d63ec502de74979044"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_PREMATURE_END_OF_FILE   -45</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>End of resource reached when reading message. </p>
+
+</div>
+</div>
+<a class="anchor" id="gab1809244c05808791f318e1e060592d3"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_READ_ONLY   -18</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Value is read only. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga2d577c49ec3604d481c12f1bf5539eee"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_STRING_TOO_SMALL   -57</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>String is smaller than requested. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga62529e45321708e65678dfc155f1c842"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_SUCCESS   0</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>No error. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga76a9e4341bbdd4fa7aa6f19581294897"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_SWITCH_NO_MATCH   -49</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Switch unable to find a matching case. </p>
+
+</div>
+</div>
+<a class="anchor" id="gad4cea7d28dfa21cd2eb03594158bc3d6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_TOO_MANY_ATTRIBUTES   -62</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Too many attributes. </p>
+<p>Increase MAX_ACCESSOR_ATTRIBUTES </p>
+
+</div>
+</div>
+<a class="anchor" id="ga4fa596b35745d80ac3def70a91f12c97"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_UNDERFLOW   -50</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Underflow. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga4bc4702f061c30bd03ba48a455e1fdd0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_UNSUPPORTED_EDITION   -64</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Edition not supported. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga5795dad885ba6527afa8c2301bf8f3a3"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_VALUE_CANNOT_BE_MISSING   -22</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Value cannot be missing. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga138dc954bee9af6f849c63699d6b6044"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_VALUE_DIFFERENT   -55</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Value is different. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga17496b69f982d69fc5ae83a5f5b785bf"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_WRONG_ARRAY_SIZE   -9</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Array size mismatch. </p>
+
+</div>
+</div>
+<a class="anchor" id="gac049ccb7281fecb514b740bd937b6c3b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_WRONG_BITMAP_SIZE   -66</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Size of bitmap is incorrect. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga419b09c45fc88de701bd32dab76c3d83"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_WRONG_CONVERSION   -58</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Wrong type conversion. </p>
+
+</div>
+</div>
+<a class="anchor" id="gab7fca3278f1c363103a066d1a1f83fba"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_WRONG_GRID   -42</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Grid description is wrong or inconsistent. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga988dcc03601078149deac7e4fecbc22f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_WRONG_LENGTH   -23</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Wrong message length. </p>
+
+</div>
+</div>
+<a class="anchor" id="gadb8db78e83ccc396163068af7d71d32e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_WRONG_STEP   -25</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Unable to set step. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga201ef38b0482edf51e93bf94200dca96"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_WRONG_STEP_UNIT   -26</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Wrong units for step (step must be integer) </p>
+
+</div>
+</div>
+<a class="anchor" id="ga399f4bf77424c64dbb7e94212deffd38"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define CODES_WRONG_TYPE   -39</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Wrong type while packing. </p>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/group__get__set.html b/html/group__get__set.html
index 91fc2c0..1ead2fa 100644
--- a/html/group__get__set.html
+++ b/html/group__get__set.html
@@ -1,938 +1,1122 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: Accessing header and data values</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: Accessing header and data values</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
-<h1>Accessing header and data values</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g3b40c8174568a6e2b7563a0e89d20ddf">grib_get_offset</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, size_t *offset)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">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.  <a href="#g3b40c8174568a6e2b7563a0e89d20ddf"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245">grib_get_size</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, size_t *size)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the number of coded value from a key, if several keys of the same name are present, the total sum is returned.  <a href="#g18b622ed86b24d5e5fcab70c309fc245"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526">grib_get_long</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, long *value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a long value from a key, if several keys of the same name are present, the last one is returned.  <a href="#g03cfa6762312face1a3cc3ef23e16526"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e">grib_get_double</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, double *value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a double value from a key, if several keys of the same name are present, the last one is returned.  <a href="#g5d9eeda38bf59ee3fa9ce3f92e65009e"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gec894541bbc8c4e9093803ce21146fa5">grib_get_double_element</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, int i, double *value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get as double the i-th element of the "key" array.  <a href="#gec894541bbc8c4e9093803ce21146fa5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gdff349943fef1036fcd1dd7a69738a7a">grib_get_double_elements</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, int *i, long size, double *value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get as double array the elements of the "key" array whose indexes are listed in the input array i.  <a href="#gdff349943fef1036fcd1dd7a69738a7a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053">grib_get_string</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, char *mesg, size_t *length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get a string value from a key, if several keys of the same name are present, the last one is returned.  <a href="#g8aeaf9f930eea1cc0f15e92f18a25053"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g1b1ac2da661c638dad7d223419d541c6">grib_get_bytes</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, unsigned char *bytes, size_t *length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get raw bytes values from a key.  <a href="#g1b1ac2da661c638dad7d223419d541c6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a">grib_get_double_array</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, double *vals, size_t *length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get double array values from a key.  <a href="#g61f1029d7f37d51f33835e218d58378a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga05493cedfee55f0b83d27e356123223">grib_get_long_array</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, long *vals, size_t *length)</td></tr>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
 
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get long array values from a key.  <a href="#ga05493cedfee55f0b83d27e356123223"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g6315ad72aaaf7577bc7b9f546c506e74">grib_copy_namespace</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *dest, const char *name, <a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *src)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy the keys belonging to a given namespace from a source handle to a destination handle.  <a href="#g6315ad72aaaf7577bc7b9f546c506e74"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2">grib_set_long</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, long val)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a long value from a key.  <a href="#g94c33cfe90c3aa887fb8e14f0bd87fe2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g3f8802a5d3f2e7557e35e6e83acfc9e9">grib_set_double</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, double val)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a double value from a key.  <a href="#g3f8802a5d3f2e7557e35e6e83acfc9e9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g78143cc64571b454b0aba14246e9a53a">grib_set_string</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, const char *mesg, size_t *length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a string value from a key.  <a href="#g78143cc64571b454b0aba14246e9a53a"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g4437bd0aa70cc2c2f942ace67023f4a1">grib_set_bytes</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, const unsigned char *bytes, size_t *length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a bytes array from a key.  <a href="#g4437bd0aa70cc2c2f942ace67023f4a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga24d87e236a2469309d1176ee5925d77">grib_set_double_array</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, const double *vals, size_t length)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a double array from a key.  <a href="#ga24d87e236a2469309d1176ee5925d77"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#g6c4697dc7c6f450ad30d0a24a3f87016">grib_set_long_array</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const char *key, const long *vals, size_t length)</td></tr>
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
 
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a long array from a key.  <a href="#g6c4697dc7c6f450ad30d0a24a3f87016"></a><br></td></tr>
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Accessing header and data values</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:gaefda2b7765e1b737bcd05a825d231a1d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gaefda2b7765e1b737bcd05a825d231a1d">codes_get_offset</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, size_t *offset)</td></tr>
+<tr class="memdesc:gaefda2b7765e1b737bcd05a825d231a1d"><td class="mdescLeft"> </td><td class="mdescRight">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.  <a href="#gaefda2b7765e1b737bcd05a825d231a1d">More...</a><br/></td></tr>
+<tr class="separator:gaefda2b7765e1b737bcd05a825d231a1d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga614d4f7a6c789a4fe60ea976b6644343"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga614d4f7a6c789a4fe60ea976b6644343">codes_get_size</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, size_t *size)</td></tr>
+<tr class="memdesc:ga614d4f7a6c789a4fe60ea976b6644343"><td class="mdescLeft"> </td><td class="mdescRight">Get the number of coded value from a key, if several keys of the same name are present, the total sum is returned.  <a href="#ga614d4f7a6c789a4fe60ea976b6644343">More...</a><br/></td></tr>
+<tr class="separator:ga614d4f7a6c789a4fe60ea976b6644343"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga98d694dc6caa24afdd393440c94c38f8"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga98d694dc6caa24afdd393440c94c38f8">codes_get_length</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, size_t *length)</td></tr>
+<tr class="memdesc:ga98d694dc6caa24afdd393440c94c38f8"><td class="mdescLeft"> </td><td class="mdescRight">Get the length of the string representation of the key, if several keys of the same name are present, the maximum length is returned.  <a href="#ga98d694dc6caa24afdd393440c94c38f8">More...</a><br/></td></tr>
+<tr class="separator:ga98d694dc6caa24afdd393440c94c38f8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6ff44dddc3bec09f710b0aa8d0dbded7"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga6ff44dddc3bec09f710b0aa8d0dbded7">codes_get_long</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, long *value)</td></tr>
+<tr class="memdesc:ga6ff44dddc3bec09f710b0aa8d0dbded7"><td class="mdescLeft"> </td><td class="mdescRight">Get a long value from a key, if several keys of the same name are present, the last one is returned.  <a href="#ga6ff44dddc3bec09f710b0aa8d0dbded7">More...</a><br/></td></tr>
+<tr class="separator:ga6ff44dddc3bec09f710b0aa8d0dbded7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga93c1b612b2b70bbbff335b7d227316fc"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga93c1b612b2b70bbbff335b7d227316fc">codes_get_double</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, double *value)</td></tr>
+<tr class="memdesc:ga93c1b612b2b70bbbff335b7d227316fc"><td class="mdescLeft"> </td><td class="mdescRight">Get a double value from a key, if several keys of the same name are present, the last one is returned.  <a href="#ga93c1b612b2b70bbbff335b7d227316fc">More...</a><br/></td></tr>
+<tr class="separator:ga93c1b612b2b70bbbff335b7d227316fc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga15b9a4d8dae3002f0b4f6ef4f1cfc197"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga15b9a4d8dae3002f0b4f6ef4f1cfc197">codes_get_double_element</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, int i, double *value)</td></tr>
+<tr class="memdesc:ga15b9a4d8dae3002f0b4f6ef4f1cfc197"><td class="mdescLeft"> </td><td class="mdescRight">Get as double the i-th element of the "key" array.  <a href="#ga15b9a4d8dae3002f0b4f6ef4f1cfc197">More...</a><br/></td></tr>
+<tr class="separator:ga15b9a4d8dae3002f0b4f6ef4f1cfc197"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga853aad2cd2bea6b71b8c61fed6adfe0b"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga853aad2cd2bea6b71b8c61fed6adfe0b">codes_get_double_elements</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, int *i, long size, double *value)</td></tr>
+<tr class="memdesc:ga853aad2cd2bea6b71b8c61fed6adfe0b"><td class="mdescLeft"> </td><td class="mdescRight">Get as double array the elements of the "key" array whose indexes are listed in the input array i.  <a href="#ga853aad2cd2bea6b71b8c61fed6adfe0b">More...</a><br/></td></tr>
+<tr class="separator:ga853aad2cd2bea6b71b8c61fed6adfe0b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga638d7bbe8dafd11847222a99b259f408"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga638d7bbe8dafd11847222a99b259f408">codes_get_string</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, char *mesg, size_t *length)</td></tr>
+<tr class="memdesc:ga638d7bbe8dafd11847222a99b259f408"><td class="mdescLeft"> </td><td class="mdescRight">Get a string value from a key, if several keys of the same name are present, the last one is returned.  <a href="#ga638d7bbe8dafd11847222a99b259f408">More...</a><br/></td></tr>
+<tr class="separator:ga638d7bbe8dafd11847222a99b259f408"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga252c3104621144fb370f302f3a3f6755"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga252c3104621144fb370f302f3a3f6755">codes_get_bytes</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, unsigned char *bytes, size_t *length)</td></tr>
+<tr class="memdesc:ga252c3104621144fb370f302f3a3f6755"><td class="mdescLeft"> </td><td class="mdescRight">Get raw bytes values from a key.  <a href="#ga252c3104621144fb370f302f3a3f6755">More...</a><br/></td></tr>
+<tr class="separator:ga252c3104621144fb370f302f3a3f6755"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga82b919c3196525ec2f21a8378d4cbbf4"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga82b919c3196525ec2f21a8378d4cbbf4">codes_get_double_array</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, double *vals, size_t *length)</td></tr>
+<tr class="memdesc:ga82b919c3196525ec2f21a8378d4cbbf4"><td class="mdescLeft"> </td><td class="mdescRight">Get double array values from a key.  <a href="#ga82b919c3196525ec2f21a8378d4cbbf4">More...</a><br/></td></tr>
+<tr class="separator:ga82b919c3196525ec2f21a8378d4cbbf4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac43a3c0bf2561ceeb4bcc22d734b53b1"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gac43a3c0bf2561ceeb4bcc22d734b53b1">codes_get_long_array</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, long *vals, size_t *length)</td></tr>
+<tr class="memdesc:gac43a3c0bf2561ceeb4bcc22d734b53b1"><td class="mdescLeft"> </td><td class="mdescRight">Get long array values from a key.  <a href="#gac43a3c0bf2561ceeb4bcc22d734b53b1">More...</a><br/></td></tr>
+<tr class="separator:gac43a3c0bf2561ceeb4bcc22d734b53b1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaecd9fa4b22117df7569320ddaa2431e1"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gaecd9fa4b22117df7569320ddaa2431e1">codes_copy_namespace</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *dest, const char *name, <a class="el" href="structcodes__handle.html">codes_handle</a> *src)</td></tr>
+<tr class="memdesc:gaecd9fa4b22117df7569320ddaa2431e1"><td class="mdescLeft"> </td><td class="mdescRight">Copy the keys belonging to a given namespace from a source handle to a destination handle.  <a href="#gaecd9fa4b22117df7569320ddaa2431e1">More...</a><br/></td></tr>
+<tr class="separator:gaecd9fa4b22117df7569320ddaa2431e1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga385881244ca6ef4be9ecee93025c862f"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga385881244ca6ef4be9ecee93025c862f">codes_set_long</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, long val)</td></tr>
+<tr class="memdesc:ga385881244ca6ef4be9ecee93025c862f"><td class="mdescLeft"> </td><td class="mdescRight">Set a long value from a key.  <a href="#ga385881244ca6ef4be9ecee93025c862f">More...</a><br/></td></tr>
+<tr class="separator:ga385881244ca6ef4be9ecee93025c862f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7d2d68482b903b40b91a0b334855db5f"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga7d2d68482b903b40b91a0b334855db5f">codes_set_double</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, double val)</td></tr>
+<tr class="memdesc:ga7d2d68482b903b40b91a0b334855db5f"><td class="mdescLeft"> </td><td class="mdescRight">Set a double value from a key.  <a href="#ga7d2d68482b903b40b91a0b334855db5f">More...</a><br/></td></tr>
+<tr class="separator:ga7d2d68482b903b40b91a0b334855db5f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6062cdd5950966bffa72e74708f85368"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga6062cdd5950966bffa72e74708f85368">codes_set_string</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, const char *mesg, size_t *length)</td></tr>
+<tr class="memdesc:ga6062cdd5950966bffa72e74708f85368"><td class="mdescLeft"> </td><td class="mdescRight">Set a string value from a key.  <a href="#ga6062cdd5950966bffa72e74708f85368">More...</a><br/></td></tr>
+<tr class="separator:ga6062cdd5950966bffa72e74708f85368"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7acb877bea87a39b3778c21dd8de46c2"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga7acb877bea87a39b3778c21dd8de46c2">codes_set_bytes</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, const unsigned char *bytes, size_t *length)</td></tr>
+<tr class="memdesc:ga7acb877bea87a39b3778c21dd8de46c2"><td class="mdescLeft"> </td><td class="mdescRight">Set a bytes array from a key.  <a href="#ga7acb877bea87a39b3778c21dd8de46c2">More...</a><br/></td></tr>
+<tr class="separator:ga7acb877bea87a39b3778c21dd8de46c2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaff9b5bde2baf126d93f43100e5c1d3f7"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gaff9b5bde2baf126d93f43100e5c1d3f7">codes_set_double_array</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, const double *vals, size_t length)</td></tr>
+<tr class="memdesc:gaff9b5bde2baf126d93f43100e5c1d3f7"><td class="mdescLeft"> </td><td class="mdescRight">Set a double array from a key.  <a href="#gaff9b5bde2baf126d93f43100e5c1d3f7">More...</a><br/></td></tr>
+<tr class="separator:gaff9b5bde2baf126d93f43100e5c1d3f7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5610a608f1e58996fa48c7ac8f3859a3"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga5610a608f1e58996fa48c7ac8f3859a3">codes_set_force_double_array</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, const double *vals, size_t length)</td></tr>
+<tr class="memdesc:ga5610a608f1e58996fa48c7ac8f3859a3"><td class="mdescLeft"> </td><td class="mdescRight">Same as codes_set_double_array but allows setting of READ-ONLY keys like codedValues.  <a href="#ga5610a608f1e58996fa48c7ac8f3859a3">More...</a><br/></td></tr>
+<tr class="separator:ga5610a608f1e58996fa48c7ac8f3859a3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gabb904f520644caa008034bd2be9349ec"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#gabb904f520644caa008034bd2be9349ec">codes_set_long_array</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, const long *vals, size_t length)</td></tr>
+<tr class="memdesc:gabb904f520644caa008034bd2be9349ec"><td class="mdescLeft"> </td><td class="mdescRight">Set a long array from a key.  <a href="#gabb904f520644caa008034bd2be9349ec">More...</a><br/></td></tr>
+<tr class="separator:gabb904f520644caa008034bd2be9349ec"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6840ee00df4366a431bedcef609f8ae5"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__get__set.html#ga6840ee00df4366a431bedcef609f8ae5">codes_set_string_array</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const char *key, const char **vals, size_t length)</td></tr>
+<tr class="memdesc:ga6840ee00df4366a431bedcef609f8ae5"><td class="mdescLeft"> </td><td class="mdescRight">Set a string array from a key.  <a href="#ga6840ee00df4366a431bedcef609f8ae5">More...</a><br/></td></tr>
+<tr class="separator:ga6840ee00df4366a431bedcef609f8ae5"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="g6315ad72aaaf7577bc7b9f546c506e74"></a><!-- doxytag: member="grib_api.h::grib_copy_namespace" ref="g6315ad72aaaf7577bc7b9f546c506e74" args="(grib_handle *dest, const char *name, grib_handle *src)" -->
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="gaecd9fa4b22117df7569320ddaa2431e1"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_copy_namespace           </td>
+          <td class="memname">int codes_copy_namespace </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>dest</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>dest</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>name</em>, </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>name</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>src</em></td><td> </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>src</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Copy the keys belonging to a given namespace from a source handle to a destination handle. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>: destination handle </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>: namespace </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>: source handle </td></tr>
+<p>Copy the keys belonging to a given namespace from a source handle to a destination handle. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">dest</td><td>: destination handle </td></tr>
+    <tr><td class="paramname">name</td><td>: namespace </td></tr>
+    <tr><td class="paramname">src</td><td>: source handle </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="g1b1ac2da661c638dad7d223419d541c6"></a><!-- doxytag: member="grib_api.h::grib_get_bytes" ref="g1b1ac2da661c638dad7d223419d541c6" args="(grib_handle *h, const char *key, unsigned char *bytes, size_t *length)" -->
+</div>
+<a class="anchor" id="ga252c3104621144fb370f302f3a3f6755"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_get_bytes           </td>
+          <td class="memname">int codes_get_bytes </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>key</em>, </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">unsigned char * </td>
-          <td class="paramname"> <em>bytes</em>, </td>
+          <td class="paramtype">unsigned char * </td>
+          <td class="paramname"><em>bytes</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">size_t * </td>
-          <td class="paramname"> <em>length</em></td><td> </td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"><em>length</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get raw bytes values from a key. 
-<p>
-If several keys of the same name are present, the last one is returned <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g4437bd0aa70cc2c2f942ace67023f4a1" title="Set a bytes array from a key.">grib_set_bytes</a></dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the data from </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>bytes</em> </td><td>: the address of a byte array where the data will be retreived </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: the address of a size_t that contains allocated length of the byte array on input, and that contains the actual length of the byte array on output </td></tr>
+</div><div class="memdoc">
+
+<p>Get raw bytes values from a key. </p>
+<p>If several keys of the same name are present, the last one is returned </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__get__set.html#ga7acb877bea87a39b3778c21dd8de46c2" title="Set a bytes array from a key. ">codes_set_bytes</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to get the data from </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">bytes</td><td>: the address of a byte array where the data will be retrieved </td></tr>
+    <tr><td class="paramname">length</td><td>: the address of a size_t that contains allocated length of the byte array on input, and that contains the actual length of the byte array on output </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="g5d9eeda38bf59ee3fa9ce3f92e65009e"></a><!-- doxytag: member="grib_api.h::grib_get_double" ref="g5d9eeda38bf59ee3fa9ce3f92e65009e" args="(grib_handle *h, const char *key, double *value)" -->
+</div>
+<a class="anchor" id="ga93c1b612b2b70bbbff335b7d227316fc"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_get_double           </td>
+          <td class="memname">int codes_get_double </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>key</em>, </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>value</em></td><td> </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>value</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get a double value from a key, if several keys of the same name are present, the last one is returned. 
-<p>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g3f8802a5d3f2e7557e35e6e83acfc9e9" title="Set a double value from a key.">grib_set_double</a></dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the data from </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>: the address of a double where the data will be retreived </td></tr>
+</div><div class="memdoc">
+
+<p>Get a double value from a key, if several keys of the same name are present, the last one is returned. </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__get__set.html#ga7d2d68482b903b40b91a0b334855db5f" title="Set a double value from a key. ">codes_set_double</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to get the data from </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">value</td><td>: the address of a double where the data will be retrieved </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="get_8c-example.html#a3">get.c</a>, <a class="el" href="iterator_8c-example.html#a4">iterator.c</a>, and <a class="el" href="print__data_8c-example.html#a4">print_data.c</a>.</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
 </div>
-</div><p>
-<a class="anchor" name="g61f1029d7f37d51f33835e218d58378a"></a><!-- doxytag: member="grib_api.h::grib_get_double_array" ref="g61f1029d7f37d51f33835e218d58378a" args="(grib_handle *h, const char *key, double *vals, size_t *length)" -->
+<a class="anchor" id="ga82b919c3196525ec2f21a8378d4cbbf4"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_get_double_array           </td>
+          <td class="memname">int codes_get_double_array </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>key</em>, </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>vals</em>, </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>vals</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">size_t * </td>
-          <td class="paramname"> <em>length</em></td><td> </td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"><em>length</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get double array values from a key. 
-<p>
-If several keys of the same name are present, the last one is returned <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#ga24d87e236a2469309d1176ee5925d77" title="Set a double array from a key.">grib_set_double_array</a></dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the data from </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vals</em> </td><td>: the address of a double array where the data will be retreived </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: the address of a size_t that contains allocated length of the double array on input, and that contains the actual length of the double array on output </td></tr>
+</div><div class="memdoc">
+
+<p>Get double array values from a key. </p>
+<p>If several keys of the same name are present, the last one is returned </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__get__set.html#gaff9b5bde2baf126d93f43100e5c1d3f7" title="Set a double array from a key. ">codes_set_double_array</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to get the data from </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">vals</td><td>: the address of a double array where the data will be retrieved </td></tr>
+    <tr><td class="paramname">length</td><td>: the address of a size_t that contains allocated length of the double array on input, and that contains the actual length of the double array on output </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="get_8c-example.html#a5">get.c</a>, <a class="el" href="precision_8c-example.html#a4">precision.c</a>, and <a class="el" href="print__data_8c-example.html#a3">print_data.c</a>.</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
 </div>
-</div><p>
-<a class="anchor" name="gec894541bbc8c4e9093803ce21146fa5"></a><!-- doxytag: member="grib_api.h::grib_get_double_element" ref="gec894541bbc8c4e9093803ce21146fa5" args="(grib_handle *h, const char *key, int i, double *value)" -->
+<a class="anchor" id="ga15b9a4d8dae3002f0b4f6ef4f1cfc197"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_get_double_element           </td>
+          <td class="memname">int codes_get_double_element </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>key</em>, </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">int </td>
-          <td class="paramname"> <em>i</em>, </td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>i</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>value</em></td><td> </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>value</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get as double the i-th element of the "key" array. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the data from </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>: zero based index </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>: the address of a double where the data will be retreived </td></tr>
+</div><div class="memdoc">
+
+<p>Get as double the i-th element of the "key" array. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to get the data from </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">i</td><td>: zero based index </td></tr>
+    <tr><td class="paramname">value</td><td>: the address of a double where the data will be retrieved </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="gdff349943fef1036fcd1dd7a69738a7a"></a><!-- doxytag: member="grib_api.h::grib_get_double_elements" ref="gdff349943fef1036fcd1dd7a69738a7a" args="(grib_handle *h, const char *key, int *i, long size, double *value)" -->
+</div>
+<a class="anchor" id="ga853aad2cd2bea6b71b8c61fed6adfe0b"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_get_double_elements           </td>
+          <td class="memname">int codes_get_double_elements </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>key</em>, </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">int * </td>
-          <td class="paramname"> <em>i</em>, </td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"><em>i</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>size</em>, </td>
+          <td class="paramtype">long </td>
+          <td class="paramname"><em>size</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>value</em></td><td> </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>value</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get as double array the elements of the "key" array whose indexes are listed in the input array i. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the data from </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>: zero based array of indexes </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>: size of the i and value arrays </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>: the address of a double where the data will be retreived </td></tr>
+</div><div class="memdoc">
+
+<p>Get as double array the elements of the "key" array whose indexes are listed in the input array i. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to get the data from </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">i</td><td>: zero based array of indexes </td></tr>
+    <tr><td class="paramname">size</td><td>: size of the i and value arrays </td></tr>
+    <tr><td class="paramname">value</td><td>: the address of a double where the data will be retrieved </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="g03cfa6762312face1a3cc3ef23e16526"></a><!-- doxytag: member="grib_api.h::grib_get_long" ref="g03cfa6762312face1a3cc3ef23e16526" args="(grib_handle *h, const char *key, long *value)" -->
+</div>
+<a class="anchor" id="ga98d694dc6caa24afdd393440c94c38f8"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_get_long           </td>
+          <td class="memname">int codes_get_length </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>key</em>, </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">long * </td>
-          <td class="paramname"> <em>value</em></td><td> </td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"><em>length</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
+</div><div class="memdoc">
+
+<p>Get the length of the string representation of the key, if several keys of the same name are present, the maximum length is returned. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to get the offset from </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">length</td><td>: the address of a size_t where the length will be set </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
 </div>
-<div class="memdoc">
-
-<p>
-Get a long value from a key, if several keys of the same name are present, the last one is returned. 
-<p>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a></dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the data from </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>: the address of a long where the data will be retreived </td></tr>
+</div>
+<a class="anchor" id="ga6ff44dddc3bec09f710b0aa8d0dbded7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_get_long </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long * </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get a long value from a key, if several keys of the same name are present, the last one is returned. </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__get__set.html#ga385881244ca6ef4be9ecee93025c862f" title="Set a long value from a key. ">codes_set_long</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to get the data from </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">value</td><td>: the address of a long where the data will be retrieved </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="get_8c-example.html#a2">get.c</a>, <a class="el" href="multi_8c-example.html#a3">multi.c</a>, <a class="el" href="nearest_8c-example.html#a2">nearest.c</a>, <a class="el" href="precision_8c-example.html#a2">precision.c</a>, and <a class="el" href="set_8c-example.html#a3">set.c</a>.</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
 </div>
-</div><p>
-<a class="anchor" name="ga05493cedfee55f0b83d27e356123223"></a><!-- doxytag: member="grib_api.h::grib_get_long_array" ref="ga05493cedfee55f0b83d27e356123223" args="(grib_handle *h, const char *key, long *vals, size_t *length)" -->
+</div>
+<a class="anchor" id="gac43a3c0bf2561ceeb4bcc22d734b53b1"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_get_long_array           </td>
+          <td class="memname">int codes_get_long_array </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>key</em>, </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">long * </td>
-          <td class="paramname"> <em>vals</em>, </td>
+          <td class="paramtype">long * </td>
+          <td class="paramname"><em>vals</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">size_t * </td>
-          <td class="paramname"> <em>length</em></td><td> </td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"><em>length</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get long array values from a key. 
-<p>
-If several keys of the same name are present, the last one is returned <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g6c4697dc7c6f450ad30d0a24a3f87016" title="Set a long array from a key.">grib_set_long_array</a></dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the data from </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vals</em> </td><td>: the address of a long array where the data will be retreived </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: the address of a size_t that contains allocated length of the long array on input, and that contains the actual length of the long array on output </td></tr>
+</div><div class="memdoc">
+
+<p>Get long array values from a key. </p>
+<p>If several keys of the same name are present, the last one is returned </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__get__set.html#gabb904f520644caa008034bd2be9349ec" title="Set a long array from a key. ">codes_set_long_array</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to get the data from </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">vals</td><td>: the address of a long array where the data will be retrieved </td></tr>
+    <tr><td class="paramname">length</td><td>: the address of a size_t that contains allocated length of the long array on input, and that contains the actual length of the long array on output </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="g3b40c8174568a6e2b7563a0e89d20ddf"></a><!-- doxytag: member="grib_api.h::grib_get_offset" ref="g3b40c8174568a6e2b7563a0e89d20ddf" args="(grib_handle *h, const char *key, size_t *offset)" -->
+</div>
+<a class="anchor" id="gaefda2b7765e1b737bcd05a825d231a1d"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_get_offset           </td>
+          <td class="memname">int codes_get_offset </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>key</em>, </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">size_t * </td>
-          <td class="paramname"> <em>offset</em></td><td> </td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"><em>offset</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-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. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the offset from </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>offset</em> </td><td>: the address of a size_t where the offset will be set </td></tr>
+<p>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. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to get the offset from </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">offset</td><td>: the address of a size_t where the offset will be set </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="g18b622ed86b24d5e5fcab70c309fc245"></a><!-- doxytag: member="grib_api.h::grib_get_size" ref="g18b622ed86b24d5e5fcab70c309fc245" args="(grib_handle *h, const char *key, size_t *size)" -->
+</div>
+<a class="anchor" id="ga614d4f7a6c789a4fe60ea976b6644343"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_get_size           </td>
+          <td class="memname">int codes_get_size </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>key</em>, </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">size_t * </td>
-          <td class="paramname"> <em>size</em></td><td> </td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"><em>size</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Get the number of coded value from a key, if several keys of the same name are present, the total sum is returned. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the offset from </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>: the address of a size_t where the size will be set </td></tr>
+<p>Get the number of coded value from a key, if several keys of the same name are present, the total sum is returned. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to get the offset from </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">size</td><td>: the address of a size_t where the size will be set </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="count__messages_8f90-example.html#a1">count_messages.f90</a>, <a class="el" href="get_8c-example.html#a4">get.c</a>, <a class="el" href="get_8f90-example.html#a1">get.f90</a>, <a class="el" href="get__fortran_8_f-example.html#a0">get_fortran.F</a>, <a class="el" href="get__pl_8f90-example.html#a0">get_pl.f90</a>, <a class="el" href="get__pv_8f90-example.html#a0">get_pv.f90</a>, <a class="el" href="precision_8c-example.html#a3">precision.c</a>, <a class="el" href="prec [...]
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
 </div>
-</div><p>
-<a class="anchor" name="g8aeaf9f930eea1cc0f15e92f18a25053"></a><!-- doxytag: member="grib_api.h::grib_get_string" ref="g8aeaf9f930eea1cc0f15e92f18a25053" args="(grib_handle *h, const char *key, char *mesg, size_t *length)" -->
+<a class="anchor" id="ga638d7bbe8dafd11847222a99b259f408"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_get_string           </td>
+          <td class="memname">int codes_get_string </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>key</em>, </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">char * </td>
-          <td class="paramname"> <em>mesg</em>, </td>
+          <td class="paramtype">char * </td>
+          <td class="paramname"><em>mesg</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">size_t * </td>
-          <td class="paramname"> <em>length</em></td><td> </td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"><em>length</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-Get a string value from a key, if several keys of the same name are present, the last one is returned. 
-<p>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g78143cc64571b454b0aba14246e9a53a" title="Set a string value from a key.">grib_set_string</a></dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to get the data from </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mesg</em> </td><td>: the address of a string where the data will be retreived </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: the address of a size_t that contains allocated length of the string on input, and that contains the actual length of the string on output </td></tr>
+</div><div class="memdoc">
+
+<p>Get a string value from a key, if several keys of the same name are present, the last one is returned. </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__get__set.html#ga6062cdd5950966bffa72e74708f85368" title="Set a string value from a key. ">codes_set_string</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to get the data from </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">mesg</td><td>: the address of a string where the data will be retrieved </td></tr>
+    <tr><td class="paramname">length</td><td>: the address of a size_t that contains allocated length of the string on input, and that contains the actual length of the string on output </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="keys__iterator_8c-example.html#a7">keys_iterator.c</a>, <a class="el" href="keys__iterator__fortran_8_f-example.html#a3">keys_iterator_fortran.F</a>, <a class="el" href="nearest_8c-example.html#a3">nearest.c</a>, <a class="el" href="set_8c-example.html#a4">set.c</a>, and <a class="el" href="set__fortran_8_f-example.html#a0">set_fortran.F</a>.</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
 </div>
-</div><p>
-<a class="anchor" name="g4437bd0aa70cc2c2f942ace67023f4a1"></a><!-- doxytag: member="grib_api.h::grib_set_bytes" ref="g4437bd0aa70cc2c2f942ace67023f4a1" args="(grib_handle *h, const char *key, const unsigned char *bytes, size_t *length)" -->
+<a class="anchor" id="ga7acb877bea87a39b3778c21dd8de46c2"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_set_bytes           </td>
+          <td class="memname">int codes_set_bytes </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>key</em>, </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const unsigned char * </td>
-          <td class="paramname"> <em>bytes</em>, </td>
+          <td class="paramtype">const unsigned char * </td>
+          <td class="paramname"><em>bytes</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">size_t * </td>
-          <td class="paramname"> <em>length</em></td><td> </td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"><em>length</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set a bytes array from a key. 
-<p>
-If several keys of the same name are present, the last one is set <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g1b1ac2da661c638dad7d223419d541c6" title="Get raw bytes values from a key.">grib_get_bytes</a></dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to set the data to </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>bytes</em> </td><td>: the address of a byte array where the data will be read </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: the address of a size_t that contains the length of the byte array on input, and that contains the actual packed length of the byte array on output </td></tr>
+</div><div class="memdoc">
+
+<p>Set a bytes array from a key. </p>
+<p>If several keys of the same name are present, the last one is set </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__get__set.html#ga252c3104621144fb370f302f3a3f6755" title="Get raw bytes values from a key. ">codes_get_bytes</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to set the data to </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">bytes</td><td>: the address of a byte array where the data will be read </td></tr>
+    <tr><td class="paramname">length</td><td>: the address of a size_t that contains the length of the byte array on input, and that contains the actual packed length of the byte array on output </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="g3f8802a5d3f2e7557e35e6e83acfc9e9"></a><!-- doxytag: member="grib_api.h::grib_set_double" ref="g3f8802a5d3f2e7557e35e6e83acfc9e9" args="(grib_handle *h, const char *key, double val)" -->
+</div>
+<a class="anchor" id="ga7d2d68482b903b40b91a0b334855db5f"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_set_double           </td>
+          <td class="memname">int codes_set_double </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>key</em>, </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double </td>
-          <td class="paramname"> <em>val</em></td><td> </td>
+          <td class="paramtype">double </td>
+          <td class="paramname"><em>val</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set a double value from a key. 
-<p>
-If several keys of the same name are present, the last one is set <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a></dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to set the data to </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>: a double where the data will be read </td></tr>
+</div><div class="memdoc">
+
+<p>Set a double value from a key. </p>
+<p>If several keys of the same name are present, the last one is set </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__get__set.html#ga93c1b612b2b70bbbff335b7d227316fc" title="Get a double value from a key, if several keys of the same name are present, the last one is returned...">codes_get_double</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to set the data to </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">val</td><td>: a double where the data will be read </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="ga24d87e236a2469309d1176ee5925d77"></a><!-- doxytag: member="grib_api.h::grib_set_double_array" ref="ga24d87e236a2469309d1176ee5925d77" args="(grib_handle *h, const char *key, const double *vals, size_t length)" -->
+</div>
+<a class="anchor" id="gaff9b5bde2baf126d93f43100e5c1d3f7"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_set_double_array           </td>
+          <td class="memname">int codes_set_double_array </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>key</em>, </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const double * </td>
-          <td class="paramname"> <em>vals</em>, </td>
+          <td class="paramtype">const double * </td>
+          <td class="paramname"><em>vals</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"> <em>length</em></td><td> </td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"><em>length</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set a double array from a key. 
-<p>
-If several keys of the same name are present, the last one is set <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a" title="Get double array values from a key.">grib_get_double_array</a></dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to set the data to </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vals</em> </td><td>: the address of a double array where the data will be read </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: a size_t that contains the length of the byte array on input </td></tr>
+</div><div class="memdoc">
+
+<p>Set a double array from a key. </p>
+<p>If several keys of the same name are present, the last one is set </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__get__set.html#ga82b919c3196525ec2f21a8378d4cbbf4" title="Get double array values from a key. ">codes_get_double_array</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to set the data to </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">vals</td><td>: the address of a double array where the data will be read </td></tr>
+    <tr><td class="paramname">length</td><td>: a size_t that contains the length of the byte array on input </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="g94c33cfe90c3aa887fb8e14f0bd87fe2"></a><!-- doxytag: member="grib_api.h::grib_set_long" ref="g94c33cfe90c3aa887fb8e14f0bd87fe2" args="(grib_handle *h, const char *key, long val)" -->
+</div>
+<a class="anchor" id="ga5610a608f1e58996fa48c7ac8f3859a3"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_set_long           </td>
+          <td class="memname">int codes_set_force_double_array </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>key</em>, </td>
+          <td class="paramtype">const double * </td>
+          <td class="paramname"><em>vals</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>val</em></td><td> </td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"><em>length</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
+</div><div class="memdoc">
+
+<p>Same as codes_set_double_array but allows setting of READ-ONLY keys like codedValues. </p>
+<p>Use with great caution!! </p>
+
 </div>
-<div class="memdoc">
-
-<p>
-Set a long value from a key. 
-<p>
-If several keys of the same name are present, the last one is set <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a></dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to set the data to </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>: a long where the data will be read </td></tr>
+</div>
+<a class="anchor" id="ga385881244ca6ef4be9ecee93025c862f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_set_long </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">long </td>
+          <td class="paramname"><em>val</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set a long value from a key. </p>
+<p>If several keys of the same name are present, the last one is set </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__get__set.html#ga6ff44dddc3bec09f710b0aa8d0dbded7" title="Get a long value from a key, if several keys of the same name are present, the last one is returned...">codes_get_long</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to set the data to </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">val</td><td>: a long where the data will be read </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="multi__write_8c-example.html#a4">multi_write.c</a>, <a class="el" href="precision_8c-example.html#a5">precision.c</a>, and <a class="el" href="set_8c-example.html#a2">set.c</a>.</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
 </div>
-</div><p>
-<a class="anchor" name="g6c4697dc7c6f450ad30d0a24a3f87016"></a><!-- doxytag: member="grib_api.h::grib_set_long_array" ref="g6c4697dc7c6f450ad30d0a24a3f87016" args="(grib_handle *h, const char *key, const long *vals, size_t length)" -->
+<a class="anchor" id="gabb904f520644caa008034bd2be9349ec"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_set_long_array           </td>
+          <td class="memname">int codes_set_long_array </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>key</em>, </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const long * </td>
-          <td class="paramname"> <em>vals</em>, </td>
+          <td class="paramtype">const long * </td>
+          <td class="paramname"><em>vals</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"> <em>length</em></td><td> </td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"><em>length</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-Set a long array from a key. 
-<p>
-If several keys of the same name are present, the last one is set <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#ga05493cedfee55f0b83d27e356123223" title="Get long array values from a key.">grib_get_long_array</a></dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to set the data to </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>vals</em> </td><td>: the address of a long array where the data will be read </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: a size_t that contains the length of the long array on input </td></tr>
+</div><div class="memdoc">
+
+<p>Set a long array from a key. </p>
+<p>If several keys of the same name are present, the last one is set </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__get__set.html#gac43a3c0bf2561ceeb4bcc22d734b53b1" title="Get long array values from a key. ">codes_get_long_array</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to set the data to </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">vals</td><td>: the address of a long array where the data will be read </td></tr>
+    <tr><td class="paramname">length</td><td>: a size_t that contains the length of the long array on input </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="g78143cc64571b454b0aba14246e9a53a"></a><!-- doxytag: member="grib_api.h::grib_set_string" ref="g78143cc64571b454b0aba14246e9a53a" args="(grib_handle *h, const char *key, const char *mesg, size_t *length)" -->
+</div>
+<a class="anchor" id="ga6062cdd5950966bffa72e74708f85368"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_set_string           </td>
+          <td class="memname">int codes_set_string </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>key</em>, </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>mesg</em>, </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>mesg</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">size_t * </td>
-          <td class="paramname"> <em>length</em></td><td> </td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"><em>length</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
+</div><div class="memdoc">
+
+<p>Set a string value from a key. </p>
+<p>If several keys of the same name are present, the last one is set </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__get__set.html#ga638d7bbe8dafd11847222a99b259f408" title="Get a string value from a key, if several keys of the same name are present, the last one is returned...">codes_get_string</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to set the data to </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">mesg</td><td>: the address of a string where the data will be read </td></tr>
+    <tr><td class="paramname">length</td><td>: the address of a size_t that contains the length of the string on input, and that contains the actual packed length of the string on output </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
 </div>
-<div class="memdoc">
-
-<p>
-Set a string value from a key. 
-<p>
-If several keys of the same name are present, the last one is set <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053" title="Get a string value from a key, if several keys of the same name are present, the...">grib_get_string</a></dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle to set the data to </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key to be searched </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mesg</em> </td><td>: the address of a string where the data will be read </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>: the address of a size_t that contains the length of the string on input, and that contains the actual packed length of the string on output </td></tr>
+<a class="anchor" id="ga6840ee00df4366a431bedcef609f8ae5"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_set_string_array </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char ** </td>
+          <td class="paramname"><em>vals</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"><em>length</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set a string array from a key. </p>
+<p>If several keys of the same name are present, the last one is set </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__get__set.html#gac43a3c0bf2561ceeb4bcc22d734b53b1" title="Get long array values from a key. ">codes_get_long_array</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to set the data to </td></tr>
+    <tr><td class="paramname">key</td><td>: the key to be searched </td></tr>
+    <tr><td class="paramname">vals</td><td>: the address of a string array where the data will be read </td></tr>
+    <tr><td class="paramname">length</td><td>: a size_t that contains the length of the array on input </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
 
 </div>
-</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
 </body>
 </html>
diff --git a/html/group__grib__handle.html b/html/group__grib__handle.html
deleted file mode 100644
index 7f435cb..0000000
--- a/html/group__grib__handle.html
+++ /dev/null
@@ -1,625 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: The grib_handle</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>The grib_handle</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
-<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a></td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
-<a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gc7f5cb6af67fd0a42bec5376d5b54682">grib_count_in_file</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, FILE *f, int *n)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Counts the messages contained in a file resource.  <a href="#gc7f5cb6af67fd0a42bec5376d5b54682"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5">grib_handle_new_from_file</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, FILE *f, int *error)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a file resource.  <a href="#g5e24f8499aa7e4178ccc25a5de3145c5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gcf9ab4896fac2fbbe30a33b4d6028a01">grib_handle_new_from_message</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void *data, size_t data_len)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message in memory.  <a href="#gcf9ab4896fac2fbbe30a33b4d6028a01"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g5990754a829e1d7a7ae4c5a1a8296bf2">grib_handle_new_from_multi_message</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, void **data, size_t *data_len, int *error)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message in memory.  <a href="#g5990754a829e1d7a7ae4c5a1a8296bf2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gba8b4cc36b1a882c8a12716ef011d6be">grib_handle_new_from_message_copy</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const void *data, size_t data_len)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a user message.  <a href="#gba8b4cc36b1a882c8a12716ef011d6be"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g11d247e5afa10bd52fb895dc4296143f">grib_handle_new_from_template</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const char *res_name)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a read_only template resource.  <a href="#g11d247e5afa10bd52fb895dc4296143f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gadefac64c19fb5ff06cf805ad4af06ff">grib_handle_new_from_samples</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c, const char *res_name)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a handle from a message contained in a samples directory.  <a href="#gadefac64c19fb5ff06cf805ad4af06ff"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#ga63c93533fbbe2c8df482e19ca97c651">grib_handle_clone</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Clone an existing handle using the context of the original handle, The message is copied and reparsed.  <a href="#ga63c93533fbbe2c8df482e19ca97c651"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677">grib_handle_delete</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees a handle, also frees the message if it is not a user message.  <a href="#g0e4b2585f22247c49b930c1579257677"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g9e1911fcd2b32380937e2d60469d2d22">grib_multi_handle_new</a> (<a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> *c)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create an empty multi field handle.  <a href="#g9e1911fcd2b32380937e2d60469d2d22"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#gb723d513ef118d0f2d8c440e15387337">grib_multi_handle_append</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, int start_section, <a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> *mh)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Append the sections starting with start_section of the message pointed by h at the end of the multi field handle mh.  <a href="#gb723d513ef118d0f2d8c440e15387337"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g706fb50a5a16b6932adb05d27a8ac626">grib_multi_handle_delete</a> (<a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> *mh)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Delete multi field handle.  <a href="#g706fb50a5a16b6932adb05d27a8ac626"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__grib__handle.html#g48fc85388ca1ee23f6afa12bb0c125ed">grib_multi_handle_write</a> (<a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> *mh, FILE *f)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Write a multi field handle in a file.  <a href="#g48fc85388ca1ee23f6afa12bb0c125ed"></a><br></td></tr>
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The grib_handle is the structure giving access to parsed grib values by keys. <hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="g309a5ee24f4c730646d3f80ad0ef5f1b"></a><!-- doxytag: member="grib_api.h::grib_handle" ref="g309a5ee24f4c730646d3f80ad0ef5f1b" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef struct <a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> <a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Grib handle, structure giving access to parsed grib values by keys <dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="get_8c-example.html#a0">get.c</a>, <a class="el" href="iterator_8c-example.html#a0">iterator.c</a>, <a class="el" href="keys__iterator_8c-example.html#a1">keys_iterator.c</a>, <a class="el" href="multi_8c-example.html#a0">multi.c</a>, <a class="el" href="multi__write_8c-example.html#a0">multi_write.c</a>, <a class="el" href="nearest_8c-example.html#a0">nearest.c</a>, <a class="el" href="precision_8c-example.html#a0">precision.c</a>, <a class="el" href="print__data_8c- [...]
-</div>
-</div><p>
-<a class="anchor" name="g569cc40caa2fa0c4e0e22f9a0ecf25f7"></a><!-- doxytag: member="grib_api.h::grib_multi_handle" ref="g569cc40caa2fa0c4e0e22f9a0ecf25f7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef struct <a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> <a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a>          </td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Grib multi field handle, structure used to build multi fields messages. <dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="multi__write_8c-example.html#a1">multi_write.c</a>.</dl>
-</div>
-</div><p>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="gc7f5cb6af67fd0a42bec5376d5b54682"></a><!-- doxytag: member="grib_api.h::grib_count_in_file" ref="gc7f5cb6af67fd0a42bec5376d5b54682" args="(grib_context *c, FILE *f, int *n)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int grib_count_in_file           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">FILE * </td>
-          <td class="paramname"> <em>f</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int * </td>
-          <td class="paramname"> <em>n</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Counts the messages contained in a file resource. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from wich the handle will be created (NULL for default context) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>: the file resource </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>: the number of messages in the file </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="count__messages_8f90-example.html#a0">count_messages.f90</a>.</dl>
-</div>
-</div><p>
-<a class="anchor" name="ga63c93533fbbe2c8df482e19ca97c651"></a><!-- doxytag: member="grib_api.h::grib_handle_clone" ref="ga63c93533fbbe2c8df482e19ca97c651" args="(grib_handle *h)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* grib_handle_clone           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Clone an existing handle using the context of the original handle, The message is copied and reparsed. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: The handle to be cloned </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new handle, NULL if the message is invalid or a problem is encountered </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g0e4b2585f22247c49b930c1579257677"></a><!-- doxytag: member="grib_api.h::grib_handle_delete" ref="g0e4b2585f22247c49b930c1579257677" args="(grib_handle *h)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int grib_handle_delete           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Frees a handle, also frees the message if it is not a user message. 
-<p>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__grib__handle.html#gcf9ab4896fac2fbbe30a33b4d6028a01" title="Create a handle from a user message in memory.">grib_handle_new_from_message</a> </dd></dl>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: The handle to be deleted </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="get_8c-example.html#a6">get.c</a>, <a class="el" href="iterator_8c-example.html#a8">iterator.c</a>, <a class="el" href="multi_8c-example.html#a4">multi.c</a>, <a class="el" href="multi__write_8c-example.html#a7">multi_write.c</a>, <a class="el" href="nearest_8c-example.html#a6">nearest.c</a>, <a class="el" href="precision_8c-example.html#a7">precision.c</a>, <a class="el" href="print__data_8c-example.html#a5">print_data.c</a>, and <a class="el" href="set_8c-example.ht [...]
-</div>
-</div><p>
-<a class="anchor" name="g5e24f8499aa7e4178ccc25a5de3145c5"></a><!-- doxytag: member="grib_api.h::grib_handle_new_from_file" ref="g5e24f8499aa7e4178ccc25a5de3145c5" args="(grib_context *c, FILE *f, int *error)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* grib_handle_new_from_file           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">FILE * </td>
-          <td class="paramname"> <em>f</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int * </td>
-          <td class="paramname"> <em>error</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a handle from a file resource. 
-<p>
-The file is read until a message is found. The message is then copied. Remember always to delete the handle when it is not needed any more to avoid memory leaks.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from wich the handle will be created (NULL for default context) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>: the file resource </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>error</em> </td><td>: error code set if the returned handle is NULL and the end of file is not reached </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new handle, NULL if the resource is invalid or a problem is encountered </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="get_8c-example.html#a1">get.c</a>, <a class="el" href="iterator_8c-example.html#a2">iterator.c</a>, <a class="el" href="keys__iterator_8c-example.html#a3">keys_iterator.c</a>, <a class="el" href="multi_8c-example.html#a2">multi.c</a>, <a class="el" href="multi__write_8c-example.html#a2">multi_write.c</a>, <a class="el" href="precision_8c-example.html#a1">precision.c</a>, <a class="el" href="print__data_8c-example.html#a1">print_data.c</a>, and <a class="el" href="set_ [...]
-</div>
-</div><p>
-<a class="anchor" name="gcf9ab4896fac2fbbe30a33b4d6028a01"></a><!-- doxytag: member="grib_api.h::grib_handle_new_from_message" ref="gcf9ab4896fac2fbbe30a33b4d6028a01" args="(grib_context *c, void *data, size_t data_len)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* grib_handle_new_from_message           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">void * </td>
-          <td class="paramname"> <em>data</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"> <em>data_len</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a handle from a user message in memory. 
-<p>
-The message will not be freed at the end. The message will be copied as soon as a modification is needed.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from which the handle will be created (NULL for default context) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>: the actual message </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>data_len</em> </td><td>: the length of the message in number of bytes </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new handle, NULL if the message is invalid or a problem is encountered </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gba8b4cc36b1a882c8a12716ef011d6be"></a><!-- doxytag: member="grib_api.h::grib_handle_new_from_message_copy" ref="gba8b4cc36b1a882c8a12716ef011d6be" args="(grib_context *c, const void *data, size_t data_len)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* grib_handle_new_from_message_copy           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const void * </td>
-          <td class="paramname"> <em>data</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"> <em>data_len</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a handle from a user message. 
-<p>
-The message is copied and will be freed with the handle<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from wich the handle will be created (NULL for default context) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>: the actual message </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>data_len</em> </td><td>: the length of the message in number of bytes </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new handle, NULL if the message is invalid or a problem is encountered </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g5990754a829e1d7a7ae4c5a1a8296bf2"></a><!-- doxytag: member="grib_api.h::grib_handle_new_from_multi_message" ref="g5990754a829e1d7a7ae4c5a1a8296bf2" args="(grib_context *c, void **data, size_t *data_len, int *error)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* grib_handle_new_from_multi_message           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">void ** </td>
-          <td class="paramname"> <em>data</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t * </td>
-          <td class="paramname"> <em>data_len</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int * </td>
-          <td class="paramname"> <em>error</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a handle from a user message in memory. 
-<p>
-The message will not be freed at the end. The message will be copied as soon as a modification is needed. This function works also with multi field messages.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from which the handle will be created (NULL for default context) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>: the actual message </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>data_len</em> </td><td>: the length of the message in number of bytes </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>error</em> </td><td>: error code </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new handle, NULL if the message is invalid or a problem is encountered </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gadefac64c19fb5ff06cf805ad4af06ff"></a><!-- doxytag: member="grib_api.h::grib_handle_new_from_samples" ref="gadefac64c19fb5ff06cf805ad4af06ff" args="(grib_context *c, const char *res_name)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* grib_handle_new_from_samples           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>res_name</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a handle from a message contained in a samples directory. 
-<p>
-The message is copied at the creation of the handle<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from wich the handle will be created (NULL for default context) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>res_name</em> </td><td>: the resource name </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new handle, NULL if the resource is invalid or a problem is encountered </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="g11d247e5afa10bd52fb895dc4296143f"></a><!-- doxytag: member="grib_api.h::grib_handle_new_from_template" ref="g11d247e5afa10bd52fb895dc4296143f" args="(grib_context *c, const char *res_name)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* grib_handle_new_from_template           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const char * </td>
-          <td class="paramname"> <em>res_name</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a handle from a read_only template resource. 
-<p>
-The message is copied at the creation of the handle<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from wich the handle will be created (NULL for default context) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>res_name</em> </td><td>: the resource name </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new handle, NULL if the resource is invalid or a problem is encountered </dd></dl>
-
-</div>
-</div><p>
-<a class="anchor" name="gb723d513ef118d0f2d8c440e15387337"></a><!-- doxytag: member="grib_api.h::grib_multi_handle_append" ref="gb723d513ef118d0f2d8c440e15387337" args="(grib_handle *h, int start_section, grib_multi_handle *mh)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int grib_multi_handle_append           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int </td>
-          <td class="paramname"> <em>start_section</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> * </td>
-          <td class="paramname"> <em>mh</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Append the sections starting with start_section of the message pointed by h at the end of the multi field handle mh. 
-<p>
-Remember always to delete the multi handle when it is not needed any more to avoid memory leaks.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: The handle from which the sections are copied. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>start_section</em> </td><td>: section number. Starting from this section all the sections to then end of the message will be copied. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mh</em> </td><td>: The multi field handle on which the sections are appended. </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="multi__write_8c-example.html#a5">multi_write.c</a>.</dl>
-</div>
-</div><p>
-<a class="anchor" name="g706fb50a5a16b6932adb05d27a8ac626"></a><!-- doxytag: member="grib_api.h::grib_multi_handle_delete" ref="g706fb50a5a16b6932adb05d27a8ac626" args="(grib_multi_handle *mh)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int grib_multi_handle_delete           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> * </td>
-          <td class="paramname"> <em>mh</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Delete multi field handle. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mh</em> </td><td>: The multi field handle to be deleted. </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="multi__write_8c-example.html#a8">multi_write.c</a>.</dl>
-</div>
-</div><p>
-<a class="anchor" name="g9e1911fcd2b32380937e2d60469d2d22"></a><!-- doxytag: member="grib_api.h::grib_multi_handle_new" ref="g9e1911fcd2b32380937e2d60469d2d22" args="(grib_context *c)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a>* grib_multi_handle_new           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8e7f259b6dec023add23b2a5ddd93bad">grib_context</a> * </td>
-          <td class="paramname"> <em>c</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create an empty multi field handle. 
-<p>
-Remember always to delete the multi handle when it is not needed any more to avoid memory leaks.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the context from wich the handle will be created (NULL for default context) </td></tr>
-  </table>
-</dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="multi__write_8c-example.html#a3">multi_write.c</a>.</dl>
-</div>
-</div><p>
-<a class="anchor" name="g48fc85388ca1ee23f6afa12bb0c125ed"></a><!-- doxytag: member="grib_api.h::grib_multi_handle_write" ref="g48fc85388ca1ee23f6afa12bb0c125ed" args="(grib_multi_handle *mh, FILE *f)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int grib_multi_handle_write           </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g569cc40caa2fa0c4e0e22f9a0ecf25f7">grib_multi_handle</a> * </td>
-          <td class="paramname"> <em>mh</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">FILE * </td>
-          <td class="paramname"> <em>f</em></td><td> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td><td width="100%"></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>
-Write a multi field handle in a file. 
-<p>
-Remember always to delete the multi handle when it is not needed any more to avoid memory leaks.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>mh</em> </td><td>: The multi field handle to be written. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>: File on which the file handle is written. </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="multi__write_8c-example.html#a6">multi_write.c</a>.</dl>
-</div>
-</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/group__handling__coded__messages.html b/html/group__handling__coded__messages.html
index fb96071..a93b114 100644
--- a/html/group__handling__coded__messages.html
+++ b/html/group__handling__coded__messages.html
@@ -1,124 +1,189 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: Handling coded messages</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: Handling coded messages</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
-<h1>Handling coded messages</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185">grib_get_message</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, const void **message, size_t *message_length)</td></tr>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
 
-<tr><td class="mdescLeft"> </td><td class="mdescRight">getting the message attached to a handle  <a href="#g9d654bd4fc5f422c161edd0a140ea185"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__handling__coded__messages.html#g9248c021d985da70cfeb075e469db874">grib_get_message_copy</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, void *message, size_t *message_length)</td></tr>
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
 
-<tr><td class="mdescLeft"> </td><td class="mdescRight">getting a copy of the message attached to a handle  <a href="#g9248c021d985da70cfeb075e469db874"></a><br></td></tr>
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Handling coded messages</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga3d6f22a666e8e8dd7b33c98f2a7f3f62"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__handling__coded__messages.html#ga3d6f22a666e8e8dd7b33c98f2a7f3f62">codes_get_message</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, const void **message, size_t *message_length)</td></tr>
+<tr class="memdesc:ga3d6f22a666e8e8dd7b33c98f2a7f3f62"><td class="mdescLeft"> </td><td class="mdescRight">getting the message attached to a handle  <a href="#ga3d6f22a666e8e8dd7b33c98f2a7f3f62">More...</a><br/></td></tr>
+<tr class="separator:ga3d6f22a666e8e8dd7b33c98f2a7f3f62"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8b2cb8c072b886de83a8e089c004a630"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__handling__coded__messages.html#ga8b2cb8c072b886de83a8e089c004a630">codes_get_message_copy</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, void *message, size_t *message_length)</td></tr>
+<tr class="memdesc:ga8b2cb8c072b886de83a8e089c004a630"><td class="mdescLeft"> </td><td class="mdescRight">getting a copy of the message attached to a handle  <a href="#ga8b2cb8c072b886de83a8e089c004a630">More...</a><br/></td></tr>
+<tr class="separator:ga8b2cb8c072b886de83a8e089c004a630"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="g9d654bd4fc5f422c161edd0a140ea185"></a><!-- doxytag: member="grib_api.h::grib_get_message" ref="g9d654bd4fc5f422c161edd0a140ea185" args="(grib_handle *h, const void **message, size_t *message_length)" -->
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ga3d6f22a666e8e8dd7b33c98f2a7f3f62"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_get_message           </td>
+          <td class="memname">int codes_get_message </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const void ** </td>
-          <td class="paramname"> <em>message</em>, </td>
+          <td class="paramtype">const void ** </td>
+          <td class="paramname"><em>message</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">size_t * </td>
-          <td class="paramname"> <em>message_length</em></td><td> </td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"><em>message_length</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-getting the message attached to a handle 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the grib handle to wich the buffer should be gathered </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>message</em> </td><td>: the pointer to be set to the handle's data </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>message_length</em> </td><td>: at exist, the message size in number of bytes </td></tr>
+<p>getting the message attached to a handle </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to which the buffer should be gathered </td></tr>
+    <tr><td class="paramname">message</td><td>: the pointer to be set to the handle's data </td></tr>
+    <tr><td class="paramname">message_length</td><td>: On exit, the message size in number of bytes </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="precision_8c-example.html#a6">precision.c</a>, and <a class="el" href="set_8c-example.html#a5">set.c</a>.</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
 </div>
-</div><p>
-<a class="anchor" name="g9248c021d985da70cfeb075e469db874"></a><!-- doxytag: member="grib_api.h::grib_get_message_copy" ref="g9248c021d985da70cfeb075e469db874" args="(grib_handle *h, void *message, size_t *message_length)" -->
+</div>
+<a class="anchor" id="ga8b2cb8c072b886de83a8e089c004a630"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_get_message_copy           </td>
+          <td class="memname">int codes_get_message_copy </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">void * </td>
-          <td class="paramname"> <em>message</em>, </td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"><em>message</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">size_t * </td>
-          <td class="paramname"> <em>message_length</em></td><td> </td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"><em>message_length</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-getting a copy of the message attached to a handle 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the grib handle to wich the buffer should be returned </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>message</em> </td><td>: the pointer to the data buffer to be filled </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>message_length</em> </td><td>: at entry, the size in number of bytes of the allocated empty message. At exist, the actual message length in number of bytes </td></tr>
+<p>getting a copy of the message attached to a handle </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle to which the buffer should be returned </td></tr>
+    <tr><td class="paramname">message</td><td>: the pointer to the data buffer to be filled </td></tr>
+    <tr><td class="paramname">message_length</td><td>: On entry, the size in number of bytes of the allocated empty message. On exit, the actual message length in number of bytes </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
 
 </div>
-</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
 </body>
 </html>
diff --git a/html/group__iterators.html b/html/group__iterators.html
index aaf0863..03d1169 100644
--- a/html/group__iterators.html
+++ b/html/group__iterators.html
@@ -1,559 +1,661 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: Iterating on latitude/longitude/values</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: Iterating on latitude/longitude/values</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
-<h1>Iterating on latitude/longitude/values</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#gefb1f87110bdce732edc9154cf0e7d58">grib_iterator_new</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, unsigned long flags, int *error)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new iterator from a handle, using current geometry and values.  <a href="#gefb1f87110bdce732edc9154cf0e7d58"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g4f73056dbfdda3de0060559b9b39ea34">grib_iterator_next</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i, double *lat, double *lon, double *value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the next value from an iterator.  <a href="#g4f73056dbfdda3de0060559b9b39ea34"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ge33e4a6d3a2222f78ffc43eb7239ce3f">grib_iterator_previous</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i, double *lat, double *lon, double *value)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the previous value from an iterator.  <a href="#ge33e4a6d3a2222f78ffc43eb7239ce3f"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g7beddf03a8335d5058a0760929af9b65">grib_iterator_has_next</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Test procedure for values in an iterator.  <a href="#g7beddf03a8335d5058a0760929af9b65"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#gb8f3830e919c3c11f11530c08e9956c8">grib_iterator_reset</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Test procedure for values in an iterator.  <a href="#gb8f3830e919c3c11f11530c08e9956c8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#gd46ed73a16af56e6f3b46fe86ee8a759">grib_iterator_delete</a> (<a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> *i)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees an iterator from memory.  <a href="#gd46ed73a16af56e6f3b46fe86ee8a759"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g4bd616cf0d0c4f5f147f4a207ddc7687">grib_nearest_new</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, int *error)</td></tr>
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new nearest from a handle, using current geometry .  <a href="#g4bd616cf0d0c4f5f147f4a207ddc7687"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g15043a2482608fb93a0385f3c3e86926">grib_nearest_find</a> (<a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> *nearest, <a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, double inlat, double inlon, unsigned long flags, double *outlats, double *ou [...]
-
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find the 4 nearest points of a latitude longitude point.  <a href="#g15043a2482608fb93a0385f3c3e86926"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g2b3c0069013e1ad7b3e34f30b4659c15">grib_nearest_delete</a> (<a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> *nearest)</td></tr>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
 
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees an nearest from memory.  <a href="#g2b3c0069013e1ad7b3e34f30b4659c15"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#g4923d7a2e414c743410f1de71bb9648c">grib_nearest_find_multiple</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, int is_lsm, double *inlats, double *inlons, long npoints, double *outlats, double *outlons, double *values, double *distances, int *indexes)</td></tr>
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
 
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Find the nearest point of a set of points whose latitudes and longitudes are given in the inlats, inlons arrays respectively.  <a href="#g4923d7a2e414c743410f1de71bb9648c"></a><br></td></tr>
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Data Structures</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Iterating on latitude/longitude/values</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcodes__iterator.html">codes_iterator</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcodes__nearest.html">codes_nearest</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga250295a1b927401bcb1e03aac032396c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__iterator.html">codes_iterator</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga250295a1b927401bcb1e03aac032396c">codes_grib_iterator_new</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, unsigned long flags, int *error)</td></tr>
+<tr class="memdesc:ga250295a1b927401bcb1e03aac032396c"><td class="mdescLeft"> </td><td class="mdescRight">Create a new iterator from a GRIB handle, using current geometry and values.  <a href="#ga250295a1b927401bcb1e03aac032396c">More...</a><br/></td></tr>
+<tr class="separator:ga250295a1b927401bcb1e03aac032396c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga9d8fdb87efce9d49ac54853ee5871e01"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga9d8fdb87efce9d49ac54853ee5871e01">codes_grib_get_data</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, double *lats, double *lons, double *values)</td></tr>
+<tr class="memdesc:ga9d8fdb87efce9d49ac54853ee5871e01"><td class="mdescLeft"> </td><td class="mdescRight">Get latitude/longitude and data values.  <a href="#ga9d8fdb87efce9d49ac54853ee5871e01">More...</a><br/></td></tr>
+<tr class="separator:ga9d8fdb87efce9d49ac54853ee5871e01"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga9bc83fc66d5f39ecf123d3c3e5b1fecf"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga9bc83fc66d5f39ecf123d3c3e5b1fecf">codes_grib_iterator_next</a> (<a class="el" href="structcodes__iterator.html">codes_iterator</a> *i, double *lat, double *lon, double *value)</td></tr>
+<tr class="memdesc:ga9bc83fc66d5f39ecf123d3c3e5b1fecf"><td class="mdescLeft"> </td><td class="mdescRight">Get the next value from an iterator.  <a href="#ga9bc83fc66d5f39ecf123d3c3e5b1fecf">More...</a><br/></td></tr>
+<tr class="separator:ga9bc83fc66d5f39ecf123d3c3e5b1fecf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga93ef62613c251baa5ada3924d3c856ac"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga93ef62613c251baa5ada3924d3c856ac">codes_grib_iterator_previous</a> (<a class="el" href="structcodes__iterator.html">codes_iterator</a> *i, double *lat, double *lon, double *value)</td></tr>
+<tr class="memdesc:ga93ef62613c251baa5ada3924d3c856ac"><td class="mdescLeft"> </td><td class="mdescRight">Get the previous value from an iterator.  <a href="#ga93ef62613c251baa5ada3924d3c856ac">More...</a><br/></td></tr>
+<tr class="separator:ga93ef62613c251baa5ada3924d3c856ac"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga97dfa89fe0ebed41b238d98bac36db8a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga97dfa89fe0ebed41b238d98bac36db8a">codes_grib_iterator_has_next</a> (<a class="el" href="structcodes__iterator.html">codes_iterator</a> *i)</td></tr>
+<tr class="memdesc:ga97dfa89fe0ebed41b238d98bac36db8a"><td class="mdescLeft"> </td><td class="mdescRight">Test procedure for values in an iterator.  <a href="#ga97dfa89fe0ebed41b238d98bac36db8a">More...</a><br/></td></tr>
+<tr class="separator:ga97dfa89fe0ebed41b238d98bac36db8a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga635320df5854ae08367fed2e5f895e2b"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga635320df5854ae08367fed2e5f895e2b">codes_grib_iterator_reset</a> (<a class="el" href="structcodes__iterator.html">codes_iterator</a> *i)</td></tr>
+<tr class="memdesc:ga635320df5854ae08367fed2e5f895e2b"><td class="mdescLeft"> </td><td class="mdescRight">Test procedure for values in an iterator.  <a href="#ga635320df5854ae08367fed2e5f895e2b">More...</a><br/></td></tr>
+<tr class="separator:ga635320df5854ae08367fed2e5f895e2b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3999693d3932a62eada0d1de5b594d2f"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga3999693d3932a62eada0d1de5b594d2f">codes_grib_iterator_delete</a> (<a class="el" href="structcodes__iterator.html">codes_iterator</a> *i)</td></tr>
+<tr class="memdesc:ga3999693d3932a62eada0d1de5b594d2f"><td class="mdescLeft"> </td><td class="mdescRight">Frees an iterator from memory.  <a href="#ga3999693d3932a62eada0d1de5b594d2f">More...</a><br/></td></tr>
+<tr class="separator:ga3999693d3932a62eada0d1de5b594d2f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga201d49e6c835f3b6ed041147d0bf4898"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__nearest.html">codes_nearest</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga201d49e6c835f3b6ed041147d0bf4898">codes_grib_nearest_new</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, int *error)</td></tr>
+<tr class="memdesc:ga201d49e6c835f3b6ed041147d0bf4898"><td class="mdescLeft"> </td><td class="mdescRight">Create a new nearest from a handle, using current geometry .  <a href="#ga201d49e6c835f3b6ed041147d0bf4898">More...</a><br/></td></tr>
+<tr class="separator:ga201d49e6c835f3b6ed041147d0bf4898"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8c53c53033259beaf32055154f193a83"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga8c53c53033259beaf32055154f193a83">codes_grib_nearest_find</a> (<a class="el" href="structcodes__nearest.html">codes_nearest</a> *nearest, <a class="el" href="structcodes__handle.html">codes_handle</a> *h, double inlat, double inlon, unsigned long flags, double *outlats, double *outlons, [...]
+<tr class="memdesc:ga8c53c53033259beaf32055154f193a83"><td class="mdescLeft"> </td><td class="mdescRight">Find the 4 nearest points of a latitude longitude point.  <a href="#ga8c53c53033259beaf32055154f193a83">More...</a><br/></td></tr>
+<tr class="separator:ga8c53c53033259beaf32055154f193a83"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8c3b2ed99693a097211000552876a61d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga8c3b2ed99693a097211000552876a61d">codes_grib_nearest_delete</a> (<a class="el" href="structcodes__nearest.html">codes_nearest</a> *nearest)</td></tr>
+<tr class="memdesc:ga8c3b2ed99693a097211000552876a61d"><td class="mdescLeft"> </td><td class="mdescRight">Frees an nearest from memory.  <a href="#ga8c3b2ed99693a097211000552876a61d">More...</a><br/></td></tr>
+<tr class="separator:ga8c3b2ed99693a097211000552876a61d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6338ab9e3fb68c25d4fe48a8467cdbfc"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__iterators.html#ga6338ab9e3fb68c25d4fe48a8467cdbfc">codes_grib_nearest_find_multiple</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, int is_lsm, double *inlats, double *inlons, long npoints, double *outlats, double *outlons, double *values, double *distances, int *indexes)</td></tr>
+<tr class="memdesc:ga6338ab9e3fb68c25d4fe48a8467cdbfc"><td class="mdescLeft"> </td><td class="mdescRight">Find the nearest point of a set of points whose latitudes and longitudes are given in the inlats, inlons arrays respectively.  <a href="#ga6338ab9e3fb68c25d4fe48a8467cdbfc">More...</a><br/></td></tr>
+<tr class="separator:ga6338ab9e3fb68c25d4fe48a8467cdbfc"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="gd46ed73a16af56e6f3b46fe86ee8a759"></a><!-- doxytag: member="grib_api.h::grib_iterator_delete" ref="gd46ed73a16af56e6f3b46fe86ee8a759" args="(grib_iterator *i)" -->
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ga9d8fdb87efce9d49ac54853ee5871e01"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_iterator_delete           </td>
+          <td class="memname">int codes_grib_get_data </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> * </td>
-          <td class="paramname"> <em>i</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>lats</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>lons</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>values</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Frees an iterator from memory. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>: the iterator </td></tr>
+<p>Get latitude/longitude and data values. </p>
+<p>The Latitudes, longitudes and values arrays must be properly allocated by the caller. Their required dimension can be obtained by getting the value of the integer key "numberOfPoints".</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: handle from which geography and data values are taken </td></tr>
+    <tr><td class="paramname">lats</td><td>: returned array of latitudes </td></tr>
+    <tr><td class="paramname">lons</td><td>: returned array of longitudes </td></tr>
+    <tr><td class="paramname">values</td><td>: returned array of data values </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="iterator_8c-example.html#a7">iterator.c</a>, and <a class="el" href="iterator__fortran_8_f-example.html#a2">iterator_fortran.F</a>.</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
 </div>
-</div><p>
-<a class="anchor" name="g7beddf03a8335d5058a0760929af9b65"></a><!-- doxytag: member="grib_api.h::grib_iterator_has_next" ref="g7beddf03a8335d5058a0760929af9b65" args="(grib_iterator *i)" -->
+</div>
+<a class="anchor" id="ga3999693d3932a62eada0d1de5b594d2f"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_iterator_has_next           </td>
+          <td class="memname">int codes_grib_iterator_delete </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> * </td>
-          <td class="paramname"> <em>i</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
+          <td class="paramtype"><a class="el" href="structcodes__iterator.html">codes_iterator</a> * </td>
+          <td class="paramname"><em>i</em></td><td>)</td>
+          <td></td>
         </tr>
       </table>
+</div><div class="memdoc">
+
+<p>Frees an iterator from memory. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">i</td><td>: the iterator </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
 </div>
-<div class="memdoc">
+</div>
+<a class="anchor" id="ga97dfa89fe0ebed41b238d98bac36db8a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int codes_grib_iterator_has_next </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structcodes__iterator.html">codes_iterator</a> * </td>
+          <td class="paramname"><em>i</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
 
-<p>
-Test procedure for values in an iterator. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>: the iterator </td></tr>
+<p>Test procedure for values in an iterator. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">i</td><td>: the iterator </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean, 1 if the iterator still nave next values, 0 otherwise </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>boolean, 1 if the iterator still nave next values, 0 otherwise </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="gefb1f87110bdce732edc9154cf0e7d58"></a><!-- doxytag: member="grib_api.h::grib_iterator_new" ref="gefb1f87110bdce732edc9154cf0e7d58" args="(grib_handle *h, unsigned long flags, int *error)" -->
+</div>
+<a class="anchor" id="ga250295a1b927401bcb1e03aac032396c"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a>* grib_iterator_new           </td>
+          <td class="memname"><a class="el" href="structcodes__iterator.html">codes_iterator</a>* codes_grib_iterator_new </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">unsigned long </td>
-          <td class="paramname"> <em>flags</em>, </td>
+          <td class="paramtype">unsigned long </td>
+          <td class="paramname"><em>flags</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">int * </td>
-          <td class="paramname"> <em>error</em></td><td> </td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"><em>error</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Create a new iterator from a handle, using current geometry and values. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle from which the iterator will be created </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>: flags for future use. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>error</em> </td><td>: error code </td></tr>
+<p>Create a new iterator from a GRIB handle, using current geometry and values. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle from which the iterator will be created </td></tr>
+    <tr><td class="paramname">flags</td><td>: flags for future use. </td></tr>
+    <tr><td class="paramname">error</td><td>: error code </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new iterator, NULL if no iterator can be created </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="iterator_8c-example.html#a5">iterator.c</a>, and <a class="el" href="iterator__fortran_8_f-example.html#a0">iterator_fortran.F</a>.</dl>
+<dl class="section return"><dt>Returns</dt><dd>the new iterator, NULL if no iterator can be created </dd></dl>
+
+</div>
 </div>
-</div><p>
-<a class="anchor" name="g4f73056dbfdda3de0060559b9b39ea34"></a><!-- doxytag: member="grib_api.h::grib_iterator_next" ref="g4f73056dbfdda3de0060559b9b39ea34" args="(grib_iterator *i, double *lat, double *lon, double *value)" -->
+<a class="anchor" id="ga9bc83fc66d5f39ecf123d3c3e5b1fecf"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_iterator_next           </td>
+          <td class="memname">int codes_grib_iterator_next </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> * </td>
-          <td class="paramname"> <em>i</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__iterator.html">codes_iterator</a> * </td>
+          <td class="paramname"><em>i</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>lat</em>, </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>lat</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>lon</em>, </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>lon</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>value</em></td><td> </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>value</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Get the next value from an iterator. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>: the iterator </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>lat</em> </td><td>: on output latitude in degree </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>lon</em> </td><td>: on output longitude in degree </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>: on output value of the point </td></tr>
+<p>Get the next value from an iterator. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">i</td><td>: the iterator </td></tr>
+    <tr><td class="paramname">lat</td><td>: on output latitude in degree </td></tr>
+    <tr><td class="paramname">lon</td><td>: on output longitude in degree </td></tr>
+    <tr><td class="paramname">value</td><td>: on output value of the point </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>positive value if successful, 0 if no more data are available </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="iterator_8c-example.html#a6">iterator.c</a>, and <a class="el" href="iterator__fortran_8_f-example.html#a1">iterator_fortran.F</a>.</dl>
+<dl class="section return"><dt>Returns</dt><dd>positive value if successful, 0 if no more data are available </dd></dl>
+
 </div>
-</div><p>
-<a class="anchor" name="ge33e4a6d3a2222f78ffc43eb7239ce3f"></a><!-- doxytag: member="grib_api.h::grib_iterator_previous" ref="ge33e4a6d3a2222f78ffc43eb7239ce3f" args="(grib_iterator *i, double *lat, double *lon, double *value)" -->
+</div>
+<a class="anchor" id="ga93ef62613c251baa5ada3924d3c856ac"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_iterator_previous           </td>
+          <td class="memname">int codes_grib_iterator_previous </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> * </td>
-          <td class="paramname"> <em>i</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__iterator.html">codes_iterator</a> * </td>
+          <td class="paramname"><em>i</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>lat</em>, </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>lat</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>lon</em>, </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>lon</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>value</em></td><td> </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>value</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Get the previous value from an iterator. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>: the iterator </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>lat</em> </td><td>: on output latitude in degree </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>lon</em> </td><td>: on output longitude in degree </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>: on output value of the point* </td></tr>
+<p>Get the previous value from an iterator. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">i</td><td>: the iterator </td></tr>
+    <tr><td class="paramname">lat</td><td>: on output latitude in degree </td></tr>
+    <tr><td class="paramname">lon</td><td>: on output longitude in degree </td></tr>
+    <tr><td class="paramname">value</td><td>: on output value of the point* </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>positive value if successful, 0 if no more data are available </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>positive value if successful, 0 if no more data are available </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="gb8f3830e919c3c11f11530c08e9956c8"></a><!-- doxytag: member="grib_api.h::grib_iterator_reset" ref="gb8f3830e919c3c11f11530c08e9956c8" args="(grib_iterator *i)" -->
+</div>
+<a class="anchor" id="ga635320df5854ae08367fed2e5f895e2b"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_iterator_reset           </td>
+          <td class="memname">int codes_grib_iterator_reset </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a> * </td>
-          <td class="paramname"> <em>i</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
+          <td class="paramtype"><a class="el" href="structcodes__iterator.html">codes_iterator</a> * </td>
+          <td class="paramname"><em>i</em></td><td>)</td>
+          <td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Test procedure for values in an iterator. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>: the iterator </td></tr>
+<p>Test procedure for values in an iterator. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">i</td><td>: the iterator </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="g2b3c0069013e1ad7b3e34f30b4659c15"></a><!-- doxytag: member="grib_api.h::grib_nearest_delete" ref="g2b3c0069013e1ad7b3e34f30b4659c15" args="(grib_nearest *nearest)" -->
+</div>
+<a class="anchor" id="ga8c3b2ed99693a097211000552876a61d"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_nearest_delete           </td>
+          <td class="memname">int codes_grib_nearest_delete </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> * </td>
-          <td class="paramname"> <em>nearest</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
+          <td class="paramtype"><a class="el" href="structcodes__nearest.html">codes_nearest</a> * </td>
+          <td class="paramname"><em>nearest</em></td><td>)</td>
+          <td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Frees an nearest from memory. 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>nearest</em> </td><td>: the nearest </td></tr>
+<p>Frees an nearest from memory. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">nearest</td><td>: the nearest </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="nearest_8c-example.html#a7">nearest.c</a>.</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
+</div>
 </div>
-</div><p>
-<a class="anchor" name="g15043a2482608fb93a0385f3c3e86926"></a><!-- doxytag: member="grib_api.h::grib_nearest_find" ref="g15043a2482608fb93a0385f3c3e86926" args="(grib_nearest *nearest, grib_handle *h, double inlat, double inlon, unsigned long flags, double *outlats, double *outlons, double *values, double *distances, int *indexes, size_t *len)" -->
+<a class="anchor" id="ga8c53c53033259beaf32055154f193a83"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_nearest_find           </td>
+          <td class="memname">int codes_grib_nearest_find </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a> * </td>
-          <td class="paramname"> <em>nearest</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__nearest.html">codes_nearest</a> * </td>
+          <td class="paramname"><em>nearest</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double </td>
-          <td class="paramname"> <em>inlat</em>, </td>
+          <td class="paramtype">double </td>
+          <td class="paramname"><em>inlat</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double </td>
-          <td class="paramname"> <em>inlon</em>, </td>
+          <td class="paramtype">double </td>
+          <td class="paramname"><em>inlon</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">unsigned long </td>
-          <td class="paramname"> <em>flags</em>, </td>
+          <td class="paramtype">unsigned long </td>
+          <td class="paramname"><em>flags</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>outlats</em>, </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>outlats</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>outlons</em>, </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>outlons</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>values</em>, </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>values</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>distances</em>, </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>distances</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">int * </td>
-          <td class="paramname"> <em>indexes</em>, </td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"><em>indexes</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">size_t * </td>
-          <td class="paramname"> <em>len</em></td><td> </td>
+          <td class="paramtype">size_t * </td>
+          <td class="paramname"><em>len</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Find the 4 nearest points of a latitude longitude point. 
-<p>
-The flags are provided to speed up the process of searching. If you are sure that the point you are asking for is not changing from a call to another you can use GRIB_NEAREST_SAME_POINT. The same is valid for the grid. Flags can be used together duing an or.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>nearest</em> </td><td>: nearest structure </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: handle from which geography and data values are taken </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>inlat</em> </td><td>: latitude of the point to search for </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>inlon</em> </td><td>: longitude of the point to search for </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>: GRIB_NEAREST_SAME_POINT, GRIB_NEAREST_SAME_GRID </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>outlats</em> </td><td>: returned array of latitudes of the nearest points </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>outlons</em> </td><td>: returned array of longitudes of the nearest points </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>values</em> </td><td>: returned array of data values of the nearest points </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>distances</em> </td><td>: returned array of distances from the nearest points </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>indexes</em> </td><td>: returned array of indexes of the nearest points </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>: size of the arrays </td></tr>
+<p>Find the 4 nearest points of a latitude longitude point. </p>
+<p>The flags are provided to speed up the process of searching. If you are sure that the point you are asking for is not changing from a call to another you can use CODES_NEAREST_SAME_POINT. The same is valid for the grid. Flags can be used together doing a bitwise OR. The distances are given in kilometres.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">nearest</td><td>: nearest structure </td></tr>
+    <tr><td class="paramname">h</td><td>: handle from which geography and data values are taken </td></tr>
+    <tr><td class="paramname">inlat</td><td>: latitude of the point to search for </td></tr>
+    <tr><td class="paramname">inlon</td><td>: longitude of the point to search for </td></tr>
+    <tr><td class="paramname">flags</td><td>: CODES_NEAREST_SAME_POINT, CODES_NEAREST_SAME_GRID </td></tr>
+    <tr><td class="paramname">outlats</td><td>: returned array of latitudes of the nearest points </td></tr>
+    <tr><td class="paramname">outlons</td><td>: returned array of longitudes of the nearest points </td></tr>
+    <tr><td class="paramname">values</td><td>: returned array of data values of the nearest points </td></tr>
+    <tr><td class="paramname">distances</td><td>: returned array of distances from the nearest points </td></tr>
+    <tr><td class="paramname">indexes</td><td>: returned array of indexes of the nearest points </td></tr>
+    <tr><td class="paramname">len</td><td>: size of the arrays </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="nearest_8c-example.html#a5">nearest.c</a>.</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
 </div>
-</div><p>
-<a class="anchor" name="g4923d7a2e414c743410f1de71bb9648c"></a><!-- doxytag: member="grib_api.h::grib_nearest_find_multiple" ref="g4923d7a2e414c743410f1de71bb9648c" args="(grib_handle *h, int is_lsm, double *inlats, double *inlons, long npoints, double *outlats, double *outlons, double *values, double *distances, int *indexes)" -->
+</div>
+<a class="anchor" id="ga6338ab9e3fb68c25d4fe48a8467cdbfc"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_nearest_find_multiple           </td>
+          <td class="memname">int codes_grib_nearest_find_multiple </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">int </td>
-          <td class="paramname"> <em>is_lsm</em>, </td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>is_lsm</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>inlats</em>, </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>inlats</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>inlons</em>, </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>inlons</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">long </td>
-          <td class="paramname"> <em>npoints</em>, </td>
+          <td class="paramtype">long </td>
+          <td class="paramname"><em>npoints</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>outlats</em>, </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>outlats</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>outlons</em>, </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>outlons</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>values</em>, </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>values</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">double * </td>
-          <td class="paramname"> <em>distances</em>, </td>
+          <td class="paramtype">double * </td>
+          <td class="paramname"><em>distances</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">int * </td>
-          <td class="paramname"> <em>indexes</em></td><td> </td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"><em>indexes</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Find the nearest point of a set of points whose latitudes and longitudes are given in the inlats, inlons arrays respectively. 
-<p>
-If the flag is_lsm is 1 the nearest land point is returned and the grib passed as handle (h) is considered a land sea mask. The land nearest point is the nearest point with land sea mask value>=0.5. If no nearest land points are found the nearest value is returned. If the flag is_lsm is 0 the nearest point is returned. values, distances, indexes (in the "values" array) for the nearest points (ilons,ilats) are returned.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: handle from which geography and data values are taken </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>is_lsm</em> </td><td>: lsm flag (1-> nearest land, 0-> nearest) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>inlats</em> </td><td>: latitudes of the points to search for </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>inlons</em> </td><td>: longitudes of the points to search for </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>npoints</em> </td><td>: number of points (size of the inlats,inlons,outlats,outlons,values,distances,indexes arrays) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>outlats</em> </td><td>: returned array of latitudes of the nearest points </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>outlons</em> </td><td>: returned array of longitudes of the nearest points </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>values</em> </td><td>: returned array of data values of the nearest points </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>distances</em> </td><td>: returned array of distances from the nearest points </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>indexes</em> </td><td>: returned array of indexes of the nearest points </td></tr>
+<p>Find the nearest point of a set of points whose latitudes and longitudes are given in the inlats, inlons arrays respectively. </p>
+<p>If the flag is_lsm is 1 the nearest land point is returned and the grib passed as handle (h) is considered a land sea mask. The land nearest point is the nearest point with land sea mask value>=0.5. If no nearest land points are found the nearest value is returned. If the flag is_lsm is 0 the nearest point is returned. values, distances, indexes (in the "values" array) for the nearest points (ilons,ilats) are returned. The distances are given in kilometres.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: handle from which geography and data values are taken </td></tr>
+    <tr><td class="paramname">is_lsm</td><td>: lsm flag (1-> nearest land, 0-> nearest) </td></tr>
+    <tr><td class="paramname">inlats</td><td>: latitudes of the points to search for </td></tr>
+    <tr><td class="paramname">inlons</td><td>: longitudes of the points to search for </td></tr>
+    <tr><td class="paramname">npoints</td><td>: number of points (size of the inlats,inlons,outlats,outlons,values,distances,indexes arrays) </td></tr>
+    <tr><td class="paramname">outlats</td><td>: returned array of latitudes of the nearest points </td></tr>
+    <tr><td class="paramname">outlons</td><td>: returned array of longitudes of the nearest points </td></tr>
+    <tr><td class="paramname">values</td><td>: returned array of data values of the nearest points </td></tr>
+    <tr><td class="paramname">distances</td><td>: returned array of distances from the nearest points </td></tr>
+    <tr><td class="paramname">indexes</td><td>: returned array of indexes of the nearest points </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="g4bd616cf0d0c4f5f147f4a207ddc7687"></a><!-- doxytag: member="grib_api.h::grib_nearest_new" ref="g4bd616cf0d0c4f5f147f4a207ddc7687" args="(grib_handle *h, int *error)" -->
+</div>
+<a class="anchor" id="ga201d49e6c835f3b6ed041147d0bf4898"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a>* grib_nearest_new           </td>
+          <td class="memname"><a class="el" href="structcodes__nearest.html">codes_nearest</a>* codes_grib_nearest_new </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">int * </td>
-          <td class="paramname"> <em>error</em></td><td> </td>
+          <td class="paramtype">int * </td>
+          <td class="paramname"><em>error</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
 
-<p>
-Create a new nearest from a handle, using current geometry . 
-<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle from which the iterator will be created </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>error</em> </td><td>: error code </td></tr>
+<p>Create a new nearest from a handle, using current geometry . </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle from which the iterator will be created </td></tr>
+    <tr><td class="paramname">error</td><td>: error code </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the new nearest, NULL if no nearest can be created </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="nearest_8c-example.html#a4">nearest.c</a>.</dl>
+<dl class="section return"><dt>Returns</dt><dd>the new nearest, NULL if no nearest can be created </dd></dl>
+
+</div>
 </div>
-</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
 </body>
 </html>
diff --git a/html/group__keys__iterator.html b/html/group__keys__iterator.html
index 2faa8b9..1eb625c 100644
--- a/html/group__keys__iterator.html
+++ b/html/group__keys__iterator.html
@@ -1,364 +1,385 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: Iterating on keys names</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: Iterating on keys names</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
 </div>
-<h1>Iterating on keys names</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g0e4d2d943ddd61d0b877060e6fbea405">GRIB_KEYS_ITERATOR_ALL_KEYS</a>   0</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g22b6978a432db7211a270438077f7062">GRIB_KEYS_ITERATOR_SKIP_READ_ONLY</a>   (1<<0)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ge665875b6303dab2265bbb088c723860">GRIB_KEYS_ITERATOR_SKIP_OPTIONAL</a>   (1<<1)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g37ad0fca3eb784fed7e2b4a44e1ca2b6">GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC</a>   (1<<2)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g52ad3f33022d82a46cd80cb99a1307ff">GRIB_KEYS_ITERATOR_SKIP_CODED</a>   (1<<3)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g26fe182483e385904cc68695b1c42131">GRIB_KEYS_ITERATOR_SKIP_COMPUTED</a>   (1<<4)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ge64e8f24f3094903d6a686a213f92e4e">GRIB_KEYS_ITERATOR_SKIP_DUPLICATES</a>   (1<<5)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gcbef496e484e5e18c799f74dd5cdfff7">GRIB_KEYS_ITERATOR_SKIP_FUNCTION</a>   (1<<6)</td></tr>
-
-<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <br>
-<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a></td></tr>
-
-<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> (<a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h, unsigned long filter_flags, char *name_space)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g28f6ac808ecdc324fa3a47bc7b3f6dec">grib_keys_iterator_next</a> (<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> *kiter)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gec3348471f770965c07964e286249e12">grib_keys_iterator_get_name</a> (<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> *kiter)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g79716d2b701c3dbb3d3a8e633f35a40a">grib_keys_iterator_delete</a> (<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> *kiter)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#g15ceb24c7b8ac673d948ccdaf1ba5fd6">grib_keys_iterator_rewind</a> (<a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> *kiter)</td></tr>
 
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Data Structures</a> |
+<a href="#define-members">Macros</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Iterating on keys names</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:gaa0b60d176497f5d4bc34564c31e76cf1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gaa0b60d176497f5d4bc34564c31e76cf1">CODES_KEYS_ITERATOR_ALL_KEYS</a>   0</td></tr>
+<tr class="separator:gaa0b60d176497f5d4bc34564c31e76cf1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga782b83b0b913da3841eb82921642aaa8"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ga782b83b0b913da3841eb82921642aaa8">CODES_KEYS_ITERATOR_SKIP_READ_ONLY</a>   (1<<0)</td></tr>
+<tr class="separator:ga782b83b0b913da3841eb82921642aaa8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6f7115fdd2c821886a43934e4aa16073"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ga6f7115fdd2c821886a43934e4aa16073">CODES_KEYS_ITERATOR_SKIP_OPTIONAL</a>   (1<<1)</td></tr>
+<tr class="separator:ga6f7115fdd2c821886a43934e4aa16073"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga81f606c554c906f1fed1b9cd432aec00"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ga81f606c554c906f1fed1b9cd432aec00">CODES_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC</a>   (1<<2)</td></tr>
+<tr class="separator:ga81f606c554c906f1fed1b9cd432aec00"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gae3286f2212339d42d43938d9c5c6255c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gae3286f2212339d42d43938d9c5c6255c">CODES_KEYS_ITERATOR_SKIP_CODED</a>   (1<<3)</td></tr>
+<tr class="separator:gae3286f2212339d42d43938d9c5c6255c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaaecbb01ec3bd2d67a42aad56c96fb775"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gaaecbb01ec3bd2d67a42aad56c96fb775">CODES_KEYS_ITERATOR_SKIP_COMPUTED</a>   (1<<4)</td></tr>
+<tr class="separator:gaaecbb01ec3bd2d67a42aad56c96fb775"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga532be495f6cd54a852288a88bd0a439f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ga532be495f6cd54a852288a88bd0a439f">CODES_KEYS_ITERATOR_SKIP_DUPLICATES</a>   (1<<5)</td></tr>
+<tr class="separator:ga532be495f6cd54a852288a88bd0a439f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga441c09493c38e1ab2fc7f296eb12516f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ga441c09493c38e1ab2fc7f296eb12516f">CODES_KEYS_ITERATOR_SKIP_FUNCTION</a>   (1<<6)</td></tr>
+<tr class="separator:ga441c09493c38e1ab2fc7f296eb12516f"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:gad3394316cf1f3c779648fe81428adb8f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gad3394316cf1f3c779648fe81428adb8f">codes_keys_iterator_new</a> (<a class="el" href="structcodes__handle.html">codes_handle</a> *h, unsigned long filter_flags, const char *name_space)</td></tr>
+<tr class="separator:gad3394316cf1f3c779648fe81428adb8f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga804b63ac6be7c95aac71a9050008e409"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ga804b63ac6be7c95aac71a9050008e409">codes_keys_iterator_next</a> (<a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> *kiter)</td></tr>
+<tr class="separator:ga804b63ac6be7c95aac71a9050008e409"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga1049604cb5a47359f9c7f7a42571a48b"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ga1049604cb5a47359f9c7f7a42571a48b">codes_keys_iterator_get_name</a> (<a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> *kiter)</td></tr>
+<tr class="separator:ga1049604cb5a47359f9c7f7a42571a48b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gafdafe484a0e5a82732ddcbaec1e272a5"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#gafdafe484a0e5a82732ddcbaec1e272a5">codes_keys_iterator_delete</a> (<a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> *kiter)</td></tr>
+<tr class="separator:gafdafe484a0e5a82732ddcbaec1e272a5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga2f611291982ea92cabc0ca70691291bf"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys__iterator.html#ga2f611291982ea92cabc0ca70691291bf">codes_keys_iterator_rewind</a> (<a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> *kiter)</td></tr>
+<tr class="separator:ga2f611291982ea92cabc0ca70691291bf"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The keys iterator is designed to get the key names defined in a message. Key names on which the iteration is carried out can be filtered through their attributes or by the namespace they belong to. <hr><h2>Define Documentation</h2>
-<a class="anchor" name="g0e4d2d943ddd61d0b877060e6fbea405"></a><!-- doxytag: member="grib_api.h::GRIB_KEYS_ITERATOR_ALL_KEYS" ref="g0e4d2d943ddd61d0b877060e6fbea405" args="" -->
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<p>The keys iterator is designed to get the key names defined in a message. Key names on which the iteration is carried out can be filtered through their attributes or by the namespace they belong to. </p>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a class="anchor" id="gaa0b60d176497f5d4bc34564c31e76cf1"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GRIB_KEYS_ITERATOR_ALL_KEYS   0          </td>
+          <td class="memname">#define CODES_KEYS_ITERATOR_ALL_KEYS   0</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
+<pre class="fragment">Iteration is carried out on all the keys available in the message
+</pre><dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__keys__iterator.html#gad3394316cf1f3c779648fe81428adb8f">codes_keys_iterator_new</a> </dd></dl>
 
-<p>
-Iteration is carried out on all the keys available in the message<p>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="keys__iterator_8c-example.html#a0">keys_iterator.c</a>.</dl>
-</div>
-</div><p>
-<a class="anchor" name="g52ad3f33022d82a46cd80cb99a1307ff"></a><!-- doxytag: member="grib_api.h::GRIB_KEYS_ITERATOR_SKIP_CODED" ref="g52ad3f33022d82a46cd80cb99a1307ff" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">#define GRIB_KEYS_ITERATOR_SKIP_CODED   (1<<3)          </td>
-        </tr>
-      </table>
 </div>
-<div class="memdoc">
-
-<p>
-coded keys are skipped by keys iterator.<p>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> </dd></dl>
-
 </div>
-</div><p>
-<a class="anchor" name="g26fe182483e385904cc68695b1c42131"></a><!-- doxytag: member="grib_api.h::GRIB_KEYS_ITERATOR_SKIP_COMPUTED" ref="g26fe182483e385904cc68695b1c42131" args="" -->
+<a class="anchor" id="gae3286f2212339d42d43938d9c5c6255c"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GRIB_KEYS_ITERATOR_SKIP_COMPUTED   (1<<4)          </td>
+          <td class="memname">#define CODES_KEYS_ITERATOR_SKIP_CODED   (1<<3)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-computed keys are skipped by keys iterator.<p>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> </dd></dl>
+</div><div class="memdoc">
+<pre class="fragment">coded keys are skipped by keys iterator.
+</pre><dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__keys__iterator.html#gad3394316cf1f3c779648fe81428adb8f">codes_keys_iterator_new</a> </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="ge64e8f24f3094903d6a686a213f92e4e"></a><!-- doxytag: member="grib_api.h::GRIB_KEYS_ITERATOR_SKIP_DUPLICATES" ref="ge64e8f24f3094903d6a686a213f92e4e" args="" -->
+</div>
+<a class="anchor" id="gaaecbb01ec3bd2d67a42aad56c96fb775"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GRIB_KEYS_ITERATOR_SKIP_DUPLICATES   (1<<5)          </td>
+          <td class="memname">#define CODES_KEYS_ITERATOR_SKIP_COMPUTED   (1<<4)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-duplicates of a key are skipped by keys iterator.<p>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> </dd></dl>
+</div><div class="memdoc">
+<pre class="fragment">computed keys are skipped by keys iterator.
+</pre><dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__keys__iterator.html#gad3394316cf1f3c779648fe81428adb8f">codes_keys_iterator_new</a> </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="g37ad0fca3eb784fed7e2b4a44e1ca2b6"></a><!-- doxytag: member="grib_api.h::GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC" ref="g37ad0fca3eb784fed7e2b4a44e1ca2b6" args="" -->
+</div>
+<a class="anchor" id="ga532be495f6cd54a852288a88bd0a439f"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC   (1<<2)          </td>
+          <td class="memname">#define CODES_KEYS_ITERATOR_SKIP_DUPLICATES   (1<<5)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-edition specific keys are skipped by keys iterator.<p>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> </dd></dl>
+</div><div class="memdoc">
+<pre class="fragment">duplicates of a key are skipped by keys iterator.
+</pre><dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__keys__iterator.html#gad3394316cf1f3c779648fe81428adb8f">codes_keys_iterator_new</a> </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="gcbef496e484e5e18c799f74dd5cdfff7"></a><!-- doxytag: member="grib_api.h::GRIB_KEYS_ITERATOR_SKIP_FUNCTION" ref="gcbef496e484e5e18c799f74dd5cdfff7" args="" -->
+</div>
+<a class="anchor" id="ga81f606c554c906f1fed1b9cd432aec00"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GRIB_KEYS_ITERATOR_SKIP_FUNCTION   (1<<6)          </td>
+          <td class="memname">#define CODES_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC   (1<<2)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-function keys are skipped by keys iterator.<p>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> </dd></dl>
+</div><div class="memdoc">
+<pre class="fragment">edition specific keys are skipped by keys iterator.
+</pre><dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__keys__iterator.html#gad3394316cf1f3c779648fe81428adb8f">codes_keys_iterator_new</a> </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="ge665875b6303dab2265bbb088c723860"></a><!-- doxytag: member="grib_api.h::GRIB_KEYS_ITERATOR_SKIP_OPTIONAL" ref="ge665875b6303dab2265bbb088c723860" args="" -->
+</div>
+<a class="anchor" id="ga441c09493c38e1ab2fc7f296eb12516f"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GRIB_KEYS_ITERATOR_SKIP_OPTIONAL   (1<<1)          </td>
+          <td class="memname">#define CODES_KEYS_ITERATOR_SKIP_FUNCTION   (1<<6)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-optional keys are skipped by keys iterator.<p>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> </dd></dl>
+</div><div class="memdoc">
+<pre class="fragment">function keys are skipped by keys iterator.
+</pre><dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__keys__iterator.html#gad3394316cf1f3c779648fe81428adb8f">codes_keys_iterator_new</a> </dd></dl>
 
 </div>
-</div><p>
-<a class="anchor" name="g22b6978a432db7211a270438077f7062"></a><!-- doxytag: member="grib_api.h::GRIB_KEYS_ITERATOR_SKIP_READ_ONLY" ref="g22b6978a432db7211a270438077f7062" args="" -->
+</div>
+<a class="anchor" id="ga6f7115fdd2c821886a43934e4aa16073"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">#define GRIB_KEYS_ITERATOR_SKIP_READ_ONLY   (1<<0)          </td>
+          <td class="memname">#define CODES_KEYS_ITERATOR_SKIP_OPTIONAL   (1<<1)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-read only keys are skipped by keys iterator.<p>
-<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a> </dd></dl>
+</div><div class="memdoc">
+<pre class="fragment">optional keys are skipped by keys iterator.
+</pre><dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__keys__iterator.html#gad3394316cf1f3c779648fe81428adb8f">codes_keys_iterator_new</a> </dd></dl>
 
 </div>
-</div><p>
-<hr><h2>Typedef Documentation</h2>
-<a class="anchor" name="gfa22412541f9d2df9680a82371036dbb"></a><!-- doxytag: member="grib_api.h::grib_keys_iterator" ref="gfa22412541f9d2df9680a82371036dbb" args="" -->
+</div>
+<a class="anchor" id="ga782b83b0b913da3841eb82921642aaa8"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef struct <a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> <a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a>          </td>
+          <td class="memname">#define CODES_KEYS_ITERATOR_SKIP_READ_ONLY   (1<<0)</td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
+</div><div class="memdoc">
+<pre class="fragment">read only keys are skipped by keys iterator.
+</pre><dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__keys__iterator.html#gad3394316cf1f3c779648fe81428adb8f">codes_keys_iterator_new</a> </dd></dl>
 
-<p>
-Grib keys iterator. Iterator over keys. <dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="keys__iterator_8c-example.html#a2">keys_iterator.c</a>, and <a class="el" href="keys__iterator__fortran_8_f-example.html#a0">keys_iterator_fortran.F</a>.</dl>
 </div>
-</div><p>
-<hr><h2>Function Documentation</h2>
-<a class="anchor" name="g79716d2b701c3dbb3d3a8e633f35a40a"></a><!-- doxytag: member="grib_api.h::grib_keys_iterator_delete" ref="g79716d2b701c3dbb3d3a8e633f35a40a" args="(grib_keys_iterator *kiter)" -->
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="gafdafe484a0e5a82732ddcbaec1e272a5"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_keys_iterator_delete           </td>
+          <td class="memname">int codes_keys_iterator_delete </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> * </td>
-          <td class="paramname"> <em>kiter</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
+          <td class="paramtype"><a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> * </td>
+          <td class="paramname"><em>kiter</em></td><td>)</td>
+          <td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-Delete the iterator. <dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>kiter</em> </td><td>: valid grib_keys_iterator </td></tr>
+</div><div class="memdoc">
+<p>Delete the iterator. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">kiter</td><td>: valid <a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="keys__iterator_8c-example.html#a8">keys_iterator.c</a>, <a class="el" href="keys__iterator_8f90-example.html#a4">keys_iterator.f90</a>, and <a class="el" href="keys__iterator__fortran_8_f-example.html#a4">keys_iterator_fortran.F</a>.</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
+
 </div>
-</div><p>
-<a class="anchor" name="gec3348471f770965c07964e286249e12"></a><!-- doxytag: member="grib_api.h::grib_keys_iterator_get_name" ref="gec3348471f770965c07964e286249e12" args="(grib_keys_iterator *kiter)" -->
+</div>
+<a class="anchor" id="ga1049604cb5a47359f9c7f7a42571a48b"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">const char* grib_keys_iterator_get_name           </td>
+          <td class="memname">const char* codes_keys_iterator_get_name </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> * </td>
-          <td class="paramname"> <em>kiter</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
+          <td class="paramtype"><a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> * </td>
+          <td class="paramname"><em>kiter</em></td><td>)</td>
+          <td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-get the key name from the iterator <dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>kiter</em> </td><td>: valid grib_keys_iterator </td></tr>
+</div><div class="memdoc">
+<p>get the key name from the iterator </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">kiter</td><td>: valid <a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>key name </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="keys__iterator_8c-example.html#a6">keys_iterator.c</a>, <a class="el" href="keys__iterator_8f90-example.html#a3">keys_iterator.f90</a>, and <a class="el" href="keys__iterator__fortran_8_f-example.html#a2">keys_iterator_fortran.F</a>.</dl>
+<dl class="section return"><dt>Returns</dt><dd>key name </dd></dl>
+
 </div>
-</div><p>
-<a class="anchor" name="g66a11d157fc81e1c27fc2acad0a5b1f4"></a><!-- doxytag: member="grib_api.h::grib_keys_iterator_new" ref="g66a11d157fc81e1c27fc2acad0a5b1f4" args="(grib_handle *h, unsigned long filter_flags, char *name_space)" -->
+</div>
+<a class="anchor" id="gad3394316cf1f3c779648fe81428adb8f"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a>* grib_keys_iterator_new           </td>
+          <td class="memname"><a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a>* codes_keys_iterator_new </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> * </td>
-          <td class="paramname"> <em>h</em>, </td>
+          <td class="paramtype"><a class="el" href="structcodes__handle.html">codes_handle</a> * </td>
+          <td class="paramname"><em>h</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">unsigned long </td>
-          <td class="paramname"> <em>filter_flags</em>, </td>
+          <td class="paramtype">unsigned long </td>
+          <td class="paramname"><em>filter_flags</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">char * </td>
-          <td class="paramname"> <em>name_space</em></td><td> </td>
+          <td class="paramtype">const char * </td>
+          <td class="paramname"><em>name_space</em> </td>
         </tr>
         <tr>
           <td></td>
           <td>)</td>
-          <td></td><td></td><td width="100%"></td>
+          <td></td><td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-Create a new iterator from a valid and initialized handle. <dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>: the handle whose keys you want to iterate </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>filter_flags</em> </td><td>: flags to filter out some of the keys through their attributes </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>name_space</em> </td><td>: if not null the iteration is carried out only on keys belongin to the namespace passed. (NULL for all the keys) </td></tr>
+</div><div class="memdoc">
+<p>Create a new iterator from a valid and initialised handle. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">h</td><td>: the handle whose keys you want to iterate </td></tr>
+    <tr><td class="paramname">filter_flags</td><td>: flags to filter out some of the keys through their attributes </td></tr>
+    <tr><td class="paramname">name_space</td><td>: if not null the iteration is carried out only on keys belonging to the namespace passed. (NULL for all the keys) </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>keys iterator ready to iterate through keys according to filter_flags and namespace </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="keys__iterator_8c-example.html#a4">keys_iterator.c</a>, and <a class="el" href="keys__iterator_8f90-example.html#a1">keys_iterator.f90</a>.</dl>
+<dl class="section return"><dt>Returns</dt><dd>keys iterator ready to iterate through keys according to filter_flags and namespace </dd></dl>
+
 </div>
-</div><p>
-<a class="anchor" name="g28f6ac808ecdc324fa3a47bc7b3f6dec"></a><!-- doxytag: member="grib_api.h::grib_keys_iterator_next" ref="g28f6ac808ecdc324fa3a47bc7b3f6dec" args="(grib_keys_iterator *kiter)" -->
+</div>
+<a class="anchor" id="ga804b63ac6be7c95aac71a9050008e409"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_keys_iterator_next           </td>
+          <td class="memname">int codes_keys_iterator_next </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> * </td>
-          <td class="paramname"> <em>kiter</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
+          <td class="paramtype"><a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> * </td>
+          <td class="paramname"><em>kiter</em></td><td>)</td>
+          <td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-Step to the next iterator. <dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>kiter</em> </td><td>: valid grib_keys_iterator </td></tr>
+</div><div class="memdoc">
+<p>Step to the next iterator. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">kiter</td><td>: valid <a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if next iterator exitsts, 0 if no more elements to iterate on </dd></dl>
-<dl compact><dt><b>Examples: </b></dt><dd>
-<a class="el" href="keys__iterator_8c-example.html#a5">keys_iterator.c</a>, <a class="el" href="keys__iterator_8f90-example.html#a2">keys_iterator.f90</a>, and <a class="el" href="keys__iterator__fortran_8_f-example.html#a1">keys_iterator_fortran.F</a>.</dl>
+<dl class="section return"><dt>Returns</dt><dd>1 if next iterator exists, 0 if no more elements to iterate on </dd></dl>
+
+</div>
 </div>
-</div><p>
-<a class="anchor" name="g15ceb24c7b8ac673d948ccdaf1ba5fd6"></a><!-- doxytag: member="grib_api.h::grib_keys_iterator_rewind" ref="g15ceb24c7b8ac673d948ccdaf1ba5fd6" args="(grib_keys_iterator *kiter)" -->
+<a class="anchor" id="ga2f611291982ea92cabc0ca70691291bf"></a>
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">int grib_keys_iterator_rewind           </td>
+          <td class="memname">int codes_keys_iterator_rewind </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> * </td>
-          <td class="paramname"> <em>kiter</em>          </td>
-          <td> ) </td>
-          <td width="100%"></td>
+          <td class="paramtype"><a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> * </td>
+          <td class="paramname"><em>kiter</em></td><td>)</td>
+          <td></td>
         </tr>
       </table>
-</div>
-<div class="memdoc">
-
-<p>
-Rewind the iterator. <dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>kiter</em> </td><td>: valid grib_keys_iterator </td></tr>
+</div><div class="memdoc">
+<p>Rewind the iterator. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">kiter</td><td>: valid <a class="el" href="structcodes__keys__iterator.html">codes_keys_iterator</a> </td></tr>
   </table>
+  </dd>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if OK, integer value on error </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>0 if OK, integer value on error </dd></dl>
 
 </div>
-</div><p>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
 </body>
 </html>
diff --git a/html/index.html b/html/index.html
index 2c59a1a..8e90659 100644
--- a/html/index.html
+++ b/html/index.html
@@ -1,64 +1,108 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: GRIB API</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li class="current"><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: ecCodes</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
-<h1>GRIB API</h1>
-<p>
-<h2><a class="anchor" name="new">
-New</a></h2>
-<ul>
-<li><a href="/publications/manuals/grib_api/conversion.html">GRIB edition 1 to 2 conversion</a></li><li><a href="/services/archive/d/gribapi/param/">Parameters in GRIB API</a></li><li><b> GRIB API keys </b><ul>
-<li><a href="/services/archive/d/gribapi/fm92/grib1/">GRIB edition 1 </a></li><li><a href="/services/archive/d/gribapi/fm92/grib2/">GRIB edition 2 </a></li><li><a href="/services/archive/d/gribapi/keys/">Edition independent</a></li></ul>
-</li></ul>
-<h2><a class="anchor" name="overview">
-Overview</a></h2>
-The grib_api is the application program interface developed at ECMWF to provide an easy and realiable way for encoding and decoding WMO FM-92 GRIB <a href="http://www.wmo.ch/pages/prog/www/WMOCodes/Manual/WMO306_vol-I-2-PartB-GRIB1.pdf">edition 1</a> and <a href="http://www.wmo.ch/pages/prog/www/DPS/grib-2.html">edition 2</a> messages.<p>
-With the grib_api library, that is written entirely in C, some command line <a class="el" href="tools.html">tools</a> are provided to give a quick way to manipulate grib data. Moreover a Fortran interface 90 is available giving access to the main features of the C library.<p>
-The library is designed to access and modify messages in both editions with the same <a class="el" href="group__get__set.html">function calls</a> using a set of <a class="el" href="keys.html">Grib API keys</a> to access the coded information ( examples: <a class="el" href="get_8f90-example.html">get.f90</a> <a class="el" href="set_8f90-example.html">set.f90</a>, <a class="el" href="get_8c-example.html">get.c</a>, <a class="el" href="set_8c-example.html">set.c</a>, <a class="el" href="gri [...]
-The <a class="el" href="keys.html">keys</a> available for a message are different depending not only on the edition but also and mainly on the type of each message and the information it contains. A list of all the available keys in a message can be obtained dynamically using the library as shown in <a class="el" href="keys__iterator_8c-example.html">keys_iterator.c</a> or using the <a class="el" href="tools.html">Grib tools</a> as shown in <a class="el" href="grib_dump.html">grib_dump</ [...]
-GRIB API will replace the GRIBEX function and a <a href="/publications/manuals/grib_api/gribexkeys/callGribex.html">table of conversion</a> between the numeric encoding of GRIBEX and the alphanumeric keys of GRIB API is provided to help the migration.<p>
-To learn how to use the grib_api we recommend the user works through the <a class="el" href="grib_examples.html">Grib API examples</a>.<p>
-Reference manuals are also provided for the C library (organized in <a class="el" href="modules.html">C interface</a>) and for the Fortran 90 interface.<p>
-<a class="el" href="installation.html">Installation</a> instructions are also provided.<h2><a class="anchor" name="ecwf_users">
-Compiling and linking on ECMWF platforms</a></h2>
-The grib API is installed on all systems at ECMWF with both its components: the library and the tools.<br>
- The latest version of the tools is always available in the system PATH so that users can begin using the tools immediately by typing directly the tool name (<a class="el" href="tools.html">see tools reference</a>).<br>
- The latest version of the library is also installed on any platform and it is available for linking through the following two environment variables: $GRIB_API_INCLUDE $GRIB_API_LIB.<br>
-<br>
- Here is a short summary on how to compile and link on ECMWF systems:<br>
-<p>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li class="current"><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title"><a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a> </div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><h1><a class="anchor" id="overview"></a>
+Overview</h1>
+<p><b>ecCodes</b> is a package developed by ECMWF which provides an application programming interface and a set of tools for decoding and encoding messages in the following formats:</p>
 <ul>
-<li>ecgate, hpce, hpcf <div class="fragment"><pre class="fragment">
-> xlc -o foo foo.c $GRIB_API_INCLUDE $GRIB_API_LIB -lm
-</pre></div> <br>
- <div class="fragment"><pre class="fragment">
-> xlf90 -o foo foo.f90 $GRIB_API_INCLUDE $GRIB_API_LIB
-</pre></div><br>
-</li><li>linux cluster (C programs) <div class="fragment"><pre class="fragment">
-> gcc -m32 -o foo foo.c $GRIB_API_INCLUDE $GRIB_API_LIB 
-</pre></div> <br>
-</li><li>workstation (C programs) <div class="fragment"><pre class="fragment">
-> gcc -o foo foo.c $GRIB_API_INCLUDE $GRIB_API_LIB 
-</pre></div> <br>
-</li><li>linux cluster,workstation (Fortran programs) <div class="fragment"><pre class="fragment">
-> use pgf90
-> pgf90 -o foo foo.f90 $GRIB_API_INCLUDE $GRIB_API_LIB
-</pre></div><br>
- </li></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+<li>WMO FM-92 GRIB edition 1 and edition 2 (<a href="http://www.wmo.int/pages/prog/www/WMOCodes/Guides/GRIB/Introduction_GRIB1-GRIB2.pdf">See WMO document</a>)</li>
+<li>WMO FM-94 BUFR edition 3 and edition 4 (<a href="http://www.wmo.int/pages/prog/www/WMOCodes/Guides/BUFRCREX/Layer1-2-English.pdf">See WMO document</a>)</li>
+<li>WMO GTS <a href="http://www.wmo.int/pages/prog/www/WIS/Publications/WMO_386/WMO_386_Vol_I_en.pdf">abbreviated header</a> (only decoding in this release).</li>
+</ul>
+<p>A useful set of <a href="https://software.ecmwf.int/wiki/display/ECC/Command+line+tools">command line tools</a> provide quick access to the messages. C, Fortran 90 and Python interfaces provide access to the main ecCodes functionality.</p>
+<p>ecCodes is an evolution of <a href="https://software.ecmwf.int/wiki/display/GRIB/Home">GRIB-API</a>. It is designed to provide the user with a simple set of functions to access data from several formats with a key/value approach.</p>
+<p>For GRIB encoding and decoding, the GRIB-API functionality is provided fully in ecCodes with the same user interface and behaviour. Interfaces for C, Fortran 90 and Python are all maintained as in GRIB-API. However, the GRIB-API Fortran 77 interface is no longer available.</p>
+<p>In addition, a new set of functions with the prefix "codes_" is provided to operate on all the supported message formats. These functions have the same interface and behaviour as the "grib_" functions.</p>
+<p>A selection of GRIB-API tools has been included in ecCodes (<a href="https://software.ecmwf.int/wiki/display/ECC/GRIB+tools">ecCodes GRIB tools</a>), while new tools are available for the BUFR (<a href="https://software.ecmwf.int/wiki/display/ECC/BUFR+tools">ecCodes BUFR tools</a>) and GTS formats. The new tools have been developed to be as similar as possible to the existing GRIB-API tools maintaining, where possible, the same options and behaviour. A significant difference compared  [...]
+<p>Migration from GRIB-API to ecCodes is expected to be transparent for current GRIB-API users. The GRIB-API library is fully available in the ecCodes library. Users are encouraged to test their GRIB-API applications by linking with the ecCodes library and to provide feedback of any problems encountered. For further details see <a href="https://software.ecmwf.int/wiki/display/ECC/GRIB-API+migration">here</a>.</p>
+<dl class="section warning"><dt>Warning</dt><dd>Name clashes prevent a simultaneous use of the GRIB-API and ecCodes libraries. For this reason, and to simplify the software maintenance, it is planned to replace GRIB-API by ecCodes.<br/>
+ The functions with the "grib_" prefix will, however, be maintained in ecCodes.</dd></dl>
+<h6></h6>
+<p>Reference manuals are also provided for the C library (organized in <a class="el" href="modules.html">C interface</a>), for the <a class="el" href="classeccodes.html">Fortran 90 interface</a> and for the <a class="el" href="namespaceec_codes.html">Python interface</a>.</p>
+<p><a href="https://software.ecmwf.int/wiki/display/ECC/ecCodes+installation">Installation instructions</a> are also provided. </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
 </body>
 </html>
diff --git a/html/installation.html b/html/installation.html
index f047092..42fe995 100644
--- a/html/installation.html
+++ b/html/installation.html
@@ -1,37 +1,130 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: grib_api installation</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: GRIB API installation</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
-<h1><a class="anchor" name="installation">grib_api installation</a></h1>The grib_api installation is based on the standard configure utility. It is tested on several platforms and with several compilers. However for some platforms modifications to the installation engine may be required. If you encounter any problem during the installation procedure please send an e-mail with your problem to <a href="mailto:Software.Support at ecmwf.int">Software.Support at ecmwf.int</a>.<p>
-The only required package for a standard installation is <a href="http://www.ece.uvic.ca/~mdadams/jasper/">jasper</a> which enables the jpeg2000 packing/unpacking algorithm. It is possible to build grib_api without jasper, by using the --disable-jpeg configure option, but to install a fully functional library, its download is recommended.<h2><a class="anchor" name="standard_installation">
-Standard installation</a></h2>
-<ol type=1>
-<li>Download grib_api from <a href="http://www.ecmwf.int/products/data/software/download/grib_api.html">here</a>.</li><li>Unpack distribution: <div class="fragment"><pre class="fragment">  > gunzip grib_api-X.X.X.tar.gz
-  > tar xf grib_api-X.X.X.tar
-</pre></div></li><li>Create the directory where to install grib_api say <em>grib_api_dir</em> <div class="fragment"><pre class="fragment">  > mkdir grib_api_dir
-</pre></div></li><li>Run the configure in the grib_api-X.X.X <div class="fragment"><pre class="fragment">  > cd grib_api-X.X.X
-  > ./configure --prefix=grib_api_dir 
-</pre></div></li><li>make, check and install <div class="fragment"><pre class="fragment">  > make
-  ...
-  > make check
-  ...
-  > make install
-  ...
-</pre></div> </li></ol>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">GRIB API installation </div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>GRIB API installation is based on the standard configure utility. It is tested on several platforms and with several compilers. However for some platforms modifications to the installation engine may be required. If you encounter any problem during the installation procedure please send an e-mail with your problem to <a href="#" onclick="location.href='mai'+'lto:'+'Sof'+'tw'+'are'+'.S'+'upp'+'or'+'t at e'+'cm'+'wf.'+'in'+'t'; return false;">Softw<span style="displa [...]
+<p>The only required package for a standard installation is <a href="http://www.ece.uvic.ca/~mdadams/jasper/">jasper</a> which enables the jpeg2000 packing/unpacking algorithm. It is possible to build GRIB API without jasper, by using the –disable-jpeg configure option, but to install a fully functional library, its download is recommended.</p>
+<h1><a class="anchor" id="standard_installation"></a>
+Standard installation</h1>
+<ol type="1">
+<li>Download GRIB API from <a href="http://www.ecmwf.int/products/data/software/download/grib_api.html">ECMWF web site</a>.</li>
+<li>Unpack distribution: <div class="fragment"><div class="line">> gunzip grib_api-X.X.X.tar.gz</div>
+<div class="line">> tar xf grib_api-X.X.X.tar</div>
+</div><!-- fragment --></li>
+<li>Create the directory where to install GRIB API say <em>grib_api_dir</em> <div class="fragment"><div class="line">> mkdir grib_api_dir</div>
+</div><!-- fragment --></li>
+<li>Run the configure in the grib_api-X.X.X <div class="fragment"><div class="line">> cd grib_api-X.X.X</div>
+<div class="line">> ./configure --prefix=grib_api_dir </div>
+</div><!-- fragment --> Please give the full path of grib_api_dir to the prefix option.</li>
+<li>make, check and install <div class="fragment"><div class="line">> make</div>
+<div class="line">...</div>
+<div class="line">> make check</div>
+<div class="line">...</div>
+<div class="line">> make install</div>
+<div class="line">...</div>
+</div><!-- fragment --></li>
+</ol>
+<h1><a class="anchor" id="parameters_installation"></a>
+Parameter files installation</h1>
+<p>The following instructions are valid only if you have already installed GRIB API and you need to update the current parameter files. The parameter files should work with any version of GRIB API.</p>
+<p>To install the parameter files, then please unpack the downloaded archive in the definition files folder of your GRIB API installation, i.e.:</p>
+<div class="fragment"><div class="line">> cd definitions</div>
+<div class="line">> gunzip grib_api_parameters-vX.tar.gz</div>
+<div class="line">> tar xf grib_api_parameters-vX.tar</div>
+</div><!-- fragment --><p>This process will overwrite any changes you might have done to the parameter files, so please do make a backup of the definition files folder before installing the downloaded GRIB API parameter files.</p>
+<h1><a class="anchor" id="definitions_installation"></a>
+Definition files installation</h1>
+<p>The following instructions are valid only if you have already installed GRIB API and you need to update the definition files compatible with the same library version you have already installed. Please note that using the definition files with a version of the library different from the one indicated as compatible will cause some problems in decoding/encoding.</p>
+<ol type="1">
+<li>Download GRIB API definition files from <a href="http://www.ecmwf.int/products/data/software/download/grib_api.html#definitions">ECMWF web site</a>.</li>
+<li>Unpack distribution: <div class="fragment"><div class="line">> gunzip grib_def-X.X.X.X.tar.gz</div>
+<div class="line">> tar xf grib_def-X.X.X.X.tar</div>
+</div><!-- fragment --></li>
+<li>Run the installation script from the grib_def-X.X.X.X directory: <div class="fragment"><div class="line">./installDefinitions.sh grib_api_dir def_files_dir</div>
+</div><!-- fragment --> where grib_api_dir is the path to a working installation of GRIB API and def_files_dir is the directory where you want to install the new version of the defintion files. </li>
+</ol>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
 </body>
 </html>
diff --git a/html/interfaceeccodes_1_1codes__get.html b/html/interfaceeccodes_1_1codes__get.html
new file mode 100644
index 0000000..171f59b
--- /dev/null
+++ b/html/interfaceeccodes_1_1codes__get.html
@@ -0,0 +1,626 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: eccodes::codes_get Interface Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="classeccodes.html">eccodes</a></li><li class="navelem"><a class="el" href="interfaceeccodes_1_1codes__get.html">codes_get</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">eccodes::codes_get Interface Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Get the value for a key from a grib message.  
+ <a href="interfaceeccodes_1_1codes__get.html#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a15e9f187ba45e4a334f270884c59651e"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get.html#a15e9f187ba45e4a334f270884c59651e">codes_get_int</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a15e9f187ba45e4a334f270884c59651e"><td class="mdescLeft"> </td><td class="mdescRight">Get the integer value of a key from a message.  <a href="#a15e9f187ba45e4a334f270884c59651e">More...</a><br/></td></tr>
+<tr class="separator:a15e9f187ba45e4a334f270884c59651e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad85e9d6d052fdcbfade2d201357e391d"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get.html#ad85e9d6d052fdcbfade2d201357e391d">codes_get_long</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:ad85e9d6d052fdcbfade2d201357e391d"><td class="mdescLeft"> </td><td class="mdescRight">Get the integer value of a key from a message.  <a href="#ad85e9d6d052fdcbfade2d201357e391d">More...</a><br/></td></tr>
+<tr class="separator:ad85e9d6d052fdcbfade2d201357e391d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab6c505dfdf5a75f51c07683abed39b68"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get.html#ab6c505dfdf5a75f51c07683abed39b68">codes_get_real4</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:ab6c505dfdf5a75f51c07683abed39b68"><td class="mdescLeft"> </td><td class="mdescRight">Get the real(4) value of a key from a message.  <a href="#ab6c505dfdf5a75f51c07683abed39b68">More...</a><br/></td></tr>
+<tr class="separator:ab6c505dfdf5a75f51c07683abed39b68"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2ca22327e21aca686d29f8953e235839"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get.html#a2ca22327e21aca686d29f8953e235839">codes_get_real8</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a2ca22327e21aca686d29f8953e235839"><td class="mdescLeft"> </td><td class="mdescRight">Get the real(8) value of a key from a message.  <a href="#a2ca22327e21aca686d29f8953e235839">More...</a><br/></td></tr>
+<tr class="separator:a2ca22327e21aca686d29f8953e235839"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9b71df8830b162b7773cf4d1446b4303"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get.html#a9b71df8830b162b7773cf4d1446b4303">codes_get_string</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a9b71df8830b162b7773cf4d1446b4303"><td class="mdescLeft"> </td><td class="mdescRight">Get the character value of a key from a message.  <a href="#a9b71df8830b162b7773cf4d1446b4303">More...</a><br/></td></tr>
+<tr class="separator:a9b71df8830b162b7773cf4d1446b4303"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adee61373d840f0f6a73be5d574a47a1e"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get.html#adee61373d840f0f6a73be5d574a47a1e">codes_get_byte_array</a> (msgid, key, value, length, status)</td></tr>
+<tr class="memdesc:adee61373d840f0f6a73be5d574a47a1e"><td class="mdescLeft"> </td><td class="mdescRight">Get the array of bytes (character) for a key from a message.  <a href="#adee61373d840f0f6a73be5d574a47a1e">More...</a><br/></td></tr>
+<tr class="separator:adee61373d840f0f6a73be5d574a47a1e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a620d907f796a466b9b849be12e96a274"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get.html#a620d907f796a466b9b849be12e96a274">codes_get_int_array</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a620d907f796a466b9b849be12e96a274"><td class="mdescLeft"> </td><td class="mdescRight">Get the integer array of values for a key from a message.  <a href="#a620d907f796a466b9b849be12e96a274">More...</a><br/></td></tr>
+<tr class="separator:a620d907f796a466b9b849be12e96a274"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae1df5b7389172122fe2c84c4156f18d0"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get.html#ae1df5b7389172122fe2c84c4156f18d0">codes_get_real4_array</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:ae1df5b7389172122fe2c84c4156f18d0"><td class="mdescLeft"> </td><td class="mdescRight">Get the real(4) array of values for a key from a message.  <a href="#ae1df5b7389172122fe2c84c4156f18d0">More...</a><br/></td></tr>
+<tr class="separator:ae1df5b7389172122fe2c84c4156f18d0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4b28e570e54dad5a779e0452d3ed66d4"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get.html#a4b28e570e54dad5a779e0452d3ed66d4">codes_get_real8_array</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a4b28e570e54dad5a779e0452d3ed66d4"><td class="mdescLeft"> </td><td class="mdescRight">Get the real(8) array of values for a key from a message.  <a href="#a4b28e570e54dad5a779e0452d3ed66d4">More...</a><br/></td></tr>
+<tr class="separator:a4b28e570e54dad5a779e0452d3ed66d4"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Get the value for a key from a grib message. </p>
+<p>Given a <em>gribid</em> and <em>key</em> as input a <em>value</em> for the <em>key</em> is returned. In some cases the <em>value</em> can be an array rather than a scalar. As examples of array keys we have "values","pl", "pv" respectively the data values, the list of number of points for each latitude in a reduced grid and the list of vertical levels. In these cases the <em>value</em> array must be allocated by the caller and their required dimension can be obtained with <a class="el" [...]
+ The <em>value</em> can be integer(4), real(4), real(8), character. Although each key has its own native type, a key of type integer can be retrieved (with <a class="el" href="interfaceeccodes_1_1codes__get.html">codes_get</a>) as real(4), real(8) or character. Analogous conversions are always provided when possible. Illegal conversions are real to integer and character to any other type.</p>
+<p>The <em>gribid</em> references to a grib message loaded in memory.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_get_keys" target="_blank">grib_get_keys.f90</a>, <a href="https://software.ecmwf.int/wiki/display/ECC/grib_print_data" target="_blank">grib_print_data.f90</a></p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classeccodes.html#a5533c6fb8bd7d8f622c89484b7bbdfb6" title="Load in memory a message from a file. ">codes_new_from_file</a>, <a class="el" href="classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7" title="Free the memory for the message referred as msgid. ">codes_release</a>, <a class="el" href="interfaceeccodes_1_1codes__set.html" title="Set the value for a key in a grib message. ">codes_set</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">value</td><td>value can be a scalar or array of integer(4),real(4),real(8),character </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+</div><h2 class="groupheader">Member Function/Subroutine Documentation</h2>
+<a class="anchor" id="adee61373d840f0f6a73be5d574a47a1e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_byte_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(inout) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>length</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the array of bytes (character) for a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>character(len=1) array of byte values </td></tr>
+    <tr><td class="paramname">length</td><td>(optional) output: number of values retrieved </td></tr>
+    <tr><td class="paramname">status</td><td>(optional) CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a15e9f187ba45e4a334f270884c59651e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_int </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind = kindofint), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the integer value of a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>the integer(4) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a620d907f796a466b9b849be12e96a274"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_int_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), dimension(:), intent(inout), allocatable </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the integer array of values for a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.<br/>
+ Note: This function supports the <b>allocatable</b> array attribute</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>integer(4) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ad85e9d6d052fdcbfade2d201357e391d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_long </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind = kindoflong), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the integer value of a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>the integer(4) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ab6c505dfdf5a75f51c07683abed39b68"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_real4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindoffloat), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the real(4) value of a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>the real(4) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae1df5b7389172122fe2c84c4156f18d0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_real4_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindoffloat), dimension(:), intent(inout), allocatable </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the real(4) array of values for a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.<br/>
+ Note: This function supports the <b>allocatable</b> array attribute</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>real(4) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a2ca22327e21aca686d29f8953e235839"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_real8 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the real(8) value of a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>the real(8) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a4b28e570e54dad5a779e0452d3ed66d4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_real8_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(inout), allocatable </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the real(8) array of values for a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.<br/>
+ Note: This function supports the <b>allocatable</b> array attribute</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>real(8) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a9b71df8830b162b7773cf4d1446b4303"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_string </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the character value of a key from a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>the real(8) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this interface was generated from the following file:<ul>
+<li>eccodes_f90.f90</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/interfaceeccodes_1_1codes__get__element.html b/html/interfaceeccodes_1_1codes__get__element.html
new file mode 100644
index 0000000..dc96686
--- /dev/null
+++ b/html/interfaceeccodes_1_1codes__get__element.html
@@ -0,0 +1,373 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: eccodes::codes_get_element Interface Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="classeccodes.html">eccodes</a></li><li class="navelem"><a class="el" href="interfaceeccodes_1_1codes__get__element.html">codes_get_element</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">eccodes::codes_get_element Interface Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Get a value of specified index from an array key.  
+ <a href="interfaceeccodes_1_1codes__get__element.html#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a95426fb251262a83fbdcc5ae86968b4b"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get__element.html#a95426fb251262a83fbdcc5ae86968b4b">codes_get_real4_element</a> (msgid, key, index, value, status)</td></tr>
+<tr class="memdesc:a95426fb251262a83fbdcc5ae86968b4b"><td class="mdescLeft"> </td><td class="mdescRight">Get a real(4) value of specified index from an array key.  <a href="#a95426fb251262a83fbdcc5ae86968b4b">More...</a><br/></td></tr>
+<tr class="separator:a95426fb251262a83fbdcc5ae86968b4b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac9ceb83558433f918eac6aeb00b620af"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get__element.html#ac9ceb83558433f918eac6aeb00b620af">codes_get_real8_element</a> (msgid, key, index, value, status)</td></tr>
+<tr class="memdesc:ac9ceb83558433f918eac6aeb00b620af"><td class="mdescLeft"> </td><td class="mdescRight">Get a real(8) value of specified index from an array key.  <a href="#ac9ceb83558433f918eac6aeb00b620af">More...</a><br/></td></tr>
+<tr class="separator:ac9ceb83558433f918eac6aeb00b620af"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0587c719213f5eb38afbb80cb30a2b8b"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get__element.html#a0587c719213f5eb38afbb80cb30a2b8b">codes_get_real4_elements</a> (msgid, key, index, value, status)</td></tr>
+<tr class="memdesc:a0587c719213f5eb38afbb80cb30a2b8b"><td class="mdescLeft"> </td><td class="mdescRight">Get the real(4) values whose indexes are stored in the array "index" from an array key.  <a href="#a0587c719213f5eb38afbb80cb30a2b8b">More...</a><br/></td></tr>
+<tr class="separator:a0587c719213f5eb38afbb80cb30a2b8b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1e550ade4f5781f19718fa8bdec802f9"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get__element.html#a1e550ade4f5781f19718fa8bdec802f9">codes_get_real8_elements</a> (msgid, key, index, value, status)</td></tr>
+<tr class="memdesc:a1e550ade4f5781f19718fa8bdec802f9"><td class="mdescLeft"> </td><td class="mdescRight">Get the real(8) values whose indexes are stored in the array "index" from an array key.  <a href="#a1e550ade4f5781f19718fa8bdec802f9">More...</a><br/></td></tr>
+<tr class="separator:a1e550ade4f5781f19718fa8bdec802f9"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Get a value of specified index from an array key. </p>
+<p>Given an ID and key name as input a value corresponding to the given index is returned. The index is zero based i.e. the first element has zero index, the second element index one and so on. If the parameter index is an array all the values correspondig to the indexes list is returned. The ID references to a message loaded in memory.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_nearest" target="_blank">grib_nearest.f90</a></p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classeccodes.html#a5533c6fb8bd7d8f622c89484b7bbdfb6" title="Load in memory a message from a file. ">codes_new_from_file</a>, <a class="el" href="classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7" title="Free the memory for the message referred as msgid. ">codes_release</a>, <a class="el" href="interfaceeccodes_1_1codes__get.html" title="Get the value for a key from a grib message. ">codes_get</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>ID of the message loaded in memory </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>index can be a scalar or array of integer(4) </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">value</td><td>value can be a scalar or array of integer(4),real(4),real(8) </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+</div><h2 class="groupheader">Member Function/Subroutine Documentation</h2>
+<a class="anchor" id="a95426fb251262a83fbdcc5ae86968b4b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_real4_element </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindoffloat), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get a real(4) value of specified index from an array key. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">index</td><td>integer(4) index </td></tr>
+    <tr><td class="paramname">value</td><td>real(4) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a0587c719213f5eb38afbb80cb30a2b8b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_real4_elements </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), dimension(:), intent(in) </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindoffloat), dimension(:), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the real(4) values whose indexes are stored in the array "index" from an array key. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">index</td><td>integer(4) array indexes </td></tr>
+    <tr><td class="paramname">value</td><td>real(4) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ac9ceb83558433f918eac6aeb00b620af"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_real8_element </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get a real(8) value of specified index from an array key. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">index</td><td>integer(4) index </td></tr>
+    <tr><td class="paramname">value</td><td>real(8) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a1e550ade4f5781f19718fa8bdec802f9"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_real8_elements </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), dimension(:), intent(in) </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the real(8) values whose indexes are stored in the array "index" from an array key. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">index</td><td>integer(4) array index </td></tr>
+    <tr><td class="paramname">value</td><td>real(8) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this interface was generated from the following file:<ul>
+<li>eccodes_f90.f90</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/interfaceeccodes_1_1codes__get__message__size.html b/html/interfaceeccodes_1_1codes__get__message__size.html
new file mode 100644
index 0000000..f66ffac
--- /dev/null
+++ b/html/interfaceeccodes_1_1codes__get__message__size.html
@@ -0,0 +1,218 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: eccodes::codes_get_message_size Interface Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="classeccodes.html">eccodes</a></li><li class="navelem"><a class="el" href="interfaceeccodes_1_1codes__get__message__size.html">codes_get_message_size</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">eccodes::codes_get_message_size Interface Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Get the size of a coded message.  
+ <a href="interfaceeccodes_1_1codes__get__message__size.html#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:af4ff60a9bd8d0c1c0173242897db4816"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get__message__size.html#af4ff60a9bd8d0c1c0173242897db4816">codes_get_message_size_int</a> (msgid, nbytes, status)</td></tr>
+<tr class="memdesc:af4ff60a9bd8d0c1c0173242897db4816"><td class="mdescLeft"> </td><td class="mdescRight">Get the size of a coded message.  <a href="#af4ff60a9bd8d0c1c0173242897db4816">More...</a><br/></td></tr>
+<tr class="separator:af4ff60a9bd8d0c1c0173242897db4816"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a032408e4f1a842a42fca23218ec85a4d"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get__message__size.html#a032408e4f1a842a42fca23218ec85a4d">codes_get_message_size_size_t</a> (msgid, nbytes, status)</td></tr>
+<tr class="memdesc:a032408e4f1a842a42fca23218ec85a4d"><td class="mdescLeft"> </td><td class="mdescRight">Get the size of a coded message.  <a href="#a032408e4f1a842a42fca23218ec85a4d">More...</a><br/></td></tr>
+<tr class="separator:a032408e4f1a842a42fca23218ec85a4d"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Get the size of a coded message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">nbytes</td><td>size in bytes of the message </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+</div><h2 class="groupheader">Member Function/Subroutine Documentation</h2>
+<a class="anchor" id="af4ff60a9bd8d0c1c0173242897db4816"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_message_size_int </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the size of a coded message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">nbytes</td><td>size in bytes of the message </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a032408e4f1a842a42fca23218ec85a4d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_message_size_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(out) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the size of a coded message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">nbytes</td><td>size in bytes of the message </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this interface was generated from the following file:<ul>
+<li>eccodes_f90.f90</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/interfaceeccodes_1_1codes__get__size.html b/html/interfaceeccodes_1_1codes__get__size.html
new file mode 100644
index 0000000..8cda509
--- /dev/null
+++ b/html/interfaceeccodes_1_1codes__get__size.html
@@ -0,0 +1,236 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: eccodes::codes_get_size Interface Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="classeccodes.html">eccodes</a></li><li class="navelem"><a class="el" href="interfaceeccodes_1_1codes__get__size.html">codes_get_size</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">eccodes::codes_get_size Interface Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Get the size of an array key.  
+ <a href="interfaceeccodes_1_1codes__get__size.html#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ac566c4909f1ea554517d256a780cf87f"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get__size.html#ac566c4909f1ea554517d256a780cf87f">codes_get_size_int</a> (msgid, key, size, status)</td></tr>
+<tr class="memdesc:ac566c4909f1ea554517d256a780cf87f"><td class="mdescLeft"> </td><td class="mdescRight">Get the size of an array key.  <a href="#ac566c4909f1ea554517d256a780cf87f">More...</a><br/></td></tr>
+<tr class="separator:ac566c4909f1ea554517d256a780cf87f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:accd5b68ef585873b05a3f61d7dda3f3a"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__get__size.html#accd5b68ef585873b05a3f61d7dda3f3a">codes_get_size_long</a> (msgid, key, size, status)</td></tr>
+<tr class="memdesc:accd5b68ef585873b05a3f61d7dda3f3a"><td class="mdescLeft"> </td><td class="mdescRight">Get the size of an array key.  <a href="#accd5b68ef585873b05a3f61d7dda3f3a">More...</a><br/></td></tr>
+<tr class="separator:accd5b68ef585873b05a3f61d7dda3f3a"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Get the size of an array key. </p>
+<p>To get the size of a key representing an array.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>name of the key </td></tr>
+    <tr><td class="paramname">size</td><td>size of the array key </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+</div><h2 class="groupheader">Member Function/Subroutine Documentation</h2>
+<a class="anchor" id="ac566c4909f1ea554517d256a780cf87f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_size_int </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the size of an array key. </p>
+<p>To get the size of a key representing an array.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>name of the key </td></tr>
+    <tr><td class="paramname">size</td><td>size of the array key </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="accd5b68ef585873b05a3f61d7dda3f3a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_get_size_long </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindoflong), intent(out) </td>
+          <td class="paramname"><em>size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the size of an array key. </p>
+<p>To get the size of a key representing an array.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>name of the key </td></tr>
+    <tr><td class="paramname">size</td><td>size of the array key </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this interface was generated from the following file:<ul>
+<li>eccodes_f90.f90</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/interfaceeccodes_1_1codes__grib__find__nearest.html b/html/interfaceeccodes_1_1codes__grib__find__nearest.html
new file mode 100644
index 0000000..7ef37af
--- /dev/null
+++ b/html/interfaceeccodes_1_1codes__grib__find__nearest.html
@@ -0,0 +1,429 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: eccodes::codes_grib_find_nearest Interface Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="classeccodes.html">eccodes</a></li><li class="navelem"><a class="el" href="interfaceeccodes_1_1codes__grib__find__nearest.html">codes_grib_find_nearest</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">eccodes::codes_grib_find_nearest Interface Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Find the nearest point/points of a given latitude/longitude point.  
+ <a href="interfaceeccodes_1_1codes__grib__find__nearest.html#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a036ae036cc766718ad224851d47d99a2"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__grib__find__nearest.html#a036ae036cc766718ad224851d47d99a2">codes_grib_find_nearest_single</a> (gribid, is_lsm, inlat, inlon, outlat, outlon, value, distance, index, status)</td></tr>
+<tr class="memdesc:a036ae036cc766718ad224851d47d99a2"><td class="mdescLeft"> </td><td class="mdescRight">Find the nearest point of a given latitude/longitude point.  <a href="#a036ae036cc766718ad224851d47d99a2">More...</a><br/></td></tr>
+<tr class="separator:a036ae036cc766718ad224851d47d99a2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad4b53c47aecc5fa5ae43c95357d2d690"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__grib__find__nearest.html#ad4b53c47aecc5fa5ae43c95357d2d690">codes_grib_find_nearest_four_single</a> (gribid, is_lsm, inlat, inlon, outlat, outlon, value, distance, index, status)</td></tr>
+<tr class="memdesc:ad4b53c47aecc5fa5ae43c95357d2d690"><td class="mdescLeft"> </td><td class="mdescRight">Find the 4 nearest points of a latitude longitude point.  <a href="#ad4b53c47aecc5fa5ae43c95357d2d690">More...</a><br/></td></tr>
+<tr class="separator:ad4b53c47aecc5fa5ae43c95357d2d690"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acb92b7a78966c0b2f53ee6e288bff673"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__grib__find__nearest.html#acb92b7a78966c0b2f53ee6e288bff673">codes_grib_find_nearest_multiple</a> (gribid, is_lsm, inlats, inlons, outlats, outlons, values, distances, indexes, status)</td></tr>
+<tr class="memdesc:acb92b7a78966c0b2f53ee6e288bff673"><td class="mdescLeft"> </td><td class="mdescRight">Find the nearest point of a set of points whose latitudes and longitudes are given in the inlats, inlons arrays respectively.  <a href="#acb92b7a78966c0b2f53ee6e288bff673">More...</a><br/></td></tr>
+<tr class="separator:acb92b7a78966c0b2f53ee6e288bff673"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Find the nearest point/points of a given latitude/longitude point. </p>
+<p>The value in the nearest point (or the four nearest points) is returned as well as the zero based index (which can be used in <a class="el" href="interfaceeccodes_1_1codes__get__element.html">codes_get_element</a>) and its distance from the given point using the following formula radius * acos( sin(lat1)*sin(lat2)+cos(lat1)*cos(lat2)*cos(lon1-lon2) ).</p>
+<p>If the is_lsm flag is .true. the input field gribid is considered as a land sea mask and the nearest land point is returned.<br/>
+ The nearest land point among the four neighbours is:</p>
+<ul>
+<li>the nearest point with land sea mask value >= 0.5</li>
+<li>the nearest without any other condition if all the four have land sea mask value <0.5.</li>
+</ul>
+<p>Arrays (real(8)) of latitude/longitude can be provided to find with one call the values,indexes and distances for all the lat/lon points listed in the arrays.</p>
+<p>If a single latitude/longitude point is provided and outlat,outlon,value,distance,index are defined as arrays with four elements the lat/lon coordinates and values, distances and indexes of the four nearest points are returned.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_nearest" target="_blank">grib_nearest.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">is_lsm</td><td>.true. if the nearest land point is required otherwise .false. </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">inlat</td><td>latitude of the point in degrees </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">inlon</td><td>longitudes of the point in degrees </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">outlat</td><td>latitude of the nearest point in degrees </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">outlon</td><td>longitude of the nearest point in degrees </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">distance</td><td>distance between the given point and its nearest (in km) </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">index</td><td>zero based index </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">value</td><td>value of the field in the nearest point </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+</div><h2 class="groupheader">Member Function/Subroutine Documentation</h2>
+<a class="anchor" id="ad4b53c47aecc5fa5ae43c95357d2d690"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_grib_find_nearest_four_single </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">logical, intent(in) </td>
+          <td class="paramname"><em>is_lsm</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(in) </td>
+          <td class="paramname"><em>inlat</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(in) </td>
+          <td class="paramname"><em>inlon</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(4), intent(out) </td>
+          <td class="paramname"><em>outlat</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(4), intent(out) </td>
+          <td class="paramname"><em>outlon</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(4), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(4), intent(out) </td>
+          <td class="paramname"><em>distance</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind = kindofint), dimension(4), intent(out) </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Find the 4 nearest points of a latitude longitude point. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the GRIB loaded in memory </td></tr>
+    <tr><td class="paramname">is_lsm</td><td>.true. if the nearest land point is required otherwise .false. </td></tr>
+    <tr><td class="paramname">inlat</td><td>latitude of the point </td></tr>
+    <tr><td class="paramname">inlon</td><td>longitudes of the point </td></tr>
+    <tr><td class="paramname">outlat</td><td>latitude of the nearest point </td></tr>
+    <tr><td class="paramname">outlon</td><td>longitude of the nearest point </td></tr>
+    <tr><td class="paramname">distance</td><td>distance between the given point and its nearest </td></tr>
+    <tr><td class="paramname">index</td><td>zero based index </td></tr>
+    <tr><td class="paramname">value</td><td>value of the field in the nearest point </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="acb92b7a78966c0b2f53ee6e288bff673"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_grib_find_nearest_multiple </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">logical, intent(in) </td>
+          <td class="paramname"><em>is_lsm</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(in) </td>
+          <td class="paramname"><em>inlats</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(in) </td>
+          <td class="paramname"><em>inlons</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(out) </td>
+          <td class="paramname"><em>outlats</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(out) </td>
+          <td class="paramname"><em>outlons</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(out) </td>
+          <td class="paramname"><em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(out) </td>
+          <td class="paramname"><em>distances</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind = kindofint), dimension(:), intent(out) </td>
+          <td class="paramname"><em>indexes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Find the nearest point of a set of points whose latitudes and longitudes are given in the inlats, inlons arrays respectively. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">is_lsm</td><td>.true. if the nearest land point is required otherwise .false. </td></tr>
+    <tr><td class="paramname">inlats</td><td>input real(8) array of the latitudes of the points </td></tr>
+    <tr><td class="paramname">inlons</td><td>input real(8) array of the longitudes of the points </td></tr>
+    <tr><td class="paramname">outlats</td><td>output real(8) array of the latitudes of the nearest points </td></tr>
+    <tr><td class="paramname">outlons</td><td>output real(8) array of the longitudes of the nearest points </td></tr>
+    <tr><td class="paramname">distances</td><td>output real(8) array of the distances </td></tr>
+    <tr><td class="paramname">indexes</td><td>output integer(4) array of the zero based indexes </td></tr>
+    <tr><td class="paramname">values</td><td>output real(8) array of the values </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a036ae036cc766718ad224851d47d99a2"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_grib_find_nearest_single </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">logical, intent(in) </td>
+          <td class="paramname"><em>is_lsm</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(in) </td>
+          <td class="paramname"><em>inlat</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(in) </td>
+          <td class="paramname"><em>inlon</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(out) </td>
+          <td class="paramname"><em>outlat</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(out) </td>
+          <td class="paramname"><em>outlon</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(out) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(out) </td>
+          <td class="paramname"><em>distance</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind = kindofint), intent(out) </td>
+          <td class="paramname"><em>index</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Find the nearest point of a given latitude/longitude point. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">is_lsm</td><td>.true. if the nearest land point is required otherwise .false. </td></tr>
+    <tr><td class="paramname">inlat</td><td>latitude of the point </td></tr>
+    <tr><td class="paramname">inlon</td><td>longitudes of the point </td></tr>
+    <tr><td class="paramname">outlat</td><td>latitude of the nearest point </td></tr>
+    <tr><td class="paramname">outlon</td><td>longitude of the nearest point </td></tr>
+    <tr><td class="paramname">distance</td><td>distance between the given point and its nearest </td></tr>
+    <tr><td class="paramname">index</td><td>zero based index </td></tr>
+    <tr><td class="paramname">value</td><td>value of the field in the nearest point </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this interface was generated from the following file:<ul>
+<li>eccodes_f90.f90</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/interfaceeccodes_1_1codes__grib__get__data.html b/html/interfaceeccodes_1_1codes__grib__get__data.html
new file mode 100644
index 0000000..122a3a1
--- /dev/null
+++ b/html/interfaceeccodes_1_1codes__grib__get__data.html
@@ -0,0 +1,250 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: eccodes::codes_grib_get_data Interface Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="classeccodes.html">eccodes</a></li><li class="navelem"><a class="el" href="interfaceeccodes_1_1codes__grib__get__data.html">codes_grib_get_data</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">eccodes::codes_grib_get_data Interface Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Get latitude/longitude and data values.  
+ <a href="interfaceeccodes_1_1codes__grib__get__data.html#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a0e93200c0e6e4bdacaf1bec1e0a29ee7"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__grib__get__data.html#a0e93200c0e6e4bdacaf1bec1e0a29ee7">codes_grib_get_data_real4</a> (gribid, lats, lons, values, status)</td></tr>
+<tr class="memdesc:a0e93200c0e6e4bdacaf1bec1e0a29ee7"><td class="mdescLeft"> </td><td class="mdescRight">Get latitudes/longitudes/data values (real(4)).  <a href="#a0e93200c0e6e4bdacaf1bec1e0a29ee7">More...</a><br/></td></tr>
+<tr class="separator:a0e93200c0e6e4bdacaf1bec1e0a29ee7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a043bb1e696da61d06523ad35ae16fe8c"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__grib__get__data.html#a043bb1e696da61d06523ad35ae16fe8c">codes_grib_get_data_real8</a> (gribid, lats, lons, values, status)</td></tr>
+<tr class="memdesc:a043bb1e696da61d06523ad35ae16fe8c"><td class="mdescLeft"> </td><td class="mdescRight">Get latitudes/longitudes/data values (real(8)).  <a href="#a043bb1e696da61d06523ad35ae16fe8c">More...</a><br/></td></tr>
+<tr class="separator:a043bb1e696da61d06523ad35ae16fe8c"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Get latitude/longitude and data values. </p>
+<p>Latitudes, longitudes, data values arrays are returned. They must be properly allocated by the caller and their required dimension can be obtained with <a class="el" href="interfaceeccodes_1_1codes__get__size.html">codes_get_size</a> or by getting (with <a class="el" href="interfaceeccodes_1_1codes__get.html">codes_get</a>) the value of the integer key "numberOfPoints".</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_get_data" target="_blank">grib_get_data.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">lats</td><td>latitudes array with dimension "size" </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">lons</td><td>longitudes array with dimension "size" </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">values</td><td>data values array with dimension "size" </td></tr>
+  </table>
+  </dd>
+</dl>
+</div><h2 class="groupheader">Member Function/Subroutine Documentation</h2>
+<a class="anchor" id="a0e93200c0e6e4bdacaf1bec1e0a29ee7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_grib_get_data_real4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real ( kind = kindoffloat ), dimension(:), intent(out) </td>
+          <td class="paramname"><em>lats</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real ( kind = kindoffloat ), dimension(:), intent(out) </td>
+          <td class="paramname"><em>lons</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real ( kind = kindoffloat ), dimension(:), intent(out) </td>
+          <td class="paramname"><em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get latitudes/longitudes/data values (real(4)). </p>
+<p>Latitudes, longitudes, data values arrays are returned. They must be properly allocated by the caller and their required dimension can be obtained with <a class="el" href="interfaceeccodes_1_1codes__get__size.html">codes_get_size</a> or by getting (with <a class="el" href="interfaceeccodes_1_1codes__get.html">codes_get</a>) the value of the integer key "numberOfPoints".</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">lats</td><td>latitudes array with dimension "size" </td></tr>
+    <tr><td class="paramname">lons</td><td>longitudes array with dimension "size" </td></tr>
+    <tr><td class="paramname">values</td><td>data values array with dimension "size" </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a043bb1e696da61d06523ad35ae16fe8c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_grib_get_data_real8 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real ( kind = kindofdouble ), dimension(:), intent(out) </td>
+          <td class="paramname"><em>lats</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real ( kind = kindofdouble ), dimension(:), intent(out) </td>
+          <td class="paramname"><em>lons</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real ( kind = kindofdouble ), dimension(:), intent(out) </td>
+          <td class="paramname"><em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get latitudes/longitudes/data values (real(8)). </p>
+<p>Latitudes, longitudes, data values arrays are returned. They must be properly allocated by the calling program/function. Their required dimension can be obtained by getting (with <a class="el" href="interfaceeccodes_1_1codes__get.html">codes_get</a>) the value of the integer key "numberOfPoints". In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">lats</td><td>latitudes array </td></tr>
+    <tr><td class="paramname">lons</td><td>longitudes array </td></tr>
+    <tr><td class="paramname">values</td><td>data values array </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this interface was generated from the following file:<ul>
+<li>eccodes_f90.f90</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/interfaceeccodes_1_1codes__index__get.html b/html/interfaceeccodes_1_1codes__index__get.html
new file mode 100644
index 0000000..c16d1ad
--- /dev/null
+++ b/html/interfaceeccodes_1_1codes__index__get.html
@@ -0,0 +1,351 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: eccodes::codes_index_get Interface Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="classeccodes.html">eccodes</a></li><li class="navelem"><a class="el" href="interfaceeccodes_1_1codes__index__get.html">codes_index_get</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">eccodes::codes_index_get Interface Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Get the distinct values of the key in argument contained in the index.  
+ <a href="interfaceeccodes_1_1codes__index__get.html#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a26cf731cfda4b350500d8520ea674341"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__index__get.html#a26cf731cfda4b350500d8520ea674341">codes_index_get_int</a> (indexid, key, values, status)</td></tr>
+<tr class="memdesc:a26cf731cfda4b350500d8520ea674341"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="#a26cf731cfda4b350500d8520ea674341">More...</a><br/></td></tr>
+<tr class="separator:a26cf731cfda4b350500d8520ea674341"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afa9bf87d988de7eb04a9de9982e6112f"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__index__get.html#afa9bf87d988de7eb04a9de9982e6112f">codes_index_get_long</a> (indexid, key, values, status)</td></tr>
+<tr class="memdesc:afa9bf87d988de7eb04a9de9982e6112f"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="#afa9bf87d988de7eb04a9de9982e6112f">More...</a><br/></td></tr>
+<tr class="separator:afa9bf87d988de7eb04a9de9982e6112f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae5eb8fbe2de7d547bc92baddaf77adf1"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__index__get.html#ae5eb8fbe2de7d547bc92baddaf77adf1">codes_index_get_string</a> (indexid, key, values, status)</td></tr>
+<tr class="memdesc:ae5eb8fbe2de7d547bc92baddaf77adf1"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="#ae5eb8fbe2de7d547bc92baddaf77adf1">More...</a><br/></td></tr>
+<tr class="separator:ae5eb8fbe2de7d547bc92baddaf77adf1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aedc38b28a7a27b5e042f7a5a17c73001"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__index__get.html#aedc38b28a7a27b5e042f7a5a17c73001">codes_index_get_real8</a> (indexid, key, values, status)</td></tr>
+<tr class="memdesc:aedc38b28a7a27b5e042f7a5a17c73001"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="#aedc38b28a7a27b5e042f7a5a17c73001">More...</a><br/></td></tr>
+<tr class="separator:aedc38b28a7a27b5e042f7a5a17c73001"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Get the distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key for wich the values are returned </td></tr>
+    <tr><td class="paramname">values</td><td>array of values. The array must be allocated before entering this function and its size must be enough to contain all the values. </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+</div><h2 class="groupheader">Member Function/Subroutine Documentation</h2>
+<a class="anchor" id="a26cf731cfda4b350500d8520ea674341"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_get_int </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), dimension(:), intent(out) </td>
+          <td class="paramname"><em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index. This function is used when the type of the key was explicitly defined as long or when the native type of the key is long.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key for wich the values are returned </td></tr>
+    <tr><td class="paramname">values</td><td>array of values. The array must be allocated before entering this function and its size must be enough to contain all the values. </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="afa9bf87d988de7eb04a9de9982e6112f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_get_long </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindoflong), dimension(:), intent(out) </td>
+          <td class="paramname"><em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index. This function is used when the type of the key was explicitly defined as long or when the native type of the key is long.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key for wich the values are returned </td></tr>
+    <tr><td class="paramname">values</td><td>array of values. The array must be allocated before entering this function and its size must be enough to contain all the values. </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aedc38b28a7a27b5e042f7a5a17c73001"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_get_real8 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=kindofdouble), dimension(:), intent(out) </td>
+          <td class="paramname"><em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index. This function is used when the type of the key was explicitly defined as long or when the native type of the key is long.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key for wich the values are returned </td></tr>
+    <tr><td class="paramname">values</td><td>array of values. The array must be allocated before entering this function and its size must be enough to contain all the values. </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae5eb8fbe2de7d547bc92baddaf77adf1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_get_string </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), dimension(:), intent(out) </td>
+          <td class="paramname"><em>values</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index. This function is used when the type of the key was explicitly defined as string or when the native type of the key is string.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key for wich the values are returned </td></tr>
+    <tr><td class="paramname">values</td><td>array of values. The array must be allocated before entering this function and its size must be enough to contain all the values. </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this interface was generated from the following file:<ul>
+<li>eccodes_f90.f90</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/interfaceeccodes_1_1codes__index__get__size.html b/html/interfaceeccodes_1_1codes__index__get__size.html
new file mode 100644
index 0000000..a1d48bd
--- /dev/null
+++ b/html/interfaceeccodes_1_1codes__index__get__size.html
@@ -0,0 +1,239 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: eccodes::codes_index_get_size Interface Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="classeccodes.html">eccodes</a></li><li class="navelem"><a class="el" href="interfaceeccodes_1_1codes__index__get__size.html">codes_index_get_size</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">eccodes::codes_index_get_size Interface Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Get the number of distinct values of the key in argument contained in the index.  
+ <a href="interfaceeccodes_1_1codes__index__get__size.html#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:aeb1c3a999e4726895a94acb9b0de518c"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__index__get__size.html#aeb1c3a999e4726895a94acb9b0de518c">codes_index_get_size_int</a> (indexid, key, size, status)</td></tr>
+<tr class="memdesc:aeb1c3a999e4726895a94acb9b0de518c"><td class="mdescLeft"> </td><td class="mdescRight">Get the number of distinct values of the key in argument contained in the index.  <a href="#aeb1c3a999e4726895a94acb9b0de518c">More...</a><br/></td></tr>
+<tr class="separator:aeb1c3a999e4726895a94acb9b0de518c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0d2104143f36bdfb5c7cccb9b56ae3f0"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__index__get__size.html#a0d2104143f36bdfb5c7cccb9b56ae3f0">codes_index_get_size_long</a> (indexid, key, size, status)</td></tr>
+<tr class="memdesc:a0d2104143f36bdfb5c7cccb9b56ae3f0"><td class="mdescLeft"> </td><td class="mdescRight">Get the number of distinct values of the key in argument contained in the index.  <a href="#a0d2104143f36bdfb5c7cccb9b56ae3f0">More...</a><br/></td></tr>
+<tr class="separator:a0d2104143f36bdfb5c7cccb9b56ae3f0"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Get the number of distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key for which the number of values is computed </td></tr>
+    <tr><td class="paramname">size</td><td>number of distinct values of the key in the index </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+</div><h2 class="groupheader">Member Function/Subroutine Documentation</h2>
+<a class="anchor" id="aeb1c3a999e4726895a94acb9b0de518c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_get_size_int </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the number of distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key for which the number of values is computed </td></tr>
+    <tr><td class="paramname">size</td><td>number of distinct values of the key in the index </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a0d2104143f36bdfb5c7cccb9b56ae3f0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_get_size_long </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindoflong), intent(out) </td>
+          <td class="paramname"><em>size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the number of distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key for which the number of values is computed </td></tr>
+    <tr><td class="paramname">size</td><td>number of distinct values of the key in the index </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this interface was generated from the following file:<ul>
+<li>eccodes_f90.f90</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/interfaceeccodes_1_1codes__index__select.html b/html/interfaceeccodes_1_1codes__index__select.html
new file mode 100644
index 0000000..0a60d87
--- /dev/null
+++ b/html/interfaceeccodes_1_1codes__index__select.html
@@ -0,0 +1,350 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: eccodes::codes_index_select Interface Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="classeccodes.html">eccodes</a></li><li class="navelem"><a class="el" href="interfaceeccodes_1_1codes__index__select.html">codes_index_select</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">eccodes::codes_index_select Interface Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Select the message subset with key==value.  
+ <a href="interfaceeccodes_1_1codes__index__select.html#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ac84dca14749c6c8f7b1b32dbcb8c8f88"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__index__select.html#ac84dca14749c6c8f7b1b32dbcb8c8f88">codes_index_select_int</a> (indexid, key, value, status)</td></tr>
+<tr class="memdesc:ac84dca14749c6c8f7b1b32dbcb8c8f88"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="#ac84dca14749c6c8f7b1b32dbcb8c8f88">More...</a><br/></td></tr>
+<tr class="separator:ac84dca14749c6c8f7b1b32dbcb8c8f88"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6acd94d169fc462c5babb5d654c07612"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__index__select.html#a6acd94d169fc462c5babb5d654c07612">codes_index_select_long</a> (indexid, key, value, status)</td></tr>
+<tr class="memdesc:a6acd94d169fc462c5babb5d654c07612"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="#a6acd94d169fc462c5babb5d654c07612">More...</a><br/></td></tr>
+<tr class="separator:a6acd94d169fc462c5babb5d654c07612"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a500fe1c101af888362bb60a94c68085e"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__index__select.html#a500fe1c101af888362bb60a94c68085e">codes_index_select_string</a> (indexid, key, value, status)</td></tr>
+<tr class="memdesc:a500fe1c101af888362bb60a94c68085e"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="#a500fe1c101af888362bb60a94c68085e">More...</a><br/></td></tr>
+<tr class="separator:a500fe1c101af888362bb60a94c68085e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae1a4e9f83a13d8ce9b046f141ee990cd"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__index__select.html#ae1a4e9f83a13d8ce9b046f141ee990cd">codes_index_select_real8</a> (indexid, key, value, status)</td></tr>
+<tr class="memdesc:ae1a4e9f83a13d8ce9b046f141ee990cd"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="#ae1a4e9f83a13d8ce9b046f141ee990cd">More...</a><br/></td></tr>
+<tr class="separator:ae1a4e9f83a13d8ce9b046f141ee990cd"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Select the message subset with key==value. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key to be selected </td></tr>
+    <tr><td class="paramname">value</td><td>value of the key to select </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+</div><h2 class="groupheader">Member Function/Subroutine Documentation</h2>
+<a class="anchor" id="ac84dca14749c6c8f7b1b32dbcb8c8f88"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_select_int </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Select the message subset with key==value. </p>
+<p>The value is a integer. The key must have been created with integer type or have integer as native type if the type was not explicitly defined in the index creation.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key to be selected </td></tr>
+    <tr><td class="paramname">value</td><td>value of the key to select </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a6acd94d169fc462c5babb5d654c07612"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_select_long </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindoflong), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Select the message subset with key==value. </p>
+<p>The value is a integer. The key must have been created with integer type or have integer as native type if the type was not explicitly defined in the index creation.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key to be selected </td></tr>
+    <tr><td class="paramname">value</td><td>value of the key to select </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae1a4e9f83a13d8ce9b046f141ee990cd"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_select_real8 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=kindofdouble), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Select the message subset with key==value. </p>
+<p>The value is a real. The key must have been created with real type or have real as native type if the type was not explicitly defined in the index creation.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key to be selected </td></tr>
+    <tr><td class="paramname">value</td><td>value of the key to select </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a500fe1c101af888362bb60a94c68085e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_index_select_string </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Select the message subset with key==value. </p>
+<p>The value is a integer. The key must have been created with string type or have string as native type if the type was not explicitly defined in the index creation.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key to be selected </td></tr>
+    <tr><td class="paramname">value</td><td>value of the key to select </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this interface was generated from the following file:<ul>
+<li>eccodes_f90.f90</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/interfaceeccodes_1_1codes__new__from__message.html b/html/interfaceeccodes_1_1codes__new__from__message.html
new file mode 100644
index 0000000..b122194
--- /dev/null
+++ b/html/interfaceeccodes_1_1codes__new__from__message.html
@@ -0,0 +1,230 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: eccodes::codes_new_from_message Interface Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="classeccodes.html">eccodes</a></li><li class="navelem"><a class="el" href="interfaceeccodes_1_1codes__new__from__message.html">codes_new_from_message</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">eccodes::codes_new_from_message Interface Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Create a new message in memory from an integer or character array containting the coded message.  
+ <a href="interfaceeccodes_1_1codes__new__from__message.html#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:af9d90d4940f54ecebb44acb69a59d496"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__new__from__message.html#af9d90d4940f54ecebb44acb69a59d496">codes_new_from_message_int4</a> (msgid, message, status)</td></tr>
+<tr class="memdesc:af9d90d4940f54ecebb44acb69a59d496"><td class="mdescLeft"> </td><td class="mdescRight">Create a new message in memory from an integer array containting the coded message.  <a href="#af9d90d4940f54ecebb44acb69a59d496">More...</a><br/></td></tr>
+<tr class="separator:af9d90d4940f54ecebb44acb69a59d496"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9734463b78e04c3e803acb25d3314436"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__new__from__message.html#a9734463b78e04c3e803acb25d3314436">codes_new_from_message_char</a> (msgid, message, status)</td></tr>
+<tr class="memdesc:a9734463b78e04c3e803acb25d3314436"><td class="mdescLeft"> </td><td class="mdescRight">Create a new message in memory from a character array containting the coded message.  <a href="#a9734463b78e04c3e803acb25d3314436">More...</a><br/></td></tr>
+<tr class="separator:a9734463b78e04c3e803acb25d3314436"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Create a new message in memory from an integer or character array containting the coded message. </p>
+<p>The message can be accessed through its ID and it will be available<br/>
+ until <a class="el" href="classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7">codes_release</a> is called. A reference to the original coded<br/>
+ message is kept in the new message structure.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_copy_message" target="_blank">grib_copy_message.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">id</td><td>ID of the message loaded in memory </td></tr>
+    <tr><td class="paramname">message</td><td>array containing the coded message </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+</div><h2 class="groupheader">Member Function/Subroutine Documentation</h2>
+<a class="anchor" id="a9734463b78e04c3e803acb25d3314436"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_new_from_message_char </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(in) </td>
+          <td class="paramname"><em>message</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new message in memory from a character array containting the coded message. </p>
+<p>The message can be accessed through its msgid and it will be available<br/>
+ until <a class="el" href="classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7">codes_release</a> is called. A reference to the original coded<br/>
+ message is kept in the new message structure.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_copy_message" target="_blank">grib_copy_message.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">message</td><td>character array containing the coded message </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="af9d90d4940f54ecebb44acb69a59d496"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_new_from_message_int4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(out) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=4), dimension(:), intent(in) </td>
+          <td class="paramname"><em>message</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new message in memory from an integer array containting the coded message. </p>
+<p>The message can be accessed through its msgid and it will be available<br/>
+ until <a class="el" href="classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7">codes_release</a> is called. A reference to the original coded<br/>
+ message is kept in the new message structure.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_copy_message" target="_blank">grib_copy_message.f90</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">message</td><td>integer array containing the coded message </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this interface was generated from the following file:<ul>
+<li>eccodes_f90.f90</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/interfaceeccodes_1_1codes__read__bytes.html b/html/interfaceeccodes_1_1codes__read__bytes.html
new file mode 100644
index 0000000..ef6c2b7
--- /dev/null
+++ b/html/interfaceeccodes_1_1codes__read__bytes.html
@@ -0,0 +1,557 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: eccodes::codes_read_bytes Interface Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="classeccodes.html">eccodes</a></li><li class="navelem"><a class="el" href="interfaceeccodes_1_1codes__read__bytes.html">codes_read_bytes</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">eccodes::codes_read_bytes Interface Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Reads nbytes bytes into the buffer from a file opened with codes_open_file.  
+ <a href="interfaceeccodes_1_1codes__read__bytes.html#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a0b75e479138c6fe2b49cacef123a1c8e"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#a0b75e479138c6fe2b49cacef123a1c8e">codes_read_bytes_int4</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a0b75e479138c6fe2b49cacef123a1c8e"><td class="mdescLeft"> </td><td class="mdescRight">Reads nbytes bytes into the buffer from a file opened with codes_open_file.  <a href="#a0b75e479138c6fe2b49cacef123a1c8e">More...</a><br/></td></tr>
+<tr class="separator:a0b75e479138c6fe2b49cacef123a1c8e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad1be70ac4cc7c2c5775e3bc6b607c4df"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#ad1be70ac4cc7c2c5775e3bc6b607c4df">codes_read_bytes_int4_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:ad1be70ac4cc7c2c5775e3bc6b607c4df"><td class="mdescLeft"> </td><td class="mdescRight">Reads nbytes bytes into the buffer from a file opened with codes_open_file.  <a href="#ad1be70ac4cc7c2c5775e3bc6b607c4df">More...</a><br/></td></tr>
+<tr class="separator:ad1be70ac4cc7c2c5775e3bc6b607c4df"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a30dcd3a6d9d4b084f1dc9d617927b99a"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#a30dcd3a6d9d4b084f1dc9d617927b99a">codes_read_bytes_char</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a30dcd3a6d9d4b084f1dc9d617927b99a"><td class="mdescLeft"> </td><td class="mdescRight">Reads nbytes bytes into the buffer from a file opened with codes_open_file.  <a href="#a30dcd3a6d9d4b084f1dc9d617927b99a">More...</a><br/></td></tr>
+<tr class="separator:a30dcd3a6d9d4b084f1dc9d617927b99a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aea71591e62a4a6f42682ceb5979c0631"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#aea71591e62a4a6f42682ceb5979c0631">codes_read_bytes_char_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:aea71591e62a4a6f42682ceb5979c0631"><td class="mdescLeft"> </td><td class="mdescRight">Reads nbytes bytes into the buffer from a file opened with codes_open_file.  <a href="#aea71591e62a4a6f42682ceb5979c0631">More...</a><br/></td></tr>
+<tr class="separator:aea71591e62a4a6f42682ceb5979c0631"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4e1e0bb73d3fafe62685a3f7191334e4"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#a4e1e0bb73d3fafe62685a3f7191334e4">codes_read_bytes_real8</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a4e1e0bb73d3fafe62685a3f7191334e4"><td class="mdescLeft"> </td><td class="mdescRight">Reads nbytes bytes into the buffer from a file opened with codes_open_file.  <a href="#a4e1e0bb73d3fafe62685a3f7191334e4">More...</a><br/></td></tr>
+<tr class="separator:a4e1e0bb73d3fafe62685a3f7191334e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adec76dd3ecf49b71ded2545054828c3d"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#adec76dd3ecf49b71ded2545054828c3d">codes_read_bytes_real8_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:adec76dd3ecf49b71ded2545054828c3d"><td class="mdescLeft"> </td><td class="mdescRight">Reads nbytes bytes into the buffer from a file opened with codes_open_file.  <a href="#adec76dd3ecf49b71ded2545054828c3d">More...</a><br/></td></tr>
+<tr class="separator:adec76dd3ecf49b71ded2545054828c3d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a19f70122369224f1ef3513bf7f351e86"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#a19f70122369224f1ef3513bf7f351e86">codes_read_bytes_real4</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a19f70122369224f1ef3513bf7f351e86"><td class="mdescLeft"> </td><td class="mdescRight">Reads nbytes bytes into the buffer from a file opened with codes_open_file.  <a href="#a19f70122369224f1ef3513bf7f351e86">More...</a><br/></td></tr>
+<tr class="separator:a19f70122369224f1ef3513bf7f351e86"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9bac4f78f245e52303e85d2ee142d073"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__read__bytes.html#a9bac4f78f245e52303e85d2ee142d073">codes_read_bytes_real4_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a9bac4f78f245e52303e85d2ee142d073"><td class="mdescLeft"> </td><td class="mdescRight">Reads nbytes bytes into the buffer from a file opened with codes_open_file.  <a href="#a9bac4f78f245e52303e85d2ee142d073">More...</a><br/></td></tr>
+<tr class="separator:a9bac4f78f245e52303e85d2ee142d073"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Reads nbytes bytes into the buffer from a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+</div><h2 class="groupheader">Member Function/Subroutine Documentation</h2>
+<a class="anchor" id="a30dcd3a6d9d4b084f1dc9d617927b99a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_bytes_char </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads nbytes bytes into the buffer from a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>binary buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aea71591e62a4a6f42682ceb5979c0631"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_bytes_char_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads nbytes bytes into the buffer from a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>binary buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a0b75e479138c6fe2b49cacef123a1c8e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_bytes_int4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=4), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads nbytes bytes into the buffer from a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ad1be70ac4cc7c2c5775e3bc6b607c4df"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_bytes_int4_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=4), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads nbytes bytes into the buffer from a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a19f70122369224f1ef3513bf7f351e86"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_bytes_real4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=4), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads nbytes bytes into the buffer from a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a9bac4f78f245e52303e85d2ee142d073"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_bytes_real4_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=4), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(inout) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads nbytes bytes into the buffer from a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a4e1e0bb73d3fafe62685a3f7191334e4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_bytes_real8 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=8), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads nbytes bytes into the buffer from a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="adec76dd3ecf49b71ded2545054828c3d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_bytes_real8_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=8), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(inout) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads nbytes bytes into the buffer from a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this interface was generated from the following file:<ul>
+<li>eccodes_f90.f90</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/interfaceeccodes_1_1codes__read__from__file.html b/html/interfaceeccodes_1_1codes__read__from__file.html
new file mode 100644
index 0000000..d4cbf97
--- /dev/null
+++ b/html/interfaceeccodes_1_1codes__read__from__file.html
@@ -0,0 +1,341 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: eccodes::codes_read_from_file Interface Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="classeccodes.html">eccodes</a></li><li class="navelem"><a class="el" href="interfaceeccodes_1_1codes__read__from__file.html">codes_read_from_file</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">eccodes::codes_read_from_file Interface Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Reads a message in the buffer array from the file opened with codes_open_file.  
+ <a href="interfaceeccodes_1_1codes__read__from__file.html#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a7b5b61cc34b32aae4c3f2deeacbc50ae"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__read__from__file.html#a7b5b61cc34b32aae4c3f2deeacbc50ae">codes_read_from_file_int4</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a7b5b61cc34b32aae4c3f2deeacbc50ae"><td class="mdescLeft"> </td><td class="mdescRight">Reads a message in the buffer array from the file opened with codes_open_file.  <a href="#a7b5b61cc34b32aae4c3f2deeacbc50ae">More...</a><br/></td></tr>
+<tr class="separator:a7b5b61cc34b32aae4c3f2deeacbc50ae"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa04bacd625a2a87d7e490c0361643da3"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__read__from__file.html#aa04bacd625a2a87d7e490c0361643da3">codes_read_from_file_int4_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:aa04bacd625a2a87d7e490c0361643da3"><td class="mdescLeft"> </td><td class="mdescRight">Reads a message in the buffer array from the file opened with codes_open_file.  <a href="#aa04bacd625a2a87d7e490c0361643da3">More...</a><br/></td></tr>
+<tr class="separator:aa04bacd625a2a87d7e490c0361643da3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab84434f52a4a41e68bf3103c392482ae"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__read__from__file.html#ab84434f52a4a41e68bf3103c392482ae">codes_read_from_file_char</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:ab84434f52a4a41e68bf3103c392482ae"><td class="mdescLeft"> </td><td class="mdescRight">Reads a message in the buffer array from the file opened with codes_open_file.  <a href="#ab84434f52a4a41e68bf3103c392482ae">More...</a><br/></td></tr>
+<tr class="separator:ab84434f52a4a41e68bf3103c392482ae"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9ca8b8009071657b338508a3d6709b8d"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__read__from__file.html#a9ca8b8009071657b338508a3d6709b8d">codes_read_from_file_char_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a9ca8b8009071657b338508a3d6709b8d"><td class="mdescLeft"> </td><td class="mdescRight">Reads a message in the buffer array from the file opened with codes_open_file.  <a href="#a9ca8b8009071657b338508a3d6709b8d">More...</a><br/></td></tr>
+<tr class="separator:a9ca8b8009071657b338508a3d6709b8d"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Reads a message in the buffer array from the file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+</div><h2 class="groupheader">Member Function/Subroutine Documentation</h2>
+<a class="anchor" id="ab84434f52a4a41e68bf3103c392482ae"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_from_file_char </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(inout) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads a message in the buffer array from the file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a9ca8b8009071657b338508a3d6709b8d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_from_file_char_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(inout) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads a message in the buffer array from the file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a7b5b61cc34b32aae4c3f2deeacbc50ae"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_from_file_int4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=4), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(inout) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads a message in the buffer array from the file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>binary buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aa04bacd625a2a87d7e490c0361643da3"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_read_from_file_int4_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=4), dimension(:), intent(out) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(inout) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Reads a message in the buffer array from the file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>binary buffer to be read </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be read </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this interface was generated from the following file:<ul>
+<li>eccodes_f90.f90</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/interfaceeccodes_1_1codes__set.html b/html/interfaceeccodes_1_1codes__set.html
new file mode 100644
index 0000000..92569cd
--- /dev/null
+++ b/html/interfaceeccodes_1_1codes__set.html
@@ -0,0 +1,676 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: eccodes::codes_set Interface Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="classeccodes.html">eccodes</a></li><li class="navelem"><a class="el" href="interfaceeccodes_1_1codes__set.html">codes_set</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">eccodes::codes_set Interface Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Set the value for a key in a grib message.  
+ <a href="interfaceeccodes_1_1codes__set.html#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ac060bb983b9e515db8ad7edd3d91ce9a"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__set.html#ac060bb983b9e515db8ad7edd3d91ce9a">codes_set_int</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:ac060bb983b9e515db8ad7edd3d91ce9a"><td class="mdescLeft"> </td><td class="mdescRight">Set the integer value for a key in a message.  <a href="#ac060bb983b9e515db8ad7edd3d91ce9a">More...</a><br/></td></tr>
+<tr class="separator:ac060bb983b9e515db8ad7edd3d91ce9a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3c9cdc65f00b3c36742206e6e3dde864"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__set.html#a3c9cdc65f00b3c36742206e6e3dde864">codes_set_long</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a3c9cdc65f00b3c36742206e6e3dde864"><td class="mdescLeft"> </td><td class="mdescRight">Set the integer value for a key in a message.  <a href="#a3c9cdc65f00b3c36742206e6e3dde864">More...</a><br/></td></tr>
+<tr class="separator:a3c9cdc65f00b3c36742206e6e3dde864"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2614a1e015c16370ed18cc360a14663e"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__set.html#a2614a1e015c16370ed18cc360a14663e">codes_set_real4</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a2614a1e015c16370ed18cc360a14663e"><td class="mdescLeft"> </td><td class="mdescRight">Set the real(4) value for a key in a message.  <a href="#a2614a1e015c16370ed18cc360a14663e">More...</a><br/></td></tr>
+<tr class="separator:a2614a1e015c16370ed18cc360a14663e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4b20fe82de5ba6f8355ff8a5d2725b3d"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__set.html#a4b20fe82de5ba6f8355ff8a5d2725b3d">codes_set_real8</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a4b20fe82de5ba6f8355ff8a5d2725b3d"><td class="mdescLeft"> </td><td class="mdescRight">Set the real(8) value for a key in a message.  <a href="#a4b20fe82de5ba6f8355ff8a5d2725b3d">More...</a><br/></td></tr>
+<tr class="separator:a4b20fe82de5ba6f8355ff8a5d2725b3d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a50acfd20f8dff8b4e547135057ef119a"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__set.html#a50acfd20f8dff8b4e547135057ef119a">codes_set_string</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a50acfd20f8dff8b4e547135057ef119a"><td class="mdescLeft"> </td><td class="mdescRight">Set the character value for a string key in a message.<a href="#a50acfd20f8dff8b4e547135057ef119a">More...</a><br/></td></tr>
+<tr class="separator:a50acfd20f8dff8b4e547135057ef119a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a18b5890c85f15d5fefeefc2b99a09ce5"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__set.html#a18b5890c85f15d5fefeefc2b99a09ce5">codes_set_int_array</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a18b5890c85f15d5fefeefc2b99a09ce5"><td class="mdescLeft"> </td><td class="mdescRight">Set the integers values for an array key in a message.  <a href="#a18b5890c85f15d5fefeefc2b99a09ce5">More...</a><br/></td></tr>
+<tr class="separator:a18b5890c85f15d5fefeefc2b99a09ce5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5fa893fca21268a9c12d93e9d8c664e3"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__set.html#a5fa893fca21268a9c12d93e9d8c664e3">codes_set_long_array</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a5fa893fca21268a9c12d93e9d8c664e3"><td class="mdescLeft"> </td><td class="mdescRight">Set the integers values for an array key in a message.  <a href="#a5fa893fca21268a9c12d93e9d8c664e3">More...</a><br/></td></tr>
+<tr class="separator:a5fa893fca21268a9c12d93e9d8c664e3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a292d71c0a7252bdfded6a38aea4284be"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__set.html#a292d71c0a7252bdfded6a38aea4284be">codes_set_byte_array</a> (msgid, key, value, length, status)</td></tr>
+<tr class="memdesc:a292d71c0a7252bdfded6a38aea4284be"><td class="mdescLeft"> </td><td class="mdescRight">Set the array of bytes (character) for a key in a message.  <a href="#a292d71c0a7252bdfded6a38aea4284be">More...</a><br/></td></tr>
+<tr class="separator:a292d71c0a7252bdfded6a38aea4284be"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aabaefc49c8d603bcf18a627dacc38f15"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__set.html#aabaefc49c8d603bcf18a627dacc38f15">codes_set_real4_array</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:aabaefc49c8d603bcf18a627dacc38f15"><td class="mdescLeft"> </td><td class="mdescRight">Set the real(4) values for an array key in a message.  <a href="#aabaefc49c8d603bcf18a627dacc38f15">More...</a><br/></td></tr>
+<tr class="separator:aabaefc49c8d603bcf18a627dacc38f15"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a14b3bc17ea1ee83936f32dd0fced44a4"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__set.html#a14b3bc17ea1ee83936f32dd0fced44a4">codes_set_real8_array</a> (msgid, key, value, status)</td></tr>
+<tr class="memdesc:a14b3bc17ea1ee83936f32dd0fced44a4"><td class="mdescLeft"> </td><td class="mdescRight">Set the real(8) values for an array key in a message.  <a href="#a14b3bc17ea1ee83936f32dd0fced44a4">More...</a><br/></td></tr>
+<tr class="separator:a14b3bc17ea1ee83936f32dd0fced44a4"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Set the value for a key in a grib message. </p>
+<p>The given <em>value</em> is set for the <em>key</em> in the <em>gribid</em> message. In some cases the <em>value</em> can be an array rather than a scalar. As examples of array keys we have "values","pl", "pv" respectively the data values, the list of number of points for each latitude in a reduced grid and the list of vertical levels. In these cases the <em>value</em> array must be allocated by the caller and their required dimension can be obtained with <a class="el" href="interface [...]
+ The gribid references to a grib message loaded in memory.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_set_keys" target="_blank">grib_set_keys.f90</a></p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classeccodes.html#a5533c6fb8bd7d8f622c89484b7bbdfb6" title="Load in memory a message from a file. ">codes_new_from_file</a>, <a class="el" href="classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7" title="Free the memory for the message referred as msgid. ">codes_release</a>, <a class="el" href="interfaceeccodes_1_1codes__get.html" title="Get the value for a key from a grib message. ">codes_get</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramdir">[in]</td><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">value</td><td>value can be a scalar or array of integer(4),real(4),real(8) </td></tr>
+    <tr><td class="paramdir">[out]</td><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+</div><h2 class="groupheader">Member Function/Subroutine Documentation</h2>
+<a class="anchor" id="a292d71c0a7252bdfded6a38aea4284be"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_byte_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>length</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the array of bytes (character) for a key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>character(len=1) array of byte values </td></tr>
+    <tr><td class="paramname">length</td><td>(optional) output: number of values written </td></tr>
+    <tr><td class="paramname">status</td><td>(optional) CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ac060bb983b9e515db8ad7edd3d91ce9a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_int </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the integer value for a key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>integer(4) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a18b5890c85f15d5fefeefc2b99a09ce5"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_int_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), dimension(:), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the integers values for an array key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>integer(4) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a3c9cdc65f00b3c36742206e6e3dde864"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_long </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindoflong), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the integer value for a key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>integer(4) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a5fa893fca21268a9c12d93e9d8c664e3"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_long_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindoflong), dimension(:), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the integers values for an array key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>integer(4) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a2614a1e015c16370ed18cc360a14663e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_real4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindoffloat), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the real(4) value for a key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>real(4) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aabaefc49c8d603bcf18a627dacc38f15"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_real4_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindoffloat), dimension(:), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the real(4) values for an array key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>real(4) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a4b20fe82de5ba6f8355ff8a5d2725b3d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_real8 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the real(8) value for a key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>real(8) value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a14b3bc17ea1ee83936f32dd0fced44a4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_real8_array </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind = kindofdouble), dimension(:), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the real(8) values for an array key in a message. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>real(8) array value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a50acfd20f8dff8b4e547135057ef119a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_set_string </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=*), intent(in) </td>
+          <td class="paramname"><em>value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the character value for a string key in a message.</p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>character value </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this interface was generated from the following file:<ul>
+<li>eccodes_f90.f90</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/interfaceeccodes_1_1codes__write__bytes.html b/html/interfaceeccodes_1_1codes__write__bytes.html
new file mode 100644
index 0000000..fbbfe9e
--- /dev/null
+++ b/html/interfaceeccodes_1_1codes__write__bytes.html
@@ -0,0 +1,557 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: eccodes::codes_write_bytes Interface Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="classeccodes.html">eccodes</a></li><li class="navelem"><a class="el" href="interfaceeccodes_1_1codes__write__bytes.html">codes_write_bytes</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">eccodes::codes_write_bytes Interface Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Write nbytes bytes from the buffer in a file opened with codes_open_file.  
+ <a href="interfaceeccodes_1_1codes__write__bytes.html#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:abe46cbe07d6a64845bf07e21caa3ae94"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#abe46cbe07d6a64845bf07e21caa3ae94">codes_write_bytes_int4</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:abe46cbe07d6a64845bf07e21caa3ae94"><td class="mdescLeft"> </td><td class="mdescRight">Write nbytes bytes from the buffer in a file opened with codes_open_file.  <a href="#abe46cbe07d6a64845bf07e21caa3ae94">More...</a><br/></td></tr>
+<tr class="separator:abe46cbe07d6a64845bf07e21caa3ae94"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a771149b4e451839ed7713540de92ce27"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#a771149b4e451839ed7713540de92ce27">codes_write_bytes_int4_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a771149b4e451839ed7713540de92ce27"><td class="mdescLeft"> </td><td class="mdescRight">Write nbytes bytes from the buffer in a file opened with codes_open_file.  <a href="#a771149b4e451839ed7713540de92ce27">More...</a><br/></td></tr>
+<tr class="separator:a771149b4e451839ed7713540de92ce27"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acdb3a889fbd731811821d95d6126e41a"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#acdb3a889fbd731811821d95d6126e41a">codes_write_bytes_char</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:acdb3a889fbd731811821d95d6126e41a"><td class="mdescLeft"> </td><td class="mdescRight">Write nbytes bytes from the buffer in a file opened with codes_open_file.  <a href="#acdb3a889fbd731811821d95d6126e41a">More...</a><br/></td></tr>
+<tr class="separator:acdb3a889fbd731811821d95d6126e41a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a02dd901fef7e6a4cb8ab50ade61e6a66"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#a02dd901fef7e6a4cb8ab50ade61e6a66">codes_write_bytes_char_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a02dd901fef7e6a4cb8ab50ade61e6a66"><td class="mdescLeft"> </td><td class="mdescRight">Write nbytes bytes from the buffer in a file opened with codes_open_file.  <a href="#a02dd901fef7e6a4cb8ab50ade61e6a66">More...</a><br/></td></tr>
+<tr class="separator:a02dd901fef7e6a4cb8ab50ade61e6a66"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aabda087d7f8ba266b0b9f307270f876a"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#aabda087d7f8ba266b0b9f307270f876a">codes_write_bytes_real8</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:aabda087d7f8ba266b0b9f307270f876a"><td class="mdescLeft"> </td><td class="mdescRight">Write nbytes bytes from the buffer in a file opened with codes_open_file.  <a href="#aabda087d7f8ba266b0b9f307270f876a">More...</a><br/></td></tr>
+<tr class="separator:aabda087d7f8ba266b0b9f307270f876a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2d0be96a6b529f7e0b8079318a5376bb"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#a2d0be96a6b529f7e0b8079318a5376bb">codes_write_bytes_real8_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a2d0be96a6b529f7e0b8079318a5376bb"><td class="mdescLeft"> </td><td class="mdescRight">Write nbytes bytes from the buffer in a file opened with codes_open_file.  <a href="#a2d0be96a6b529f7e0b8079318a5376bb">More...</a><br/></td></tr>
+<tr class="separator:a2d0be96a6b529f7e0b8079318a5376bb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7f69c7e70900ace352970851a4ee5267"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#a7f69c7e70900ace352970851a4ee5267">codes_write_bytes_real4</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a7f69c7e70900ace352970851a4ee5267"><td class="mdescLeft"> </td><td class="mdescRight">Write nbytes bytes from the buffer in a file opened with codes_open_file.  <a href="#a7f69c7e70900ace352970851a4ee5267">More...</a><br/></td></tr>
+<tr class="separator:a7f69c7e70900ace352970851a4ee5267"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7467f8b7c399f5579bd4be244de100dc"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceeccodes_1_1codes__write__bytes.html#a7467f8b7c399f5579bd4be244de100dc">codes_write_bytes_real4_size_t</a> (ifile, buffer, nbytes, status)</td></tr>
+<tr class="memdesc:a7467f8b7c399f5579bd4be244de100dc"><td class="mdescLeft"> </td><td class="mdescRight">Write nbytes bytes from the buffer in a file opened with codes_open_file.  <a href="#a7467f8b7c399f5579bd4be244de100dc">More...</a><br/></td></tr>
+<tr class="separator:a7467f8b7c399f5579bd4be244de100dc"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Write nbytes bytes from the buffer in a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be written </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be written </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+</div><h2 class="groupheader">Member Function/Subroutine Documentation</h2>
+<a class="anchor" id="acdb3a889fbd731811821d95d6126e41a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_write_bytes_char </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(in) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write nbytes bytes from the buffer in a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be written </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be written </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a02dd901fef7e6a4cb8ab50ade61e6a66"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_write_bytes_char_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">character(len=1), dimension(:), intent(in) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write nbytes bytes from the buffer in a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be written </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be written </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="abe46cbe07d6a64845bf07e21caa3ae94"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_write_bytes_int4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=4), dimension(:), intent(in) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write nbytes bytes from the buffer in a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be written </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be written </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a771149b4e451839ed7713540de92ce27"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_write_bytes_int4_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=4), dimension(:), intent(in) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write nbytes bytes from the buffer in a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be written </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be written </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a7f69c7e70900ace352970851a4ee5267"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_write_bytes_real4 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=4), dimension(:), intent(in) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write nbytes bytes from the buffer in a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be written </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be written </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a7467f8b7c399f5579bd4be244de100dc"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_write_bytes_real4_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=4), dimension(:), intent(in) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write nbytes bytes from the buffer in a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be written </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be written </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aabda087d7f8ba266b0b9f307270f876a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_write_bytes_real8 </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=8), dimension(:), intent(in) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write nbytes bytes from the buffer in a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be written </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be written </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a2d0be96a6b529f7e0b8079318a5376bb"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">subroutine codes_write_bytes_real8_size_t </td>
+          <td>(</td>
+          <td class="paramtype">integer(kind=kindofint), intent(in) </td>
+          <td class="paramname"><em>ifile</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">real(kind=8), dimension(:), intent(in) </td>
+          <td class="paramname"><em>buffer</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofsize_t), intent(in) </td>
+          <td class="paramname"><em>nbytes</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">integer(kind=kindofint), intent(out), optional </td>
+          <td class="paramname"><em>status</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write nbytes bytes from the buffer in a file opened with codes_open_file. </p>
+<p>In case of error, if the status parameter (optional) is not given, the program will exit with an error message.<br/>
+ Otherwise the error message can be gathered with <a class="el" href="classeccodes.html#a835de867b8ad79cc43f127e7048712f3">codes_get_error_string</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ifile</td><td>id of the opened file to be used in all the file functions. </td></tr>
+    <tr><td class="paramname">buffer</td><td>buffer to be written </td></tr>
+    <tr><td class="paramname">nbytes</td><td>number of bytes to be written </td></tr>
+    <tr><td class="paramname">status</td><td>CODES_SUCCESS if OK, integer value on error </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this interface was generated from the following file:<ul>
+<li>eccodes_f90.f90</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/interfacegrib__api_1_1grib__find__nearest.html b/html/interfacegrib__api_1_1grib__find__nearest.html
deleted file mode 100644
index e69de29..0000000
diff --git a/html/interfacegrib__api_1_1grib__get.html b/html/interfacegrib__api_1_1grib__get.html
deleted file mode 100644
index e69de29..0000000
diff --git a/html/interfacegrib__api_1_1grib__get__data.html b/html/interfacegrib__api_1_1grib__get__data.html
deleted file mode 100644
index e69de29..0000000
diff --git a/html/interfacegrib__api_1_1grib__get__element.html b/html/interfacegrib__api_1_1grib__get__element.html
deleted file mode 100644
index e69de29..0000000
diff --git a/html/interfacegrib__api_1_1grib__set.html b/html/interfacegrib__api_1_1grib__set.html
deleted file mode 100644
index e69de29..0000000
diff --git a/html/iterator_8c-example.html b/html/iterator_8c-example.html
deleted file mode 100644
index b40396a..0000000
--- a/html/iterator_8c-example.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: iterator.c</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>iterator.c</h1>iterator.c How to use an iterator on latitude, longitude, values.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
-<a name="l00010"></a>00010 <span class="comment">/*</span>
-<a name="l00011"></a>00011 <span class="comment"> * C Implementation: iterator</span>
-<a name="l00012"></a>00012 <span class="comment"> *</span>
-<a name="l00013"></a>00013 <span class="comment"> * Description: how to use an iterator on lat/lon/values.</span>
-<a name="l00014"></a>00014 <span class="comment"> *</span>
-<a name="l00015"></a>00015 <span class="comment"> *</span>
-<a name="l00016"></a>00016 <span class="comment"> * Author: Enrico Fucile</span>
-<a name="l00017"></a>00017 <span class="comment"> *</span>
-<a name="l00018"></a>00018 <span class="comment"> *</span>
-<a name="l00019"></a>00019 <span class="comment"> */</span>
-<a name="l00020"></a>00020 
-<a name="l00021"></a>00021 <span class="preprocessor">#include <stdio.h></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <stdlib.h></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <string.h></span>
-<a name="l00024"></a>00024 
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>"</span>  
-<a name="l00026"></a>00026 
-<a name="l00027"></a>00027 <span class="keywordtype">void</span> usage(<span class="keywordtype">char</span>* prog) {
-<a name="l00028"></a>00028   printf(<span class="stringliteral">"Usage: %s grib_file\n"</span>,prog);
-<a name="l00029"></a>00029   exit(1);
-<a name="l00030"></a>00030 }
-<a name="l00031"></a>00031 
-<a name="l00032"></a>00032 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {
-<a name="l00033"></a>00033   FILE* in = NULL;
-<a name="l00034"></a>00034   <span class="keywordtype">int</span> err = 0;
-<a name="l00035"></a>00035   <span class="keywordtype">double</span> lat,lon,value,missingValue=0;
-<a name="l00036"></a>00036   <span class="keywordtype">int</span> n=0;
-<a name="l00037"></a>00037   <span class="keywordtype">char</span>* filename = NULL;
-<a name="l00038"></a>00038 
-<a name="l00039"></a>00039   <span class="comment">/* Message handle. Required in all the grib_api calls acting on a message.*/</span>
-<a name="l00040"></a>00040   <a name="a0"></a><a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h = NULL;   
-<a name="l00041"></a>00041   <span class="comment">/* Iterator on lat/lon/values.*/</span>
-<a name="l00042"></a>00042   <a name="a1"></a><a class="code" href="grib__api_8h.html#8f20a42a04122a55dec71774c70a51c5">grib_iterator</a>* iter=NULL;  
-<a name="l00043"></a>00043   
-<a name="l00044"></a>00044   <span class="keywordflow">if</span> (argc != 2) usage(argv[0]);
-<a name="l00045"></a>00045 
-<a name="l00046"></a>00046   filename=strdup(argv[1]);
-<a name="l00047"></a>00047 
-<a name="l00048"></a>00048   in = fopen(filename,<span class="stringliteral">"r"</span>);
-<a name="l00049"></a>00049   <span class="keywordflow">if</span>(!in) {
-<a name="l00050"></a>00050     printf(<span class="stringliteral">"ERROR: unable to open file %s\n"</span>,filename);
-<a name="l00051"></a>00051     <span class="keywordflow">return</span> 1;
-<a name="l00052"></a>00052   }
-<a name="l00053"></a>00053 
-<a name="l00054"></a>00054   <span class="comment">/* Loop on all the messages in a file.*/</span>
-<a name="l00055"></a>00055   <span class="keywordflow">while</span> ((h = <a name="a2"></a><a class="code" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5" title="Create a handle from a file resource.">grib_handle_new_from_file</a>(0,in,&err)) != NULL ) { 
-<a name="l00056"></a>00056         <span class="comment">/* Check of errors after reading a message. */</span>
-<a name="l00057"></a>00057     <span class="keywordflow">if</span> (err != <a name="a3"></a><a class="code" href="grib__api_8h.html#5ec59f24fc07a0e9d05768e908b9eb41" title="No error.">GRIB_SUCCESS</a>) GRIB_CHECK(err,0);                       
-<a name="l00058"></a>00058 
-<a name="l00059"></a>00059         <span class="comment">/* Get the double representing the missing value in the field. */</span>
-<a name="l00060"></a>00060         GRIB_CHECK(<a name="a4"></a><a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"missingValue"</span>,&missingValue),0);  
-<a name="l00061"></a>00061 
-<a name="l00062"></a>00062         <span class="comment">/* A new iterator on lat/lon/values is created from the message handle h. */</span>
-<a name="l00063"></a>00063         iter=<a name="a5"></a><a class="code" href="group__iterators.html#gefb1f87110bdce732edc9154cf0e7d58" title="Create a new iterator from a handle, using current geometry and values.">grib_iterator_new</a>(h,0,&err);                                     
-<a name="l00064"></a>00064     <span class="keywordflow">if</span> (err != <a class="code" href="grib__api_8h.html#5ec59f24fc07a0e9d05768e908b9eb41" title="No error.">GRIB_SUCCESS</a>) GRIB_CHECK(err,0);                       
-<a name="l00065"></a>00065 
-<a name="l00066"></a>00066     n = 0;
-<a name="l00067"></a>00067         <span class="comment">/* Loop on all the lat/lon/values. */</span>
-<a name="l00068"></a>00068     <span class="keywordflow">while</span>(<a name="a6"></a><a class="code" href="group__iterators.html#g4f73056dbfdda3de0060559b9b39ea34" title="Get the next value from an iterator.">grib_iterator_next</a>(iter,&lat,&lon,&value)) {   
-<a name="l00069"></a>00069           <span class="comment">/* You can now print lat and lon,  */</span>
-<a name="l00070"></a>00070       printf(<span class="stringliteral">"- %d - lat=%f lon=%f value="</span>,n,lat,lon);   
-<a name="l00071"></a>00071           <span class="comment">/* decide what to print if a missing value is found. */</span>
-<a name="l00072"></a>00072       <span class="keywordflow">if</span> (value == missingValue ) printf(<span class="stringliteral">"missing\n"</span>);   
-<a name="l00073"></a>00073           <span class="comment">/* and print the value if is not missing. */</span>
-<a name="l00074"></a>00074           <span class="keywordflow">else</span> printf(<span class="stringliteral">"%f\n"</span>,value);
-<a name="l00075"></a>00075       n++;
-<a name="l00076"></a>00076     }
-<a name="l00077"></a>00077 
-<a name="l00078"></a>00078         <span class="comment">/* At the end the iterator is deleted to free memory. */</span>
-<a name="l00079"></a>00079     <a name="a7"></a><a class="code" href="group__iterators.html#gd46ed73a16af56e6f3b46fe86ee8a759" title="Frees an iterator from memory.">grib_iterator_delete</a>(iter);               
-<a name="l00080"></a>00080 
-<a name="l00081"></a>00081     <span class="comment">/* At the end the grib_handle is deleted to free memory. */</span>
-<a name="l00082"></a>00082     <a name="a8"></a><a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);            
-<a name="l00083"></a>00083   }
-<a name="l00084"></a>00084 
-<a name="l00085"></a>00085 
-<a name="l00086"></a>00086   fclose(in);
-<a name="l00087"></a>00087 
-<a name="l00088"></a>00088   <span class="keywordflow">return</span> 0;
-<a name="l00089"></a>00089 }
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/iterator__fortran_8_f-example.html b/html/iterator__fortran_8_f-example.html
deleted file mode 100644
index ce78c9e..0000000
--- a/html/iterator__fortran_8_f-example.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: iterator_fortran.F</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>iterator_fortran.F</h1>iterator_fortran.F How to use an iterator on latitude, longitude, values.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 C Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 C This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 C 
-<a name="l00005"></a>00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 C
-<a name="l00008"></a>00008 C
-<a name="l00009"></a>00009 C  Fortran 77 Implementation: iterator_fortran
-<a name="l00010"></a>00010 C
-<a name="l00011"></a>00011 C  Description: how to use an iterator on lat/lon/values.
-<a name="l00012"></a>00012 C
-<a name="l00013"></a>00013 C
-<a name="l00014"></a>00014 C  Author: Enrico Fucile
-<a name="l00015"></a>00015 C
-<a name="l00016"></a>00016 C
-<a name="l00017"></a>00017 C
-<a name="l00018"></a>00018       program iterator
-<a name="l00019"></a>00019       implicit none
-<a name="l00020"></a>00020       include 'grib_api_f77.h'
-<a name="l00021"></a>00021       integer ifile
-<a name="l00022"></a>00022       integer iret,iter
-<a name="l00023"></a>00023       real*8 lat,lon,value,missingValue
-<a name="l00024"></a>00024       integer n,flags
-<a name="l00025"></a>00025       character*256 filename
-<a name="l00026"></a>00026       character*256 error
-<a name="l00027"></a>00027 
-<a name="l00028"></a>00028 C     Message identifier.
-<a name="l00029"></a>00029       integer igrib
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031       ifile=5
-<a name="l00032"></a>00032 
-<a name="l00033"></a>00033       call grib_check(grib_open_file(ifile,
-<a name="l00034"></a>00034      X'../../data/regular_latlon_surface.grib1<span class="charliteral">','</span>r'))
-<a name="l00035"></a>00035 
-<a name="l00036"></a>00036 C     Loop on all the messages in a file.
-<a name="l00037"></a>00037   10  iret=grib_new_from_file(ifile,igrib)
-<a name="l00038"></a>00038       if (igrib .eq. -1 )  then
-<a name="l00039"></a>00039         if (iret .ne.0) then
-<a name="l00040"></a>00040            call grib_check(iret)
-<a name="l00041"></a>00041         endif
-<a name="l00042"></a>00042         stop
-<a name="l00043"></a>00043       endif
-<a name="l00044"></a>00044 
-<a name="l00045"></a>00045 C     get as a real8
-<a name="l00046"></a>00046       call grib_check(grib_get_real8(igrib
-<a name="l00047"></a>00047      X,'missingValue',missingValue))
-<a name="l00048"></a>00048       write(*,*) 'missingValue=',missingValue
-<a name="l00049"></a>00049 
-<a name="l00050"></a>00050 C     A new iterator on lat/lon/values is created from the message igrib
-<a name="l00051"></a>00051       flags = 0
-<a name="l00052"></a>00052       call grib_check(<a name="a0"></a><a class="code" href="group__iterators.html#gefb1f87110bdce732edc9154cf0e7d58" title="Create a new iterator from a handle, using current geometry and values.">grib_iterator_new</a>(igrib,iter,flags))
-<a name="l00053"></a>00053 
-<a name="l00054"></a>00054       n = 0
-<a name="l00055"></a>00055 C     Loop on all the lat/lon/values.
-<a name="l00056"></a>00056   20  iret = <a name="a1"></a><a class="code" href="group__iterators.html#g4f73056dbfdda3de0060559b9b39ea34" title="Get the next value from an iterator.">grib_iterator_next</a>(iter,lat,lon,value)
-<a name="l00057"></a>00057       if ( iret .eq. 0 ) goto 30
-<a name="l00058"></a>00058 C     You can now print lat and lon,
-<a name="l00059"></a>00059       if ( value .eq. missingValue ) then
-<a name="l00060"></a>00060 C     decide what to print if a missing value is found.
-<a name="l00061"></a>00061         write(*,*) "- ",n," - lat=",lat," lon=",lon," value=missing"
-<a name="l00062"></a>00062       else
-<a name="l00063"></a>00063 C     or print the value if is not missing.
-<a name="l00064"></a>00064         write(*,*) " ",n," lat=",lat," lon=",lon," value=",value
-<a name="l00065"></a>00065       endif
-<a name="l00066"></a>00066 
-<a name="l00067"></a>00067       n=n+1
-<a name="l00068"></a>00068 
-<a name="l00069"></a>00069       goto 20
-<a name="l00070"></a>00070   30  continue
-<a name="l00071"></a>00071 
-<a name="l00072"></a>00072 C     At the end the iterator is deleted to free memory.
-<a name="l00073"></a>00073       call grib_check(<a name="a2"></a><a class="code" href="group__iterators.html#gd46ed73a16af56e6f3b46fe86ee8a759" title="Frees an iterator from memory.">grib_iterator_delete</a>(iter))
-<a name="l00074"></a>00074 
-<a name="l00075"></a>00075       goto 10
-<a name="l00076"></a>00076 
-<a name="l00077"></a>00077       call grib_check(grib_release(igrib))
-<a name="l00078"></a>00078 
-<a name="l00079"></a>00079       call grib_check(grib_close_file(ifile))
-<a name="l00080"></a>00080 
-<a name="l00081"></a>00081       end
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/jquery.js b/html/jquery.js
new file mode 100644
index 0000000..c197801
--- /dev/null
+++ b/html/jquery.js
@@ -0,0 +1,31 @@
+/*!
+ * jQuery JavaScript Library v1.7.1
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Mon Nov 21 21:11:03 2011 -0500
+ */
+(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/ [...]
+}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElemen [...]
+if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);re [...]
+}b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:functio [...]
+/*!
+ * Sizzle CSS Selector Engine
+ *  Copyright 2011, The Dojo Foundation
+ *  Released under the MIT, BSD, and GPL Licenses.
+ *  More information: http://sizzlejs.com/
+ */
+(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU [...]
+},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD: [...]
+ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div<div>","</div>"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this [...]
+if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padding"+bz[bx]))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}}}return bA+"px"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,"padding"+bz[bx]))||0;if(bv!=="padding"){bA+=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[ [...]
+}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,a3,aH=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0("show",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,"olddisplay")&&by==="none"){by=bw.style.d [...]
+})}})(window);
diff --git a/html/keys.html b/html/keys.html
deleted file mode 100644
index 1c3a6b5..0000000
--- a/html/keys.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: Grib API keys</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1><a class="anchor" name="keys">Grib API keys</a></h1>The GRIBEX routine used at ECMWF to encode and decode GRIB messages works on a number based table to retrive all the information from the message. This approach forces the user either to learn a code table or to use the documentation intensively. With grib_api a key name based access is provided so that all the information contained in the GRIB message is retrieved through alphanumeric names. <br>
- All the key names are built from the official WMO documentation on the GRIB edition 1 and 2 coding standard removing the spaces in the key description and capitalizing the initials so that the caption:<br>
- <div class="fragment"><pre class="fragment">
-identification of originating generating centre
-</pre></div> is transformed into the key name<br>
- <div class="fragment"><pre class="fragment">
-identificationOfOriginatingGeneratingCentre
-</pre></div><br>
- Some short names (aliases) are also provided, e.g. "centre" is an alias for identificationOfOriginatingGeneratingCentre. The names are always easily releated to the meaning of their value.<br>
- A different set of keys is available for each message because the content is different. It is easy to find the keys available in a message by using the GRIB tools (<a class="el" href="grib_dump.html">grib_dump) </a>or the library (<a class="el" href="keys__iterator_8c-example.html">keys_iterator.c</a>).<br>
-<h2><a class="anchor" name="coded_computed">
-Coded and Computed keys</a></h2>
-There are two different types of keys: coded and computed. <br>
- The coded keys are directly linked to octets of the GRIB message and their value is obtained by only decoding the octets. A list of all the coded keys in a message can be obtained using <a class="el" href="grib_dump.html">grib_dump</a> without any option (use the -a option to obtain also their aliases).<br>
- The computed keys are obtained by combining other keys (coded or computed) and when their value is set all the related keys are set in a cascade process.<br>
- These keys provide a synthesis of the information contained in the GRIB message and are a safe way to set complex attributes such as the type of grid or the type of packing. They are also helpful in the interpretation of some octets such as the scanning mode whose bits are related to the way of scanning the grid. In this case the computed keys:<br>
- <div class="fragment"><pre class="fragment">
-iScansNegatively
-jScansPositively
-jPointsAreConsecutive
-alternativeRowScanning (available only for edition 2)
-</pre></div><br>
- will provide access to single bits of the scanning mode octect hiding its structure from the user.<br>
- The keys can also have some attributes as <em>read</em> <em>only</em>, which means that the key cannot be set (e.g. 7777 at the end of the message), or <em>edition</em> <em>specific</em> that is the attribute of all the keys having different values in the two editions (e.g. longitudeOfFirstGridPoint) or being present in one edition only (e.g. alternativeRowScanning).<br>
- Moreover there are some computed keys that cannot be "get" and can be considered as functions acting on the grib in some way. These keys are always characterised by a predicate in their name (e.g. setDecimalPrecision).<br>
- For the computed keys we provide the following preliminary documentation that will be extended soon.<ul>
-<li>MARS keywords.<br>
- All MARS keywords are available. Some examples are:<ul>
-<li>date</li><li>param</li><li>levtype</li><li>levelist</li><li>step</li><li>stream</li></ul>
-</li><li>angles in degrees. <br>
- All the angle variables are provided in two versions, a native one with the units coded into the GRIB file and an edition independent one in degrees. It is always better to work with the "in degrees" version that is always provided through the key which has the same name of the native version with the suffix InDegrees <div class="fragment"><pre class="fragment">
-longitudeOfFirstGridPoint -> longitudeOfFirstGridPointInDegrees
-latitudeOfFirstGridPoint -> latitudeOfFirstGridPointInDegrees
-longitudeOfLastGridPoint -> longitudeOfLastGridPointInDegrees
-latitudeOfFirstGridPoint -> latitudeOfLastGridPointInDegrees
-latitudeOfFirstGridPoint -> latitudeOfFirstGridPointInDegrees
-iDirectionIncrement -> iDirectionIncrementInDegrees
-jDirectionIncrement -> jDirectionIncrementInDegrees
-</pre></div></li><li>gridType<br>
- The type of grid computed from the grid description section.<ul>
-<li>For both editions:<ul>
-<li>regular_ll</li><li>reduced_ll</li><li>mercator</li><li>lambert</li><li>polar_stereographic</li><li>UTM</li><li>simple_polyconic</li><li>albers</li><li>miller</li><li>rotated_ll</li><li>stretched_ll</li><li>stretched_rotated_ll</li><li>regular_gg</li><li>rotated_gg</li><li>stretched_gg</li><li>stretched_rotated_gg</li><li>reduced_gg</li><li>sh</li><li>rotated_sh</li><li>stretched_sh</li><li>stretched_rotated_sh</li><li>space_view<br>
-</li></ul>
-</li><li>For edition 2 only:<ul>
-<li>triangular_grid</li><li>equatorial_azimuthal_equidistant</li><li>azimuth_range</li><li>cross_section</li><li>Hovmoller</li><li>time_section</li></ul>
-</li></ul>
-</li></ul>
-<p>
-<ul>
-<li>packingType<br>
- The alghorithm used to pack data into the GRIB message.<br>
-<ul>
-<li>For GRIB edition 1:<ul>
-<li>grid_simple</li><li>grid_simple_matrix</li><li>grid_simple_matrix_bitmap</li><li>grid_second_order</li><li>grid_second_order_different_width</li><li>spectral_complex</li><li>spectral_simple</li><li>grid_unknown</li><li>spectral_unknown<br>
-</li></ul>
-</li><li>For GRIB edition 2:<ul>
-<li>grid_simple</li><li>grid_simple_matrix</li><li>grid_simple_matrix_bitmap</li><li>grid_complex</li><li>grid_complex_spatial_differencing</li><li>grid_jpeg</li><li>grid_png</li><li>grid_ieee</li><li>spectral_simple</li><li>spectral_complex</li><li>grid_simple_log_preprocessing</li></ul>
-</li></ul>
-</li></ul>
-<p>
-<ul>
-<li>setDecimalPrecision<br>
- is a function key used to set the decimal precision see the <a class="el" href="grib_set.html">grib_set</a> page for usage.</li></ul>
-<p>
-<ul>
-<li>getNumberOfValues<br>
- The number of values coded into the data section of the GRIB message </li></ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/keys__iterator_8c-example.html b/html/keys__iterator_8c-example.html
deleted file mode 100644
index b060ca6..0000000
--- a/html/keys__iterator_8c-example.html
+++ /dev/null
@@ -1,115 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: keys_iterator.c</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>keys_iterator.c</h1>keys_iterator.c How to get the names of all the keys defined in a message and how to iterate through them.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
-<a name="l00010"></a>00010 <span class="comment">/*</span>
-<a name="l00011"></a>00011 <span class="comment"> * C Implementation: keys_iterator</span>
-<a name="l00012"></a>00012 <span class="comment"> *</span>
-<a name="l00013"></a>00013 <span class="comment"> * Description:</span>
-<a name="l00014"></a>00014 <span class="comment"> * Example on how to use keys_iterator functions and the</span>
-<a name="l00015"></a>00015 <span class="comment"> * grib_keys_iterator structure to get all the available</span>
-<a name="l00016"></a>00016 <span class="comment"> * keys in a message.</span>
-<a name="l00017"></a>00017 <span class="comment"> *</span>
-<a name="l00018"></a>00018 <span class="comment"> * Author: Enrico Fucile</span>
-<a name="l00019"></a>00019 <span class="comment"> *</span>
-<a name="l00020"></a>00020 <span class="comment"> *</span>
-<a name="l00021"></a>00021 <span class="comment"> */</span>
-<a name="l00022"></a>00022 
-<a name="l00023"></a>00023 <span class="preprocessor">#include <assert.h></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <stdlib.h></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include <stdio.h></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include <unistd.h></span>
-<a name="l00027"></a>00027 
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>"</span>
-<a name="l00029"></a>00029 
-<a name="l00030"></a>00030 <span class="preprocessor">#define MAX_KEY_LEN  255</span>
-<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#define MAX_VAL_LEN  1024</span>
-<a name="l00032"></a>00032 <span class="preprocessor"></span>
-<a name="l00033"></a>00033 <span class="keyword">static</span> <span class="keywordtype">void</span> usage(<span class="keywordtype">char</span>* progname);
-<a name="l00034"></a>00034 
-<a name="l00035"></a>00035 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037   <span class="comment">/* To skip read only and not coded keys</span>
-<a name="l00038"></a>00038 <span class="comment">     unsigned long key_iterator_filter_flags=GRIB_KEYS_ITERATOR_SKIP_READ_ONLY ||</span>
-<a name="l00039"></a>00039 <span class="comment">     GRIB_KEYS_ITERATOR_SKIP_COMPUTED;</span>
-<a name="l00040"></a>00040 <span class="comment">  */</span>
-<a name="l00041"></a>00041   <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> key_iterator_filter_flags=<a name="a0"></a><a class="code" href="group__keys__iterator.html#g0e4d2d943ddd61d0b877060e6fbea405">GRIB_KEYS_ITERATOR_ALL_KEYS</a>;
-<a name="l00042"></a>00042 
-<a name="l00043"></a>00043   <span class="comment">/* valid name_spaces are ls and mars */</span>
-<a name="l00044"></a>00044   <span class="keywordtype">char</span>* name_space=<span class="stringliteral">"ls"</span>;
-<a name="l00045"></a>00045 
-<a name="l00046"></a>00046   <span class="comment">/* name_space=NULL to get all the keys */</span>
-<a name="l00047"></a>00047   <span class="comment">/* char* name_space=0; */</span>
-<a name="l00048"></a>00048 
-<a name="l00049"></a>00049   FILE* f;
-<a name="l00050"></a>00050   <a name="a1"></a><a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* h=NULL;
-<a name="l00051"></a>00051   <a name="a2"></a><a class="code" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a>* kiter=NULL;
-<a name="l00052"></a>00052   <span class="keywordtype">int</span> err=0;
-<a name="l00053"></a>00053   <span class="keywordtype">int</span> grib_count=0;
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055   <span class="keywordtype">char</span> value[MAX_VAL_LEN];
-<a name="l00056"></a>00056   <span class="keywordtype">size_t</span> vlen=MAX_VAL_LEN;
-<a name="l00057"></a>00057 
-<a name="l00058"></a>00058   <span class="keywordflow">if</span> (argc != 2) usage(argv[0]);
-<a name="l00059"></a>00059 
-<a name="l00060"></a>00060   f = fopen(argv[1],<span class="stringliteral">"r"</span>);
-<a name="l00061"></a>00061   <span class="keywordflow">if</span>(!f) {
-<a name="l00062"></a>00062     perror(argv[1]);
-<a name="l00063"></a>00063     exit(1);
-<a name="l00064"></a>00064   }
-<a name="l00065"></a>00065 
-<a name="l00066"></a>00066   <span class="keywordflow">while</span>((h = <a name="a3"></a><a class="code" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5" title="Create a handle from a file resource.">grib_handle_new_from_file</a>(0,f,&err)) != NULL) {
-<a name="l00067"></a>00067 
-<a name="l00068"></a>00068     grib_count++;
-<a name="l00069"></a>00069     printf(<span class="stringliteral">"-- GRIB N. %d --\n"</span>,grib_count);
-<a name="l00070"></a>00070     <span class="keywordflow">if</span>(!h) {
-<a name="l00071"></a>00071       printf(<span class="stringliteral">"ERROR: Unable to create grib handle\n"</span>);
-<a name="l00072"></a>00072       exit(1);
-<a name="l00073"></a>00073     }
-<a name="l00074"></a>00074 
-<a name="l00075"></a>00075     kiter=<a name="a4"></a><a class="code" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a>(h,key_iterator_filter_flags,name_space);
-<a name="l00076"></a>00076     <span class="keywordflow">if</span> (!kiter) {
-<a name="l00077"></a>00077       printf(<span class="stringliteral">"ERROR: Unable to create keys iterator\n"</span>);
-<a name="l00078"></a>00078       exit(1);
-<a name="l00079"></a>00079     }
-<a name="l00080"></a>00080 
-<a name="l00081"></a>00081     <span class="keywordflow">while</span>(<a name="a5"></a><a class="code" href="group__keys__iterator.html#g28f6ac808ecdc324fa3a47bc7b3f6dec">grib_keys_iterator_next</a>(kiter))
-<a name="l00082"></a>00082     {
-<a name="l00083"></a>00083       <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <a name="a6"></a><a class="code" href="group__keys__iterator.html#gec3348471f770965c07964e286249e12">grib_keys_iterator_get_name</a>(kiter);
-<a name="l00084"></a>00084       vlen=MAX_VAL_LEN;
-<a name="l00085"></a>00085       GRIB_CHECK(<a name="a7"></a><a class="code" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053" title="Get a string value from a key, if several keys of the same name are present, the...">grib_get_string</a>(h,name,value,&vlen),name);
-<a name="l00086"></a>00086       printf(<span class="stringliteral">"%s = %s\n"</span>,name,value);
-<a name="l00087"></a>00087     }
-<a name="l00088"></a>00088 
-<a name="l00089"></a>00089     <a name="a8"></a><a class="code" href="group__keys__iterator.html#g79716d2b701c3dbb3d3a8e633f35a40a">grib_keys_iterator_delete</a>(kiter);
-<a name="l00090"></a>00090 
-<a name="l00091"></a>00091   }
-<a name="l00092"></a>00092 
-<a name="l00093"></a>00093   <span class="keywordflow">return</span> 0;
-<a name="l00094"></a>00094 
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096 
-<a name="l00097"></a>00097 <span class="keyword">static</span> <span class="keywordtype">void</span> usage(<span class="keywordtype">char</span>* progname) {
-<a name="l00098"></a>00098   printf(<span class="stringliteral">"\nUsage: %s grib_file\n"</span>,progname);
-<a name="l00099"></a>00099   exit(1);
-<a name="l00100"></a>00100 }
-<a name="l00101"></a>00101 
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/keys__iterator_8f90-example.html b/html/keys__iterator_8f90-example.html
deleted file mode 100644
index 999ae5a..0000000
--- a/html/keys__iterator_8f90-example.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: keys_iterator.f90</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>keys_iterator.f90</h1>How to get the names of all the keys defined in a message and how to iterate through them.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 ! 
-<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 !
-<a name="l00008"></a>00008 !
-<a name="l00009"></a>00009 !  Description:
-<a name="l00010"></a>00010 !       How to use keys_iterator to <span class="keyword">get</span> all the available
-<a name="l00011"></a>00011 !       keys in a message.
-<a name="l00012"></a>00012 !
-<a name="l00013"></a>00013 !  Author: Enrico Fucile 
-<a name="l00014"></a>00014 !
-<a name="l00015"></a>00015 !
-<a name="l00016"></a>00016 program keys_iterator
-<a name="l00017"></a>00017   use grib_api
-<a name="l00018"></a>00018   implicit none
-<a name="l00019"></a>00019   character(len=20)  :: name_space
-<a name="l00020"></a>00020   integer            :: kiter,ifile,igrib,iret
-<a name="l00021"></a>00021   character(len=256) :: key
-<a name="l00022"></a>00022   character(len=256) :: value
-<a name="l00023"></a>00023   character(len=512) :: all
-<a name="l00024"></a>00024   integer            :: grib_count
-<a name="l00025"></a>00025   
-<a name="l00026"></a>00026   call grib_open_file(ifile, &
-<a name="l00027"></a>00027        '../../data/regular_latlon_surface.grib1','r')
-<a name="l00028"></a>00028   
-<a name="l00029"></a>00029   ! Loop on all the messages in a file.
-<a name="l00030"></a>00030   
-<a name="l00031"></a>00031   call grib_new_from_file(ifile,igrib, iret)
-<a name="l00032"></a>00032   
-<a name="l00033"></a>00033   do while (iret /= <a name="a0"></a><a class="code" href="grib__api_8h.html#3bd3d72fe8bc116ca08c2d4b99203768" title="End of ressource reached.">GRIB_END_OF_FILE</a>)
-<a name="l00034"></a>00034 
-<a name="l00035"></a>00035      grib_count=grib_count+1
-<a name="l00036"></a>00036      write(*,*) '-- GRIB N. ',grib_count,' --'
-<a name="l00037"></a>00037      
-<a name="l00038"></a>00038      ! valid name_spaces are ls and mars
-<a name="l00039"></a>00039      name_space='ls'
-<a name="l00040"></a>00040      
-<a name="l00041"></a>00041      call <a name="a1"></a><a class="code" href="group__keys__iterator.html#g66a11d157fc81e1c27fc2acad0a5b1f4">grib_keys_iterator_new</a>(igrib,kiter,name_space)
-<a name="l00042"></a>00042      
-<a name="l00043"></a>00043      do
-<a name="l00044"></a>00044         call <a name="a2"></a><a class="code" href="group__keys__iterator.html#g28f6ac808ecdc324fa3a47bc7b3f6dec">grib_keys_iterator_next</a>(kiter, iret) 
-<a name="l00045"></a>00045         
-<a name="l00046"></a>00046         if (iret .ne. 1) exit
-<a name="l00047"></a>00047         
-<a name="l00048"></a>00048         call <a name="a3"></a><a class="code" href="group__keys__iterator.html#gec3348471f770965c07964e286249e12">grib_keys_iterator_get_name</a>(kiter,key)
-<a name="l00049"></a>00049         call grib_get(igrib,trim(key),value)
-<a name="l00050"></a>00050         all=trim(key)<span class="comment">// ' = ' // trim(value)</span>
-<a name="l00051"></a>00051         write(*,*) trim(all)
-<a name="l00052"></a>00052         
-<a name="l00053"></a>00053      end do
-<a name="l00054"></a>00054      
-<a name="l00055"></a>00055      call <a name="a4"></a><a class="code" href="group__keys__iterator.html#g79716d2b701c3dbb3d3a8e633f35a40a">grib_keys_iterator_delete</a>(kiter)
-<a name="l00056"></a>00056      call grib_release(igrib)
-<a name="l00057"></a>00057      call grib_new_from_file(ifile,igrib, iret)
-<a name="l00058"></a>00058   end do
-<a name="l00059"></a>00059   
-<a name="l00060"></a>00060   
-<a name="l00061"></a>00061   call grib_close_file(ifile)
-<a name="l00062"></a>00062   
-<a name="l00063"></a>00063 end program keys_iterator
-<a name="l00064"></a>00064 
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/keys__iterator__fortran_8_f-example.html b/html/keys__iterator__fortran_8_f-example.html
deleted file mode 100644
index 7168966..0000000
--- a/html/keys__iterator__fortran_8_f-example.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: keys_iterator_fortran.F</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>keys_iterator_fortran.F</h1>keys_iterator_fortran.F How to get the names of all the keys defined in a message and how to iterate through them.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 C Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 C This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 C 
-<a name="l00005"></a>00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 C
-<a name="l00008"></a>00008 C
-<a name="l00009"></a>00009 C  Fortran 77 Implementation: keys_iterator
-<a name="l00010"></a>00010 C
-<a name="l00011"></a>00011 C  Description:
-<a name="l00012"></a>00012 C  Example on how to use keys_iterator functions and the
-<a name="l00013"></a>00013 C  <a name="a0"></a><a class="code" href="group__keys__iterator.html#gfa22412541f9d2df9680a82371036dbb">grib_keys_iterator</a> structure to <span class="keyword">get</span> all the available
-<a name="l00014"></a>00014 C  keys in a message.
-<a name="l00015"></a>00015 C
-<a name="l00016"></a>00016 C  Author: Enrico Fucile
-<a name="l00017"></a>00017 C
-<a name="l00018"></a>00018 C
-<a name="l00019"></a>00019 C
-<a name="l00020"></a>00020       program keys_iterator
-<a name="l00021"></a>00021       implicit none
-<a name="l00022"></a>00022       include 'grib_api_f77.h'
-<a name="l00023"></a>00023       character*20 name_space
-<a name="l00024"></a>00024       integer kiter,ifile,igrib,iret
-<a name="l00025"></a>00025       character*256 key
-<a name="l00026"></a>00026       character*256 value
-<a name="l00027"></a>00027       character*512 all
-<a name="l00028"></a>00028       integer len,strlen
-<a name="l00029"></a>00029       integer grib_count
-<a name="l00030"></a>00030       len=256
-<a name="l00031"></a>00031 
-<a name="l00032"></a>00032       ifile=5
-<a name="l00033"></a>00033 
-<a name="l00034"></a>00034       call grib_check(grib_open_file(ifile,
-<a name="l00035"></a>00035      X'../../data/regular_latlon_surface.grib1<span class="charliteral">','</span>r'))
-<a name="l00036"></a>00036 
-<a name="l00037"></a>00037       grib_count=0
-<a name="l00038"></a>00038 C     Loop on all the messages in a file.
-<a name="l00039"></a>00039   10  iret=grib_new_from_file(ifile,igrib)
-<a name="l00040"></a>00040       if (igrib .eq. -1 )  then
-<a name="l00041"></a>00041         if (iret .ne.0) then
-<a name="l00042"></a>00042            call grib_check(iret)
-<a name="l00043"></a>00043         endif
-<a name="l00044"></a>00044         stop
-<a name="l00045"></a>00045       endif
-<a name="l00046"></a>00046 
-<a name="l00047"></a>00047       grib_count=grib_count+1
-<a name="l00048"></a>00048       write(*,'("-- GRIB N.",I4," --")') grib_count
-<a name="l00049"></a>00049 
-<a name="l00050"></a>00050 C     valid name_spaces are ls and mars
-<a name="l00051"></a>00051       name_space='ls'
-<a name="l00052"></a>00052 C     name_space=' ' to get all the keys */
-<a name="l00053"></a>00053 C     name_space=' '
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055       call grib_check(
-<a name="l00056"></a>00056      Xgrib_keys_iterator_new(igrib,kiter,name_space))
-<a name="l00057"></a>00057 C     call grib_check(grib_keys_iterator_skip_read_only(kiter))
-<a name="l00058"></a>00058 C     call grib_check(grib_keys_iterator_skip_function(kiter))
-<a name="l00059"></a>00059 C     call grib_check(grib_keys_iterator_skip_not_coded(kiter))
-<a name="l00060"></a>00060 
-<a name="l00061"></a>00061   20  if (<a name="a1"></a><a class="code" href="group__keys__iterator.html#g28f6ac808ecdc324fa3a47bc7b3f6dec">grib_keys_iterator_next</a>(kiter) .ne. 1) goto 10
-<a name="l00062"></a>00062 
-<a name="l00063"></a>00063       call grib_check(<a name="a2"></a><a class="code" href="group__keys__iterator.html#gec3348471f770965c07964e286249e12">grib_keys_iterator_get_name</a>(kiter,key))
-<a name="l00064"></a>00064       call grib_check(<a name="a3"></a><a class="code" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053" title="Get a string value from a key, if several keys of the same name are present, the...">grib_get_string</a>(igrib,key,value))
-<a name="l00065"></a>00065       all='|' <span class="comment">// trim(key)//'|' //  ' = ' //'|' //  trim(value) // '|' </span>
-<a name="l00066"></a>00066       write(*,*) trim(all)
-<a name="l00067"></a>00067 
-<a name="l00068"></a>00068       goto 20
-<a name="l00069"></a>00069 
-<a name="l00070"></a>00070       call grib_check(<a name="a4"></a><a class="code" href="group__keys__iterator.html#g79716d2b701c3dbb3d3a8e633f35a40a">grib_keys_iterator_delete</a>(kiter))
-<a name="l00071"></a>00071 
-<a name="l00072"></a>00072       call grib_check(grib_release(igrib))
-<a name="l00073"></a>00073 
-<a name="l00074"></a>00074       call grib_check(grib_close_file(ifile))
-<a name="l00075"></a>00075 
-<a name="l00076"></a>00076       end
-<a name="l00077"></a>00077 
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/modules.html b/html/modules.html
index 1adb627..ca58186 100644
--- a/html/modules.html
+++ b/html/modules.html
@@ -1,30 +1,102 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: Module Index</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li class="current"><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: C Interface</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
 </div>
-<h1>grib_api Modules</h1>Here is a list of all modules:<ul>
-<li><a class="el" href="group__grib__index.html">The grib_index</a>
-<li><a class="el" href="group__grib__handle.html">The grib_handle</a>
-<li><a class="el" href="group__handling__coded__messages.html">Handling coded messages</a>
-<li><a class="el" href="group__iterators.html">Iterating on latitude/longitude/values</a>
-<li><a class="el" href="group__get__set.html">Accessing header and data values</a>
-<li><a class="el" href="group__context.html">The context object</a>
-<li><a class="el" href="group__keys__iterator.html">Iterating on keys names</a>
-</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li class="current"><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">C Interface</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all modules:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group__codes__index.html" target="_self">The indexing feature</a></td><td class="desc"></td></tr>
+<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group__codes__handle.html" target="_self">The message handle</a></td><td class="desc"></td></tr>
+<tr id="row_2_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group__handling__coded__messages.html" target="_self">Handling coded messages</a></td><td class="desc"></td></tr>
+<tr id="row_3_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group__iterators.html" target="_self">Iterating on latitude/longitude/values</a></td><td class="desc"></td></tr>
+<tr id="row_4_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group__get__set.html" target="_self">Accessing header and data values</a></td><td class="desc"></td></tr>
+<tr id="row_5_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group__context.html" target="_self">The context object</a></td><td class="desc"></td></tr>
+<tr id="row_6_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group__keys__iterator.html" target="_self">Iterating on keys names</a></td><td class="desc"></td></tr>
+<tr id="row_7_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group__errors.html" target="_self">Error codes</a></td><td class="desc"></td></tr>
+<tr id="row_8_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="group__environment.html" target="_self">Environment variables</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
 </body>
 </html>
diff --git a/html/multi_8c-example.html b/html/multi_8c-example.html
deleted file mode 100644
index 5c432ba..0000000
--- a/html/multi_8c-example.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: multi.c</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>multi.c</h1>multi.c How to decode a grib message containing many fields.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
-<a name="l00010"></a>00010 <span class="comment">/*</span>
-<a name="l00011"></a>00011 <span class="comment"> * C Implementation: multi  </span>
-<a name="l00012"></a>00012 <span class="comment"> *</span>
-<a name="l00013"></a>00013 <span class="comment"> * Description: How to decode grib messages containing multiple</span>
-<a name="l00014"></a>00014 <span class="comment"> *              fields. Try to turn on and off multi support to</span>
-<a name="l00015"></a>00015 <span class="comment"> *              see the difference. Default is OFF.</span>
-<a name="l00016"></a>00016 <span class="comment"> *                      For all the tools defalut is multi support ON.</span>
-<a name="l00017"></a>00017 <span class="comment"> *</span>
-<a name="l00018"></a>00018 <span class="comment"> *</span>
-<a name="l00019"></a>00019 <span class="comment"> * Author: Enrico Fucile</span>
-<a name="l00020"></a>00020 <span class="comment"> *</span>
-<a name="l00021"></a>00021 <span class="comment"> *</span>
-<a name="l00022"></a>00022 <span class="comment"> */</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <stdio.h></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <stdlib.h></span>
-<a name="l00025"></a>00025 
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>"</span>
-<a name="l00027"></a>00027 
-<a name="l00028"></a>00028 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {
-<a name="l00029"></a>00029   <span class="keywordtype">int</span> err = 0;
-<a name="l00030"></a>00030   <span class="keywordtype">long</span> parameterCategory=0,parameterNumber=0,discipline=0;
-<a name="l00031"></a>00031   FILE* in = NULL;
-<a name="l00032"></a>00032   <span class="keywordtype">char</span>* filename = <span class="stringliteral">"../../data/multi.grib2"</span>;
-<a name="l00033"></a>00033   <a name="a0"></a><a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h = NULL;
-<a name="l00034"></a>00034 
-<a name="l00035"></a>00035   <span class="comment">/* turn on support for multi fields messages */</span>
-<a name="l00036"></a>00036   <a name="a1"></a><a class="code" href="group__context.html#g3266536e68ebb6d4bbc4a22b29f0e8ea" title="Turn on support for multiple fields in single grib messages.">grib_multi_support_on</a>(0);
-<a name="l00037"></a>00037 
-<a name="l00038"></a>00038   <span class="comment">/* turn off support for multi fields messages */</span>
-<a name="l00039"></a>00039   <span class="comment">/* grib_multi_support_off(0); */</span>
-<a name="l00040"></a>00040 
-<a name="l00041"></a>00041   in = fopen(filename,<span class="stringliteral">"r"</span>);
-<a name="l00042"></a>00042   <span class="keywordflow">if</span>(!in) {
-<a name="l00043"></a>00043     printf(<span class="stringliteral">"ERROR: unable to open file %s\n"</span>,filename);
-<a name="l00044"></a>00044     <span class="keywordflow">return</span> 1;
-<a name="l00045"></a>00045   }
-<a name="l00046"></a>00046 
-<a name="l00047"></a>00047 
-<a name="l00048"></a>00048   <span class="keywordflow">while</span> ((h = <a name="a2"></a><a class="code" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5" title="Create a handle from a file resource.">grib_handle_new_from_file</a>(0,in,&err)) != NULL ) {
-<a name="l00049"></a>00049 
-<a name="l00050"></a>00050     GRIB_CHECK(err,0);
-<a name="l00051"></a>00051 
-<a name="l00052"></a>00052     GRIB_CHECK(<a name="a3"></a><a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"discipline"</span>,&discipline),0);
-<a name="l00053"></a>00053     printf(<span class="stringliteral">"discipline=%ld\n"</span>,discipline);
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055     GRIB_CHECK(<a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"parameterCategory"</span>,&parameterCategory),0);
-<a name="l00056"></a>00056     printf(<span class="stringliteral">"parameterCategory=%ld\n"</span>,parameterCategory);
-<a name="l00057"></a>00057 
-<a name="l00058"></a>00058     GRIB_CHECK(<a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"parameterNumber"</span>,&parameterNumber),0);
-<a name="l00059"></a>00059     printf(<span class="stringliteral">"parameterNumber=%ld\n"</span>,parameterNumber);
-<a name="l00060"></a>00060 
-<a name="l00061"></a>00061     <span class="keywordflow">if</span> ( discipline == 0 && parameterCategory==2) {
-<a name="l00062"></a>00062     <span class="keywordflow">if</span> (parameterNumber == 2) printf(<span class="stringliteral">"-------- u -------\n"</span>);
-<a name="l00063"></a>00063     <span class="keywordflow">if</span> (parameterNumber == 3) printf(<span class="stringliteral">"-------- v -------\n"</span>);
-<a name="l00064"></a>00064     }
-<a name="l00065"></a>00065   }
-<a name="l00066"></a>00066 
-<a name="l00067"></a>00067   <a name="a4"></a><a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);
-<a name="l00068"></a>00068 
-<a name="l00069"></a>00069   fclose(in);
-<a name="l00070"></a>00070   <span class="keywordflow">return</span> 0;
-<a name="l00071"></a>00071 }
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/multi_8f90-example.html b/html/multi_8f90-example.html
deleted file mode 100644
index 6564020..0000000
--- a/html/multi_8f90-example.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: multi.f90</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>multi.f90</h1>How to decode a grib message containing many fields.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 ! 
-<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 !
-<a name="l00008"></a>00008 !
-<a name="l00009"></a>00009 !  Description: How to decode grib messages containing multiple
-<a name="l00010"></a>00010 !               fields. Try to turn on and off multi support to
-<a name="l00011"></a>00011 !               see the difference. Default is OFF.
-<a name="l00012"></a>00012 !               For all the tools defalut is multi support ON.
-<a name="l00013"></a>00013 !
-<a name="l00014"></a>00014 !
-<a name="l00015"></a>00015 !  Author: Enrico Fucile 
-<a name="l00016"></a>00016 !
-<a name="l00017"></a>00017 !
-<a name="l00018"></a>00018 program multi
-<a name="l00019"></a>00019   use grib_api
-<a name="l00020"></a>00020   implicit none
-<a name="l00021"></a>00021   
-<a name="l00022"></a>00022   integer              :: iret
-<a name="l00023"></a>00023   character(len = 256) :: error
-<a name="l00024"></a>00024   integer(kind = 4)    :: step
-<a name="l00025"></a>00025   integer              :: ifile,igrib
-<a name="l00026"></a>00026 
-<a name="l00027"></a>00027   call grib_open_file(ifile, '../../data/multi_created.grib2','r')
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029   !     turn on support for multi fields messages */
-<a name="l00030"></a>00030   call <a name="a0"></a><a class="code" href="group__context.html#g3266536e68ebb6d4bbc4a22b29f0e8ea" title="Turn on support for multiple fields in single grib messages.">grib_multi_support_on</a>()
-<a name="l00031"></a>00031 
-<a name="l00032"></a>00032   !     turn off support for multi fields messages */
-<a name="l00033"></a>00033   !call <a name="a1"></a><a class="code" href="group__context.html#gc022270a99922ccc57147670ed2a58d4" title="Turn off support for multiple fields in single grib messages.">grib_multi_support_off</a>()
-<a name="l00034"></a>00034 
-<a name="l00035"></a>00035   call grib_new_from_file(ifile,igrib, iret)
-<a name="l00036"></a>00036   !     Loop on all the messages in a file.
-<a name="l00037"></a>00037 
-<a name="l00038"></a>00038   write(*,*) 'step'
-<a name="l00039"></a>00039   do while (iret /= <a name="a2"></a><a class="code" href="grib__api_8h.html#3bd3d72fe8bc116ca08c2d4b99203768" title="End of ressource reached.">GRIB_END_OF_FILE</a>)
-<a name="l00040"></a>00040 
-<a name="l00041"></a>00041      call grib_get(igrib,'step', step)
-<a name="l00042"></a>00042      write(*,'(i3)') step
-<a name="l00043"></a>00043      
-<a name="l00044"></a>00044      call grib_new_from_file(ifile,igrib, iret)
-<a name="l00045"></a>00045   
-<a name="l00046"></a>00046   end do
-<a name="l00047"></a>00047   call grib_close_file(ifile)
-<a name="l00048"></a>00048 
-<a name="l00049"></a>00049 end program multi
-<a name="l00050"></a>00050 
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/multi__fortran_8_f-example.html b/html/multi__fortran_8_f-example.html
deleted file mode 100644
index 9a8e32d..0000000
--- a/html/multi__fortran_8_f-example.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: multi_fortran.F</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>multi_fortran.F</h1>multi_fortran.F How to decode a grib message containing many fields.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 C Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 C This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 C 
-<a name="l00005"></a>00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 C
-<a name="l00008"></a>00008 C
-<a name="l00009"></a>00009 C  Fortran 77 Implementation: multi_fortran
-<a name="l00010"></a>00010 C
-<a name="l00011"></a>00011 C  Description: How to decode grib messages containing multiple
-<a name="l00012"></a>00012 C               fields. Try to turn on and off multi support to
-<a name="l00013"></a>00013 C               see the difference. Default is OFF.
-<a name="l00014"></a>00014 C         For all the tools defalut is multi support ON.
-<a name="l00015"></a>00015 C
-<a name="l00016"></a>00016 C
-<a name="l00017"></a>00017 C  Author: Enrico Fucile
-<a name="l00018"></a>00018 C
-<a name="l00019"></a>00019 C
-<a name="l00020"></a>00020 C
-<a name="l00021"></a>00021       program multi
-<a name="l00022"></a>00022       implicit none
-<a name="l00023"></a>00023       include 'grib_api_f77.h'
-<a name="l00024"></a>00024       integer iret
-<a name="l00025"></a>00025       character*256 error
-<a name="l00026"></a>00026       integer*4 parameterCategory,parameterNumber,discipline
-<a name="l00027"></a>00027       integer ifile,igrib
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029       call grib_check( grib_open_file(ifile
-<a name="l00030"></a>00030      X,'../../data/multi.grib2<span class="charliteral">','</span>r'))
-<a name="l00031"></a>00031 
-<a name="l00032"></a>00032 C     turn on support for multi fields messages */
-<a name="l00033"></a>00033       call grib_check(<a name="a0"></a><a class="code" href="group__context.html#g3266536e68ebb6d4bbc4a22b29f0e8ea" title="Turn on support for multiple fields in single grib messages.">grib_multi_support_on</a>())
-<a name="l00034"></a>00034 
-<a name="l00035"></a>00035 C     turn off support for multi fields messages */
-<a name="l00036"></a>00036 C     call grib_check(<a name="a1"></a><a class="code" href="group__context.html#gc022270a99922ccc57147670ed2a58d4" title="Turn off support for multiple fields in single grib messages.">grib_multi_support_off</a>())
-<a name="l00037"></a>00037 
-<a name="l00038"></a>00038 C     Loop on all the messages in a file.
-<a name="l00039"></a>00039   10  iret=grib_new_from_file(ifile,igrib)
-<a name="l00040"></a>00040       if (igrib .eq. -1 )  then
-<a name="l00041"></a>00041         if (iret .ne.0) then
-<a name="l00042"></a>00042        call grib_check(iret)
-<a name="l00043"></a>00043         endif
-<a name="l00044"></a>00044         stop
-<a name="l00045"></a>00045       endif
-<a name="l00046"></a>00046 
-<a name="l00047"></a>00047 C     get as a integer*4
-<a name="l00048"></a>00048       call grib_check(grib_get_int(igrib,'discipline',discipline))
-<a name="l00049"></a>00049       write(*,*) 'discipline=',discipline
-<a name="l00050"></a>00050 
-<a name="l00051"></a>00051 C     get as a integer*4
-<a name="l00052"></a>00052       call grib_check(grib_get_int(igrib,'parameterCategory'
-<a name="l00053"></a>00053      X,parameterCategory))
-<a name="l00054"></a>00054       write(*,*) 'parameterCategory=',parameterCategory
-<a name="l00055"></a>00055 
-<a name="l00056"></a>00056 C     get as a integer*4
-<a name="l00057"></a>00057       call grib_check(grib_get_int(igrib,'parameterNumber'
-<a name="l00058"></a>00058      X,parameterNumber))
-<a name="l00059"></a>00059       write(*,*) 'parameterNumber=',parameterNumber
-<a name="l00060"></a>00060 
-<a name="l00061"></a>00061       if ( discipline .eq. 0 .and. parameterCategory .eq. 2) then
-<a name="l00062"></a>00062         if (parameterNumber .eq. 2) then
-<a name="l00063"></a>00063            write(*,*) "-------- u -------"
-<a name="l00064"></a>00064         endif
-<a name="l00065"></a>00065         if (parameterNumber .eq. 3) then
-<a name="l00066"></a>00066            write(*,*) "-------- v -------"
-<a name="l00067"></a>00067         endif
-<a name="l00068"></a>00068       endif
-<a name="l00069"></a>00069 
-<a name="l00070"></a>00070       goto 10
-<a name="l00071"></a>00071 
-<a name="l00072"></a>00072       call grib_check(grib_release(igrib))
-<a name="l00073"></a>00073 
-<a name="l00074"></a>00074       call grib_check(grib_close_file(ifile))
-<a name="l00075"></a>00075 
-<a name="l00076"></a>00076       end
-<a name="l00077"></a>00077 
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/namespaceec_codes.html b/html/namespaceec_codes.html
new file mode 100644
index 0000000..6721a7e
--- /dev/null
+++ b/html/namespaceec_codes.html
@@ -0,0 +1,4170 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: ecCodes Namespace Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li class="current"><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
+      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Data Structures</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">ecCodes Namespace Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This package is the <b>Python</b> interface to <a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a>.  
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classec_codes_1_1_codes_internal_error.html">CodesInternalError</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Wrap errors coming from the C API in a Python exception object.  <a href="classec_codes_1_1_codes_internal_error.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ab06cc33b116103a54fadb4e2735e579a"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#ab06cc33b116103a54fadb4e2735e579a">codes_gts_new_from_file</a></td></tr>
+<tr class="memdesc:ab06cc33b116103a54fadb4e2735e579a"><td class="mdescLeft"> </td><td class="mdescRight">Load in memory a GTS message from a file.  <a href="#ab06cc33b116103a54fadb4e2735e579a">More...</a><br/></td></tr>
+<tr class="separator:ab06cc33b116103a54fadb4e2735e579a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aabd87fd89cfac4d21ec014b838174e3c"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#aabd87fd89cfac4d21ec014b838174e3c">codes_metar_new_from_file</a></td></tr>
+<tr class="memdesc:aabd87fd89cfac4d21ec014b838174e3c"><td class="mdescLeft"> </td><td class="mdescRight">Load in memory a METAR message from a file.  <a href="#aabd87fd89cfac4d21ec014b838174e3c">More...</a><br/></td></tr>
+<tr class="separator:aabd87fd89cfac4d21ec014b838174e3c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab1788f3653df85dd90ac99f40daf98c4"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#ab1788f3653df85dd90ac99f40daf98c4">codes_new_from_file</a></td></tr>
+<tr class="memdesc:ab1788f3653df85dd90ac99f40daf98c4"><td class="mdescLeft"> </td><td class="mdescRight">Load in memory a message from a file for a given product.  <a href="#ab1788f3653df85dd90ac99f40daf98c4">More...</a><br/></td></tr>
+<tr class="separator:ab1788f3653df85dd90ac99f40daf98c4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af4a4c95465d2026ad549920b07150bab"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#af4a4c95465d2026ad549920b07150bab">codes_any_new_from_file</a></td></tr>
+<tr class="memdesc:af4a4c95465d2026ad549920b07150bab"><td class="mdescLeft"> </td><td class="mdescRight">Load in memory a message from a file.  <a href="#af4a4c95465d2026ad549920b07150bab">More...</a><br/></td></tr>
+<tr class="separator:af4a4c95465d2026ad549920b07150bab"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a44c10386781390c16f1a567590b33c11"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a44c10386781390c16f1a567590b33c11">codes_bufr_new_from_file</a></td></tr>
+<tr class="memdesc:a44c10386781390c16f1a567590b33c11"><td class="mdescLeft"> </td><td class="mdescRight">Load in memory a BUFR message from a file.  <a href="#a44c10386781390c16f1a567590b33c11">More...</a><br/></td></tr>
+<tr class="separator:a44c10386781390c16f1a567590b33c11"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a80246f356012448955e2e75572a8d210"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a80246f356012448955e2e75572a8d210">codes_grib_new_from_file</a></td></tr>
+<tr class="memdesc:a80246f356012448955e2e75572a8d210"><td class="mdescLeft"> </td><td class="mdescRight">Load in memory a grib message from a file.  <a href="#a80246f356012448955e2e75572a8d210">More...</a><br/></td></tr>
+<tr class="separator:a80246f356012448955e2e75572a8d210"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5c7a1d8a2c7802edd327a35cb35984e7"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a5c7a1d8a2c7802edd327a35cb35984e7">codes_count_in_file</a></td></tr>
+<tr class="memdesc:a5c7a1d8a2c7802edd327a35cb35984e7"><td class="mdescLeft"> </td><td class="mdescRight">Count the messages in a file.  <a href="#a5c7a1d8a2c7802edd327a35cb35984e7">More...</a><br/></td></tr>
+<tr class="separator:a5c7a1d8a2c7802edd327a35cb35984e7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aed3ce5487d6bdd24e1127e638c9cfd54"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#aed3ce5487d6bdd24e1127e638c9cfd54">codes_grib_multi_support_on</a></td></tr>
+<tr class="memdesc:aed3ce5487d6bdd24e1127e638c9cfd54"><td class="mdescLeft"> </td><td class="mdescRight">Turn on the support for multiple fields in a single message.  <a href="#aed3ce5487d6bdd24e1127e638c9cfd54">More...</a><br/></td></tr>
+<tr class="separator:aed3ce5487d6bdd24e1127e638c9cfd54"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaec2118b6fca48e59ded7d2099e81009"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#aaec2118b6fca48e59ded7d2099e81009">codes_grib_multi_support_off</a></td></tr>
+<tr class="memdesc:aaec2118b6fca48e59ded7d2099e81009"><td class="mdescLeft"> </td><td class="mdescRight">Turn off the support for multiple fields in a single message.  <a href="#aaec2118b6fca48e59ded7d2099e81009">More...</a><br/></td></tr>
+<tr class="separator:aaec2118b6fca48e59ded7d2099e81009"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a23859e3fb8802982fe865789d61b181f"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a23859e3fb8802982fe865789d61b181f">codes_release</a></td></tr>
+<tr class="memdesc:a23859e3fb8802982fe865789d61b181f"><td class="mdescLeft"> </td><td class="mdescRight">Free the memory for the message referred as msgid.  <a href="#a23859e3fb8802982fe865789d61b181f">More...</a><br/></td></tr>
+<tr class="separator:a23859e3fb8802982fe865789d61b181f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a37ff4cf406f9b0b0cd6ede563c1d5ab1"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a37ff4cf406f9b0b0cd6ede563c1d5ab1">codes_get_string</a></td></tr>
+<tr class="memdesc:a37ff4cf406f9b0b0cd6ede563c1d5ab1"><td class="mdescLeft"> </td><td class="mdescRight">Get the string value of a key from a message.  <a href="#a37ff4cf406f9b0b0cd6ede563c1d5ab1">More...</a><br/></td></tr>
+<tr class="separator:a37ff4cf406f9b0b0cd6ede563c1d5ab1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbb0d241a917a3e726792157c1f5d973"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#acbb0d241a917a3e726792157c1f5d973">codes_set_string</a></td></tr>
+<tr class="memdesc:acbb0d241a917a3e726792157c1f5d973"><td class="mdescLeft"> </td><td class="mdescRight">Set the value for a string key in a grib message.  <a href="#acbb0d241a917a3e726792157c1f5d973">More...</a><br/></td></tr>
+<tr class="separator:acbb0d241a917a3e726792157c1f5d973"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aec0c4f83da942b94d51a3d8b93ecb6c4"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#aec0c4f83da942b94d51a3d8b93ecb6c4">codes_gribex_mode_on</a></td></tr>
+<tr class="memdesc:aec0c4f83da942b94d51a3d8b93ecb6c4"><td class="mdescLeft"> </td><td class="mdescRight">Turn on the compatibility mode with gribex.  <a href="#aec0c4f83da942b94d51a3d8b93ecb6c4">More...</a><br/></td></tr>
+<tr class="separator:aec0c4f83da942b94d51a3d8b93ecb6c4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4c5256c7e609cf3eedf7d695a4b58a45"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a4c5256c7e609cf3eedf7d695a4b58a45">codes_gribex_mode_off</a></td></tr>
+<tr class="memdesc:a4c5256c7e609cf3eedf7d695a4b58a45"><td class="mdescLeft"> </td><td class="mdescRight">Turn off the compatibility mode with gribex.  <a href="#a4c5256c7e609cf3eedf7d695a4b58a45">More...</a><br/></td></tr>
+<tr class="separator:a4c5256c7e609cf3eedf7d695a4b58a45"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af13b3e69c2b5ad0ea6b7fd07ac37e367"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#af13b3e69c2b5ad0ea6b7fd07ac37e367">codes_write</a></td></tr>
+<tr class="memdesc:af13b3e69c2b5ad0ea6b7fd07ac37e367"><td class="mdescLeft"> </td><td class="mdescRight">Write a message to a file.  <a href="#af13b3e69c2b5ad0ea6b7fd07ac37e367">More...</a><br/></td></tr>
+<tr class="separator:af13b3e69c2b5ad0ea6b7fd07ac37e367"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac70e34af931428ba9a4874e0ebf75928"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#ac70e34af931428ba9a4874e0ebf75928">codes_grib_multi_write</a></td></tr>
+<tr class="memdesc:ac70e34af931428ba9a4874e0ebf75928"><td class="mdescLeft"> </td><td class="mdescRight">Write a multi field message to a file.  <a href="#ac70e34af931428ba9a4874e0ebf75928">More...</a><br/></td></tr>
+<tr class="separator:ac70e34af931428ba9a4874e0ebf75928"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a956a6f84f7b418551cd6c4976c970140"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a956a6f84f7b418551cd6c4976c970140">codes_grib_multi_append</a></td></tr>
+<tr class="memdesc:a956a6f84f7b418551cd6c4976c970140"><td class="mdescLeft"> </td><td class="mdescRight">Append a single field grib message to a multi field grib message.  <a href="#a956a6f84f7b418551cd6c4976c970140">More...</a><br/></td></tr>
+<tr class="separator:a956a6f84f7b418551cd6c4976c970140"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab07293de06d6ef6c5810ea3f01723884"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#ab07293de06d6ef6c5810ea3f01723884">codes_get_size</a></td></tr>
+<tr class="memdesc:ab07293de06d6ef6c5810ea3f01723884"><td class="mdescLeft"> </td><td class="mdescRight">Get the size of an array key.  <a href="#ab07293de06d6ef6c5810ea3f01723884">More...</a><br/></td></tr>
+<tr class="separator:ab07293de06d6ef6c5810ea3f01723884"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adc7361072916fe6ec52e9cf53f066839"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#adc7361072916fe6ec52e9cf53f066839">codes_get_string_length</a></td></tr>
+<tr class="memdesc:adc7361072916fe6ec52e9cf53f066839"><td class="mdescLeft"> </td><td class="mdescRight">Get the length of the string version of a key.  <a href="#adc7361072916fe6ec52e9cf53f066839">More...</a><br/></td></tr>
+<tr class="separator:adc7361072916fe6ec52e9cf53f066839"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a587af29aac21a816f8ffd327a1fce779"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a587af29aac21a816f8ffd327a1fce779">codes_skip_computed</a></td></tr>
+<tr class="memdesc:a587af29aac21a816f8ffd327a1fce779"><td class="mdescLeft"> </td><td class="mdescRight">Skip the computed keys in a keys iterator.  <a href="#a587af29aac21a816f8ffd327a1fce779">More...</a><br/></td></tr>
+<tr class="separator:a587af29aac21a816f8ffd327a1fce779"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4b7140ca0dd81372721cffd1d964e4ad"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a4b7140ca0dd81372721cffd1d964e4ad">codes_skip_coded</a></td></tr>
+<tr class="memdesc:a4b7140ca0dd81372721cffd1d964e4ad"><td class="mdescLeft"> </td><td class="mdescRight">Skip the coded keys in a keys iterator.  <a href="#a4b7140ca0dd81372721cffd1d964e4ad">More...</a><br/></td></tr>
+<tr class="separator:a4b7140ca0dd81372721cffd1d964e4ad"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acb01114683ef4aacbf1609eb3a435055"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#acb01114683ef4aacbf1609eb3a435055">codes_skip_edition_specific</a></td></tr>
+<tr class="memdesc:acb01114683ef4aacbf1609eb3a435055"><td class="mdescLeft"> </td><td class="mdescRight">Skip the edition specific keys in a keys iterator.  <a href="#acb01114683ef4aacbf1609eb3a435055">More...</a><br/></td></tr>
+<tr class="separator:acb01114683ef4aacbf1609eb3a435055"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a57f7a5a0f6975e1357e5aa1dc4715e0c"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a57f7a5a0f6975e1357e5aa1dc4715e0c">codes_skip_duplicates</a></td></tr>
+<tr class="memdesc:a57f7a5a0f6975e1357e5aa1dc4715e0c"><td class="mdescLeft"> </td><td class="mdescRight">Skip the duplicate keys in a keys iterator.  <a href="#a57f7a5a0f6975e1357e5aa1dc4715e0c">More...</a><br/></td></tr>
+<tr class="separator:a57f7a5a0f6975e1357e5aa1dc4715e0c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afb6f25e55aab91e1cf273403c4151c70"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#afb6f25e55aab91e1cf273403c4151c70">codes_skip_read_only</a></td></tr>
+<tr class="memdesc:afb6f25e55aab91e1cf273403c4151c70"><td class="mdescLeft"> </td><td class="mdescRight">Skip the read_only keys in a keys iterator.  <a href="#afb6f25e55aab91e1cf273403c4151c70">More...</a><br/></td></tr>
+<tr class="separator:afb6f25e55aab91e1cf273403c4151c70"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6eedc94ffbffad66b92d3fccfc1ec692"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a6eedc94ffbffad66b92d3fccfc1ec692">codes_skip_function</a></td></tr>
+<tr class="memdesc:a6eedc94ffbffad66b92d3fccfc1ec692"><td class="mdescLeft"> </td><td class="mdescRight">Skip the function keys in a keys iterator.  <a href="#a6eedc94ffbffad66b92d3fccfc1ec692">More...</a><br/></td></tr>
+<tr class="separator:a6eedc94ffbffad66b92d3fccfc1ec692"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af3e5c3e1ee4d4b1e2f37862b9de92273"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#af3e5c3e1ee4d4b1e2f37862b9de92273">codes_grib_iterator_new</a></td></tr>
+<tr class="memdesc:af3e5c3e1ee4d4b1e2f37862b9de92273"><td class="mdescLeft"> </td><td class="mdescRight">Create a new geoiterator for the given message, using its geometry and values.  <a href="#af3e5c3e1ee4d4b1e2f37862b9de92273">More...</a><br/></td></tr>
+<tr class="separator:af3e5c3e1ee4d4b1e2f37862b9de92273"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a18cdf4111053dc0c387a5fbddb0aaf30"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a18cdf4111053dc0c387a5fbddb0aaf30">codes_grib_iterator_delete</a></td></tr>
+<tr class="memdesc:a18cdf4111053dc0c387a5fbddb0aaf30"><td class="mdescLeft"> </td><td class="mdescRight">Delete a geoiterator and free memory.  <a href="#a18cdf4111053dc0c387a5fbddb0aaf30">More...</a><br/></td></tr>
+<tr class="separator:a18cdf4111053dc0c387a5fbddb0aaf30"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae2bc65694ff09cdd253ef35f760ef841"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#ae2bc65694ff09cdd253ef35f760ef841">codes_grib_iterator_next</a></td></tr>
+<tr class="memdesc:ae2bc65694ff09cdd253ef35f760ef841"><td class="mdescLeft"> </td><td class="mdescRight">Retrieve the next value from a geoiterator.  <a href="#ae2bc65694ff09cdd253ef35f760ef841">More...</a><br/></td></tr>
+<tr class="separator:ae2bc65694ff09cdd253ef35f760ef841"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a199fb77e1395975be732e46f93b3e337"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a199fb77e1395975be732e46f93b3e337">codes_keys_iterator_new</a></td></tr>
+<tr class="memdesc:a199fb77e1395975be732e46f93b3e337"><td class="mdescLeft"> </td><td class="mdescRight">Create a new iterator on the keys.  <a href="#a199fb77e1395975be732e46f93b3e337">More...</a><br/></td></tr>
+<tr class="separator:a199fb77e1395975be732e46f93b3e337"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af2eecea5df157516fb60556cbd1283cd"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#af2eecea5df157516fb60556cbd1283cd">codes_keys_iterator_next</a></td></tr>
+<tr class="memdesc:af2eecea5df157516fb60556cbd1283cd"><td class="mdescLeft"> </td><td class="mdescRight">Advance to the next keys iterator value.  <a href="#af2eecea5df157516fb60556cbd1283cd">More...</a><br/></td></tr>
+<tr class="separator:af2eecea5df157516fb60556cbd1283cd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a83a077fb2dda1e7f1d317039fc7267d1"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a83a077fb2dda1e7f1d317039fc7267d1">codes_keys_iterator_delete</a></td></tr>
+<tr class="memdesc:a83a077fb2dda1e7f1d317039fc7267d1"><td class="mdescLeft"> </td><td class="mdescRight">Delete a keys iterator and free memory.  <a href="#a83a077fb2dda1e7f1d317039fc7267d1">More...</a><br/></td></tr>
+<tr class="separator:a83a077fb2dda1e7f1d317039fc7267d1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aec91e405c936c335c00267eb221c9f91"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#aec91e405c936c335c00267eb221c9f91">codes_keys_iterator_get_name</a></td></tr>
+<tr class="memdesc:aec91e405c936c335c00267eb221c9f91"><td class="mdescLeft"> </td><td class="mdescRight">Get the name of a key from a keys iterator.  <a href="#aec91e405c936c335c00267eb221c9f91">More...</a><br/></td></tr>
+<tr class="separator:aec91e405c936c335c00267eb221c9f91"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a921bb3a4c69e51a4c276bd6cf37c2d2c"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a921bb3a4c69e51a4c276bd6cf37c2d2c">codes_keys_iterator_rewind</a></td></tr>
+<tr class="memdesc:a921bb3a4c69e51a4c276bd6cf37c2d2c"><td class="mdescLeft"> </td><td class="mdescRight">Rewind a keys iterator.  <a href="#a921bb3a4c69e51a4c276bd6cf37c2d2c">More...</a><br/></td></tr>
+<tr class="separator:a921bb3a4c69e51a4c276bd6cf37c2d2c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a88f2a86c370e490dae8e684c957022fd"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a88f2a86c370e490dae8e684c957022fd">codes_get_long</a></td></tr>
+<tr class="memdesc:a88f2a86c370e490dae8e684c957022fd"><td class="mdescLeft"> </td><td class="mdescRight">Get the value of a key in a grib message as an int.  <a href="#a88f2a86c370e490dae8e684c957022fd">More...</a><br/></td></tr>
+<tr class="separator:a88f2a86c370e490dae8e684c957022fd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a22a427ff4355e63b2c16c491572ea6b5"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a22a427ff4355e63b2c16c491572ea6b5">codes_get_double</a></td></tr>
+<tr class="memdesc:a22a427ff4355e63b2c16c491572ea6b5"><td class="mdescLeft"> </td><td class="mdescRight">Get the value of a key in a grib message as a float.  <a href="#a22a427ff4355e63b2c16c491572ea6b5">More...</a><br/></td></tr>
+<tr class="separator:a22a427ff4355e63b2c16c491572ea6b5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae623fa09d65a3f699026a86d0e4864da"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#ae623fa09d65a3f699026a86d0e4864da">codes_set_long</a></td></tr>
+<tr class="memdesc:ae623fa09d65a3f699026a86d0e4864da"><td class="mdescLeft"> </td><td class="mdescRight">Set the integer value for a key in a grib message.  <a href="#ae623fa09d65a3f699026a86d0e4864da">More...</a><br/></td></tr>
+<tr class="separator:ae623fa09d65a3f699026a86d0e4864da"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa619f32357c9107b5b6f96ad1fee4232"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#aa619f32357c9107b5b6f96ad1fee4232">codes_set_double</a></td></tr>
+<tr class="memdesc:aa619f32357c9107b5b6f96ad1fee4232"><td class="mdescLeft"> </td><td class="mdescRight">Set the double value for a key in a grib message.  <a href="#aa619f32357c9107b5b6f96ad1fee4232">More...</a><br/></td></tr>
+<tr class="separator:aa619f32357c9107b5b6f96ad1fee4232"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a643c58a9acad239c081794c74a5b86d9"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a643c58a9acad239c081794c74a5b86d9">codes_new_from_samples</a></td></tr>
+<tr class="memdesc:a643c58a9acad239c081794c74a5b86d9"><td class="mdescLeft"> </td><td class="mdescRight">Create a new valid GRIB message from a sample.  <a href="#a643c58a9acad239c081794c74a5b86d9">More...</a><br/></td></tr>
+<tr class="separator:a643c58a9acad239c081794c74a5b86d9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae042f8fe1cc86718ce658f3b992c87a2"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#ae042f8fe1cc86718ce658f3b992c87a2">codes_bufr_new_from_samples</a></td></tr>
+<tr class="memdesc:ae042f8fe1cc86718ce658f3b992c87a2"><td class="mdescLeft"> </td><td class="mdescRight">Create a new valid BUFR message from a sample.  <a href="#ae042f8fe1cc86718ce658f3b992c87a2">More...</a><br/></td></tr>
+<tr class="separator:ae042f8fe1cc86718ce658f3b992c87a2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab49cb36625cd87b9d898844b1df32516"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#ab49cb36625cd87b9d898844b1df32516">codes_clone</a></td></tr>
+<tr class="memdesc:ab49cb36625cd87b9d898844b1df32516"><td class="mdescLeft"> </td><td class="mdescRight">Create a copy of a message.  <a href="#ab49cb36625cd87b9d898844b1df32516">More...</a><br/></td></tr>
+<tr class="separator:ab49cb36625cd87b9d898844b1df32516"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac18c28cc7bd146dad986e03511fb7340"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#ac18c28cc7bd146dad986e03511fb7340">codes_set_double_array</a></td></tr>
+<tr class="memdesc:ac18c28cc7bd146dad986e03511fb7340"><td class="mdescLeft"> </td><td class="mdescRight">Set the value of the key to a double array.  <a href="#ac18c28cc7bd146dad986e03511fb7340">More...</a><br/></td></tr>
+<tr class="separator:ac18c28cc7bd146dad986e03511fb7340"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a441ff456dc9990951bf242f4d542713a"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a441ff456dc9990951bf242f4d542713a">codes_get_double_array</a></td></tr>
+<tr class="memdesc:a441ff456dc9990951bf242f4d542713a"><td class="mdescLeft"> </td><td class="mdescRight">Get the value of the key as a NumPy array of doubles.  <a href="#a441ff456dc9990951bf242f4d542713a">More...</a><br/></td></tr>
+<tr class="separator:a441ff456dc9990951bf242f4d542713a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a86388748f15624cd8fd2ec89d066295a"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a86388748f15624cd8fd2ec89d066295a">grib_get_string_array</a></td></tr>
+<tr class="memdesc:a86388748f15624cd8fd2ec89d066295a"><td class="mdescLeft"> </td><td class="mdescRight">Get the value of the key as a list of strings.  <a href="#a86388748f15624cd8fd2ec89d066295a">More...</a><br/></td></tr>
+<tr class="separator:a86388748f15624cd8fd2ec89d066295a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2353707d7e586ce4255e3a93bc0f39d4"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a2353707d7e586ce4255e3a93bc0f39d4">grib_set_string_array</a></td></tr>
+<tr class="memdesc:a2353707d7e586ce4255e3a93bc0f39d4"><td class="mdescLeft"> </td><td class="mdescRight">Set the value of the key to a string array.  <a href="#a2353707d7e586ce4255e3a93bc0f39d4">More...</a><br/></td></tr>
+<tr class="separator:a2353707d7e586ce4255e3a93bc0f39d4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a59e415f83b7f26b4575a5700ece65c14"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a59e415f83b7f26b4575a5700ece65c14">codes_set_long_array</a></td></tr>
+<tr class="memdesc:a59e415f83b7f26b4575a5700ece65c14"><td class="mdescLeft"> </td><td class="mdescRight">Set the value of the key to an integer array.  <a href="#a59e415f83b7f26b4575a5700ece65c14">More...</a><br/></td></tr>
+<tr class="separator:a59e415f83b7f26b4575a5700ece65c14"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a680c8ecbf2104d69083c68ea6184192d"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a680c8ecbf2104d69083c68ea6184192d">codes_get_long_array</a></td></tr>
+<tr class="memdesc:a680c8ecbf2104d69083c68ea6184192d"><td class="mdescLeft"> </td><td class="mdescRight">Get the integer array of values for a key from a grib message.  <a href="#a680c8ecbf2104d69083c68ea6184192d">More...</a><br/></td></tr>
+<tr class="separator:a680c8ecbf2104d69083c68ea6184192d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0b1fb93a9f550c971a7e08ca16bb5100"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a0b1fb93a9f550c971a7e08ca16bb5100">codes_grib_multi_new</a></td></tr>
+<tr class="memdesc:a0b1fb93a9f550c971a7e08ca16bb5100"><td class="mdescLeft"> </td><td class="mdescRight">Create a new multi field and return its id.  <a href="#a0b1fb93a9f550c971a7e08ca16bb5100">More...</a><br/></td></tr>
+<tr class="separator:a0b1fb93a9f550c971a7e08ca16bb5100"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1e9477394be21ac60be3d6841660c137"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a1e9477394be21ac60be3d6841660c137">codes_grib_multi_release</a></td></tr>
+<tr class="memdesc:a1e9477394be21ac60be3d6841660c137"><td class="mdescLeft"> </td><td class="mdescRight">Release a multi field from memory.  <a href="#a1e9477394be21ac60be3d6841660c137">More...</a><br/></td></tr>
+<tr class="separator:a1e9477394be21ac60be3d6841660c137"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6c83d2b9572083c7a83c9c5d39010b14"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a6c83d2b9572083c7a83c9c5d39010b14">codes_copy_namespace</a></td></tr>
+<tr class="memdesc:a6c83d2b9572083c7a83c9c5d39010b14"><td class="mdescLeft"> </td><td class="mdescRight">Copy the value of all the keys belonging to a namespace from the source message to the destination message.  <a href="#a6c83d2b9572083c7a83c9c5d39010b14">More...</a><br/></td></tr>
+<tr class="separator:a6c83d2b9572083c7a83c9c5d39010b14"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae89dc44888bfbba102e6c9332839fc51"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#ae89dc44888bfbba102e6c9332839fc51">codes_index_new_from_file</a></td></tr>
+<tr class="memdesc:ae89dc44888bfbba102e6c9332839fc51"><td class="mdescLeft"> </td><td class="mdescRight">Create a new index from a file.  <a href="#ae89dc44888bfbba102e6c9332839fc51">More...</a><br/></td></tr>
+<tr class="separator:ae89dc44888bfbba102e6c9332839fc51"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1c18ea67e5ce00500824676691b4bc4a"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a1c18ea67e5ce00500824676691b4bc4a">codes_index_add_file</a></td></tr>
+<tr class="memdesc:a1c18ea67e5ce00500824676691b4bc4a"><td class="mdescLeft"> </td><td class="mdescRight">Add a file to an index.  <a href="#a1c18ea67e5ce00500824676691b4bc4a">More...</a><br/></td></tr>
+<tr class="separator:a1c18ea67e5ce00500824676691b4bc4a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae5a40e31f81dd4cdddf8ddc71e833395"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#ae5a40e31f81dd4cdddf8ddc71e833395">codes_index_release</a></td></tr>
+<tr class="memdesc:ae5a40e31f81dd4cdddf8ddc71e833395"><td class="mdescLeft"> </td><td class="mdescRight">Delete an index.  <a href="#ae5a40e31f81dd4cdddf8ddc71e833395">More...</a><br/></td></tr>
+<tr class="separator:ae5a40e31f81dd4cdddf8ddc71e833395"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab9369968f436ad85084ec1d48e9324c7"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#ab9369968f436ad85084ec1d48e9324c7">codes_index_get_size</a></td></tr>
+<tr class="memdesc:ab9369968f436ad85084ec1d48e9324c7"><td class="mdescLeft"> </td><td class="mdescRight">Get the number of distinct values for the index key.  <a href="#ab9369968f436ad85084ec1d48e9324c7">More...</a><br/></td></tr>
+<tr class="separator:ab9369968f436ad85084ec1d48e9324c7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeaf2ac58b4a90bd09595986d49228d7c"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#aeaf2ac58b4a90bd09595986d49228d7c">codes_index_get_long</a></td></tr>
+<tr class="memdesc:aeaf2ac58b4a90bd09595986d49228d7c"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="#aeaf2ac58b4a90bd09595986d49228d7c">More...</a><br/></td></tr>
+<tr class="separator:aeaf2ac58b4a90bd09595986d49228d7c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a19b8c07a5ab06944488e66ce434a615b"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a19b8c07a5ab06944488e66ce434a615b">codes_index_get_string</a></td></tr>
+<tr class="memdesc:a19b8c07a5ab06944488e66ce434a615b"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="#a19b8c07a5ab06944488e66ce434a615b">More...</a><br/></td></tr>
+<tr class="separator:a19b8c07a5ab06944488e66ce434a615b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab28f95174ea3e8eb760d4019598ec9e6"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#ab28f95174ea3e8eb760d4019598ec9e6">codes_index_get_double</a></td></tr>
+<tr class="memdesc:ab28f95174ea3e8eb760d4019598ec9e6"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of the key in argument contained in the index.  <a href="#ab28f95174ea3e8eb760d4019598ec9e6">More...</a><br/></td></tr>
+<tr class="separator:ab28f95174ea3e8eb760d4019598ec9e6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ada63dc27281c249035da5b54e6ec0966"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#ada63dc27281c249035da5b54e6ec0966">codes_index_select_long</a></td></tr>
+<tr class="memdesc:ada63dc27281c249035da5b54e6ec0966"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="#ada63dc27281c249035da5b54e6ec0966">More...</a><br/></td></tr>
+<tr class="separator:ada63dc27281c249035da5b54e6ec0966"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a98ef64298972c19d87f4fa54b125a268"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a98ef64298972c19d87f4fa54b125a268">codes_index_select_double</a></td></tr>
+<tr class="memdesc:a98ef64298972c19d87f4fa54b125a268"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="#a98ef64298972c19d87f4fa54b125a268">More...</a><br/></td></tr>
+<tr class="separator:a98ef64298972c19d87f4fa54b125a268"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af9fa4123658007a2362baa9afd055063"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#af9fa4123658007a2362baa9afd055063">codes_index_select_string</a></td></tr>
+<tr class="memdesc:af9fa4123658007a2362baa9afd055063"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="#af9fa4123658007a2362baa9afd055063">More...</a><br/></td></tr>
+<tr class="separator:af9fa4123658007a2362baa9afd055063"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6fc3995f61a5f34933afd0aeb6427bf6"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a6fc3995f61a5f34933afd0aeb6427bf6">codes_new_from_index</a></td></tr>
+<tr class="memdesc:a6fc3995f61a5f34933afd0aeb6427bf6"><td class="mdescLeft"> </td><td class="mdescRight">Create a new handle from an index after having selected the key values.  <a href="#a6fc3995f61a5f34933afd0aeb6427bf6">More...</a><br/></td></tr>
+<tr class="separator:a6fc3995f61a5f34933afd0aeb6427bf6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa1a3c2d7800aa28297e3a9a11c4f6c0f"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#aa1a3c2d7800aa28297e3a9a11c4f6c0f">codes_get_message_size</a></td></tr>
+<tr class="memdesc:aa1a3c2d7800aa28297e3a9a11c4f6c0f"><td class="mdescLeft"> </td><td class="mdescRight">Get the size of a coded message.  <a href="#aa1a3c2d7800aa28297e3a9a11c4f6c0f">More...</a><br/></td></tr>
+<tr class="separator:aa1a3c2d7800aa28297e3a9a11c4f6c0f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a72cc99e87c999a3cd225323fdcddfad7"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a72cc99e87c999a3cd225323fdcddfad7">codes_get_message_offset</a></td></tr>
+<tr class="memdesc:a72cc99e87c999a3cd225323fdcddfad7"><td class="mdescLeft"> </td><td class="mdescRight">Get the offset of a coded message.  <a href="#a72cc99e87c999a3cd225323fdcddfad7">More...</a><br/></td></tr>
+<tr class="separator:a72cc99e87c999a3cd225323fdcddfad7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3b085fe4c2ea0090a74959b396b2287f"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a3b085fe4c2ea0090a74959b396b2287f">codes_get_double_element</a></td></tr>
+<tr class="memdesc:a3b085fe4c2ea0090a74959b396b2287f"><td class="mdescLeft"> </td><td class="mdescRight">Get as double the i-th element of the "key" array.  <a href="#a3b085fe4c2ea0090a74959b396b2287f">More...</a><br/></td></tr>
+<tr class="separator:a3b085fe4c2ea0090a74959b396b2287f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af0708f169680a9b753789a3d61f7f9ef"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#af0708f169680a9b753789a3d61f7f9ef">codes_get_double_elements</a></td></tr>
+<tr class="memdesc:af0708f169680a9b753789a3d61f7f9ef"><td class="mdescLeft"> </td><td class="mdescRight">Get as double array the elements of the "key" array whose indexes are listed in the input array.  <a href="#af0708f169680a9b753789a3d61f7f9ef">More...</a><br/></td></tr>
+<tr class="separator:af0708f169680a9b753789a3d61f7f9ef"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8558de4f563b57fe8104d024eb90e7d2"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a8558de4f563b57fe8104d024eb90e7d2">codes_get_elements</a></td></tr>
+<tr class="memdesc:a8558de4f563b57fe8104d024eb90e7d2"><td class="mdescLeft"> </td><td class="mdescRight">Retrieve the elements of the key array for the indexes specified in the input.  <a href="#a8558de4f563b57fe8104d024eb90e7d2">More...</a><br/></td></tr>
+<tr class="separator:a8558de4f563b57fe8104d024eb90e7d2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:affddd8311b1127306fa02ce26023d89e"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#affddd8311b1127306fa02ce26023d89e">codes_set_missing</a></td></tr>
+<tr class="memdesc:affddd8311b1127306fa02ce26023d89e"><td class="mdescLeft"> </td><td class="mdescRight">Set as missing the value for a key in a grib message.  <a href="#affddd8311b1127306fa02ce26023d89e">More...</a><br/></td></tr>
+<tr class="separator:affddd8311b1127306fa02ce26023d89e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a997587cb4079552273d224fd3434463b"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a997587cb4079552273d224fd3434463b">codes_set_key_vals</a></td></tr>
+<tr class="memdesc:a997587cb4079552273d224fd3434463b"><td class="mdescLeft"> </td><td class="mdescRight">Set the values for several keys at once in a grib message.  <a href="#a997587cb4079552273d224fd3434463b">More...</a><br/></td></tr>
+<tr class="separator:a997587cb4079552273d224fd3434463b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2dd162c68a1326619a34b45e56fdb46c"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a2dd162c68a1326619a34b45e56fdb46c">codes_is_missing</a></td></tr>
+<tr class="memdesc:a2dd162c68a1326619a34b45e56fdb46c"><td class="mdescLeft"> </td><td class="mdescRight">Check if the value of a key is MISSING.  <a href="#a2dd162c68a1326619a34b45e56fdb46c">More...</a><br/></td></tr>
+<tr class="separator:a2dd162c68a1326619a34b45e56fdb46c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adbc403f07e0bcc151d8b0fb1365492ff"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#adbc403f07e0bcc151d8b0fb1365492ff">codes_is_defined</a></td></tr>
+<tr class="memdesc:adbc403f07e0bcc151d8b0fb1365492ff"><td class="mdescLeft"> </td><td class="mdescRight">Check if a key is defined (exists)  <a href="#adbc403f07e0bcc151d8b0fb1365492ff">More...</a><br/></td></tr>
+<tr class="separator:adbc403f07e0bcc151d8b0fb1365492ff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a134bac0edaf47f29051ad905a30fb63e"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a134bac0edaf47f29051ad905a30fb63e">codes_grib_find_nearest</a></td></tr>
+<tr class="memdesc:a134bac0edaf47f29051ad905a30fb63e"><td class="mdescLeft"> </td><td class="mdescRight">Find the nearest grid point or the nearest four grid points to a given latitude/longitude.  <a href="#a134bac0edaf47f29051ad905a30fb63e">More...</a><br/></td></tr>
+<tr class="separator:a134bac0edaf47f29051ad905a30fb63e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1250285cb0770393bf6078f3ee3340a2"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a1250285cb0770393bf6078f3ee3340a2">codes_get_native_type</a></td></tr>
+<tr class="memdesc:a1250285cb0770393bf6078f3ee3340a2"><td class="mdescLeft"> </td><td class="mdescRight">Retrieve the native type of a key.  <a href="#a1250285cb0770393bf6078f3ee3340a2">More...</a><br/></td></tr>
+<tr class="separator:a1250285cb0770393bf6078f3ee3340a2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1ba4d3b6473499af0581cf52eb4cad0b"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a1ba4d3b6473499af0581cf52eb4cad0b">codes_get</a></td></tr>
+<tr class="memdesc:a1ba4d3b6473499af0581cf52eb4cad0b"><td class="mdescLeft"> </td><td class="mdescRight">Get the value of a key in a grib message.  <a href="#a1ba4d3b6473499af0581cf52eb4cad0b">More...</a><br/></td></tr>
+<tr class="separator:a1ba4d3b6473499af0581cf52eb4cad0b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a648bae4beadb6a82698da40e08323be9"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a648bae4beadb6a82698da40e08323be9">codes_get_array</a></td></tr>
+<tr class="memdesc:a648bae4beadb6a82698da40e08323be9"><td class="mdescLeft"> </td><td class="mdescRight">Get the contents of an array key.  <a href="#a648bae4beadb6a82698da40e08323be9">More...</a><br/></td></tr>
+<tr class="separator:a648bae4beadb6a82698da40e08323be9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0af74e12fba25379db678363f5bdafb3"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a0af74e12fba25379db678363f5bdafb3">codes_get_values</a></td></tr>
+<tr class="memdesc:a0af74e12fba25379db678363f5bdafb3"><td class="mdescLeft"> </td><td class="mdescRight">Retrieve the contents of the 'values' key.  <a href="#a0af74e12fba25379db678363f5bdafb3">More...</a><br/></td></tr>
+<tr class="separator:a0af74e12fba25379db678363f5bdafb3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abc699d0bb7a7dded968ee0111342ffd0"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#abc699d0bb7a7dded968ee0111342ffd0">codes_set_values</a></td></tr>
+<tr class="memdesc:abc699d0bb7a7dded968ee0111342ffd0"><td class="mdescLeft"> </td><td class="mdescRight">Set the contents of the 'values' key.  <a href="#abc699d0bb7a7dded968ee0111342ffd0">More...</a><br/></td></tr>
+<tr class="separator:abc699d0bb7a7dded968ee0111342ffd0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abb5cff8e4911614c8b04032fb014ea07"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#abb5cff8e4911614c8b04032fb014ea07">codes_set</a></td></tr>
+<tr class="memdesc:abb5cff8e4911614c8b04032fb014ea07"><td class="mdescLeft"> </td><td class="mdescRight">Set the value for a scalar key in a grib message.  <a href="#abb5cff8e4911614c8b04032fb014ea07">More...</a><br/></td></tr>
+<tr class="separator:abb5cff8e4911614c8b04032fb014ea07"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1e25a749b9cffb9b4b391cde66a3333c"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a1e25a749b9cffb9b4b391cde66a3333c">codes_set_array</a></td></tr>
+<tr class="memdesc:a1e25a749b9cffb9b4b391cde66a3333c"><td class="mdescLeft"> </td><td class="mdescRight">Set the value for an array key in a message.  <a href="#a1e25a749b9cffb9b4b391cde66a3333c">More...</a><br/></td></tr>
+<tr class="separator:a1e25a749b9cffb9b4b391cde66a3333c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a267636dba6361f74b330275a1f8e1ed7"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a267636dba6361f74b330275a1f8e1ed7">codes_index_get</a></td></tr>
+<tr class="memdesc:a267636dba6361f74b330275a1f8e1ed7"><td class="mdescLeft"> </td><td class="mdescRight">Get the distinct values of an index key.  <a href="#a267636dba6361f74b330275a1f8e1ed7">More...</a><br/></td></tr>
+<tr class="separator:a267636dba6361f74b330275a1f8e1ed7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a92041c59bf04e6db88395077802dfe74"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a92041c59bf04e6db88395077802dfe74">codes_index_select</a></td></tr>
+<tr class="memdesc:a92041c59bf04e6db88395077802dfe74"><td class="mdescLeft"> </td><td class="mdescRight">Select the message subset with key==value.  <a href="#a92041c59bf04e6db88395077802dfe74">More...</a><br/></td></tr>
+<tr class="separator:a92041c59bf04e6db88395077802dfe74"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a32c66888832215b2860535729ee616f8"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a32c66888832215b2860535729ee616f8">codes_index_write</a></td></tr>
+<tr class="memdesc:a32c66888832215b2860535729ee616f8"><td class="mdescLeft"> </td><td class="mdescRight">Write an index to a file for later reuse.  <a href="#a32c66888832215b2860535729ee616f8">More...</a><br/></td></tr>
+<tr class="separator:a32c66888832215b2860535729ee616f8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a13866152bfd07b8cd418f6cf8c73d7ab"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a13866152bfd07b8cd418f6cf8c73d7ab">codes_index_read</a></td></tr>
+<tr class="memdesc:a13866152bfd07b8cd418f6cf8c73d7ab"><td class="mdescLeft"> </td><td class="mdescRight">Loads an index previously saved with <a class="el" href="namespaceec_codes.html#a32c66888832215b2860535729ee616f8">codes_index_write</a> to a file.  <a href="#a13866152bfd07b8cd418f6cf8c73d7ab">More...</a><br/></td></tr>
+<tr class="separator:a13866152bfd07b8cd418f6cf8c73d7ab"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a85e89c8eae4fb209ae0a7c566e4a2cb1"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a85e89c8eae4fb209ae0a7c566e4a2cb1">codes_no_fail_on_wrong_length</a></td></tr>
+<tr class="memdesc:a85e89c8eae4fb209ae0a7c566e4a2cb1"><td class="mdescLeft"> </td><td class="mdescRight">Do not fail if the message has the wrong length.  <a href="#a85e89c8eae4fb209ae0a7c566e4a2cb1">More...</a><br/></td></tr>
+<tr class="separator:a85e89c8eae4fb209ae0a7c566e4a2cb1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae71963dcd0256ccf5bd849f1f6643f38"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#ae71963dcd0256ccf5bd849f1f6643f38">codes_gts_header</a></td></tr>
+<tr class="memdesc:ae71963dcd0256ccf5bd849f1f6643f38"><td class="mdescLeft"> </td><td class="mdescRight">Set the GTS header on/off.  <a href="#ae71963dcd0256ccf5bd849f1f6643f38">More...</a><br/></td></tr>
+<tr class="separator:ae71963dcd0256ccf5bd849f1f6643f38"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:add6a557c085ea401fc9529ed140025ef"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#add6a557c085ea401fc9529ed140025ef">codes_get_api_version</a></td></tr>
+<tr class="memdesc:add6a557c085ea401fc9529ed140025ef"><td class="mdescLeft"> </td><td class="mdescRight">Get the api version.  <a href="#add6a557c085ea401fc9529ed140025ef">More...</a><br/></td></tr>
+<tr class="separator:add6a557c085ea401fc9529ed140025ef"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0f446397a9956ed5518ff6461fcc17f0"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a0f446397a9956ed5518ff6461fcc17f0">codes_get_message</a></td></tr>
+<tr class="memdesc:a0f446397a9956ed5518ff6461fcc17f0"><td class="mdescLeft"> </td><td class="mdescRight">Get the binary message.  <a href="#a0f446397a9956ed5518ff6461fcc17f0">More...</a><br/></td></tr>
+<tr class="separator:a0f446397a9956ed5518ff6461fcc17f0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8b42a0c20ab81efa5a214dacc0b75d58"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a8b42a0c20ab81efa5a214dacc0b75d58">codes_new_from_message</a></td></tr>
+<tr class="memdesc:a8b42a0c20ab81efa5a214dacc0b75d58"><td class="mdescLeft"> </td><td class="mdescRight">Create a grib handle from a message in memory.  <a href="#a8b42a0c20ab81efa5a214dacc0b75d58">More...</a><br/></td></tr>
+<tr class="separator:a8b42a0c20ab81efa5a214dacc0b75d58"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a63f59e45ba10997c9e30bf63ea5f66e0"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#a63f59e45ba10997c9e30bf63ea5f66e0">codes_set_definitions_path</a></td></tr>
+<tr class="memdesc:a63f59e45ba10997c9e30bf63ea5f66e0"><td class="mdescLeft"> </td><td class="mdescRight">Set the definitions path.  <a href="#a63f59e45ba10997c9e30bf63ea5f66e0">More...</a><br/></td></tr>
+<tr class="separator:a63f59e45ba10997c9e30bf63ea5f66e0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab7f299aaed48129491cc365a8ca289c2"><td class="memItemLeft" align="right" valign="top">def </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceec_codes.html#ab7f299aaed48129491cc365a8ca289c2">codes_set_samples_path</a></td></tr>
+<tr class="memdesc:ab7f299aaed48129491cc365a8ca289c2"><td class="mdescLeft"> </td><td class="mdescRight">Set the samples path.  <a href="#ab7f299aaed48129491cc365a8ca289c2">More...</a><br/></td></tr>
+<tr class="separator:ab7f299aaed48129491cc365a8ca289c2"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>This package is the <b>Python</b> interface to <a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a>. </p>
+<p>It offers almost one to one bindings to the C API functions.</p>
+<p>The Python interface to <a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a> uses the <a href="http://numpy.scipy.org/"><b>NumPy</b></a> package as the container of choice for the possible arrays of values that can be encoded/decoded in and from a grib message. Numpy is a package used for scientific computing in Python and an efficient container for generic data.</p>
+<p>The Python interface can be enabled/disabled from CMake by using the following flag:<br/>
+ </p>
+<div class="fragment"><div class="line">    -DENABLE_PYTHON=ON</div>
+<div class="line">or</div>
+<div class="line">    -DENABLE_PYTHON=OFF</div>
+</div><!-- fragment --><p>When this is enabed, then the system Python will be used to build the interface.</p>
+<p><em>Requirements:</em> </p>
+<pre class="fragment">- Python 2.6 or higher
+- NumPy</pre> </div><h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="af4a4c95465d2026ad549920b07150bab"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_any_new_from_file </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>fileobj</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>headers_only</em> = <code>False</code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Load in memory a message from a file. </p>
+<p>The message can be accessed through its id and will be available<br/>
+ until <a class="el" href="namespaceec_codes.html#a23859e3fb8802982fe865789d61b181f">codes_release</a> is called.<br/>
+ <b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_get_keys" target="_blank">grib_get_keys.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">fileobj</td><td>python file object </td></tr>
+    <tr><td class="paramname">headers_only</td><td>whether or not to load the message with the headers only </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>id of the message loaded in memory </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a44c10386781390c16f1a567590b33c11">codes_bufr_new_from_file()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#ab1788f3653df85dd90ac99f40daf98c4">codes_new_from_file()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a44c10386781390c16f1a567590b33c11"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_bufr_new_from_file </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>fileobj</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>headers_only</em> = <code>False</code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Load in memory a BUFR message from a file. </p>
+<p>The message can be accessed through its id and will be available<br/>
+ until <a class="el" href="namespaceec_codes.html#a23859e3fb8802982fe865789d61b181f">codes_release</a> is called.<br/>
+ <b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/bufr_get_keys" target="_blank">bufr_get_keys.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">fileobj</td><td>python file object </td></tr>
+    <tr><td class="paramname">headers_only</td><td>whether or not to load the message with the headers only </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>id of the BUFR loaded in memory </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a80246f356012448955e2e75572a8d210">codes_grib_new_from_file()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#af4a4c95465d2026ad549920b07150bab">codes_any_new_from_file()</a>, and <a class="el" href="namespaceec_codes.html#aabd87fd89cfac4d21ec014b838174e3c">codes_metar_new_from_file()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae042f8fe1cc86718ce658f3b992c87a2"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_bufr_new_from_samples </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>samplename</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new valid BUFR message from a sample. </p>
+<p>The available samples are picked up from the directory pointed to by the environment variable ECCODES_SAMPLES_PATH. To know where the samples directory is run the codes_info tool.<br/>
+ <b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_samples" target="_blank">grib_samples.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">samplename</td><td>name of the BUFR sample to be used </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>id of the message loaded in memory </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a441ff456dc9990951bf242f4d542713a">codes_get_double_array()</a>, and <a class="el" href="namespaceec_codes.html#ab07293de06d6ef6c5810ea3f01723884">codes_get_size()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#ae623fa09d65a3f699026a86d0e4864da">codes_set_long()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab49cb36625cd87b9d898844b1df32516"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_clone </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid_src</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a copy of a message. </p>
+<p>Create a copy of a given message (<em>msgid_src</em>) resulting in a new message in memory (<em>msgid_dest</em>) identical to the original one.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_clone" target="_blank">grib_clone.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid_src</td><td>id of message to be cloned </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>id of clone </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#ab07293de06d6ef6c5810ea3f01723884">codes_get_size()</a>, and <a class="el" href="namespaceec_codes.html#a86388748f15624cd8fd2ec89d066295a">grib_get_string_array()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#aa619f32357c9107b5b6f96ad1fee4232">codes_set_double()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6c83d2b9572083c7a83c9c5d39010b14"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_copy_namespace </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>gribid_src</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>namespace</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>gribid_dest</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Copy the value of all the keys belonging to a namespace from the source message to the destination message. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid_src</td><td>id of source message </td></tr>
+    <tr><td class="paramname">gribid_dest</td><td>id of destination message </td></tr>
+    <tr><td class="paramname">namespace</td><td>namespace to be copied </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a2353707d7e586ce4255e3a93bc0f39d4">grib_set_string_array()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5c7a1d8a2c7802edd327a35cb35984e7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_count_in_file </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>fileobj</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Count the messages in a file. </p>
+<p><b>Examples:</b> count_messages.py</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">fileobj</td><td>python file object </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>number of messages in the file </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#aaec2118b6fca48e59ded7d2099e81009">codes_grib_multi_support_off()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a80246f356012448955e2e75572a8d210">codes_grib_new_from_file()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1ba4d3b6473499af0581cf52eb4cad0b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>ktype</em> = <code>None</code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the value of a key in a grib message. </p>
+<p>The type of value returned depends on the native type of the requested key. The type of value returned can be forced by using the type argument of the function. The type argument can be int, float or str.</p>
+<p>The <em>msgid</em> references a grib message loaded in memory.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_get_keys" target="_blank">grib_get_keys.py</a>, <a href="https://software.ecmwf.int/wiki/display/ECC/grib_print_data" target="_blank">grib_print_data.py</a></p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="namespaceec_codes.html#a80246f356012448955e2e75572a8d210" title="Load in memory a grib message from a file. ">codes_grib_new_from_file</a>, <a class="el" href="namespaceec_codes.html#a23859e3fb8802982fe865789d61b181f" title="Free the memory for the message referred as msgid. ">codes_release</a>, <a class="el" href="namespaceec_codes.html#abb5cff8e4911614c8b04032fb014ea07" title="Set the value for a scalar key in a grib mess [...]
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">ktype</td><td>the type we want the output in (int, float or str), native type if not specified </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>scalar value of key as int, float or str </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#abb5cff8e4911614c8b04032fb014ea07">codes_set()</a>, <a class="el" href="namespaceec_codes.html#aa619f32357c9107b5b6f96ad1fee4232">codes_set_double()</a>, <a class="el" href="namespaceec_codes.html#ac18c28cc7bd146dad986e03511fb7340">codes_set_double_array()</a>, <a class="el" href="namespaceec_codes.html#ae623fa09d65a3f699026a86d0e4864da">codes_set_long()</a>, and <a class="el" href="namespaceec_codes.html#acbb0d241a917a3e726792157c [...]
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#adbc403f07e0bcc151d8b0fb1365492ff">codes_is_defined()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="add6a557c085ea401fc9529ed140025ef"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get_api_version </td>
+          <td>(</td>
+          <td class="paramtype">void </td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the api version. </p>
+<p>Get the API version.</p>
+<p>Returns the version of the api as a string in the format "major.minor.revision". </p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a267636dba6361f74b330275a1f8e1ed7">codes_index_get()</a>, and <a class="el" href="namespaceec_codes.html#a92041c59bf04e6db88395077802dfe74">codes_index_select()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a648bae4beadb6a82698da40e08323be9"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get_array </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>ktype</em> = <code>None</code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the contents of an array key. </p>
+<p>The output array will be stored in a NumPy ndarray. The type of the array returned depends on the native type of the requested key. The type of value returned can be forced by using the type argument of the function. The type argument can be int, float or string.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>the key to get the value for </td></tr>
+    <tr><td class="paramname">ktype</td><td>the type we want the output in (can be int, float or string), native type if not specified </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>numpy.ndarray </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a1e25a749b9cffb9b4b391cde66a3333c">codes_set_array()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a134bac0edaf47f29051ad905a30fb63e">codes_grib_find_nearest()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a22a427ff4355e63b2c16c491572ea6b5"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get_double </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the value of a key in a grib message as a float. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>value of key as float </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a643c58a9acad239c081794c74a5b86d9">codes_new_from_samples()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a134bac0edaf47f29051ad905a30fb63e">codes_grib_find_nearest()</a>, and <a class="el" href="namespaceec_codes.html#a83a077fb2dda1e7f1d317039fc7267d1">codes_keys_iterator_delete()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a441ff456dc9990951bf242f4d542713a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get_double_array </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the value of the key as a NumPy array of doubles. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>numpy.ndarray </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a59e415f83b7f26b4575a5700ece65c14">codes_set_long_array()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#ae042f8fe1cc86718ce658f3b992c87a2">codes_bufr_new_from_samples()</a>, <a class="el" href="namespaceec_codes.html#a1250285cb0770393bf6078f3ee3340a2">codes_get_native_type()</a>, and <a class="el" href="namespaceec_codes.html#a134bac0edaf47f29051ad905a30fb63e">codes_grib_find_nearest()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3b085fe4c2ea0090a74959b396b2287f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get_double_element </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>index</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get as double the i-th element of the "key" array. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>the key to be searched </td></tr>
+    <tr><td class="paramname">index</td><td>zero based index of value to retrieve </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>value </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a98ef64298972c19d87f4fa54b125a268">codes_index_select_double()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af0708f169680a9b753789a3d61f7f9ef"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get_double_elements </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>indexes</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get as double array the elements of the "key" array whose indexes are listed in the input array. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>the key to be searched </td></tr>
+    <tr><td class="paramname">indexes</td><td>list or tuple of indexes </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>numpy.ndarray </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#af9fa4123658007a2362baa9afd055063">codes_index_select_string()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8558de4f563b57fe8104d024eb90e7d2"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get_elements </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>indexes</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Retrieve the elements of the key array for the indexes specified in the input. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>the key to be searched </td></tr>
+    <tr><td class="paramname">indexes</td><td>single index or a list of indexes </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>numpy.ndarray containing the values of key for the given indexes </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#adbc403f07e0bcc151d8b0fb1365492ff">codes_is_defined()</a>, and <a class="el" href="namespaceec_codes.html#a2dd162c68a1326619a34b45e56fdb46c">codes_is_missing()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a6fc3995f61a5f34933afd0aeb6427bf6">codes_new_from_index()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a88f2a86c370e490dae8e684c957022fd"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get_long </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the value of a key in a grib message as an int. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>value of key as int </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#aa619f32357c9107b5b6f96ad1fee4232">codes_set_double()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a134bac0edaf47f29051ad905a30fb63e">codes_grib_find_nearest()</a>, and <a class="el" href="namespaceec_codes.html#af2eecea5df157516fb60556cbd1283cd">codes_keys_iterator_next()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a680c8ecbf2104d69083c68ea6184192d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get_long_array </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the integer array of values for a key from a grib message. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>numpy.ndarray </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a134bac0edaf47f29051ad905a30fb63e">codes_grib_find_nearest()</a>, and <a class="el" href="namespaceec_codes.html#a86388748f15624cd8fd2ec89d066295a">grib_get_string_array()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0f446397a9956ed5518ff6461fcc17f0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get_message </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the binary message. </p>
+<p>Returns the binary string message associated with the grib identified by msgid.</p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="namespaceec_codes.html#a8b42a0c20ab81efa5a214dacc0b75d58" title="Create a grib handle from a message in memory. ">codes_new_from_message</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the grib loaded in memory </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>binary string message associated with msgid </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a92041c59bf04e6db88395077802dfe74">codes_index_select()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a72cc99e87c999a3cd225323fdcddfad7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get_message_offset </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the offset of a coded message. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>offset in bytes of the message </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a997587cb4079552273d224fd3434463b">codes_set_key_vals()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a98ef64298972c19d87f4fa54b125a268">codes_index_select_double()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa1a3c2d7800aa28297e3a9a11c4f6c0f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get_message_size </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the size of a coded message. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>size in bytes of the message </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#affddd8311b1127306fa02ce26023d89e">codes_set_missing()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#ada63dc27281c249035da5b54e6ec0966">codes_index_select_long()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1250285cb0770393bf6078f3ee3340a2"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get_native_type </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Retrieve the native type of a key. </p>
+<p>Possible values can be int, float or string.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key we want to find out the type for </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>type of key given as input or None if not determined </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a441ff456dc9990951bf242f4d542713a">codes_get_double_array()</a>, <a class="el" href="namespaceec_codes.html#a0af74e12fba25379db678363f5bdafb3">codes_get_values()</a>, and <a class="el" href="namespaceec_codes.html#abc699d0bb7a7dded968ee0111342ffd0">codes_set_values()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a134bac0edaf47f29051ad905a30fb63e">codes_grib_find_nearest()</a>, and <a class="el" href="namespaceec_codes.html#a997587cb4079552273d224fd3434463b">codes_set_key_vals()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab07293de06d6ef6c5810ea3f01723884"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get_size </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the size of an array key. </p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_get_keys" target="_blank">grib_get_keys.py</a>,count_messages.py</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>name of the key </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#ae042f8fe1cc86718ce658f3b992c87a2">codes_bufr_new_from_samples()</a>, <a class="el" href="namespaceec_codes.html#ab49cb36625cd87b9d898844b1df32516">codes_clone()</a>, <a class="el" href="namespaceec_codes.html#ac70e34af931428ba9a4874e0ebf75928">codes_grib_multi_write()</a>, and <a class="el" href="namespaceec_codes.html#a86388748f15624cd8fd2ec89d066295a">grib_get_string_array()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a37ff4cf406f9b0b0cd6ede563c1d5ab1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get_string </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the string value of a key from a message. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>string value of key </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a4c5256c7e609cf3eedf7d695a4b58a45">codes_gribex_mode_off()</a>, and <a class="el" href="namespaceec_codes.html#aec0c4f83da942b94d51a3d8b93ecb6c4">codes_gribex_mode_on()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a134bac0edaf47f29051ad905a30fb63e">codes_grib_find_nearest()</a>, and <a class="el" href="namespaceec_codes.html#aaec2118b6fca48e59ded7d2099e81009">codes_grib_multi_support_off()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adc7361072916fe6ec52e9cf53f066839"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get_string_length </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the length of the string version of a key. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>name of the key </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a4b7140ca0dd81372721cffd1d964e4ad">codes_skip_coded()</a>, and <a class="el" href="namespaceec_codes.html#acb01114683ef4aacbf1609eb3a435055">codes_skip_edition_specific()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a956a6f84f7b418551cd6c4976c970140">codes_grib_multi_append()</a>, and <a class="el" href="namespaceec_codes.html#a23859e3fb8802982fe865789d61b181f">codes_release()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0af74e12fba25379db678363f5bdafb3"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_get_values </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>gribid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Retrieve the contents of the 'values' key. </p>
+<p>A NumPy ndarray containing the values in the message is returned.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_print_data" target="_blank">grib_print_data.py</a>, <a href="https://software.ecmwf.int/wiki/display/ECC/grib_samples" target="_blank">grib_samples.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>numpy.ndarray </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a267636dba6361f74b330275a1f8e1ed7">codes_index_get()</a>, <a class="el" href="namespaceec_codes.html#ac18c28cc7bd146dad986e03511fb7340">codes_set_double_array()</a>, <a class="el" href="namespaceec_codes.html#a59e415f83b7f26b4575a5700ece65c14">codes_set_long_array()</a>, and <a class="el" href="namespaceec_codes.html#a2353707d7e586ce4255e3a93bc0f39d4">grib_set_string_array()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a1250285cb0770393bf6078f3ee3340a2">codes_get_native_type()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a134bac0edaf47f29051ad905a30fb63e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_grib_find_nearest </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>inlat</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>inlon</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>is_lsm</em> = <code>False</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>npoints</em> = <code>1</code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Find the nearest grid point or the nearest four grid points to a given latitude/longitude. </p>
+<p>The number of nearest points returned can be controled through the npoints function argument.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_nearest" target="_blank">grib_nearest.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">inlat</td><td>latitude of the point </td></tr>
+    <tr><td class="paramname">inlon</td><td>longitude of the point </td></tr>
+    <tr><td class="paramname">is_lsm</td><td>True if the nearest land point is required otherwise False. </td></tr>
+    <tr><td class="paramname">npoints</td><td>1 or 4 nearest grid points </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>(npoints*(outlat,outlon,value,dist,index)) </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a648bae4beadb6a82698da40e08323be9">codes_get_array()</a>, <a class="el" href="namespaceec_codes.html#a22a427ff4355e63b2c16c491572ea6b5">codes_get_double()</a>, <a class="el" href="namespaceec_codes.html#a441ff456dc9990951bf242f4d542713a">codes_get_double_array()</a>, <a class="el" href="namespaceec_codes.html#a88f2a86c370e490dae8e684c957022fd">codes_get_long()</a>, <a class="el" href="namespaceec_codes.html#a680c8ecbf2104d69083c68e [...]
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#affddd8311b1127306fa02ce26023d89e">codes_set_missing()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a18cdf4111053dc0c387a5fbddb0aaf30"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_grib_iterator_delete </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>iterid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Delete a geoiterator and free memory. </p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_iterator" target="_blank">grib_iterator.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>geoiterator id </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#afb6f25e55aab91e1cf273403c4151c70">codes_skip_read_only()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af3e5c3e1ee4d4b1e2f37862b9de92273"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_grib_iterator_new </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>mode</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new geoiterator for the given message, using its geometry and values. </p>
+<p>The geoiterator can be used to go through all the geopoints in a message and retrieve the values corresponding to those geopoints.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_iterator" target="_blank">grib_iterator.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">mode</td><td>flags for future use </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>geoiterator id </dd></dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a199fb77e1395975be732e46f93b3e337">codes_keys_iterator_new()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a57f7a5a0f6975e1357e5aa1dc4715e0c">codes_skip_duplicates()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae2bc65694ff09cdd253ef35f760ef841"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_grib_iterator_next </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>iterid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Retrieve the next value from a geoiterator. </p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_iterator" target="_blank">grib_iterator.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>geoiterator id </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>tuple with the latitude, longitude and value </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a83a077fb2dda1e7f1d317039fc7267d1">codes_keys_iterator_delete()</a>, and <a class="el" href="namespaceec_codes.html#af2eecea5df157516fb60556cbd1283cd">codes_keys_iterator_next()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a6eedc94ffbffad66b92d3fccfc1ec692">codes_skip_function()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a956a6f84f7b418551cd6c4976c970140"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_grib_multi_append </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>ingribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>startsection</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>multigribid</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Append a single field grib message to a multi field grib message. </p>
+<p>Only the sections with section number greather or equal "startsection" are copied from the input single message to the multi field output grib.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_multi_write" target="_blank">grib_multi_write.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">ingribid</td><td>id of the input single grib </td></tr>
+    <tr><td class="paramname">startsection</td><td>starting from startsection (included) all the sections are copied from the input single grib to the output multi grib </td></tr>
+    <tr><td class="paramname">multigribid</td><td>id of the output multi filed grib </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#adc7361072916fe6ec52e9cf53f066839">codes_get_string_length()</a>, and <a class="el" href="namespaceec_codes.html#a587af29aac21a816f8ffd327a1fce779">codes_skip_computed()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#af13b3e69c2b5ad0ea6b7fd07ac37e367">codes_write()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0b1fb93a9f550c971a7e08ca16bb5100"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_grib_multi_new </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new multi field and return its id. </p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_multi_write" target="_blank">grib_multi_write.py</a></p>
+<dl class="section return"><dt>Returns</dt><dd>id of the multi field </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a1c18ea67e5ce00500824676691b4bc4a">codes_index_add_file()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a86388748f15624cd8fd2ec89d066295a">grib_get_string_array()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1e9477394be21ac60be3d6841660c137"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_grib_multi_release </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>gribid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Release a multi field from memory. </p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_multi_write" target="_blank">grib_multi_write.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the multi field we want to release the memory for </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#ab9369968f436ad85084ec1d48e9324c7">codes_index_get_size()</a>, and <a class="el" href="namespaceec_codes.html#ae5a40e31f81dd4cdddf8ddc71e833395">codes_index_release()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a2353707d7e586ce4255e3a93bc0f39d4">grib_set_string_array()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaec2118b6fca48e59ded7d2099e81009"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_grib_multi_support_off </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Turn off the support for multiple fields in a single message. </p>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a37ff4cf406f9b0b0cd6ede563c1d5ab1">codes_get_string()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a5c7a1d8a2c7802edd327a35cb35984e7">codes_count_in_file()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aed3ce5487d6bdd24e1127e638c9cfd54"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_grib_multi_support_on </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Turn on the support for multiple fields in a single message. </p>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a23859e3fb8802982fe865789d61b181f">codes_release()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a80246f356012448955e2e75572a8d210">codes_grib_new_from_file()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac70e34af931428ba9a4874e0ebf75928"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_grib_multi_write </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>multigribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>fileobj</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write a multi field message to a file. </p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_multi_write" target="_blank">grib_multi_write.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">multigribid</td><td>id of the multi field grib loaded in memory </td></tr>
+    <tr><td class="paramname">fileobj</td><td>python file object </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#ab07293de06d6ef6c5810ea3f01723884">codes_get_size()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a4c5256c7e609cf3eedf7d695a4b58a45">codes_gribex_mode_off()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a80246f356012448955e2e75572a8d210"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_grib_new_from_file </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>fileobj</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>headers_only</em> = <code>False</code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Load in memory a grib message from a file. </p>
+<p>The message can be accessed through its gribid and will be available<br/>
+ until <a class="el" href="namespaceec_codes.html#a23859e3fb8802982fe865789d61b181f">codes_release</a> is called.<br/>
+ The message can be loaded headers only by using the headers_only argument. Default is to have the headers only option set to off (False). If set to on (True), data values will be skipped. This will result in a significant performance gain if one is only interested in browsing through messages to retrieve metadata. Any attempt to retrieve data values keys when in the headers only mode will result in a key not found error.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_get_keys" target="_blank">grib_get_keys.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">fileobj</td><td>python file object </td></tr>
+    <tr><td class="paramname">headers_only</td><td>whether or not to load the message with the headers only </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>id of the grib loaded in memory </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a5c7a1d8a2c7802edd327a35cb35984e7">codes_count_in_file()</a>, and <a class="el" href="namespaceec_codes.html#aed3ce5487d6bdd24e1127e638c9cfd54">codes_grib_multi_support_on()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a44c10386781390c16f1a567590b33c11">codes_bufr_new_from_file()</a>, and <a class="el" href="namespaceec_codes.html#aabd87fd89cfac4d21ec014b838174e3c">codes_metar_new_from_file()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4c5256c7e609cf3eedf7d695a4b58a45"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_gribex_mode_off </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Turn off the compatibility mode with gribex. </p>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#ac70e34af931428ba9a4874e0ebf75928">codes_grib_multi_write()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a37ff4cf406f9b0b0cd6ede563c1d5ab1">codes_get_string()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aec0c4f83da942b94d51a3d8b93ecb6c4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_gribex_mode_on </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Turn on the compatibility mode with gribex. </p>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a37ff4cf406f9b0b0cd6ede563c1d5ab1">codes_get_string()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae71963dcd0256ccf5bd849f1f6643f38"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_gts_header </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>flag</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the GTS header on/off. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">flag</td><td>True/False </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a267636dba6361f74b330275a1f8e1ed7">codes_index_get()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab06cc33b116103a54fadb4e2735e579a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_gts_new_from_file </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>fileobj</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>headers_only</em> = <code>False</code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Load in memory a GTS message from a file. </p>
+<p>The message can be accessed through its id and will be available<br/>
+ until <a class="el" href="namespaceec_codes.html#a23859e3fb8802982fe865789d61b181f">codes_release</a> is called.<br/>
+ </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">fileobj</td><td>python file object </td></tr>
+    <tr><td class="paramname">headers_only</td><td>whether or not to load the message with the headers only </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>id of the GTS loaded in memory </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#aabd87fd89cfac4d21ec014b838174e3c">codes_metar_new_from_file()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#ab1788f3653df85dd90ac99f40daf98c4">codes_new_from_file()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1c18ea67e5ce00500824676691b4bc4a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_index_add_file </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>filename</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Add a file to an index. </p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of the index to add the file to </td></tr>
+    <tr><td class="paramname">filename</td><td>path of the file to be added to index </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a19b8c07a5ab06944488e66ce434a615b">codes_index_get_string()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a0b1fb93a9f550c971a7e08ca16bb5100">codes_grib_multi_new()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a267636dba6361f74b330275a1f8e1ed7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_index_get </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>ktype</em> = <code>str</code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the distinct values of an index key. </p>
+<p>The key must belong to the index.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created on the given key. </td></tr>
+    <tr><td class="paramname">key</td><td>key for which the values are returned </td></tr>
+    <tr><td class="paramname">ktype</td><td>the type we want the output in (int, float or str), str if not specified </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>array of values </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#add6a557c085ea401fc9529ed140025ef">codes_get_api_version()</a>, and <a class="el" href="namespaceec_codes.html#ae71963dcd0256ccf5bd849f1f6643f38">codes_gts_header()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a0af74e12fba25379db678363f5bdafb3">codes_get_values()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab28f95174ea3e8eb760d4019598ec9e6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_index_get_double </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index.</p>
+<p>This function is used when the type of the key was explicitly defined as double or when the native type of the key is double.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key for wich the values are returned </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>tuple with values of key in index </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a6fc3995f61a5f34933afd0aeb6427bf6">codes_new_from_index()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#ab9369968f436ad85084ec1d48e9324c7">codes_index_get_size()</a>, and <a class="el" href="namespaceec_codes.html#abc699d0bb7a7dded968ee0111342ffd0">codes_set_values()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aeaf2ac58b4a90bd09595986d49228d7c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_index_get_long </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index.</p>
+<p>This function is used when the type of the key was explicitly defined as long or when the native type of the key is long.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key for wich the values are returned </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>tuple with values of key in index </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#ab9369968f436ad85084ec1d48e9324c7">codes_index_get_size()</a>, and <a class="el" href="namespaceec_codes.html#ada63dc27281c249035da5b54e6ec0966">codes_index_select_long()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#ae89dc44888bfbba102e6c9332839fc51">codes_index_new_from_file()</a>, and <a class="el" href="namespaceec_codes.html#abc699d0bb7a7dded968ee0111342ffd0">codes_set_values()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab9369968f436ad85084ec1d48e9324c7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_index_get_size </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the number of distinct values for the index key. </p>
+<p>The key must belong to the index.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created on the given key. </td></tr>
+    <tr><td class="paramname">key</td><td>key for which the number of values is computed </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>number of distinct values for key in index </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#ab28f95174ea3e8eb760d4019598ec9e6">codes_index_get_double()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a1e9477394be21ac60be3d6841660c137">codes_grib_multi_release()</a>, <a class="el" href="namespaceec_codes.html#aeaf2ac58b4a90bd09595986d49228d7c">codes_index_get_long()</a>, <a class="el" href="namespaceec_codes.html#ae89dc44888bfbba102e6c9332839fc51">codes_index_new_from_file()</a>, and <a class="el" href="namespaceec_codes.html#ae5a40e31f81dd4cdddf8ddc71e833395">codes_index_release()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a19b8c07a5ab06944488e66ce434a615b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_index_get_string </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the distinct values of the key in argument contained in the index. </p>
+<p>The key must belong to the index.</p>
+<p>This function is used when the type of the key was explicitly defined as string or when the native type of the key is string.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key for wich the values are returned </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>tuple with values of key in index </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a98ef64298972c19d87f4fa54b125a268">codes_index_select_double()</a>, and <a class="el" href="namespaceec_codes.html#af9fa4123658007a2362baa9afd055063">codes_index_select_string()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a1c18ea67e5ce00500824676691b4bc4a">codes_index_add_file()</a>, and <a class="el" href="namespaceec_codes.html#abc699d0bb7a7dded968ee0111342ffd0">codes_set_values()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae89dc44888bfbba102e6c9332839fc51"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_index_new_from_file </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>filename</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>keys</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new index from a file. </p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">filename</td><td>path of the file to index on </td></tr>
+    <tr><td class="paramname">keys</td><td>sequence of keys to index on. The type of the key can be explicitly declared appending :l for long (or alternatively :i), :d for double, :s for string to the key name. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>index id </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#aeaf2ac58b4a90bd09595986d49228d7c">codes_index_get_long()</a>, and <a class="el" href="namespaceec_codes.html#ab9369968f436ad85084ec1d48e9324c7">codes_index_get_size()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a59e415f83b7f26b4575a5700ece65c14">codes_set_long_array()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a13866152bfd07b8cd418f6cf8c73d7ab"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_index_read </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>filename</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Loads an index previously saved with <a class="el" href="namespaceec_codes.html#a32c66888832215b2860535729ee616f8">codes_index_write</a> to a file. </p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">filename</td><td>path of file to load the index from </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>id of the loaded index </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a63f59e45ba10997c9e30bf63ea5f66e0">codes_set_definitions_path()</a>, and <a class="el" href="namespaceec_codes.html#ab7f299aaed48129491cc365a8ca289c2">codes_set_samples_path()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a1e25a749b9cffb9b4b391cde66a3333c">codes_set_array()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae5a40e31f81dd4cdddf8ddc71e833395"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_index_release </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>indexid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Delete an index. </p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#ab9369968f436ad85084ec1d48e9324c7">codes_index_get_size()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a1e9477394be21ac60be3d6841660c137">codes_grib_multi_release()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a92041c59bf04e6db88395077802dfe74"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_index_select </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Select the message subset with key==value. </p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key to be selected </td></tr>
+    <tr><td class="paramname">value</td><td>value of the key to select </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#add6a557c085ea401fc9529ed140025ef">codes_get_api_version()</a>, <a class="el" href="namespaceec_codes.html#a0f446397a9956ed5518ff6461fcc17f0">codes_get_message()</a>, and <a class="el" href="namespaceec_codes.html#a8b42a0c20ab81efa5a214dacc0b75d58">codes_new_from_message()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#abb5cff8e4911614c8b04032fb014ea07">codes_set()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a98ef64298972c19d87f4fa54b125a268"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_index_select_double </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Select the message subset with key==value. </p>
+<p>The value is a double.</p>
+<p>The key must have been created with integer type or have integer as native type if the type was not explicitly defined in the index creation.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key to be selected </td></tr>
+    <tr><td class="paramname">value</td><td>value of the key to select </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a3b085fe4c2ea0090a74959b396b2287f">codes_get_double_element()</a>, and <a class="el" href="namespaceec_codes.html#a72cc99e87c999a3cd225323fdcddfad7">codes_get_message_offset()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a19b8c07a5ab06944488e66ce434a615b">codes_index_get_string()</a>, and <a class="el" href="namespaceec_codes.html#abb5cff8e4911614c8b04032fb014ea07">codes_set()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ada63dc27281c249035da5b54e6ec0966"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_index_select_long </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Select the message subset with key==value. </p>
+<p>The value is an integer.</p>
+<p>The key must have been created with integer type or have integer as native type if the type was not explicitly defined in the index creation.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key to be selected </td></tr>
+    <tr><td class="paramname">value</td><td>value of the key to select </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#aa1a3c2d7800aa28297e3a9a11c4f6c0f">codes_get_message_size()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#aeaf2ac58b4a90bd09595986d49228d7c">codes_index_get_long()</a>, and <a class="el" href="namespaceec_codes.html#abb5cff8e4911614c8b04032fb014ea07">codes_set()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af9fa4123658007a2362baa9afd055063"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_index_select_string </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Select the message subset with key==value. </p>
+<p>The value is an integer.</p>
+<p>The key must have been created with string type or have string as native type if the type was not explicitly defined in the index creation.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. The index must have been created with the key in argument. </td></tr>
+    <tr><td class="paramname">key</td><td>key to be selected </td></tr>
+    <tr><td class="paramname">value</td><td>value of the key to select </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#af0708f169680a9b753789a3d61f7f9ef">codes_get_double_elements()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a19b8c07a5ab06944488e66ce434a615b">codes_index_get_string()</a>, and <a class="el" href="namespaceec_codes.html#abb5cff8e4911614c8b04032fb014ea07">codes_set()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a32c66888832215b2860535729ee616f8"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_index_write </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>indexid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>filename</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write an index to a file for later reuse. </p>
+<p>An index can be loaded back from an index file with <a class="el" href="namespaceec_codes.html#a13866152bfd07b8cd418f6cf8c73d7ab">codes_index_read</a>.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of the index </td></tr>
+    <tr><td class="paramname">filename</td><td>path of file to save the index to </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#abb5cff8e4911614c8b04032fb014ea07">codes_set()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adbc403f07e0bcc151d8b0fb1365492ff"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_is_defined </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Check if a key is defined (exists) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0->not defined, 1->defined </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a1ba4d3b6473499af0581cf52eb4cad0b">codes_get()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a8558de4f563b57fe8104d024eb90e7d2">codes_get_elements()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2dd162c68a1326619a34b45e56fdb46c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_is_missing </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Check if the value of a key is MISSING. </p>
+<p>The value of a key is considered as MISSING when all the bits assigned to it are set to 1. This is different from the actual key missing from the grib message. The value of a key MISSING has a special significance and that can be read about in the WMO documentation.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0->not missing, 1->missing </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a8558de4f563b57fe8104d024eb90e7d2">codes_get_elements()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a83a077fb2dda1e7f1d317039fc7267d1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_keys_iterator_delete </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>iterid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Delete a keys iterator and free memory. </p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_keys_iterator" target="_blank">grib_keys_iterator.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id created with <a class="el" href="namespaceec_codes.html#a199fb77e1395975be732e46f93b3e337">codes_keys_iterator_new</a> </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a22a427ff4355e63b2c16c491572ea6b5">codes_get_double()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#ae2bc65694ff09cdd253ef35f760ef841">codes_grib_iterator_next()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aec91e405c936c335c00267eb221c9f91"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_keys_iterator_get_name </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>iterid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the name of a key from a keys iterator. </p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_keys_iterator" target="_blank">grib_keys_iterator.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id created with <a class="el" href="namespaceec_codes.html#a199fb77e1395975be732e46f93b3e337">codes_keys_iterator_new</a> </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>key name to be retrieved </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#ae623fa09d65a3f699026a86d0e4864da">codes_set_long()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a199fb77e1395975be732e46f93b3e337">codes_keys_iterator_new()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a199fb77e1395975be732e46f93b3e337"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_keys_iterator_new </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>namespace</em> = <code>None</code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new iterator on the keys. </p>
+<p>The keys iterator can be navigated to give all the key names which can then be used to get or set the key values with <a class="el" href="namespaceec_codes.html#a1ba4d3b6473499af0581cf52eb4cad0b">codes_get</a> or <a class="el" href="namespaceec_codes.html#abb5cff8e4911614c8b04032fb014ea07">codes_set</a>. The set of keys returned can be controlled with the input variable namespace or using the functions <a class="el" href="namespaceec_codes.html#afb6f25e55aab91e1cf273403c4151c70">codes [...]
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_iterator" target="_blank">grib_iterator.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">namespace</td><td>the namespace of the keys to search for (all the keys if None) </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>keys iterator id to be used in the keys iterator functions </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#aec91e405c936c335c00267eb221c9f91">codes_keys_iterator_get_name()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#af3e5c3e1ee4d4b1e2f37862b9de92273">codes_grib_iterator_new()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af2eecea5df157516fb60556cbd1283cd"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_keys_iterator_next </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>iterid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Advance to the next keys iterator value. </p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_keys_iterator" target="_blank">grib_keys_iterator.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id created with <a class="el" href="namespaceec_codes.html#a199fb77e1395975be732e46f93b3e337">codes_keys_iterator_new</a> </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a88f2a86c370e490dae8e684c957022fd">codes_get_long()</a>, and <a class="el" href="namespaceec_codes.html#a921bb3a4c69e51a4c276bd6cf37c2d2c">codes_keys_iterator_rewind()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#ae2bc65694ff09cdd253ef35f760ef841">codes_grib_iterator_next()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a921bb3a4c69e51a4c276bd6cf37c2d2c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_keys_iterator_rewind </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>iterid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Rewind a keys iterator. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id created with <a class="el" href="namespaceec_codes.html#a199fb77e1395975be732e46f93b3e337">codes_keys_iterator_new</a> </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#af2eecea5df157516fb60556cbd1283cd">codes_keys_iterator_next()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aabd87fd89cfac4d21ec014b838174e3c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_metar_new_from_file </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>fileobj</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>headers_only</em> = <code>False</code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Load in memory a METAR message from a file. </p>
+<p>The message can be accessed through its id and will be available<br/>
+ until <a class="el" href="namespaceec_codes.html#a23859e3fb8802982fe865789d61b181f">codes_release</a> is called.<br/>
+ </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">fileobj</td><td>python file object </td></tr>
+    <tr><td class="paramname">headers_only</td><td>whether or not to load the message with the headers only </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>id of the METAR loaded in memory </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a44c10386781390c16f1a567590b33c11">codes_bufr_new_from_file()</a>, <a class="el" href="namespaceec_codes.html#a80246f356012448955e2e75572a8d210">codes_grib_new_from_file()</a>, and <a class="el" href="namespaceec_codes.html#ab1788f3653df85dd90ac99f40daf98c4">codes_new_from_file()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#ab06cc33b116103a54fadb4e2735e579a">codes_gts_new_from_file()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab1788f3653df85dd90ac99f40daf98c4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_new_from_file </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>fileobj</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>product_kind</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>headers_only</em> = <code>False</code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Load in memory a message from a file for a given product. </p>
+<p>The message can be accessed through its id and will be available<br/>
+ until <a class="el" href="namespaceec_codes.html#a23859e3fb8802982fe865789d61b181f">codes_release</a> is called.<br/>
+ <b>Examples:</b> get_product_kind.py</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">fileobj</td><td>python file object </td></tr>
+    <tr><td class="paramname">product_kind</td><td>one of CODES_PRODUCT_GRIB, CODES_PRODUCT_BUFR, CODES_PRODUCT_METAR or CODES_PRODUCT_GTS </td></tr>
+    <tr><td class="paramname">headers_only</td><td>whether or not to load the message with the headers only </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>id of the message loaded in memory </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#af4a4c95465d2026ad549920b07150bab">codes_any_new_from_file()</a>, and <a class="el" href="namespaceec_codes.html#ab06cc33b116103a54fadb4e2735e579a">codes_gts_new_from_file()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#aabd87fd89cfac4d21ec014b838174e3c">codes_metar_new_from_file()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6fc3995f61a5f34933afd0aeb6427bf6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_new_from_index </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>indexid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new handle from an index after having selected the key values. </p>
+<p>All the keys belonging to the index must be selected before calling this function. Successive calls to this function will return all the handles compatible with the constraints defined selecting the values of the index keys.</p>
+<p>The message can be accessed through its gribid and will be available until <a class="el" href="namespaceec_codes.html#a23859e3fb8802982fe865789d61b181f">codes_release</a> is called.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_index" target="_blank">grib_index.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">indexid</td><td>id of an index created from a file. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>id of the message loaded in memory or None if end of index </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a8558de4f563b57fe8104d024eb90e7d2">codes_get_elements()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#ab28f95174ea3e8eb760d4019598ec9e6">codes_index_get_double()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8b42a0c20ab81efa5a214dacc0b75d58"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_new_from_message </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>message</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a grib handle from a message in memory. </p>
+<p>Create a new grib message from the input binary string and return its grib id.</p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="namespaceec_codes.html#a0f446397a9956ed5518ff6461fcc17f0" title="Get the binary message. ">codes_get_message</a></dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">message</td><td>binary string message </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>msgid of the newly created grib message </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a92041c59bf04e6db88395077802dfe74">codes_index_select()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a643c58a9acad239c081794c74a5b86d9"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_new_from_samples </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>samplename</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Create a new valid GRIB message from a sample. </p>
+<p>The available samples are picked up from the directory pointed to by the environment variable ECCODES_SAMPLES_PATH. To know where the samples directory is run the codes_info tool.<br/>
+ <b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_samples" target="_blank">grib_samples.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">samplename</td><td>name of the sample to be used </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>id of the message loaded in memory </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#ac18c28cc7bd146dad986e03511fb7340">codes_set_double_array()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a22a427ff4355e63b2c16c491572ea6b5">codes_get_double()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a85e89c8eae4fb209ae0a7c566e4a2cb1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_no_fail_on_wrong_length </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>flag</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Do not fail if the message has the wrong length. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">flag</td><td>True/False </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a1e25a749b9cffb9b4b391cde66a3333c">codes_set_array()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a23859e3fb8802982fe865789d61b181f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_release </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Free the memory for the message referred as msgid. </p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_get_keys" target="_blank">grib_get_keys.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#adc7361072916fe6ec52e9cf53f066839">codes_get_string_length()</a>, and <a class="el" href="namespaceec_codes.html#acbb0d241a917a3e726792157c1f5d973">codes_set_string()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#aed3ce5487d6bdd24e1127e638c9cfd54">codes_grib_multi_support_on()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abb5cff8e4911614c8b04032fb014ea07"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_set </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the value for a scalar key in a grib message. </p>
+<p>The input value can be a python int, float or str.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_set_keys" target="_blank">grib_set_keys.py</a></p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="namespaceec_codes.html#a80246f356012448955e2e75572a8d210" title="Load in memory a grib message from a file. ">codes_grib_new_from_file</a>, <a class="el" href="namespaceec_codes.html#a23859e3fb8802982fe865789d61b181f" title="Free the memory for the message referred as msgid. ">codes_release</a>, <a class="el" href="namespaceec_codes.html#a1ba4d3b6473499af0581cf52eb4cad0b" title="Get the value of a key in a grib message. ">c [...]
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>scalar value to set for key </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a92041c59bf04e6db88395077802dfe74">codes_index_select()</a>, <a class="el" href="namespaceec_codes.html#a98ef64298972c19d87f4fa54b125a268">codes_index_select_double()</a>, <a class="el" href="namespaceec_codes.html#ada63dc27281c249035da5b54e6ec0966">codes_index_select_long()</a>, <a class="el" href="namespaceec_codes.html#af9fa4123658007a2362baa9afd055063">codes_index_select_string()</a>, and <a class="el" href="namespaceec_codes.h [...]
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a1ba4d3b6473499af0581cf52eb4cad0b">codes_get()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1e25a749b9cffb9b4b391cde66a3333c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_set_array </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the value for an array key in a message. </p>
+<p>Examples of array keys: "values" - data values "pl" - list of number of points for each latitude in a reduced grid "pv" - list of vertical levels</p>
+<p>The input array can be a numpy.ndarray or a python sequence like tuple, list, array, ...</p>
+<p>The wrapper will internally try to convert the input to a NumPy array before extracting its data and length. This is possible as NumPy allows the construction of arrays from arbitrary python sequences.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>array to set for key </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a13866152bfd07b8cd418f6cf8c73d7ab">codes_index_read()</a>, and <a class="el" href="namespaceec_codes.html#a85e89c8eae4fb209ae0a7c566e4a2cb1">codes_no_fail_on_wrong_length()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a648bae4beadb6a82698da40e08323be9">codes_get_array()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a63f59e45ba10997c9e30bf63ea5f66e0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_set_definitions_path </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>defs_path</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the definitions path. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">defs_path</td><td>definitions path </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a13866152bfd07b8cd418f6cf8c73d7ab">codes_index_read()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa619f32357c9107b5b6f96ad1fee4232"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_set_double </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the double value for a key in a grib message. </p>
+<p>A TypeError exception will be thrown if value cannot be represented as a float.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>float value to set </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a>,TypeError</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#ab49cb36625cd87b9d898844b1df32516">codes_clone()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a1ba4d3b6473499af0581cf52eb4cad0b">codes_get()</a>, and <a class="el" href="namespaceec_codes.html#a88f2a86c370e490dae8e684c957022fd">codes_get_long()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac18c28cc7bd146dad986e03511fb7340"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_set_double_array </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>inarray</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the value of the key to a double array. </p>
+<p>The input array can be a numpy.ndarray or a python sequence like tuple, list, array, ...</p>
+<p>The wrapper will internally try to convert the input to a NumPy array before extracting its data and length. This is possible as NumPy allows the construction of arrays from arbitrary python sequences.</p>
+<p>The elements of the input sequence need to be convertible to a double.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">inarray</td><td>tuple,list,array,numpy.ndarray </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a2353707d7e586ce4255e3a93bc0f39d4">grib_set_string_array()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a1ba4d3b6473499af0581cf52eb4cad0b">codes_get()</a>, <a class="el" href="namespaceec_codes.html#a0af74e12fba25379db678363f5bdafb3">codes_get_values()</a>, and <a class="el" href="namespaceec_codes.html#a643c58a9acad239c081794c74a5b86d9">codes_new_from_samples()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a997587cb4079552273d224fd3434463b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_set_key_vals </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key_vals</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the values for several keys at once in a grib message. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">key_vals</td><td>can be a string, list/tuple or dictionary. If a string, format must be "key1=val1,key2=val2" If a list, it must contain strings of the form "key1=val1" </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a1250285cb0770393bf6078f3ee3340a2">codes_get_native_type()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a72cc99e87c999a3cd225323fdcddfad7">codes_get_message_offset()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae623fa09d65a3f699026a86d0e4864da"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_set_long </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the integer value for a key in a grib message. </p>
+<p>A TypeError exception will be thrown if value cannot be represented as an integer.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>value to set </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a>,TypeError</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#ae042f8fe1cc86718ce658f3b992c87a2">codes_bufr_new_from_samples()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a1ba4d3b6473499af0581cf52eb4cad0b">codes_get()</a>, and <a class="el" href="namespaceec_codes.html#aec91e405c936c335c00267eb221c9f91">codes_keys_iterator_get_name()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a59e415f83b7f26b4575a5700ece65c14"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_set_long_array </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>inarray</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the value of the key to an integer array. </p>
+<p>The input array can be a numpy.ndarray or a python sequence like tuple, list, array, ...</p>
+<p>The wrapper will internally try to convert the input to a NumPy array before extracting its data and length. This is possible as NumPy allows the construction of arrays from arbitrary python sequences.</p>
+<p>The elements of the input sequence need to be convertible to an int.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">inarray</td><td>tuple,list,python array,numpy.ndarray </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#ae89dc44888bfbba102e6c9332839fc51">codes_index_new_from_file()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a441ff456dc9990951bf242f4d542713a">codes_get_double_array()</a>, and <a class="el" href="namespaceec_codes.html#a0af74e12fba25379db678363f5bdafb3">codes_get_values()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="affddd8311b1127306fa02ce26023d89e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_set_missing </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set as missing the value for a key in a grib message. </p>
+<p>It can be used to set a missing value in the grib header but not in the data values.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_set_missing" target="_blank">grib_set_missing.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a134bac0edaf47f29051ad905a30fb63e">codes_grib_find_nearest()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#aa1a3c2d7800aa28297e3a9a11c4f6c0f">codes_get_message_size()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab7f299aaed48129491cc365a8ca289c2"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_set_samples_path </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>samples_path</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the samples path. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">samples_path</td><td>samples path </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a13866152bfd07b8cd418f6cf8c73d7ab">codes_index_read()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acbb0d241a917a3e726792157c1f5d973"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_set_string </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the value for a string key in a grib message. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">value</td><td>string value </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#af13b3e69c2b5ad0ea6b7fd07ac37e367">codes_write()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a1ba4d3b6473499af0581cf52eb4cad0b">codes_get()</a>, and <a class="el" href="namespaceec_codes.html#a23859e3fb8802982fe865789d61b181f">codes_release()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abc699d0bb7a7dded968ee0111342ffd0"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_set_values </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>gribid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>values</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the contents of the 'values' key. </p>
+<p>The input array can be a numpy.ndarray or a python sequence like tuple, list, array, ...</p>
+<p>The wrapper will internally try to convert the input to a NumPy array before extracting its data and length. This is possible as NumPy allows the construction of arrays from arbitrary python sequences.</p>
+<p>The elements of the input sequence need to be convertible to a double.</p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_clone" target="_blank">grib_clone.py</a>, <a href="https://software.ecmwf.int/wiki/display/ECC/grib_samples" target="_blank">grib_samples.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">gribid</td><td>id of the grib loaded in memory </td></tr>
+    <tr><td class="paramname">values</td><td>array of values to set as tuple, list, array or numpy.ndarray </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#ab28f95174ea3e8eb760d4019598ec9e6">codes_index_get_double()</a>, <a class="el" href="namespaceec_codes.html#aeaf2ac58b4a90bd09595986d49228d7c">codes_index_get_long()</a>, and <a class="el" href="namespaceec_codes.html#a19b8c07a5ab06944488e66ce434a615b">codes_index_get_string()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a1250285cb0770393bf6078f3ee3340a2">codes_get_native_type()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4b7140ca0dd81372721cffd1d964e4ad"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_skip_coded </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>iterid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Skip the coded keys in a keys iterator. </p>
+<p>The coded keys are actually coded in the message.</p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="namespaceec_codes.html#a199fb77e1395975be732e46f93b3e337" title="Create a new iterator on the keys. ">codes_keys_iterator_new</a>,<a class="el" href="namespaceec_codes.html#af2eecea5df157516fb60556cbd1283cd" title="Advance to the next keys iterator value. ">codes_keys_iterator_next</a>,<a class="el" href="namespaceec_codes.html#a83a077fb2dda1e7f1d317039fc7267d1" title="Delete a keys iterator and free memory. ">codes_keys_it [...]
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#afb6f25e55aab91e1cf273403c4151c70">codes_skip_read_only()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#adc7361072916fe6ec52e9cf53f066839">codes_get_string_length()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a587af29aac21a816f8ffd327a1fce779"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_skip_computed </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>iterid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Skip the computed keys in a keys iterator. </p>
+<p>The computed keys are not coded in the message, they are computed from other keys.</p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="namespaceec_codes.html#a199fb77e1395975be732e46f93b3e337" title="Create a new iterator on the keys. ">codes_keys_iterator_new</a>,<a class="el" href="namespaceec_codes.html#af2eecea5df157516fb60556cbd1283cd" title="Advance to the next keys iterator value. ">codes_keys_iterator_next</a>,<a class="el" href="namespaceec_codes.html#a83a077fb2dda1e7f1d317039fc7267d1" title="Delete a keys iterator and free memory. ">codes_keys_it [...]
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a57f7a5a0f6975e1357e5aa1dc4715e0c">codes_skip_duplicates()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a956a6f84f7b418551cd6c4976c970140">codes_grib_multi_append()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a57f7a5a0f6975e1357e5aa1dc4715e0c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_skip_duplicates </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>iterid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Skip the duplicate keys in a keys iterator. </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="namespaceec_codes.html#a199fb77e1395975be732e46f93b3e337" title="Create a new iterator on the keys. ">codes_keys_iterator_new</a>,<a class="el" href="namespaceec_codes.html#af2eecea5df157516fb60556cbd1283cd" title="Advance to the next keys iterator value. ">codes_keys_iterator_next</a>,<a class="el" href="namespaceec_codes.html#a83a077fb2dda1e7f1d317039fc7267d1" title="Delete a keys iterator and free memory. ">codes_keys_it [...]
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#af3e5c3e1ee4d4b1e2f37862b9de92273">codes_grib_iterator_new()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a587af29aac21a816f8ffd327a1fce779">codes_skip_computed()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acb01114683ef4aacbf1609eb3a435055"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_skip_edition_specific </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>iterid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Skip the edition specific keys in a keys iterator. </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="namespaceec_codes.html#a199fb77e1395975be732e46f93b3e337" title="Create a new iterator on the keys. ">codes_keys_iterator_new</a>,<a class="el" href="namespaceec_codes.html#af2eecea5df157516fb60556cbd1283cd" title="Advance to the next keys iterator value. ">codes_keys_iterator_next</a>,<a class="el" href="namespaceec_codes.html#a83a077fb2dda1e7f1d317039fc7267d1" title="Delete a keys iterator and free memory. ">codes_keys_it [...]
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a6eedc94ffbffad66b92d3fccfc1ec692">codes_skip_function()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#adc7361072916fe6ec52e9cf53f066839">codes_get_string_length()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6eedc94ffbffad66b92d3fccfc1ec692"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_skip_function </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>iterid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Skip the function keys in a keys iterator. </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="namespaceec_codes.html#a199fb77e1395975be732e46f93b3e337" title="Create a new iterator on the keys. ">codes_keys_iterator_new</a>,<a class="el" href="namespaceec_codes.html#af2eecea5df157516fb60556cbd1283cd" title="Advance to the next keys iterator value. ">codes_keys_iterator_next</a>,<a class="el" href="namespaceec_codes.html#a83a077fb2dda1e7f1d317039fc7267d1" title="Delete a keys iterator and free memory. ">codes_keys_it [...]
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#ae2bc65694ff09cdd253ef35f760ef841">codes_grib_iterator_next()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#acb01114683ef4aacbf1609eb3a435055">codes_skip_edition_specific()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afb6f25e55aab91e1cf273403c4151c70"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_skip_read_only </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>iterid</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Skip the read_only keys in a keys iterator. </p>
+<p>Read only keys cannot be set.</p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="namespaceec_codes.html#a199fb77e1395975be732e46f93b3e337" title="Create a new iterator on the keys. ">codes_keys_iterator_new</a>,<a class="el" href="namespaceec_codes.html#af2eecea5df157516fb60556cbd1283cd" title="Advance to the next keys iterator value. ">codes_keys_iterator_next</a>,<a class="el" href="namespaceec_codes.html#a83a077fb2dda1e7f1d317039fc7267d1" title="Delete a keys iterator and free memory. ">codes_keys_it [...]
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">iterid</td><td>keys iterator id </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a18cdf4111053dc0c387a5fbddb0aaf30">codes_grib_iterator_delete()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a4b7140ca0dd81372721cffd1d964e4ad">codes_skip_coded()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af13b3e69c2b5ad0ea6b7fd07ac37e367"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.codes_write </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>fileobj</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Write a message to a file. </p>
+<p><b>Examples:</b> <a href="https://software.ecmwf.int/wiki/display/ECC/grib_set_keys" target="_blank">grib_set_keys.py</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">fileobj</td><td>python file object </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a956a6f84f7b418551cd6c4976c970140">codes_grib_multi_append()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#acbb0d241a917a3e726792157c1f5d973">codes_set_string()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a86388748f15624cd8fd2ec89d066295a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.grib_get_string_array </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Get the value of the key as a list of strings. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>list </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a680c8ecbf2104d69083c68ea6184192d">codes_get_long_array()</a>, <a class="el" href="namespaceec_codes.html#ab07293de06d6ef6c5810ea3f01723884">codes_get_size()</a>, and <a class="el" href="namespaceec_codes.html#a0b1fb93a9f550c971a7e08ca16bb5100">codes_grib_multi_new()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#ab49cb36625cd87b9d898844b1df32516">codes_clone()</a>, and <a class="el" href="namespaceec_codes.html#a134bac0edaf47f29051ad905a30fb63e">codes_grib_find_nearest()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2353707d7e586ce4255e3a93bc0f39d4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">def ecCodes.grib_set_string_array </td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>msgid</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>key</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"> </td>
+          <td class="paramname"><em>inarray</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Set the value of the key to a string array. </p>
+<p>The input array can be a python sequence like tuple, list, array, ...</p>
+<p>The wrapper will internally try to convert the input to a NumPy array before extracting its data and length. This is possible as NumPy allows the construction of arrays from arbitrary python sequences.</p>
+<p>The elements of the input sequence need to be convertible to a double.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">msgid</td><td>id of the message loaded in memory </td></tr>
+    <tr><td class="paramname">key</td><td>key name </td></tr>
+    <tr><td class="paramname">inarray</td><td>tuple,list,array </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+  <table class="exception">
+    <tr><td class="paramname"><a class="el" href="classec_codes_1_1_codes_internal_error.html" title="Wrap errors coming from the C API in a Python exception object. ">CodesInternalError</a></td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>References <a class="el" href="namespaceec_codes.html#a6c83d2b9572083c7a83c9c5d39010b14">codes_copy_namespace()</a>, and <a class="el" href="namespaceec_codes.html#a1e9477394be21ac60be3d6841660c137">codes_grib_multi_release()</a>.</p>
+
+<p>Referenced by <a class="el" href="namespaceec_codes.html#a0af74e12fba25379db678363f5bdafb3">codes_get_values()</a>, and <a class="el" href="namespaceec_codes.html#ac18c28cc7bd146dad986e03511fb7340">codes_set_double_array()</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/namespacegrib__api.html b/html/namespacegrib__api.html
deleted file mode 100644
index e69de29..0000000
diff --git a/html/namespacemembers.html b/html/namespacemembers.html
index e69de29..4933ba9 100644
--- a/html/namespacemembers.html
+++ b/html/namespacemembers.html
@@ -0,0 +1,375 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: Namespace Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li class="current"><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
+      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
+      <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow4" class="tabs3">
+    <ul class="tablist">
+      <li><a href="#index_c"><span>c</span></a></li>
+      <li><a href="#index_g"><span>g</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all documented namespace members with links to the namespaces they belong to:</div>
+
+<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<li>codes_any_new_from_file()
+: <a class="el" href="namespaceec_codes.html#af4a4c95465d2026ad549920b07150bab">ecCodes</a>
+</li>
+<li>codes_bufr_new_from_file()
+: <a class="el" href="namespaceec_codes.html#a44c10386781390c16f1a567590b33c11">ecCodes</a>
+</li>
+<li>codes_bufr_new_from_samples()
+: <a class="el" href="namespaceec_codes.html#ae042f8fe1cc86718ce658f3b992c87a2">ecCodes</a>
+</li>
+<li>codes_clone()
+: <a class="el" href="namespaceec_codes.html#ab49cb36625cd87b9d898844b1df32516">ecCodes</a>
+</li>
+<li>codes_copy_namespace()
+: <a class="el" href="namespaceec_codes.html#a6c83d2b9572083c7a83c9c5d39010b14">ecCodes</a>
+</li>
+<li>codes_count_in_file()
+: <a class="el" href="namespaceec_codes.html#a5c7a1d8a2c7802edd327a35cb35984e7">ecCodes</a>
+</li>
+<li>codes_get()
+: <a class="el" href="namespaceec_codes.html#a1ba4d3b6473499af0581cf52eb4cad0b">ecCodes</a>
+</li>
+<li>codes_get_api_version()
+: <a class="el" href="namespaceec_codes.html#add6a557c085ea401fc9529ed140025ef">ecCodes</a>
+</li>
+<li>codes_get_array()
+: <a class="el" href="namespaceec_codes.html#a648bae4beadb6a82698da40e08323be9">ecCodes</a>
+</li>
+<li>codes_get_double()
+: <a class="el" href="namespaceec_codes.html#a22a427ff4355e63b2c16c491572ea6b5">ecCodes</a>
+</li>
+<li>codes_get_double_array()
+: <a class="el" href="namespaceec_codes.html#a441ff456dc9990951bf242f4d542713a">ecCodes</a>
+</li>
+<li>codes_get_double_element()
+: <a class="el" href="namespaceec_codes.html#a3b085fe4c2ea0090a74959b396b2287f">ecCodes</a>
+</li>
+<li>codes_get_double_elements()
+: <a class="el" href="namespaceec_codes.html#af0708f169680a9b753789a3d61f7f9ef">ecCodes</a>
+</li>
+<li>codes_get_elements()
+: <a class="el" href="namespaceec_codes.html#a8558de4f563b57fe8104d024eb90e7d2">ecCodes</a>
+</li>
+<li>codes_get_long()
+: <a class="el" href="namespaceec_codes.html#a88f2a86c370e490dae8e684c957022fd">ecCodes</a>
+</li>
+<li>codes_get_long_array()
+: <a class="el" href="namespaceec_codes.html#a680c8ecbf2104d69083c68ea6184192d">ecCodes</a>
+</li>
+<li>codes_get_message()
+: <a class="el" href="namespaceec_codes.html#a0f446397a9956ed5518ff6461fcc17f0">ecCodes</a>
+</li>
+<li>codes_get_message_offset()
+: <a class="el" href="namespaceec_codes.html#a72cc99e87c999a3cd225323fdcddfad7">ecCodes</a>
+</li>
+<li>codes_get_message_size()
+: <a class="el" href="namespaceec_codes.html#aa1a3c2d7800aa28297e3a9a11c4f6c0f">ecCodes</a>
+</li>
+<li>codes_get_native_type()
+: <a class="el" href="namespaceec_codes.html#a1250285cb0770393bf6078f3ee3340a2">ecCodes</a>
+</li>
+<li>codes_get_size()
+: <a class="el" href="namespaceec_codes.html#ab07293de06d6ef6c5810ea3f01723884">ecCodes</a>
+</li>
+<li>codes_get_string()
+: <a class="el" href="namespaceec_codes.html#a37ff4cf406f9b0b0cd6ede563c1d5ab1">ecCodes</a>
+</li>
+<li>codes_get_string_length()
+: <a class="el" href="namespaceec_codes.html#adc7361072916fe6ec52e9cf53f066839">ecCodes</a>
+</li>
+<li>codes_get_values()
+: <a class="el" href="namespaceec_codes.html#a0af74e12fba25379db678363f5bdafb3">ecCodes</a>
+</li>
+<li>codes_grib_find_nearest()
+: <a class="el" href="namespaceec_codes.html#a134bac0edaf47f29051ad905a30fb63e">ecCodes</a>
+</li>
+<li>codes_grib_iterator_delete()
+: <a class="el" href="namespaceec_codes.html#a18cdf4111053dc0c387a5fbddb0aaf30">ecCodes</a>
+</li>
+<li>codes_grib_iterator_new()
+: <a class="el" href="namespaceec_codes.html#af3e5c3e1ee4d4b1e2f37862b9de92273">ecCodes</a>
+</li>
+<li>codes_grib_iterator_next()
+: <a class="el" href="namespaceec_codes.html#ae2bc65694ff09cdd253ef35f760ef841">ecCodes</a>
+</li>
+<li>codes_grib_multi_append()
+: <a class="el" href="namespaceec_codes.html#a956a6f84f7b418551cd6c4976c970140">ecCodes</a>
+</li>
+<li>codes_grib_multi_new()
+: <a class="el" href="namespaceec_codes.html#a0b1fb93a9f550c971a7e08ca16bb5100">ecCodes</a>
+</li>
+<li>codes_grib_multi_release()
+: <a class="el" href="namespaceec_codes.html#a1e9477394be21ac60be3d6841660c137">ecCodes</a>
+</li>
+<li>codes_grib_multi_support_off()
+: <a class="el" href="namespaceec_codes.html#aaec2118b6fca48e59ded7d2099e81009">ecCodes</a>
+</li>
+<li>codes_grib_multi_support_on()
+: <a class="el" href="namespaceec_codes.html#aed3ce5487d6bdd24e1127e638c9cfd54">ecCodes</a>
+</li>
+<li>codes_grib_multi_write()
+: <a class="el" href="namespaceec_codes.html#ac70e34af931428ba9a4874e0ebf75928">ecCodes</a>
+</li>
+<li>codes_grib_new_from_file()
+: <a class="el" href="namespaceec_codes.html#a80246f356012448955e2e75572a8d210">ecCodes</a>
+</li>
+<li>codes_gribex_mode_off()
+: <a class="el" href="namespaceec_codes.html#a4c5256c7e609cf3eedf7d695a4b58a45">ecCodes</a>
+</li>
+<li>codes_gribex_mode_on()
+: <a class="el" href="namespaceec_codes.html#aec0c4f83da942b94d51a3d8b93ecb6c4">ecCodes</a>
+</li>
+<li>codes_gts_header()
+: <a class="el" href="namespaceec_codes.html#ae71963dcd0256ccf5bd849f1f6643f38">ecCodes</a>
+</li>
+<li>codes_gts_new_from_file()
+: <a class="el" href="namespaceec_codes.html#ab06cc33b116103a54fadb4e2735e579a">ecCodes</a>
+</li>
+<li>codes_index_add_file()
+: <a class="el" href="namespaceec_codes.html#a1c18ea67e5ce00500824676691b4bc4a">ecCodes</a>
+</li>
+<li>codes_index_get()
+: <a class="el" href="namespaceec_codes.html#a267636dba6361f74b330275a1f8e1ed7">ecCodes</a>
+</li>
+<li>codes_index_get_double()
+: <a class="el" href="namespaceec_codes.html#ab28f95174ea3e8eb760d4019598ec9e6">ecCodes</a>
+</li>
+<li>codes_index_get_long()
+: <a class="el" href="namespaceec_codes.html#aeaf2ac58b4a90bd09595986d49228d7c">ecCodes</a>
+</li>
+<li>codes_index_get_size()
+: <a class="el" href="namespaceec_codes.html#ab9369968f436ad85084ec1d48e9324c7">ecCodes</a>
+</li>
+<li>codes_index_get_string()
+: <a class="el" href="namespaceec_codes.html#a19b8c07a5ab06944488e66ce434a615b">ecCodes</a>
+</li>
+<li>codes_index_new_from_file()
+: <a class="el" href="namespaceec_codes.html#ae89dc44888bfbba102e6c9332839fc51">ecCodes</a>
+</li>
+<li>codes_index_read()
+: <a class="el" href="namespaceec_codes.html#a13866152bfd07b8cd418f6cf8c73d7ab">ecCodes</a>
+</li>
+<li>codes_index_release()
+: <a class="el" href="namespaceec_codes.html#ae5a40e31f81dd4cdddf8ddc71e833395">ecCodes</a>
+</li>
+<li>codes_index_select()
+: <a class="el" href="namespaceec_codes.html#a92041c59bf04e6db88395077802dfe74">ecCodes</a>
+</li>
+<li>codes_index_select_double()
+: <a class="el" href="namespaceec_codes.html#a98ef64298972c19d87f4fa54b125a268">ecCodes</a>
+</li>
+<li>codes_index_select_long()
+: <a class="el" href="namespaceec_codes.html#ada63dc27281c249035da5b54e6ec0966">ecCodes</a>
+</li>
+<li>codes_index_select_string()
+: <a class="el" href="namespaceec_codes.html#af9fa4123658007a2362baa9afd055063">ecCodes</a>
+</li>
+<li>codes_index_write()
+: <a class="el" href="namespaceec_codes.html#a32c66888832215b2860535729ee616f8">ecCodes</a>
+</li>
+<li>codes_is_defined()
+: <a class="el" href="namespaceec_codes.html#adbc403f07e0bcc151d8b0fb1365492ff">ecCodes</a>
+</li>
+<li>codes_is_missing()
+: <a class="el" href="namespaceec_codes.html#a2dd162c68a1326619a34b45e56fdb46c">ecCodes</a>
+</li>
+<li>codes_keys_iterator_delete()
+: <a class="el" href="namespaceec_codes.html#a83a077fb2dda1e7f1d317039fc7267d1">ecCodes</a>
+</li>
+<li>codes_keys_iterator_get_name()
+: <a class="el" href="namespaceec_codes.html#aec91e405c936c335c00267eb221c9f91">ecCodes</a>
+</li>
+<li>codes_keys_iterator_new()
+: <a class="el" href="namespaceec_codes.html#a199fb77e1395975be732e46f93b3e337">ecCodes</a>
+</li>
+<li>codes_keys_iterator_next()
+: <a class="el" href="namespaceec_codes.html#af2eecea5df157516fb60556cbd1283cd">ecCodes</a>
+</li>
+<li>codes_keys_iterator_rewind()
+: <a class="el" href="namespaceec_codes.html#a921bb3a4c69e51a4c276bd6cf37c2d2c">ecCodes</a>
+</li>
+<li>codes_metar_new_from_file()
+: <a class="el" href="namespaceec_codes.html#aabd87fd89cfac4d21ec014b838174e3c">ecCodes</a>
+</li>
+<li>codes_new_from_file()
+: <a class="el" href="namespaceec_codes.html#ab1788f3653df85dd90ac99f40daf98c4">ecCodes</a>
+</li>
+<li>codes_new_from_index()
+: <a class="el" href="namespaceec_codes.html#a6fc3995f61a5f34933afd0aeb6427bf6">ecCodes</a>
+</li>
+<li>codes_new_from_message()
+: <a class="el" href="namespaceec_codes.html#a8b42a0c20ab81efa5a214dacc0b75d58">ecCodes</a>
+</li>
+<li>codes_new_from_samples()
+: <a class="el" href="namespaceec_codes.html#a643c58a9acad239c081794c74a5b86d9">ecCodes</a>
+</li>
+<li>codes_no_fail_on_wrong_length()
+: <a class="el" href="namespaceec_codes.html#a85e89c8eae4fb209ae0a7c566e4a2cb1">ecCodes</a>
+</li>
+<li>codes_release()
+: <a class="el" href="namespaceec_codes.html#a23859e3fb8802982fe865789d61b181f">ecCodes</a>
+</li>
+<li>codes_set()
+: <a class="el" href="namespaceec_codes.html#abb5cff8e4911614c8b04032fb014ea07">ecCodes</a>
+</li>
+<li>codes_set_array()
+: <a class="el" href="namespaceec_codes.html#a1e25a749b9cffb9b4b391cde66a3333c">ecCodes</a>
+</li>
+<li>codes_set_definitions_path()
+: <a class="el" href="namespaceec_codes.html#a63f59e45ba10997c9e30bf63ea5f66e0">ecCodes</a>
+</li>
+<li>codes_set_double()
+: <a class="el" href="namespaceec_codes.html#aa619f32357c9107b5b6f96ad1fee4232">ecCodes</a>
+</li>
+<li>codes_set_double_array()
+: <a class="el" href="namespaceec_codes.html#ac18c28cc7bd146dad986e03511fb7340">ecCodes</a>
+</li>
+<li>codes_set_key_vals()
+: <a class="el" href="namespaceec_codes.html#a997587cb4079552273d224fd3434463b">ecCodes</a>
+</li>
+<li>codes_set_long()
+: <a class="el" href="namespaceec_codes.html#ae623fa09d65a3f699026a86d0e4864da">ecCodes</a>
+</li>
+<li>codes_set_long_array()
+: <a class="el" href="namespaceec_codes.html#a59e415f83b7f26b4575a5700ece65c14">ecCodes</a>
+</li>
+<li>codes_set_missing()
+: <a class="el" href="namespaceec_codes.html#affddd8311b1127306fa02ce26023d89e">ecCodes</a>
+</li>
+<li>codes_set_samples_path()
+: <a class="el" href="namespaceec_codes.html#ab7f299aaed48129491cc365a8ca289c2">ecCodes</a>
+</li>
+<li>codes_set_string()
+: <a class="el" href="namespaceec_codes.html#acbb0d241a917a3e726792157c1f5d973">ecCodes</a>
+</li>
+<li>codes_set_values()
+: <a class="el" href="namespaceec_codes.html#abc699d0bb7a7dded968ee0111342ffd0">ecCodes</a>
+</li>
+<li>codes_skip_coded()
+: <a class="el" href="namespaceec_codes.html#a4b7140ca0dd81372721cffd1d964e4ad">ecCodes</a>
+</li>
+<li>codes_skip_computed()
+: <a class="el" href="namespaceec_codes.html#a587af29aac21a816f8ffd327a1fce779">ecCodes</a>
+</li>
+<li>codes_skip_duplicates()
+: <a class="el" href="namespaceec_codes.html#a57f7a5a0f6975e1357e5aa1dc4715e0c">ecCodes</a>
+</li>
+<li>codes_skip_edition_specific()
+: <a class="el" href="namespaceec_codes.html#acb01114683ef4aacbf1609eb3a435055">ecCodes</a>
+</li>
+<li>codes_skip_function()
+: <a class="el" href="namespaceec_codes.html#a6eedc94ffbffad66b92d3fccfc1ec692">ecCodes</a>
+</li>
+<li>codes_skip_read_only()
+: <a class="el" href="namespaceec_codes.html#afb6f25e55aab91e1cf273403c4151c70">ecCodes</a>
+</li>
+<li>codes_write()
+: <a class="el" href="namespaceec_codes.html#af13b3e69c2b5ad0ea6b7fd07ac37e367">ecCodes</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
+<li>grib_get_string_array()
+: <a class="el" href="namespaceec_codes.html#a86388748f15624cd8fd2ec89d066295a">ecCodes</a>
+</li>
+<li>grib_set_string_array()
+: <a class="el" href="namespaceec_codes.html#a2353707d7e586ce4255e3a93bc0f39d4">ecCodes</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/namespacemembers_func.html b/html/namespacemembers_func.html
index e69de29..69de8fa 100644
--- a/html/namespacemembers_func.html
+++ b/html/namespacemembers_func.html
@@ -0,0 +1,375 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: Namespace Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li class="current"><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
+      <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow3" class="tabs2">
+    <ul class="tablist">
+      <li><a href="namespacemembers.html"><span>All</span></a></li>
+      <li class="current"><a href="namespacemembers_func.html"><span>Functions</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow4" class="tabs3">
+    <ul class="tablist">
+      <li><a href="#index_c"><span>c</span></a></li>
+      <li><a href="#index_g"><span>g</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+ 
+
+<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<li>codes_any_new_from_file()
+: <a class="el" href="namespaceec_codes.html#af4a4c95465d2026ad549920b07150bab">ecCodes</a>
+</li>
+<li>codes_bufr_new_from_file()
+: <a class="el" href="namespaceec_codes.html#a44c10386781390c16f1a567590b33c11">ecCodes</a>
+</li>
+<li>codes_bufr_new_from_samples()
+: <a class="el" href="namespaceec_codes.html#ae042f8fe1cc86718ce658f3b992c87a2">ecCodes</a>
+</li>
+<li>codes_clone()
+: <a class="el" href="namespaceec_codes.html#ab49cb36625cd87b9d898844b1df32516">ecCodes</a>
+</li>
+<li>codes_copy_namespace()
+: <a class="el" href="namespaceec_codes.html#a6c83d2b9572083c7a83c9c5d39010b14">ecCodes</a>
+</li>
+<li>codes_count_in_file()
+: <a class="el" href="namespaceec_codes.html#a5c7a1d8a2c7802edd327a35cb35984e7">ecCodes</a>
+</li>
+<li>codes_get()
+: <a class="el" href="namespaceec_codes.html#a1ba4d3b6473499af0581cf52eb4cad0b">ecCodes</a>
+</li>
+<li>codes_get_api_version()
+: <a class="el" href="namespaceec_codes.html#add6a557c085ea401fc9529ed140025ef">ecCodes</a>
+</li>
+<li>codes_get_array()
+: <a class="el" href="namespaceec_codes.html#a648bae4beadb6a82698da40e08323be9">ecCodes</a>
+</li>
+<li>codes_get_double()
+: <a class="el" href="namespaceec_codes.html#a22a427ff4355e63b2c16c491572ea6b5">ecCodes</a>
+</li>
+<li>codes_get_double_array()
+: <a class="el" href="namespaceec_codes.html#a441ff456dc9990951bf242f4d542713a">ecCodes</a>
+</li>
+<li>codes_get_double_element()
+: <a class="el" href="namespaceec_codes.html#a3b085fe4c2ea0090a74959b396b2287f">ecCodes</a>
+</li>
+<li>codes_get_double_elements()
+: <a class="el" href="namespaceec_codes.html#af0708f169680a9b753789a3d61f7f9ef">ecCodes</a>
+</li>
+<li>codes_get_elements()
+: <a class="el" href="namespaceec_codes.html#a8558de4f563b57fe8104d024eb90e7d2">ecCodes</a>
+</li>
+<li>codes_get_long()
+: <a class="el" href="namespaceec_codes.html#a88f2a86c370e490dae8e684c957022fd">ecCodes</a>
+</li>
+<li>codes_get_long_array()
+: <a class="el" href="namespaceec_codes.html#a680c8ecbf2104d69083c68ea6184192d">ecCodes</a>
+</li>
+<li>codes_get_message()
+: <a class="el" href="namespaceec_codes.html#a0f446397a9956ed5518ff6461fcc17f0">ecCodes</a>
+</li>
+<li>codes_get_message_offset()
+: <a class="el" href="namespaceec_codes.html#a72cc99e87c999a3cd225323fdcddfad7">ecCodes</a>
+</li>
+<li>codes_get_message_size()
+: <a class="el" href="namespaceec_codes.html#aa1a3c2d7800aa28297e3a9a11c4f6c0f">ecCodes</a>
+</li>
+<li>codes_get_native_type()
+: <a class="el" href="namespaceec_codes.html#a1250285cb0770393bf6078f3ee3340a2">ecCodes</a>
+</li>
+<li>codes_get_size()
+: <a class="el" href="namespaceec_codes.html#ab07293de06d6ef6c5810ea3f01723884">ecCodes</a>
+</li>
+<li>codes_get_string()
+: <a class="el" href="namespaceec_codes.html#a37ff4cf406f9b0b0cd6ede563c1d5ab1">ecCodes</a>
+</li>
+<li>codes_get_string_length()
+: <a class="el" href="namespaceec_codes.html#adc7361072916fe6ec52e9cf53f066839">ecCodes</a>
+</li>
+<li>codes_get_values()
+: <a class="el" href="namespaceec_codes.html#a0af74e12fba25379db678363f5bdafb3">ecCodes</a>
+</li>
+<li>codes_grib_find_nearest()
+: <a class="el" href="namespaceec_codes.html#a134bac0edaf47f29051ad905a30fb63e">ecCodes</a>
+</li>
+<li>codes_grib_iterator_delete()
+: <a class="el" href="namespaceec_codes.html#a18cdf4111053dc0c387a5fbddb0aaf30">ecCodes</a>
+</li>
+<li>codes_grib_iterator_new()
+: <a class="el" href="namespaceec_codes.html#af3e5c3e1ee4d4b1e2f37862b9de92273">ecCodes</a>
+</li>
+<li>codes_grib_iterator_next()
+: <a class="el" href="namespaceec_codes.html#ae2bc65694ff09cdd253ef35f760ef841">ecCodes</a>
+</li>
+<li>codes_grib_multi_append()
+: <a class="el" href="namespaceec_codes.html#a956a6f84f7b418551cd6c4976c970140">ecCodes</a>
+</li>
+<li>codes_grib_multi_new()
+: <a class="el" href="namespaceec_codes.html#a0b1fb93a9f550c971a7e08ca16bb5100">ecCodes</a>
+</li>
+<li>codes_grib_multi_release()
+: <a class="el" href="namespaceec_codes.html#a1e9477394be21ac60be3d6841660c137">ecCodes</a>
+</li>
+<li>codes_grib_multi_support_off()
+: <a class="el" href="namespaceec_codes.html#aaec2118b6fca48e59ded7d2099e81009">ecCodes</a>
+</li>
+<li>codes_grib_multi_support_on()
+: <a class="el" href="namespaceec_codes.html#aed3ce5487d6bdd24e1127e638c9cfd54">ecCodes</a>
+</li>
+<li>codes_grib_multi_write()
+: <a class="el" href="namespaceec_codes.html#ac70e34af931428ba9a4874e0ebf75928">ecCodes</a>
+</li>
+<li>codes_grib_new_from_file()
+: <a class="el" href="namespaceec_codes.html#a80246f356012448955e2e75572a8d210">ecCodes</a>
+</li>
+<li>codes_gribex_mode_off()
+: <a class="el" href="namespaceec_codes.html#a4c5256c7e609cf3eedf7d695a4b58a45">ecCodes</a>
+</li>
+<li>codes_gribex_mode_on()
+: <a class="el" href="namespaceec_codes.html#aec0c4f83da942b94d51a3d8b93ecb6c4">ecCodes</a>
+</li>
+<li>codes_gts_header()
+: <a class="el" href="namespaceec_codes.html#ae71963dcd0256ccf5bd849f1f6643f38">ecCodes</a>
+</li>
+<li>codes_gts_new_from_file()
+: <a class="el" href="namespaceec_codes.html#ab06cc33b116103a54fadb4e2735e579a">ecCodes</a>
+</li>
+<li>codes_index_add_file()
+: <a class="el" href="namespaceec_codes.html#a1c18ea67e5ce00500824676691b4bc4a">ecCodes</a>
+</li>
+<li>codes_index_get()
+: <a class="el" href="namespaceec_codes.html#a267636dba6361f74b330275a1f8e1ed7">ecCodes</a>
+</li>
+<li>codes_index_get_double()
+: <a class="el" href="namespaceec_codes.html#ab28f95174ea3e8eb760d4019598ec9e6">ecCodes</a>
+</li>
+<li>codes_index_get_long()
+: <a class="el" href="namespaceec_codes.html#aeaf2ac58b4a90bd09595986d49228d7c">ecCodes</a>
+</li>
+<li>codes_index_get_size()
+: <a class="el" href="namespaceec_codes.html#ab9369968f436ad85084ec1d48e9324c7">ecCodes</a>
+</li>
+<li>codes_index_get_string()
+: <a class="el" href="namespaceec_codes.html#a19b8c07a5ab06944488e66ce434a615b">ecCodes</a>
+</li>
+<li>codes_index_new_from_file()
+: <a class="el" href="namespaceec_codes.html#ae89dc44888bfbba102e6c9332839fc51">ecCodes</a>
+</li>
+<li>codes_index_read()
+: <a class="el" href="namespaceec_codes.html#a13866152bfd07b8cd418f6cf8c73d7ab">ecCodes</a>
+</li>
+<li>codes_index_release()
+: <a class="el" href="namespaceec_codes.html#ae5a40e31f81dd4cdddf8ddc71e833395">ecCodes</a>
+</li>
+<li>codes_index_select()
+: <a class="el" href="namespaceec_codes.html#a92041c59bf04e6db88395077802dfe74">ecCodes</a>
+</li>
+<li>codes_index_select_double()
+: <a class="el" href="namespaceec_codes.html#a98ef64298972c19d87f4fa54b125a268">ecCodes</a>
+</li>
+<li>codes_index_select_long()
+: <a class="el" href="namespaceec_codes.html#ada63dc27281c249035da5b54e6ec0966">ecCodes</a>
+</li>
+<li>codes_index_select_string()
+: <a class="el" href="namespaceec_codes.html#af9fa4123658007a2362baa9afd055063">ecCodes</a>
+</li>
+<li>codes_index_write()
+: <a class="el" href="namespaceec_codes.html#a32c66888832215b2860535729ee616f8">ecCodes</a>
+</li>
+<li>codes_is_defined()
+: <a class="el" href="namespaceec_codes.html#adbc403f07e0bcc151d8b0fb1365492ff">ecCodes</a>
+</li>
+<li>codes_is_missing()
+: <a class="el" href="namespaceec_codes.html#a2dd162c68a1326619a34b45e56fdb46c">ecCodes</a>
+</li>
+<li>codes_keys_iterator_delete()
+: <a class="el" href="namespaceec_codes.html#a83a077fb2dda1e7f1d317039fc7267d1">ecCodes</a>
+</li>
+<li>codes_keys_iterator_get_name()
+: <a class="el" href="namespaceec_codes.html#aec91e405c936c335c00267eb221c9f91">ecCodes</a>
+</li>
+<li>codes_keys_iterator_new()
+: <a class="el" href="namespaceec_codes.html#a199fb77e1395975be732e46f93b3e337">ecCodes</a>
+</li>
+<li>codes_keys_iterator_next()
+: <a class="el" href="namespaceec_codes.html#af2eecea5df157516fb60556cbd1283cd">ecCodes</a>
+</li>
+<li>codes_keys_iterator_rewind()
+: <a class="el" href="namespaceec_codes.html#a921bb3a4c69e51a4c276bd6cf37c2d2c">ecCodes</a>
+</li>
+<li>codes_metar_new_from_file()
+: <a class="el" href="namespaceec_codes.html#aabd87fd89cfac4d21ec014b838174e3c">ecCodes</a>
+</li>
+<li>codes_new_from_file()
+: <a class="el" href="namespaceec_codes.html#ab1788f3653df85dd90ac99f40daf98c4">ecCodes</a>
+</li>
+<li>codes_new_from_index()
+: <a class="el" href="namespaceec_codes.html#a6fc3995f61a5f34933afd0aeb6427bf6">ecCodes</a>
+</li>
+<li>codes_new_from_message()
+: <a class="el" href="namespaceec_codes.html#a8b42a0c20ab81efa5a214dacc0b75d58">ecCodes</a>
+</li>
+<li>codes_new_from_samples()
+: <a class="el" href="namespaceec_codes.html#a643c58a9acad239c081794c74a5b86d9">ecCodes</a>
+</li>
+<li>codes_no_fail_on_wrong_length()
+: <a class="el" href="namespaceec_codes.html#a85e89c8eae4fb209ae0a7c566e4a2cb1">ecCodes</a>
+</li>
+<li>codes_release()
+: <a class="el" href="namespaceec_codes.html#a23859e3fb8802982fe865789d61b181f">ecCodes</a>
+</li>
+<li>codes_set()
+: <a class="el" href="namespaceec_codes.html#abb5cff8e4911614c8b04032fb014ea07">ecCodes</a>
+</li>
+<li>codes_set_array()
+: <a class="el" href="namespaceec_codes.html#a1e25a749b9cffb9b4b391cde66a3333c">ecCodes</a>
+</li>
+<li>codes_set_definitions_path()
+: <a class="el" href="namespaceec_codes.html#a63f59e45ba10997c9e30bf63ea5f66e0">ecCodes</a>
+</li>
+<li>codes_set_double()
+: <a class="el" href="namespaceec_codes.html#aa619f32357c9107b5b6f96ad1fee4232">ecCodes</a>
+</li>
+<li>codes_set_double_array()
+: <a class="el" href="namespaceec_codes.html#ac18c28cc7bd146dad986e03511fb7340">ecCodes</a>
+</li>
+<li>codes_set_key_vals()
+: <a class="el" href="namespaceec_codes.html#a997587cb4079552273d224fd3434463b">ecCodes</a>
+</li>
+<li>codes_set_long()
+: <a class="el" href="namespaceec_codes.html#ae623fa09d65a3f699026a86d0e4864da">ecCodes</a>
+</li>
+<li>codes_set_long_array()
+: <a class="el" href="namespaceec_codes.html#a59e415f83b7f26b4575a5700ece65c14">ecCodes</a>
+</li>
+<li>codes_set_missing()
+: <a class="el" href="namespaceec_codes.html#affddd8311b1127306fa02ce26023d89e">ecCodes</a>
+</li>
+<li>codes_set_samples_path()
+: <a class="el" href="namespaceec_codes.html#ab7f299aaed48129491cc365a8ca289c2">ecCodes</a>
+</li>
+<li>codes_set_string()
+: <a class="el" href="namespaceec_codes.html#acbb0d241a917a3e726792157c1f5d973">ecCodes</a>
+</li>
+<li>codes_set_values()
+: <a class="el" href="namespaceec_codes.html#abc699d0bb7a7dded968ee0111342ffd0">ecCodes</a>
+</li>
+<li>codes_skip_coded()
+: <a class="el" href="namespaceec_codes.html#a4b7140ca0dd81372721cffd1d964e4ad">ecCodes</a>
+</li>
+<li>codes_skip_computed()
+: <a class="el" href="namespaceec_codes.html#a587af29aac21a816f8ffd327a1fce779">ecCodes</a>
+</li>
+<li>codes_skip_duplicates()
+: <a class="el" href="namespaceec_codes.html#a57f7a5a0f6975e1357e5aa1dc4715e0c">ecCodes</a>
+</li>
+<li>codes_skip_edition_specific()
+: <a class="el" href="namespaceec_codes.html#acb01114683ef4aacbf1609eb3a435055">ecCodes</a>
+</li>
+<li>codes_skip_function()
+: <a class="el" href="namespaceec_codes.html#a6eedc94ffbffad66b92d3fccfc1ec692">ecCodes</a>
+</li>
+<li>codes_skip_read_only()
+: <a class="el" href="namespaceec_codes.html#afb6f25e55aab91e1cf273403c4151c70">ecCodes</a>
+</li>
+<li>codes_write()
+: <a class="el" href="namespaceec_codes.html#af13b3e69c2b5ad0ea6b7fd07ac37e367">ecCodes</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
+<li>grib_get_string_array()
+: <a class="el" href="namespaceec_codes.html#a86388748f15624cd8fd2ec89d066295a">ecCodes</a>
+</li>
+<li>grib_set_string_array()
+: <a class="el" href="namespaceec_codes.html#a2353707d7e586ce4255e3a93bc0f39d4">ecCodes</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/namespaces.html b/html/namespaces.html
index e69de29..769106d 100644
--- a/html/namespaces.html
+++ b/html/namespaces.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: Namespace List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li class="current"><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li class="current"><a href="namespaces.html"><span>Namespace List</span></a></li>
+      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">Namespace List</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all documented namespaces with brief descriptions:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceec_codes.html" target="_self">ecCodes</a></td><td class="desc">This package is the <b>Python</b> interface to <a class="el" href="namespaceec_codes.html" title="This package is the Python interface to ecCodes. ">ecCodes</a> </td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/nav_f.png b/html/nav_f.png
new file mode 100644
index 0000000..72a58a5
Binary files /dev/null and b/html/nav_f.png differ
diff --git a/html/nav_g.png b/html/nav_g.png
new file mode 100644
index 0000000..2093a23
Binary files /dev/null and b/html/nav_g.png differ
diff --git a/html/nav_h.png b/html/nav_h.png
new file mode 100644
index 0000000..33389b1
Binary files /dev/null and b/html/nav_h.png differ
diff --git a/html/nearest_8c-example.html b/html/nearest_8c-example.html
deleted file mode 100644
index debce41..0000000
--- a/html/nearest_8c-example.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: nearest.c</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>nearest.c</h1>nearest.c How to find the nearest grid points.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
-<a name="l00010"></a>00010 <span class="comment">/*</span>
-<a name="l00011"></a>00011 <span class="comment"> * C Implementation: fieldset</span>
-<a name="l00012"></a>00012 <span class="comment"> *</span>
-<a name="l00013"></a>00013 <span class="comment"> * Description: how to use a fieldset.</span>
-<a name="l00014"></a>00014 <span class="comment"> *</span>
-<a name="l00015"></a>00015 <span class="comment"> *</span>
-<a name="l00016"></a>00016 <span class="comment"> * Author: Enrico Fucile</span>
-<a name="l00017"></a>00017 <span class="comment"> *</span>
-<a name="l00018"></a>00018 <span class="comment"> *</span>
-<a name="l00019"></a>00019 <span class="comment"> */</span>
-<a name="l00020"></a>00020 
-<a name="l00021"></a>00021 <span class="preprocessor">#include <stdio.h></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <stdlib.h></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <string.h></span>
-<a name="l00024"></a>00024 
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>"</span>
-<a name="l00026"></a>00026 
-<a name="l00027"></a>00027 <span class="keywordtype">void</span> usage(<span class="keywordtype">char</span>* prog) {
-<a name="l00028"></a>00028   printf(<span class="stringliteral">"Usage: %s grib_file grib_file ...\n"</span>,prog);
-<a name="l00029"></a>00029   exit(1);
-<a name="l00030"></a>00030 }
-<a name="l00031"></a>00031 
-<a name="l00032"></a>00032 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {
-<a name="l00033"></a>00033   <span class="keywordtype">int</span> err = 0;
-<a name="l00034"></a>00034   <span class="keywordtype">long</span> step=0;
-<a name="l00035"></a>00035   <span class="keywordtype">size_t</span> nfiles;
-<a name="l00036"></a>00036   <span class="keywordtype">int</span> i=0;
-<a name="l00037"></a>00037   grib_fieldset* <span class="keyword">set</span>=NULL;
-<a name="l00038"></a>00038   <a name="a0"></a><a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a>* h=NULL;
-<a name="l00039"></a>00039   <span class="keywordtype">char</span> param[20]={0,};
-<a name="l00040"></a>00040   <span class="keywordtype">size_t</span> len=20;
-<a name="l00041"></a>00041   <span class="keywordtype">double</span> lats[4]={0,};
-<a name="l00042"></a>00042   <span class="keywordtype">double</span> lons[4]={0,};
-<a name="l00043"></a>00043   <span class="keywordtype">double</span> values[4]={0,};
-<a name="l00044"></a>00044   <span class="keywordtype">double</span> distances[4]={0,};
-<a name="l00045"></a>00045   <span class="keywordtype">int</span> indexes[4]={0,};
-<a name="l00046"></a>00046   <span class="keywordtype">char</span>* order_by=<span class="stringliteral">"param,step"</span>;
-<a name="l00047"></a>00047 
-<a name="l00048"></a>00048   <span class="keywordtype">size_t</span> size=4;
-<a name="l00049"></a>00049   <span class="keywordtype">double</span> lat=-40,lon=15;
-<a name="l00050"></a>00050   <span class="keywordtype">int</span> mode=0;
-<a name="l00051"></a>00051   <span class="keywordtype">int</span> count;
-<a name="l00052"></a>00052   <span class="keywordtype">char</span>** filenames;
-<a name="l00053"></a>00053   <a name="a1"></a><a class="code" href="grib__api_8h.html#1b47558cfe02835ba44213ee4d45fd9b">grib_nearest</a>* nearest=NULL;
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055   <span class="keywordflow">if</span> (argc < 2) usage(argv[0]);
-<a name="l00056"></a>00056 
-<a name="l00057"></a>00057   nfiles=argc-1;
-<a name="l00058"></a>00058   filenames=(<span class="keywordtype">char</span>**)malloc(<span class="keyword">sizeof</span>(<span class="keywordtype">char</span>*)*nfiles);
-<a name="l00059"></a>00059   <span class="keywordflow">for</span> (i=0;i<nfiles;i++)
-<a name="l00060"></a>00060     filenames[i]=(<span class="keywordtype">char</span>*)strdup(argv[i+1]);
-<a name="l00061"></a>00061 
-<a name="l00062"></a>00062   <span class="keyword">set</span>=grib_fieldset_new_from_files(0,filenames,nfiles,0,0,0,order_by,&err);
-<a name="l00063"></a>00063   GRIB_CHECK(err,0);
-<a name="l00064"></a>00064 
-<a name="l00065"></a>00065   printf(<span class="stringliteral">"\nordering by %s\n"</span>,order_by);
-<a name="l00066"></a>00066   printf(<span class="stringliteral">"\n%d fields in the fieldset\n"</span>,grib_fieldset_count(<span class="keyword">set</span>));
-<a name="l00067"></a>00067   printf(<span class="stringliteral">"n,step,param\n"</span>);
-<a name="l00068"></a>00068 
-<a name="l00069"></a>00069   mode=GRIB_NEAREST_SAME_GRID |  GRIB_NEAREST_SAME_POINT;
-<a name="l00070"></a>00070   count=1;
-<a name="l00071"></a>00071   <span class="keywordflow">while</span> ((h=grib_fieldset_next_handle(<span class="keyword">set</span>,&err))!=NULL) {
-<a name="l00072"></a>00072     GRIB_CHECK(<a name="a2"></a><a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"step"</span>,&step),0);
-<a name="l00073"></a>00073         len=20;
-<a name="l00074"></a>00074     GRIB_CHECK(<a name="a3"></a><a class="code" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053" title="Get a string value from a key, if several keys of the same name are present, the...">grib_get_string</a>(h,<span class="stringliteral">"param"</span>,param,&len),0);
-<a name="l00075"></a>00075 
-<a name="l00076"></a>00076     printf(<span class="stringliteral">"%d %ld %s  "</span>,count,step,param);
-<a name="l00077"></a>00077     <span class="keywordflow">if</span> (!nearest) nearest=<a name="a4"></a><a class="code" href="group__iterators.html#g4bd616cf0d0c4f5f147f4a207ddc7687" title="Create a new nearest from a handle, using current geometry .">grib_nearest_new</a>(h,&err);
-<a name="l00078"></a>00078     GRIB_CHECK(err,0);
-<a name="l00079"></a>00079     GRIB_CHECK(<a name="a5"></a><a class="code" href="group__iterators.html#g15043a2482608fb93a0385f3c3e86926" title="Find the 4 nearest points of a latitude longitude point.">grib_nearest_find</a>(nearest,h,lat,lon,mode,lats,lons,values,distances,indexes,&size),0);
-<a name="l00080"></a>00080     <span class="keywordflow">for</span> (i=0;i<4;i++) printf(<span class="stringliteral">"%d %.2f %.2f %g %g - "</span>,
-<a name="l00081"></a>00081          (<span class="keywordtype">int</span>)indexes[i],lats[i],lons[i],distances[i],values[i]);
-<a name="l00082"></a>00082     printf(<span class="stringliteral">"\n"</span>);
-<a name="l00083"></a>00083 
-<a name="l00084"></a>00084     <a name="a6"></a><a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);
-<a name="l00085"></a>00085     count++;
-<a name="l00086"></a>00086   }
-<a name="l00087"></a>00087 
-<a name="l00088"></a>00088   <span class="keywordflow">if</span> (nearest) <a name="a7"></a><a class="code" href="group__iterators.html#g2b3c0069013e1ad7b3e34f30b4659c15" title="Frees an nearest from memory.">grib_nearest_delete</a>(nearest);
-<a name="l00089"></a>00089 
-<a name="l00090"></a>00090   <span class="keywordflow">if</span> (<span class="keyword">set</span>) grib_fieldset_delete(<span class="keyword">set</span>);
-<a name="l00091"></a>00091 
-<a name="l00092"></a>00092   <span class="keywordflow">return</span> 0;
-<a name="l00093"></a>00093 }
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/nearest_8f90-example.html b/html/nearest_8f90-example.html
deleted file mode 100644
index 4b615ce..0000000
--- a/html/nearest_8f90-example.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: nearest.f90</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>nearest.f90</h1>How to find the nearest grid points.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 ! 
-<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 !
-<a name="l00008"></a>00008 !
-<a name="l00009"></a>00009 !  Description: how to use grib_find_nearest and grib_get_element 
-<a name="l00010"></a>00010 !
-<a name="l00011"></a>00011 !
-<a name="l00012"></a>00012 !  Author: Enrico Fucile 
-<a name="l00013"></a>00013 !
-<a name="l00014"></a>00014 !
-<a name="l00015"></a>00015 !
-<a name="l00016"></a>00016 program find
-<a name="l00017"></a>00017   use grib_api
-<a name="l00018"></a>00018   implicit none
-<a name="l00019"></a>00019   integer                                      :: npoints
-<a name="l00020"></a>00020   integer                                      :: infile
-<a name="l00021"></a>00021   integer                                      :: igrib, ios, i
-<a name="l00022"></a>00022   real(8), dimension(:), allocatable  :: lats, lons
-<a name="l00023"></a>00023   real(8), dimension(:), allocatable  :: nearest_lats, nearest_lons
-<a name="l00024"></a>00024   real(8), dimension(:), allocatable  :: distances, values, lsm_values
-<a name="l00025"></a>00025   integer(kind=kindOfInt), dimension(:), allocatable  :: indexes
-<a name="l00026"></a>00026   real(kind=8)                        :: value
-<a name="l00027"></a>00027 
-<a name="l00028"></a>00028 ! initialization
-<a name="l00029"></a>00029   open( unit=1, file=<span class="stringliteral">"../../data/list_points"</span>,form=<span class="stringliteral">"formatted"</span>,action=<span class="stringliteral">"read"</span>)
-<a name="l00030"></a>00030   read(unit=1,fmt=*) npoints
-<a name="l00031"></a>00031   allocate(lats(npoints))
-<a name="l00032"></a>00032   allocate(lons(npoints))
-<a name="l00033"></a>00033   allocate(nearest_lats(npoints))
-<a name="l00034"></a>00034   allocate(nearest_lons(npoints))
-<a name="l00035"></a>00035   allocate(distances(npoints))
-<a name="l00036"></a>00036   allocate(lsm_values(npoints))
-<a name="l00037"></a>00037   allocate(values(npoints))
-<a name="l00038"></a>00038   allocate(indexes(npoints))
-<a name="l00039"></a>00039   do i=1,npoints
-<a name="l00040"></a>00040      read(unit=1,fmt=*, iostat=ios) lats(i), lons(i)
-<a name="l00041"></a>00041      if (ios /= 0) then
-<a name="l00042"></a>00042         npoints = i - 1
-<a name="l00043"></a>00043         exit
-<a name="l00044"></a>00044      end if
-<a name="l00045"></a>00045   end do
-<a name="l00046"></a>00046   close(unit=1)
-<a name="l00047"></a>00047   call grib_open_file(infile, &
-<a name="l00048"></a>00048        '../../data/reduced_gaussian_lsm.grib1','r')
-<a name="l00049"></a>00049   
-<a name="l00050"></a>00050   !     a new grib message is loaded from file
-<a name="l00051"></a>00051   !     igrib is the grib id to be used in subsequent calls
-<a name="l00052"></a>00052   call grib_new_from_file(infile,igrib)
-<a name="l00053"></a>00053   
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055   call grib_find_nearest(igrib, .true., lats, lons, nearest_lats, nearest_lons,lsm_values, distances, indexes)
-<a name="l00056"></a>00056   call grib_release(igrib)
-<a name="l00057"></a>00057   
-<a name="l00058"></a>00058   call grib_close_file(infile)
-<a name="l00059"></a>00059 
-<a name="l00060"></a>00060 ! will apply it to another GRIB
-<a name="l00061"></a>00061   call grib_open_file(infile, &
-<a name="l00062"></a>00062        '../../data/reduced_gaussian_pressure_level.grib1','r')
-<a name="l00063"></a>00063   call grib_new_from_file(infile,igrib)
-<a name="l00064"></a>00064 
-<a name="l00065"></a>00065   call grib_get_element(igrib,<span class="stringliteral">"values"</span>, indexes, values)
-<a name="l00066"></a>00066   call grib_release(igrib)
-<a name="l00067"></a>00067   call grib_close_file(infile)
-<a name="l00068"></a>00068 
-<a name="l00069"></a>00069   do i=1, npoints
-<a name="l00070"></a>00070      print*,lats(i), lons(i), nearest_lats(i), nearest_lons(i), distances(i), lsm_values(i), values(i)
-<a name="l00071"></a>00071   end do
-<a name="l00072"></a>00072 
-<a name="l00073"></a>00073   deallocate(lats)
-<a name="l00074"></a>00074   deallocate(lons)
-<a name="l00075"></a>00075   deallocate(nearest_lats)
-<a name="l00076"></a>00076   deallocate(nearest_lons)
-<a name="l00077"></a>00077   deallocate(distances)
-<a name="l00078"></a>00078   deallocate(lsm_values)
-<a name="l00079"></a>00079   deallocate(values)
-<a name="l00080"></a>00080   deallocate(indexes)
-<a name="l00081"></a>00081 
-<a name="l00082"></a>00082 end program find
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/open.png b/html/open.png
new file mode 100644
index 0000000..30f75c7
Binary files /dev/null and b/html/open.png differ
diff --git a/html/pages.html b/html/pages.html
index 3afb135..32dbb9a 100644
--- a/html/pages.html
+++ b/html/pages.html
@@ -1,59 +1,93 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: Page Index</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: The Pages</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
 </div>
-<h1>grib_api Related Pages</h1>Here is a list of all related documentation pages:<ul>
-<li><a class="el" href="keys.html">Grib API keys</a>
-
-<li><a class="el" href="examples.html">Grib API examples</a>
-
-<li><a class="el" href="grib_examples.html">Grib API examples</a>
-
-<li><a class="el" href="modules.html">C interface</a>
-
-<li><a class="el" href="installation.html">grib_api installation</a>
-
-<li><a class="el" href="tools.html">Grib tools</a>
-
-<li><a class="el" href="grib_ls.html">grib_ls</a>
-
-<li><a class="el" href="grib_get.html">grib_get</a>
-
-<li><a class="el" href="grib_get_data.html">grib_get_data</a>
-
-<li><a class="el" href="grib_set.html">grib_set</a>
-
-<li><a class="el" href="grib_dump.html">grib_dump</a>
-
-<li><a class="el" href="grib_dump_examples.html">grib_dump examples</a>
-
-<li><a class="el" href="grib_debug.html">grib_debug</a>
-
-<li><a class="el" href="grib_convert.html">grib_convert</a>
-
-<li><a class="el" href="grib_filter.html">grib_filter</a>
-
-<li><a class="el" href="grib_compare.html">grib_compare</a>
-
-<li><a class="el" href="grib_keys.html">grib_keys</a>
-
-<li><a class="el" href="grib_copy.html">grib_copy</a>
 
-</ul>
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
+<div class="header">
+  <div class="headertitle">
+<div class="title">The Pages</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory">
+<table class="directory">
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
 </body>
 </html>
diff --git a/html/precision_8c-example.html b/html/precision_8c-example.html
deleted file mode 100644
index b5c045e..0000000
--- a/html/precision_8c-example.html
+++ /dev/null
@@ -1,138 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: precision.c</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>precision.c</h1>precision.c How to control precision when coding a grib field.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
-<a name="l00010"></a>00010 <span class="comment">/*</span>
-<a name="l00011"></a>00011 <span class="comment"> * C Implementation: precision</span>
-<a name="l00012"></a>00012 <span class="comment"> *</span>
-<a name="l00013"></a>00013 <span class="comment"> * Description: how to control decimal precision when packing fields.</span>
-<a name="l00014"></a>00014 <span class="comment"> *</span>
-<a name="l00015"></a>00015 <span class="comment"> *</span>
-<a name="l00016"></a>00016 <span class="comment"> * Author: Enrico Fucile</span>
-<a name="l00017"></a>00017 <span class="comment"> *</span>
-<a name="l00018"></a>00018 <span class="comment"> *</span>
-<a name="l00019"></a>00019 <span class="comment"> */</span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include <stdio.h></span>
-<a name="l00021"></a>00021 <span class="preprocessor">#include <stdlib.h></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <math.h></span>
-<a name="l00023"></a>00023 
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>"</span>
-<a name="l00025"></a>00025 
-<a name="l00026"></a>00026 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {
-<a name="l00027"></a>00027   <span class="keywordtype">int</span> err = 0;
-<a name="l00028"></a>00028   <span class="keywordtype">size_t</span> size=0;
-<a name="l00029"></a>00029 
-<a name="l00030"></a>00030   FILE* in = NULL;
-<a name="l00031"></a>00031   <span class="keywordtype">char</span>* infile = <span class="stringliteral">"../../data/regular_latlon_surface.grib1"</span>;
-<a name="l00032"></a>00032   FILE* out = NULL;
-<a name="l00033"></a>00033   <span class="keywordtype">char</span>* outfile = <span class="stringliteral">"out.grib1"</span>;
-<a name="l00034"></a>00034   <a name="a0"></a><a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h = NULL;
-<a name="l00035"></a>00035   <span class="keyword">const</span> <span class="keywordtype">void</span>* buffer = NULL;
-<a name="l00036"></a>00036   <span class="keywordtype">double</span>* values1=NULL;
-<a name="l00037"></a>00037   <span class="keywordtype">double</span>* values2=NULL;
-<a name="l00038"></a>00038   <span class="keywordtype">double</span> maxa=0,a=0;
-<a name="l00039"></a>00039   <span class="keywordtype">double</span> maxv=0,minv=0;
-<a name="l00040"></a>00040   <span class="keywordtype">double</span> maxr=0,r=0;
-<a name="l00041"></a>00041   <span class="keywordtype">long</span> decimalPrecision;
-<a name="l00042"></a>00042   <span class="keywordtype">long</span> bitsPerValue1=0, bitsPerValue2=0;
-<a name="l00043"></a>00043   <span class="keywordtype">int</span> i=0;
-<a name="l00044"></a>00044 
-<a name="l00045"></a>00045   in = fopen(infile,<span class="stringliteral">"r"</span>);
-<a name="l00046"></a>00046   <span class="keywordflow">if</span>(!in) {
-<a name="l00047"></a>00047     printf(<span class="stringliteral">"ERROR: unable to open file %s\n"</span>,infile);
-<a name="l00048"></a>00048     <span class="keywordflow">return</span> 1;
-<a name="l00049"></a>00049   }
-<a name="l00050"></a>00050 
-<a name="l00051"></a>00051   out = fopen(outfile,<span class="stringliteral">"w"</span>);
-<a name="l00052"></a>00052   <span class="keywordflow">if</span>(!in) {
-<a name="l00053"></a>00053     printf(<span class="stringliteral">"ERROR: unable to open file %s\n"</span>,outfile);
-<a name="l00054"></a>00054     <span class="keywordflow">return</span> 1;
-<a name="l00055"></a>00055   }
-<a name="l00056"></a>00056 
-<a name="l00057"></a>00057   <span class="comment">/* create a new handle from a message in a file */</span>
-<a name="l00058"></a>00058   h = <a name="a1"></a><a class="code" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5" title="Create a handle from a file resource.">grib_handle_new_from_file</a>(0,in,&err);
-<a name="l00059"></a>00059   <span class="keywordflow">if</span> (h == NULL) {
-<a name="l00060"></a>00060     printf(<span class="stringliteral">"Error: unable to create handle from file %s\n"</span>,infile);
-<a name="l00061"></a>00061   }
-<a name="l00062"></a>00062 
-<a name="l00063"></a>00063   <span class="comment">/* bitsPerValue before changing the packing parameters */</span>
-<a name="l00064"></a>00064   GRIB_CHECK(<a name="a2"></a><a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"bitsPerValue"</span>,&bitsPerValue1),0);
-<a name="l00065"></a>00065 
-<a name="l00066"></a>00066   <span class="comment">/* get the size of the values array*/</span>
-<a name="l00067"></a>00067   GRIB_CHECK(<a name="a3"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(h,<span class="stringliteral">"values"</span>,&size),0);
-<a name="l00068"></a>00068 
-<a name="l00069"></a>00069   values1 = malloc(size*<span class="keyword">sizeof</span>(<span class="keywordtype">double</span>));
-<a name="l00070"></a>00070   <span class="comment">/* get data values before changing the packing parameters*/</span>
-<a name="l00071"></a>00071   GRIB_CHECK(<a name="a4"></a><a class="code" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a" title="Get double array values from a key.">grib_get_double_array</a>(h,<span class="stringliteral">"values"</span>,values1,&size),0);
-<a name="l00072"></a>00072 
-<a name="l00073"></a>00073   <span class="comment">/* changing decimal precition to 2 means that 2 decimal digits</span>
-<a name="l00074"></a>00074 <span class="comment">     are preserved when packing.  */</span>
-<a name="l00075"></a>00075   decimalPrecision=2;
-<a name="l00076"></a>00076   GRIB_CHECK(<a name="a5"></a><a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"changeDecimalPrecision"</span>,decimalPrecision),0);
-<a name="l00077"></a>00077    
-<a name="l00078"></a>00078   <span class="comment">/* bitsPerValue after changing the packing parameters */</span>
-<a name="l00079"></a>00079   GRIB_CHECK(<a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"bitsPerValue"</span>,&bitsPerValue2),0);
-<a name="l00080"></a>00080 
-<a name="l00081"></a>00081   values2 = malloc(size*<span class="keyword">sizeof</span>(<span class="keywordtype">double</span>));
-<a name="l00082"></a>00082   <span class="comment">/* get data values after changing the packing parameters*/</span>
-<a name="l00083"></a>00083   GRIB_CHECK(<a class="code" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a" title="Get double array values from a key.">grib_get_double_array</a>(h,<span class="stringliteral">"values"</span>,values2,&size),0);
-<a name="l00084"></a>00084 
-<a name="l00085"></a>00085   <span class="comment">/* computing error */</span>
-<a name="l00086"></a>00086   maxa=0;
-<a name="l00087"></a>00087   maxr=0;
-<a name="l00088"></a>00088   maxv=values2[0];
-<a name="l00089"></a>00089   minv=maxv;
-<a name="l00090"></a>00090   <span class="keywordflow">for</span> (i=0;i<size;i++) {
-<a name="l00091"></a>00091      a=fabs(values2[i]-values1[i]);
-<a name="l00092"></a>00092      <span class="keywordflow">if</span> ( values2[i] > maxv ) maxv=values2[i];
-<a name="l00093"></a>00093      <span class="keywordflow">if</span> ( values2[i] < maxv ) minv=values2[i];
-<a name="l00094"></a>00094      <span class="keywordflow">if</span> ( values2[i] !=0 ) r=fabs((values2[i]-values1[i])/values2[i]);
-<a name="l00095"></a>00095      <span class="keywordflow">if</span> ( a > maxa ) maxa=a;
-<a name="l00096"></a>00096      <span class="keywordflow">if</span> ( r > maxr ) maxr=r;
-<a name="l00097"></a>00097   }
-<a name="l00098"></a>00098   printf(<span class="stringliteral">"max absolute error = %g\n"</span>,maxa);
-<a name="l00099"></a>00099   printf(<span class="stringliteral">"max relative error = %g\n"</span>,maxr);
-<a name="l00100"></a>00100   printf(<span class="stringliteral">"min value = %g\n"</span>,minv);
-<a name="l00101"></a>00101   printf(<span class="stringliteral">"max value = %g\n"</span>,maxv);
-<a name="l00102"></a>00102 
-<a name="l00103"></a>00103   printf(<span class="stringliteral">"old number of bits per value=%ld\n"</span>,(<span class="keywordtype">long</span>)bitsPerValue1);
-<a name="l00104"></a>00104   printf(<span class="stringliteral">"new number of bits per value=%ld\n"</span>,(<span class="keywordtype">long</span>)bitsPerValue2);
-<a name="l00105"></a>00105 
-<a name="l00106"></a>00106   <span class="comment">/* get the coded message in a buffer */</span>
-<a name="l00107"></a>00107   GRIB_CHECK(<a name="a6"></a><a class="code" href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185" title="getting the message attached to a handle">grib_get_message</a>(h,&buffer,&size),0);
-<a name="l00108"></a>00108 
-<a name="l00109"></a>00109   <span class="comment">/* write the buffer in a file*/</span>
-<a name="l00110"></a>00110   <span class="keywordflow">if</span>(fwrite(buffer,1,size,out) != size) 
-<a name="l00111"></a>00111   {
-<a name="l00112"></a>00112      perror(argv[1]);
-<a name="l00113"></a>00113      exit(1);
-<a name="l00114"></a>00114   }
-<a name="l00115"></a>00115 
-<a name="l00116"></a>00116   <span class="comment">/* delete handle */</span>
-<a name="l00117"></a>00117   <a name="a7"></a><a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);
-<a name="l00118"></a>00118 
-<a name="l00119"></a>00119   fclose(in);
-<a name="l00120"></a>00120   fclose(out);
-<a name="l00121"></a>00121 
-<a name="l00122"></a>00122   <span class="keywordflow">return</span> 0;
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124 
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/precision_8f90-example.html b/html/precision_8f90-example.html
deleted file mode 100644
index b589c98..0000000
--- a/html/precision_8f90-example.html
+++ /dev/null
@@ -1,119 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: precision.f90</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>precision.f90</h1>How to control precision when coding a grib field.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 ! 
-<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 !
-<a name="l00008"></a>00008 !
-<a name="l00009"></a>00009 !
-<a name="l00010"></a>00010 !  Description: how to control decimal precision when packing fields.
-<a name="l00011"></a>00011 !
-<a name="l00012"></a>00012 !
-<a name="l00013"></a>00013 !  Author: Enrico Fucile 
-<a name="l00014"></a>00014 !
-<a name="l00015"></a>00015 !
-<a name="l00016"></a>00016 !
-<a name="l00017"></a>00017 program precision
-<a name="l00018"></a>00018   use grib_api
-<a name="l00019"></a>00019   implicit none
-<a name="l00020"></a>00020   integer(kind = 4)                             :: size
-<a name="l00021"></a>00021   integer                                       :: infile,outfile
-<a name="l00022"></a>00022   integer                                       :: igrib
-<a name="l00023"></a>00023   real(kind = 8), dimension(:), allocatable     :: values1
-<a name="l00024"></a>00024   real(kind = 8), dimension(:), allocatable     :: values2
-<a name="l00025"></a>00025   real(kind = 8)                                ::  maxa,a,maxv,minv,maxr,r
-<a name="l00026"></a>00026   integer( kind = 4)                            :: decimalPrecision,bitsPerValue1,bitsPerValue2
-<a name="l00027"></a>00027   integer                                       :: i, iret
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029   call grib_open_file(infile, &
-<a name="l00030"></a>00030        '../../data/regular_latlon_surface_constant.grib1','r')
-<a name="l00031"></a>00031 
-<a name="l00032"></a>00032   call grib_open_file(outfile, &
-<a name="l00033"></a>00033        '../../data/regular_latlon_surface_prec.grib1','w')
-<a name="l00034"></a>00034 
-<a name="l00035"></a>00035   !     a new grib message is loaded from file
-<a name="l00036"></a>00036   !     igrib is the grib id to be used in subsequent calls
-<a name="l00037"></a>00037   call grib_new_from_file(infile,igrib)
-<a name="l00038"></a>00038 
-<a name="l00039"></a>00039   !     bitsPerValue before changing the packing parameters
-<a name="l00040"></a>00040   call grib_get(igrib,'bitsPerValue',bitsPerValue1)
-<a name="l00041"></a>00041 
-<a name="l00042"></a>00042   !     get the size of the values array
-<a name="l00043"></a>00043   call <a name="a0"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,<span class="stringliteral">"values"</span>,size)
-<a name="l00044"></a>00044 
-<a name="l00045"></a>00045   allocate(values1(size), stat=iret)
-<a name="l00046"></a>00046   allocate(values2(size), stat=iret)
-<a name="l00047"></a>00047   !     get data values before changing the packing parameters*/
-<a name="l00048"></a>00048   call grib_get(igrib,<span class="stringliteral">"values"</span>,values1)
-<a name="l00049"></a>00049 
-<a name="l00050"></a>00050   !     setting decimal precision=2 means that 2 decimal digits
-<a name="l00051"></a>00051   !     are preserved when packing.
-<a name="l00052"></a>00052   decimalPrecision=2
-<a name="l00053"></a>00053   call grib_set(igrib,<span class="stringliteral">"changeDecimalPrecision"</span>, &
-<a name="l00054"></a>00054        decimalPrecision)
-<a name="l00055"></a>00055 
-<a name="l00056"></a>00056   !     bitsPerValue after changing the packing parameters
-<a name="l00057"></a>00057   call grib_get(igrib,<span class="stringliteral">"bitsPerValue"</span>,bitsPerValue2)
-<a name="l00058"></a>00058 
-<a name="l00059"></a>00059   !     get data values after changing the packing parameters
-<a name="l00060"></a>00060   call grib_get(igrib,<span class="stringliteral">"values"</span>,values2)
-<a name="l00061"></a>00061 
-<a name="l00062"></a>00062   !     computing error
-<a name="l00063"></a>00063   maxa=0
-<a name="l00064"></a>00064   maxr=0
-<a name="l00065"></a>00065   maxv=values2(1)
-<a name="l00066"></a>00066   minv=maxv
-<a name="l00067"></a>00067   do i=1,size
-<a name="l00068"></a>00068      a=abs(values2(i)-values1(i))
-<a name="l00069"></a>00069      if ( values2(i) .gt. maxv ) maxv=values2(i)
-<a name="l00070"></a>00070      if ( values2(i) .lt. maxv ) minv=values2(i)
-<a name="l00071"></a>00071      if ( values2(i) .ne. 0 ) then
-<a name="l00072"></a>00072         r=abs((values2(i)-values1(i))/values2(i))
-<a name="l00073"></a>00073      endif
-<a name="l00074"></a>00074      if ( a .gt. maxa ) maxa=a
-<a name="l00075"></a>00075      if ( r .gt. maxr ) maxr=r
-<a name="l00076"></a>00076   enddo
-<a name="l00077"></a>00077   write(*,*) <span class="stringliteral">"max absolute error = "</span>,maxa
-<a name="l00078"></a>00078   write(*,*) <span class="stringliteral">"max relative error = "</span>,maxr
-<a name="l00079"></a>00079   write(*,*) <span class="stringliteral">"min value = "</span>,minv
-<a name="l00080"></a>00080   write(*,*) <span class="stringliteral">"max value = "</span>,maxv
-<a name="l00081"></a>00081 
-<a name="l00082"></a>00082   write(*,*) <span class="stringliteral">"old number of bits per value="</span>,bitsPerValue1
-<a name="l00083"></a>00083   write(*,*) <span class="stringliteral">"new number of bits per value="</span>,bitsPerValue2
-<a name="l00084"></a>00084 
-<a name="l00085"></a>00085   !     write modified message to a file
-<a name="l00086"></a>00086   call grib_write(igrib,outfile)
-<a name="l00087"></a>00087 
-<a name="l00088"></a>00088   call grib_release(igrib)
-<a name="l00089"></a>00089 
-<a name="l00090"></a>00090   call grib_close_file(infile)
-<a name="l00091"></a>00091 
-<a name="l00092"></a>00092   call grib_close_file(outfile)
-<a name="l00093"></a>00093 
-<a name="l00094"></a>00094   deallocate(values1)
-<a name="l00095"></a>00095   deallocate(values2)
-<a name="l00096"></a>00096 end program precision
-<a name="l00097"></a>00097 
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/precision__fortran_8_f-example.html b/html/precision__fortran_8_f-example.html
deleted file mode 100644
index ada3bf0..0000000
--- a/html/precision__fortran_8_f-example.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: precision_fortran.F</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>precision_fortran.F</h1>precision_fortran.F How to control precision when coding a grib field.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 C Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 C This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 C 
-<a name="l00005"></a>00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 C
-<a name="l00008"></a>00008 C
-<a name="l00009"></a>00009 C  Fortran 77 Implementation: precision
-<a name="l00010"></a>00010 C
-<a name="l00011"></a>00011 C  Description: how to control <span class="keyword">decimal precision</span> when packing fields.
-<a name="l00012"></a>00012 C
-<a name="l00013"></a>00013 C
-<a name="l00014"></a>00014 C  Author: Enrico Fucile
-<a name="l00015"></a>00015 C
-<a name="l00016"></a>00016 C
-<a name="l00017"></a>00017 C
-<a name="l00018"></a>00018       program precision
-<a name="l00019"></a>00019       implicit none
-<a name="l00020"></a>00020       integer maxNumberOfValues
-<a name="l00021"></a>00021       parameter (maxNumberOfValues=10000)
-<a name="l00022"></a>00022       include 'grib_api_f77.h'
-<a name="l00023"></a>00023       integer*4 size
-<a name="l00024"></a>00024       integer infile,outfile
-<a name="l00025"></a>00025       integer igrib
-<a name="l00026"></a>00026       real*8 values1(maxNumberOfValues)
-<a name="l00027"></a>00027       real*8 values2(maxNumberOfValues)
-<a name="l00028"></a>00028       real*8 maxa,a,maxv,minv,maxr,r
-<a name="l00029"></a>00029       integer*4 decimalPrecision,bitsPerValue1,bitsPerValue2
-<a name="l00030"></a>00030       integer i
-<a name="l00031"></a>00031 
-<a name="l00032"></a>00032       call grib_check(grib_open_file(infile
-<a name="l00033"></a>00033      X,'../../data/regular_latlon_surface.grib1','r'))
-<a name="l00034"></a>00034 
-<a name="l00035"></a>00035       call grib_check(grib_open_file(outfile
-<a name="l00036"></a>00036      X,'../../data/regular_latlon_surface_prec.grib1','w'))
-<a name="l00037"></a>00037 
-<a name="l00038"></a>00038 C     a new grib message is loaded from file
-<a name="l00039"></a>00039 C     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
-<a name="l00040"></a>00040       call grib_check(grib_new_from_file(infile,igrib))
-<a name="l00041"></a>00041 
-<a name="l00042"></a>00042 C     bitsPerValue before changing the packing parameters
-<a name="l00043"></a>00043       call grib_check(grib_get_int(igrib,'bitsPerValue',bitsPerValue1))
-<a name="l00044"></a>00044 
-<a name="l00045"></a>00045 C     get the size of the values array
-<a name="l00046"></a>00046       call grib_check(<a name="a0"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,"values",size))
-<a name="l00047"></a>00047 
-<a name="l00048"></a>00048 C     get data values before changing the packing parameters*/
-<a name="l00049"></a>00049       call grib_check(grib_get_real8_array(igrib,"values",values1,size))
-<a name="l00050"></a>00050 
-<a name="l00051"></a>00051 C     setting decimal precision=2 means that 2 decimal digits
-<a name="l00052"></a>00052 C     are preserved when packing.
-<a name="l00053"></a>00053       decimalPrecision=2
-<a name="l00054"></a>00054       call grib_check(grib_set_int(igrib,"changeDecimalPrecision"
-<a name="l00055"></a>00055      X,decimalPrecision))
-<a name="l00056"></a>00056 
-<a name="l00057"></a>00057 C     bitsPerValue after changing the packing parameters
-<a name="l00058"></a>00058       call grib_check(grib_get_int(igrib,"bitsPerValue",bitsPerValue2))
-<a name="l00059"></a>00059 
-<a name="l00060"></a>00060 C     get data values after changing the packing parameters
-<a name="l00061"></a>00061       call grib_check(grib_get_real8_array(igrib,"values",values2,size))
-<a name="l00062"></a>00062 
-<a name="l00063"></a>00063 C     computing error
-<a name="l00064"></a>00064       maxa=0
-<a name="l00065"></a>00065       maxr=0
-<a name="l00066"></a>00066       maxv=values2(1)
-<a name="l00067"></a>00067       minv=maxv
-<a name="l00068"></a>00068       do i=1,size
-<a name="l00069"></a>00069         a=abs(values2(i)-values1(i))
-<a name="l00070"></a>00070         if ( values2(i) .gt. maxv ) maxv=values2(i)
-<a name="l00071"></a>00071         if ( values2(i) .lt. maxv ) minv=values2(i)
-<a name="l00072"></a>00072         if ( values2(i) .ne. 0 ) then
-<a name="l00073"></a>00073          r=abs((values2(i)-values1(i))/values2(i))
-<a name="l00074"></a>00074         endif
-<a name="l00075"></a>00075         if ( a .gt. maxa ) maxa=a
-<a name="l00076"></a>00076         if ( r .gt. maxr ) maxr=r
-<a name="l00077"></a>00077       enddo
-<a name="l00078"></a>00078       write(*,*) "max absolute error = ",maxa
-<a name="l00079"></a>00079       write(*,*) "max relative error = ",maxr
-<a name="l00080"></a>00080       write(*,*) "min value = ",minv
-<a name="l00081"></a>00081       write(*,*) "max value = ",maxv
-<a name="l00082"></a>00082 
-<a name="l00083"></a>00083       write(*,*) "old number of bits per value=",bitsPerValue1
-<a name="l00084"></a>00084       write(*,*) "new number of bits per value=",bitsPerValue2
-<a name="l00085"></a>00085 
-<a name="l00086"></a>00086 C     write modified message to a file
-<a name="l00087"></a>00087       call grib_check(grib_write(igrib,outfile))
-<a name="l00088"></a>00088 
-<a name="l00089"></a>00089       call grib_check(grib_release(igrib))
-<a name="l00090"></a>00090 
-<a name="l00091"></a>00091       call grib_check(grib_close_file(infile))
-<a name="l00092"></a>00092 
-<a name="l00093"></a>00093       call grib_check(grib_close_file(outfile))
-<a name="l00094"></a>00094 
-<a name="l00095"></a>00095       end
-<a name="l00096"></a>00096 
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/print__data_8c-example.html b/html/print__data_8c-example.html
deleted file mode 100644
index dc438e3..0000000
--- a/html/print__data_8c-example.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: print_data.c</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>print_data.c</h1>print_data.c How to print all the data from a grib message.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
-<a name="l00010"></a>00010 <span class="comment">/*</span>
-<a name="l00011"></a>00011 <span class="comment"> * C Implementation: print_data</span>
-<a name="l00012"></a>00012 <span class="comment"> *</span>
-<a name="l00013"></a>00013 <span class="comment"> * Description: prints all the data contained in a grib file</span>
-<a name="l00014"></a>00014 <span class="comment"> *</span>
-<a name="l00015"></a>00015 <span class="comment"> * Author: Enrico Fucile</span>
-<a name="l00016"></a>00016 <span class="comment"> *</span>
-<a name="l00017"></a>00017 <span class="comment"> *</span>
-<a name="l00018"></a>00018 <span class="comment"> */</span>
-<a name="l00019"></a>00019 <span class="preprocessor">#include <stdio.h></span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include <stdlib.h></span>
-<a name="l00021"></a>00021 
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>"</span>
-<a name="l00023"></a>00023 
-<a name="l00024"></a>00024 <span class="keywordtype">void</span> usage(<span class="keywordtype">char</span>* prog) {
-<a name="l00025"></a>00025   printf(<span class="stringliteral">"usage: %s filename\n"</span>,prog);
-<a name="l00026"></a>00026   exit(1);
-<a name="l00027"></a>00027 }
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {
-<a name="l00030"></a>00030   <span class="keywordtype">int</span> err = 0,i;
-<a name="l00031"></a>00031   <span class="keywordtype">double</span> *values = NULL;
-<a name="l00032"></a>00032   <span class="keywordtype">double</span> max,min,average;
-<a name="l00033"></a>00033   <span class="keywordtype">size_t</span> values_len= 0;
-<a name="l00034"></a>00034 
-<a name="l00035"></a>00035   FILE* in = NULL;
-<a name="l00036"></a>00036   <span class="keywordtype">char</span>* filename ;
-<a name="l00037"></a>00037   <a name="a0"></a><a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h = NULL;
-<a name="l00038"></a>00038 
-<a name="l00039"></a>00039   <span class="keywordflow">if</span> (argc<2) usage(argv[0]);
-<a name="l00040"></a>00040   filename=argv[1];
-<a name="l00041"></a>00041 
-<a name="l00042"></a>00042   in = fopen(filename,<span class="stringliteral">"r"</span>);
-<a name="l00043"></a>00043   <span class="keywordflow">if</span>(!in) {
-<a name="l00044"></a>00044     printf(<span class="stringliteral">"ERROR: unable to open file %s\n"</span>,filename);
-<a name="l00045"></a>00045     <span class="keywordflow">return</span> 1;
-<a name="l00046"></a>00046   }
-<a name="l00047"></a>00047 
-<a name="l00048"></a>00048   <span class="comment">/* create new handle from a message in a file*/</span>
-<a name="l00049"></a>00049   h = <a name="a1"></a><a class="code" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5" title="Create a handle from a file resource.">grib_handle_new_from_file</a>(0,in,&err);
-<a name="l00050"></a>00050   <span class="keywordflow">if</span> (h == NULL) {
-<a name="l00051"></a>00051     printf(<span class="stringliteral">"Error: unable to create handle from file %s\n"</span>,filename);
-<a name="l00052"></a>00052   }
-<a name="l00053"></a>00053 
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055   <span class="comment">/* get the size of the values array*/</span>
-<a name="l00056"></a>00056   GRIB_CHECK(<a name="a2"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(h,<span class="stringliteral">"values"</span>,&values_len),0);
-<a name="l00057"></a>00057 
-<a name="l00058"></a>00058   values = malloc(values_len*<span class="keyword">sizeof</span>(<span class="keywordtype">double</span>));
-<a name="l00059"></a>00059 
-<a name="l00060"></a>00060   <span class="comment">/* get data values*/</span>
-<a name="l00061"></a>00061   GRIB_CHECK(<a name="a3"></a><a class="code" href="group__get__set.html#g61f1029d7f37d51f33835e218d58378a" title="Get double array values from a key.">grib_get_double_array</a>(h,<span class="stringliteral">"values"</span>,values,&values_len),0);
-<a name="l00062"></a>00062 
-<a name="l00063"></a>00063   <span class="keywordflow">for</span>(i = 0; i < values_len; i++)
-<a name="l00064"></a>00064     printf(<span class="stringliteral">"%d  %.10e\n"</span>,i+1,values[i]);
-<a name="l00065"></a>00065 
-<a name="l00066"></a>00066   free(values);
-<a name="l00067"></a>00067 
-<a name="l00068"></a>00068 
-<a name="l00069"></a>00069   GRIB_CHECK(<a name="a4"></a><a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"max"</span>,&max),0);
-<a name="l00070"></a>00070   GRIB_CHECK(<a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"min"</span>,&min),0);
-<a name="l00071"></a>00071   GRIB_CHECK(<a class="code" href="group__get__set.html#g5d9eeda38bf59ee3fa9ce3f92e65009e" title="Get a double value from a key, if several keys of the same name are present, the...">grib_get_double</a>(h,<span class="stringliteral">"average"</span>,&average),0);
-<a name="l00072"></a>00072 
-<a name="l00073"></a>00073   printf(<span class="stringliteral">"%d values found in %s\n"</span>,(<span class="keywordtype">int</span>)values_len,filename);
-<a name="l00074"></a>00074   printf(<span class="stringliteral">"max=%.10e min=%.10e average=%.10e\n"</span>,max,min,average);
-<a name="l00075"></a>00075 
-<a name="l00076"></a>00076   <a name="a5"></a><a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);
-<a name="l00077"></a>00077 
-<a name="l00078"></a>00078   fclose(in);
-<a name="l00079"></a>00079   <span class="keywordflow">return</span> 0;
-<a name="l00080"></a>00080 }
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/print__data_8f90-example.html b/html/print__data_8f90-example.html
deleted file mode 100644
index 1a51ec5..0000000
--- a/html/print__data_8f90-example.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: print_data.f90</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>print_data.f90</h1>How to print all the data contained in a grib file.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 ! 
-<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 !
-<a name="l00008"></a>00008 !
-<a name="l00009"></a>00009 !  Description: prints all the data contained in a grib file
-<a name="l00010"></a>00010 !
-<a name="l00011"></a>00011 !
-<a name="l00012"></a>00012 !  Author: Anne Fouilloux
-<a name="l00013"></a>00013 !
-<a name="l00014"></a>00014 !
-<a name="l00015"></a>00015 program print_data
-<a name="l00016"></a>00016 use grib_api
-<a name="l00017"></a>00017 implicit none
-<a name="l00018"></a>00018 integer            :: ifile
-<a name="l00019"></a>00019 integer            :: iret
-<a name="l00020"></a>00020 integer            :: igrib
-<a name="l00021"></a>00021 integer            :: i
-<a name="l00022"></a>00022 real(kind=8), dimension(:), allocatable       :: values
-<a name="l00023"></a>00023 integer(kind=4)    :: numberOfValues
-<a name="l00024"></a>00024 real(kind=8)       :: average
-<a name="l00025"></a>00025 real(kind=8)       :: max
-<a name="l00026"></a>00026 real(kind=8)       :: min
-<a name="l00027"></a>00027 character(len=256) :: error
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029 call grib_open_file(ifile, &
-<a name="l00030"></a>00030            '../../data/constant_field.grib1','r')
-<a name="l00031"></a>00031 
-<a name="l00032"></a>00032 !     a new grib message is loaded from file
-<a name="l00033"></a>00033 !     igrib is the grib id to be used in subsequent calls
-<a name="l00034"></a>00034       call grib_new_from_file(ifile,igrib)
-<a name="l00035"></a>00035 
-<a name="l00036"></a>00036 
-<a name="l00037"></a>00037 !     get the size of the values array
-<a name="l00038"></a>00038       call <a name="a0"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,'values',numberOfValues)
-<a name="l00039"></a>00039 
-<a name="l00040"></a>00040 !     get data values
-<a name="l00041"></a>00041   print*, 'number of values ', numberOfValues
-<a name="l00042"></a>00042   allocate(values(numberOfValues), stat=iret)
-<a name="l00043"></a>00043 
-<a name="l00044"></a>00044   call grib_get(igrib,'values',values)
-<a name="l00045"></a>00045 
-<a name="l00046"></a>00046   do i=1,numberOfValues
-<a name="l00047"></a>00047     write(*,*)'  ',i,values(i)
-<a name="l00048"></a>00048   enddo
-<a name="l00049"></a>00049 
-<a name="l00050"></a>00050 
-<a name="l00051"></a>00051   write(*,*)numberOfValues,' values found '
-<a name="l00052"></a>00052 
-<a name="l00053"></a>00053   call grib_get(igrib,'max',max)
-<a name="l00054"></a>00054   write(*,*) 'max=',max
-<a name="l00055"></a>00055   call grib_get(igrib,'min',min)
-<a name="l00056"></a>00056   write(*,*) 'min=',min
-<a name="l00057"></a>00057   call grib_get(igrib,'average',average)
-<a name="l00058"></a>00058   write(*,*) 'average=',average
-<a name="l00059"></a>00059 
-<a name="l00060"></a>00060   call grib_release(igrib)
-<a name="l00061"></a>00061 
-<a name="l00062"></a>00062   call grib_close_file(ifile)
-<a name="l00063"></a>00063 
-<a name="l00064"></a>00064   deallocate(values)
-<a name="l00065"></a>00065 
-<a name="l00066"></a>00066 end program print_data
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/print__data__fortran_8_f-example.html b/html/print__data__fortran_8_f-example.html
deleted file mode 100644
index ed14bdd..0000000
--- a/html/print__data__fortran_8_f-example.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: print_data_fortran.F</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>print_data_fortran.F</h1>print_data_fortran.F How to print all the data from a grib message.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 C Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 ! 
-<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 C
-<a name="l00008"></a>00008 C  Fortran 77  Implementation: print_data_fortran
-<a name="l00009"></a>00009 C
-<a name="l00010"></a>00010 C  Description: prints all the data contained in a grib file
-<a name="l00011"></a>00011 C
-<a name="l00012"></a>00012 C  Author: Enrico Fucile
-<a name="l00013"></a>00013 C
-<a name="l00014"></a>00014 C
-<a name="l00015"></a>00015 C
-<a name="l00016"></a>00016       program print_data_fortran
-<a name="l00017"></a>00017       implicit none
-<a name="l00018"></a>00018       integer maxNumberOfValues
-<a name="l00019"></a>00019       parameter( maxNumberOfValues = 100000 )
-<a name="l00020"></a>00020       include 'grib_api_f77.h'
-<a name="l00021"></a>00021       integer ifile
-<a name="l00022"></a>00022       integer iret
-<a name="l00023"></a>00023       integer igrib
-<a name="l00024"></a>00024       integer i
-<a name="l00025"></a>00025       real*8 values(maxNumberOfValues)
-<a name="l00026"></a>00026       integer*4 numberOfValues
-<a name="l00027"></a>00027       real*8 average
-<a name="l00028"></a>00028       real*8 max
-<a name="l00029"></a>00029       real*8 min
-<a name="l00030"></a>00030       character*256 error
-<a name="l00031"></a>00031       integer*4 size
-<a name="l00032"></a>00032 
-<a name="l00033"></a>00033       size=maxNumberOfValues
-<a name="l00034"></a>00034       ifile=5
-<a name="l00035"></a>00035 
-<a name="l00036"></a>00036       iret=grib_open_file(ifile
-<a name="l00037"></a>00037      X,'../../data/constant_field.grib1','r')
-<a name="l00038"></a>00038       call grib_check(iret)
-<a name="l00039"></a>00039 
-<a name="l00040"></a>00040 C     a new grib message is loaded from file
-<a name="l00041"></a>00041 C     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
-<a name="l00042"></a>00042       call grib_check( grib_new_from_file(ifile,igrib) )
-<a name="l00043"></a>00043 
-<a name="l00044"></a>00044 
-<a name="l00045"></a>00045 C     get the size of the values array
-<a name="l00046"></a>00046       call grib_check(<a name="a0"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,'values',numberOfValues))
-<a name="l00047"></a>00047       if ( numberOfValues .gt. maxNumberOfValues ) then
-<a name="l00048"></a>00048         write(*,*)'ERROR: maxNumberOfValues too small numberOfValues=',
-<a name="l00049"></a>00049      XnumberOfValues
-<a name="l00050"></a>00050             stop
-<a name="l00051"></a>00051       endif
-<a name="l00052"></a>00052 
-<a name="l00053"></a>00053 C     get data values
-<a name="l00054"></a>00054       call grib_check(grib_get_real8_array(igrib,'values',values,size))
-<a name="l00055"></a>00055       if ( size .ne. numberOfValues ) then
-<a name="l00056"></a>00056         write(*,*) 'ERROR: wrong numberOfValues'
-<a name="l00057"></a>00057         stop
-<a name="l00058"></a>00058       endif
-<a name="l00059"></a>00059 
-<a name="l00060"></a>00060       do i=1,numberOfValues
-<a name="l00061"></a>00061         write(*,*)'  ',i,values(i)
-<a name="l00062"></a>00062       enddo
-<a name="l00063"></a>00063 
-<a name="l00064"></a>00064       average =average / numberOfValues
-<a name="l00065"></a>00065 
-<a name="l00066"></a>00066       write(*,*)numberOfValues,' values found '
-<a name="l00067"></a>00067 
-<a name="l00068"></a>00068       call grib_check(grib_get_real8(igrib,'max',max))
-<a name="l00069"></a>00069       write(*,*) 'max=',max
-<a name="l00070"></a>00070       call grib_check(grib_get_real8(igrib,'min',min))
-<a name="l00071"></a>00071       write(*,*) 'min=',min
-<a name="l00072"></a>00072       call grib_check(grib_get_real8(igrib,'average',average))
-<a name="l00073"></a>00073       write(*,*) 'average=',average
-<a name="l00074"></a>00074 
-<a name="l00075"></a>00075       call grib_check(grib_release(igrib))
-<a name="l00076"></a>00076 
-<a name="l00077"></a>00077       call grib_check(grib_close_file(ifile))
-<a name="l00078"></a>00078 
-<a name="l00079"></a>00079       end
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:21 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/search/all_61.html b/html/search/all_61.html
new file mode 100644
index 0000000..b8328c6
--- /dev/null
+++ b/html/search/all_61.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_61.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/all_61.js b/html/search/all_61.js
new file mode 100644
index 0000000..c66b114
--- /dev/null
+++ b/html/search/all_61.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['accessing_20header_20and_20data_20values',['Accessing header and data values',['../group__get__set.html',1,'']]]
+];
diff --git a/html/search/all_63.html b/html/search/all_63.html
new file mode 100644
index 0000000..a8fe36d
--- /dev/null
+++ b/html/search/all_63.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_63.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/all_63.js b/html/search/all_63.js
new file mode 100644
index 0000000..560d735
--- /dev/null
+++ b/html/search/all_63.js
@@ -0,0 +1,301 @@
+var searchData=
+[
+  ['codes_5f7777_5fnot_5ffound',['CODES_7777_NOT_FOUND',['../group__errors.html#ga1d805b18a1a77dc05958177d1954ce74',1,'eccodes.h']]],
+  ['codes_5fany_5fnew_5ffrom_5ffile',['codes_any_new_from_file',['../classeccodes.html#aa468943e1c669487375b2e3d46ff84b1',1,'eccodes::codes_any_new_from_file()'],['../namespaceec_codes.html#af4a4c95465d2026ad549920b07150bab',1,'ecCodes.codes_any_new_from_file()']]],
+  ['codes_5farray_5ftoo_5fsmall',['CODES_ARRAY_TOO_SMALL',['../group__errors.html#gaa1ba1cec53cded5eb4497f920dd06fc4',1,'eccodes.h']]],
+  ['codes_5fattribute_5fclash',['CODES_ATTRIBUTE_CLASH',['../group__errors.html#gab925e86850f2cb23159bf5f349680985',1,'eccodes.h']]],
+  ['codes_5fattribute_5fnot_5ffound',['CODES_ATTRIBUTE_NOT_FOUND',['../group__errors.html#ga020cc6141e2618059f63b5aa2a8385f7',1,'eccodes.h']]],
+  ['codes_5fbuffer_5ftoo_5fsmall',['CODES_BUFFER_TOO_SMALL',['../group__errors.html#ga28ecc7f18250c721544c587f21acc61f',1,'eccodes.h']]],
+  ['codes_5fbufr_5fhandle_5fnew_5ffrom_5ffile',['codes_bufr_handle_new_from_file',['../group__codes__handle.html#ga6958c3cd7e4059af5c26898a872262ff',1,'eccodes.h']]],
+  ['codes_5fbufr_5fhandle_5fnew_5ffrom_5fsamples',['codes_bufr_handle_new_from_samples',['../group__codes__handle.html#ga56d0f831e520ec7bc4a0ca334c63f557',1,'eccodes.h']]],
+  ['codes_5fbufr_5fnew_5ffrom_5ffile',['codes_bufr_new_from_file',['../classeccodes.html#a94050d64954482cd82ea6f007fdc9ac0',1,'eccodes::codes_bufr_new_from_file()'],['../namespaceec_codes.html#a44c10386781390c16f1a567590b33c11',1,'ecCodes.codes_bufr_new_from_file()']]],
+  ['codes_5fbufr_5fnew_5ffrom_5fsamples',['codes_bufr_new_from_samples',['../classeccodes.html#a6d32d26f2076db60d78e1c2d222dd01d',1,'eccodes::codes_bufr_new_from_samples()'],['../namespaceec_codes.html#ae042f8fe1cc86718ce658f3b992c87a2',1,'ecCodes.codes_bufr_new_from_samples()']]],
+  ['codes_5fcheck',['codes_check',['../classeccodes.html#a1cd5ff5ea308443bfe166974d9ab1363',1,'eccodes']]],
+  ['codes_5fclone',['codes_clone',['../classeccodes.html#a94c85dbc797f98a177795ff9a8ad8035',1,'eccodes::codes_clone()'],['../namespaceec_codes.html#ab49cb36625cd87b9d898844b1df32516',1,'ecCodes.codes_clone()']]],
+  ['codes_5fclose_5ffile',['codes_close_file',['../classeccodes.html#a436a01aabf91cdbb4c5902a5d1a2886e',1,'eccodes']]],
+  ['codes_5fcode_5fnot_5ffound_5fin_5ftable',['CODES_CODE_NOT_FOUND_IN_TABLE',['../group__errors.html#ga007c99d57492ff8d3d4d14cce1b6b645',1,'eccodes.h']]],
+  ['codes_5fconcept_5fno_5fmatch',['CODES_CONCEPT_NO_MATCH',['../group__errors.html#gaacf5638c981fbd97399b83439197c4ba',1,'eccodes.h']]],
+  ['codes_5fconstant_5ffield',['CODES_CONSTANT_FIELD',['../group__errors.html#gaf24f6cbb1e6a796cc7768aa1d5280d6e',1,'eccodes.h']]],
+  ['codes_5fcontext',['codes_context',['../structcodes__context.html',1,'']]],
+  ['codes_5fcontext_5fdelete',['codes_context_delete',['../group__context.html#gae6323d16b5e929f22126d0ddbf43dc7f',1,'eccodes.h']]],
+  ['codes_5fcontext_5fget_5fdefault',['codes_context_get_default',['../group__context.html#ga3c1086a1abccc58db01609611c3e706d',1,'eccodes.h']]],
+  ['codes_5fcontext_5fset_5fdefinitions_5fpath',['codes_context_set_definitions_path',['../group__context.html#ga8abf0ff0f52f1e808edf092f2e7c1147',1,'eccodes.h']]],
+  ['codes_5fcontext_5fset_5fsamples_5fpath',['codes_context_set_samples_path',['../group__context.html#ga4f2f808f560a3b744b4c904b3d1a1c48',1,'eccodes.h']]],
+  ['codes_5fcopy_5fmessage',['codes_copy_message',['../classeccodes.html#afdd32c1a78f0a3d54992e0a6a6bfc66b',1,'eccodes']]],
+  ['codes_5fcopy_5fnamespace',['codes_copy_namespace',['../classeccodes.html#a8bba3684a289b1e8c6bcea0b67c45b5d',1,'eccodes::codes_copy_namespace()'],['../group__get__set.html#gaecd9fa4b22117df7569320ddaa2431e1',1,'codes_copy_namespace(): eccodes.h'],['../namespaceec_codes.html#a6c83d2b9572083c7a83c9c5d39010b14',1,'ecCodes.codes_copy_namespace()']]],
+  ['codes_5fcorrupted_5findex',['CODES_CORRUPTED_INDEX',['../group__errors.html#ga3e4650042d448cf9ccf2f58913f6d900',1,'eccodes.h']]],
+  ['codes_5fcount_5fin_5ffile',['codes_count_in_file',['../classeccodes.html#a0a09420f86caf79873b2fb067e360049',1,'eccodes::codes_count_in_file()'],['../group__codes__handle.html#ga4c2203d55c2c3ca792e44e4eb26edfb5',1,'codes_count_in_file(): eccodes.h'],['../namespaceec_codes.html#a5c7a1d8a2c7802edd327a35cb35984e7',1,'ecCodes.codes_count_in_file()']]],
+  ['codes_5fdecoding_5ferror',['CODES_DECODING_ERROR',['../group__errors.html#ga75df8e941afb735723fec89bd68d4f58',1,'eccodes.h']]],
+  ['codes_5fdifferent_5fedition',['CODES_DIFFERENT_EDITION',['../group__errors.html#gad88a9ff519e455b12ac0bf8e45f95472',1,'eccodes.h']]],
+  ['codes_5fdump',['codes_dump',['../classeccodes.html#ab5e1ab3efc1981c886e64e467c1b84a1',1,'eccodes']]],
+  ['codes_5fdump_5faction_5ftree',['codes_dump_action_tree',['../eccodes_8h.html#a1d83df194092088785f1d794356d950d',1,'eccodes.h']]],
+  ['codes_5fdump_5fcontent',['codes_dump_content',['../eccodes_8h.html#ab9cf0dd7ede554cc4b8a56728d768d88',1,'eccodes.h']]],
+  ['codes_5fencoding_5ferror',['CODES_ENCODING_ERROR',['../group__errors.html#ga817971c5206ff01987a2d16bc0e9dd1f',1,'eccodes.h']]],
+  ['codes_5fend',['CODES_END',['../group__errors.html#ga4e95b3f8896dc99e311e02c348266595',1,'eccodes.h']]],
+  ['codes_5fend_5fof_5ffile',['CODES_END_OF_FILE',['../group__errors.html#ga0b434e15a3ee76844958fd269feb6de0',1,'eccodes.h']]],
+  ['codes_5fend_5fof_5findex',['CODES_END_OF_INDEX',['../group__errors.html#ga0280b694f20120aef691e13288bf2b30',1,'eccodes.h']]],
+  ['codes_5ffile_5fnot_5ffound',['CODES_FILE_NOT_FOUND',['../group__errors.html#gac7c0c8beed153b8bf32601441c5ef787',1,'eccodes.h']]],
+  ['codes_5fgeocalculus_5fproblem',['CODES_GEOCALCULUS_PROBLEM',['../group__errors.html#ga6bcc67f9220042cb4781bad71fd59f35',1,'eccodes.h']]],
+  ['codes_5fget',['codes_get',['../interfaceeccodes_1_1codes__get.html',1,'eccodes']]],
+  ['codes_5fget',['codes_get',['../namespaceec_codes.html#a1ba4d3b6473499af0581cf52eb4cad0b',1,'ecCodes']]],
+  ['codes_5fget_5fapi_5fversion',['codes_get_api_version',['../eccodes_8h.html#aad3989fb11cbfce477ce7b42daa7b506',1,'codes_get_api_version(): ecCodes.py'],['../namespaceec_codes.html#add6a557c085ea401fc9529ed140025ef',1,'ecCodes.codes_get_api_version()']]],
+  ['codes_5fget_5farray',['codes_get_array',['../namespaceec_codes.html#a648bae4beadb6a82698da40e08323be9',1,'ecCodes']]],
+  ['codes_5fget_5fbyte_5farray',['codes_get_byte_array',['../interfaceeccodes_1_1codes__get.html#adee61373d840f0f6a73be5d574a47a1e',1,'eccodes::codes_get::codes_get_byte_array()'],['../classeccodes.html#adee61373d840f0f6a73be5d574a47a1e',1,'eccodes::codes_get_byte_array()']]],
+  ['codes_5fget_5fbytes',['codes_get_bytes',['../group__get__set.html#ga252c3104621144fb370f302f3a3f6755',1,'eccodes.h']]],
+  ['codes_5fget_5fdouble',['codes_get_double',['../group__get__set.html#ga93c1b612b2b70bbbff335b7d227316fc',1,'codes_get_double(): eccodes.h'],['../namespaceec_codes.html#a22a427ff4355e63b2c16c491572ea6b5',1,'ecCodes.codes_get_double()']]],
+  ['codes_5fget_5fdouble_5farray',['codes_get_double_array',['../group__get__set.html#ga82b919c3196525ec2f21a8378d4cbbf4',1,'codes_get_double_array(): eccodes.h'],['../namespaceec_codes.html#a441ff456dc9990951bf242f4d542713a',1,'ecCodes.codes_get_double_array()']]],
+  ['codes_5fget_5fdouble_5felement',['codes_get_double_element',['../group__get__set.html#ga15b9a4d8dae3002f0b4f6ef4f1cfc197',1,'codes_get_double_element(): eccodes.h'],['../namespaceec_codes.html#a3b085fe4c2ea0090a74959b396b2287f',1,'ecCodes.codes_get_double_element()']]],
+  ['codes_5fget_5fdouble_5felements',['codes_get_double_elements',['../group__get__set.html#ga853aad2cd2bea6b71b8c61fed6adfe0b',1,'codes_get_double_elements(): eccodes.h'],['../namespaceec_codes.html#af0708f169680a9b753789a3d61f7f9ef',1,'ecCodes.codes_get_double_elements()']]],
+  ['codes_5fget_5felement',['codes_get_element',['../interfaceeccodes_1_1codes__get__element.html',1,'eccodes']]],
+  ['codes_5fget_5felements',['codes_get_elements',['../namespaceec_codes.html#a8558de4f563b57fe8104d024eb90e7d2',1,'ecCodes']]],
+  ['codes_5fget_5ferror_5fmessage',['codes_get_error_message',['../eccodes_8h.html#a1257b15cb014452fd6e6662db06e4ede',1,'eccodes.h']]],
+  ['codes_5fget_5ferror_5fstring',['codes_get_error_string',['../classeccodes.html#a835de867b8ad79cc43f127e7048712f3',1,'eccodes']]],
+  ['codes_5fget_5fgit_5fsha1',['codes_get_git_sha1',['../eccodes_8h.html#a82249b16ee12f2e574397f8cccaafb7a',1,'eccodes.h']]],
+  ['codes_5fget_5fgribex_5fmode',['codes_get_gribex_mode',['../group__context.html#ga13cba593f6e5b195bfc83bea419d5022',1,'eccodes.h']]],
+  ['codes_5fget_5fint',['codes_get_int',['../interfaceeccodes_1_1codes__get.html#a15e9f187ba45e4a334f270884c59651e',1,'eccodes::codes_get::codes_get_int()'],['../classeccodes.html#a15e9f187ba45e4a334f270884c59651e',1,'eccodes::codes_get_int()']]],
+  ['codes_5fget_5fint_5farray',['codes_get_int_array',['../interfaceeccodes_1_1codes__get.html#a620d907f796a466b9b849be12e96a274',1,'eccodes::codes_get::codes_get_int_array()'],['../classeccodes.html#a620d907f796a466b9b849be12e96a274',1,'eccodes::codes_get_int_array()']]],
+  ['codes_5fget_5flength',['codes_get_length',['../group__get__set.html#ga98d694dc6caa24afdd393440c94c38f8',1,'eccodes.h']]],
+  ['codes_5fget_5flong',['codes_get_long',['../interfaceeccodes_1_1codes__get.html#ad85e9d6d052fdcbfade2d201357e391d',1,'eccodes::codes_get::codes_get_long()'],['../classeccodes.html#ad85e9d6d052fdcbfade2d201357e391d',1,'eccodes::codes_get_long()'],['../group__get__set.html#ga6ff44dddc3bec09f710b0aa8d0dbded7',1,'codes_get_long(): eccodes.h'],['../namespaceec_codes.html#a88f2a86c370e490dae8e684c957022fd',1,'ecCodes.codes_get_long()']]],
+  ['codes_5fget_5flong_5farray',['codes_get_long_array',['../classeccodes.html#a0ff7f18601949da80f10d1614e0d0541',1,'eccodes::codes_get_long_array()'],['../group__get__set.html#gac43a3c0bf2561ceeb4bcc22d734b53b1',1,'codes_get_long_array(): eccodes.h'],['../namespaceec_codes.html#a680c8ecbf2104d69083c68ea6184192d',1,'ecCodes.codes_get_long_array()']]],
+  ['codes_5fget_5fmessage',['codes_get_message',['../group__handling__coded__messages.html#ga3d6f22a666e8e8dd7b33c98f2a7f3f62',1,'codes_get_message(): eccodes.h'],['../namespaceec_codes.html#a0f446397a9956ed5518ff6461fcc17f0',1,'ecCodes.codes_get_message()']]],
+  ['codes_5fget_5fmessage_5fcopy',['codes_get_message_copy',['../group__handling__coded__messages.html#ga8b2cb8c072b886de83a8e089c004a630',1,'eccodes.h']]],
+  ['codes_5fget_5fmessage_5foffset',['codes_get_message_offset',['../namespaceec_codes.html#a72cc99e87c999a3cd225323fdcddfad7',1,'ecCodes']]],
+  ['codes_5fget_5fmessage_5fsize',['codes_get_message_size',['../interfaceeccodes_1_1codes__get__message__size.html',1,'eccodes']]],
+  ['codes_5fget_5fmessage_5fsize',['codes_get_message_size',['../namespaceec_codes.html#aa1a3c2d7800aa28297e3a9a11c4f6c0f',1,'ecCodes']]],
+  ['codes_5fget_5fmessage_5fsize_5fint',['codes_get_message_size_int',['../interfaceeccodes_1_1codes__get__message__size.html#af4ff60a9bd8d0c1c0173242897db4816',1,'eccodes::codes_get_message_size::codes_get_message_size_int()'],['../classeccodes.html#af4ff60a9bd8d0c1c0173242897db4816',1,'eccodes::codes_get_message_size_int()']]],
+  ['codes_5fget_5fmessage_5fsize_5fsize_5ft',['codes_get_message_size_size_t',['../interfaceeccodes_1_1codes__get__message__size.html#a032408e4f1a842a42fca23218ec85a4d',1,'eccodes::codes_get_message_size::codes_get_message_size_size_t()'],['../classeccodes.html#a032408e4f1a842a42fca23218ec85a4d',1,'eccodes::codes_get_message_size_size_t()']]],
+  ['codes_5fget_5fnative_5ftype',['codes_get_native_type',['../namespaceec_codes.html#a1250285cb0770393bf6078f3ee3340a2',1,'ecCodes']]],
+  ['codes_5fget_5foffset',['codes_get_offset',['../group__get__set.html#gaefda2b7765e1b737bcd05a825d231a1d',1,'eccodes.h']]],
+  ['codes_5fget_5freal4',['codes_get_real4',['../interfaceeccodes_1_1codes__get.html#ab6c505dfdf5a75f51c07683abed39b68',1,'eccodes::codes_get::codes_get_real4()'],['../classeccodes.html#ab6c505dfdf5a75f51c07683abed39b68',1,'eccodes::codes_get_real4()']]],
+  ['codes_5fget_5freal4_5farray',['codes_get_real4_array',['../interfaceeccodes_1_1codes__get.html#ae1df5b7389172122fe2c84c4156f18d0',1,'eccodes::codes_get::codes_get_real4_array()'],['../classeccodes.html#ae1df5b7389172122fe2c84c4156f18d0',1,'eccodes::codes_get_real4_array()']]],
+  ['codes_5fget_5freal4_5felement',['codes_get_real4_element',['../interfaceeccodes_1_1codes__get__element.html#a95426fb251262a83fbdcc5ae86968b4b',1,'eccodes::codes_get_element::codes_get_real4_element()'],['../classeccodes.html#a95426fb251262a83fbdcc5ae86968b4b',1,'eccodes::codes_get_real4_element()']]],
+  ['codes_5fget_5freal4_5felements',['codes_get_real4_elements',['../interfaceeccodes_1_1codes__get__element.html#a0587c719213f5eb38afbb80cb30a2b8b',1,'eccodes::codes_get_element::codes_get_real4_elements()'],['../classeccodes.html#a0587c719213f5eb38afbb80cb30a2b8b',1,'eccodes::codes_get_real4_elements()']]],
+  ['codes_5fget_5freal8',['codes_get_real8',['../interfaceeccodes_1_1codes__get.html#a2ca22327e21aca686d29f8953e235839',1,'eccodes::codes_get::codes_get_real8()'],['../classeccodes.html#a2ca22327e21aca686d29f8953e235839',1,'eccodes::codes_get_real8()']]],
+  ['codes_5fget_5freal8_5farray',['codes_get_real8_array',['../interfaceeccodes_1_1codes__get.html#a4b28e570e54dad5a779e0452d3ed66d4',1,'eccodes::codes_get::codes_get_real8_array()'],['../classeccodes.html#a4b28e570e54dad5a779e0452d3ed66d4',1,'eccodes::codes_get_real8_array()']]],
+  ['codes_5fget_5freal8_5felement',['codes_get_real8_element',['../interfaceeccodes_1_1codes__get__element.html#ac9ceb83558433f918eac6aeb00b620af',1,'eccodes::codes_get_element::codes_get_real8_element()'],['../classeccodes.html#ac9ceb83558433f918eac6aeb00b620af',1,'eccodes::codes_get_real8_element()']]],
+  ['codes_5fget_5freal8_5felements',['codes_get_real8_elements',['../interfaceeccodes_1_1codes__get__element.html#a1e550ade4f5781f19718fa8bdec802f9',1,'eccodes::codes_get_element::codes_get_real8_elements()'],['../classeccodes.html#a1e550ade4f5781f19718fa8bdec802f9',1,'eccodes::codes_get_real8_elements()']]],
+  ['codes_5fget_5fsize',['codes_get_size',['../interfaceeccodes_1_1codes__get__size.html',1,'eccodes']]],
+  ['codes_5fget_5fsize',['codes_get_size',['../group__get__set.html#ga614d4f7a6c789a4fe60ea976b6644343',1,'codes_get_size(): eccodes.h'],['../namespaceec_codes.html#ab07293de06d6ef6c5810ea3f01723884',1,'ecCodes.codes_get_size()']]],
+  ['codes_5fget_5fsize_5fint',['codes_get_size_int',['../interfaceeccodes_1_1codes__get__size.html#ac566c4909f1ea554517d256a780cf87f',1,'eccodes::codes_get_size::codes_get_size_int()'],['../classeccodes.html#ac566c4909f1ea554517d256a780cf87f',1,'eccodes::codes_get_size_int()']]],
+  ['codes_5fget_5fsize_5flong',['codes_get_size_long',['../interfaceeccodes_1_1codes__get__size.html#accd5b68ef585873b05a3f61d7dda3f3a',1,'eccodes::codes_get_size::codes_get_size_long()'],['../classeccodes.html#accd5b68ef585873b05a3f61d7dda3f3a',1,'eccodes::codes_get_size_long()']]],
+  ['codes_5fget_5fstring',['codes_get_string',['../interfaceeccodes_1_1codes__get.html#a9b71df8830b162b7773cf4d1446b4303',1,'eccodes::codes_get::codes_get_string()'],['../classeccodes.html#a9b71df8830b162b7773cf4d1446b4303',1,'eccodes::codes_get_string()'],['../group__get__set.html#ga638d7bbe8dafd11847222a99b259f408',1,'codes_get_string(): eccodes.h'],['../namespaceec_codes.html#a37ff4cf406f9b0b0cd6ede563c1d5ab1',1,'ecCodes.codes_get_string()']]],
+  ['codes_5fget_5fstring_5farray',['codes_get_string_array',['../classeccodes.html#a731aac9d5d75917e12048573ae86e7c6',1,'eccodes']]],
+  ['codes_5fget_5fstring_5flength',['codes_get_string_length',['../namespaceec_codes.html#adc7361072916fe6ec52e9cf53f066839',1,'ecCodes']]],
+  ['codes_5fget_5fvalues',['codes_get_values',['../namespaceec_codes.html#a0af74e12fba25379db678363f5bdafb3',1,'ecCodes']]],
+  ['codes_5fgrib_5ffind_5fnearest',['codes_grib_find_nearest',['../namespaceec_codes.html#a134bac0edaf47f29051ad905a30fb63e',1,'ecCodes']]],
+  ['codes_5fgrib_5ffind_5fnearest',['codes_grib_find_nearest',['../interfaceeccodes_1_1codes__grib__find__nearest.html',1,'eccodes']]],
+  ['codes_5fgrib_5ffind_5fnearest_5ffour_5fsingle',['codes_grib_find_nearest_four_single',['../interfaceeccodes_1_1codes__grib__find__nearest.html#ad4b53c47aecc5fa5ae43c95357d2d690',1,'eccodes::codes_grib_find_nearest::codes_grib_find_nearest_four_single()'],['../classeccodes.html#ad4b53c47aecc5fa5ae43c95357d2d690',1,'eccodes::codes_grib_find_nearest_four_single()']]],
+  ['codes_5fgrib_5ffind_5fnearest_5fmultiple',['codes_grib_find_nearest_multiple',['../interfaceeccodes_1_1codes__grib__find__nearest.html#acb92b7a78966c0b2f53ee6e288bff673',1,'eccodes::codes_grib_find_nearest::codes_grib_find_nearest_multiple()'],['../classeccodes.html#acb92b7a78966c0b2f53ee6e288bff673',1,'eccodes::codes_grib_find_nearest_multiple()']]],
+  ['codes_5fgrib_5ffind_5fnearest_5fsingle',['codes_grib_find_nearest_single',['../interfaceeccodes_1_1codes__grib__find__nearest.html#a036ae036cc766718ad224851d47d99a2',1,'eccodes::codes_grib_find_nearest::codes_grib_find_nearest_single()'],['../classeccodes.html#a036ae036cc766718ad224851d47d99a2',1,'eccodes::codes_grib_find_nearest_single()']]],
+  ['codes_5fgrib_5fget_5fdata',['codes_grib_get_data',['../group__iterators.html#ga9d8fdb87efce9d49ac54853ee5871e01',1,'eccodes.h']]],
+  ['codes_5fgrib_5fget_5fdata',['codes_grib_get_data',['../interfaceeccodes_1_1codes__grib__get__data.html',1,'eccodes']]],
+  ['codes_5fgrib_5fget_5fdata_5freal4',['codes_grib_get_data_real4',['../interfaceeccodes_1_1codes__grib__get__data.html#a0e93200c0e6e4bdacaf1bec1e0a29ee7',1,'eccodes::codes_grib_get_data::codes_grib_get_data_real4()'],['../classeccodes.html#a0e93200c0e6e4bdacaf1bec1e0a29ee7',1,'eccodes::codes_grib_get_data_real4()']]],
+  ['codes_5fgrib_5fget_5fdata_5freal8',['codes_grib_get_data_real8',['../interfaceeccodes_1_1codes__grib__get__data.html#a043bb1e696da61d06523ad35ae16fe8c',1,'eccodes::codes_grib_get_data::codes_grib_get_data_real8()'],['../classeccodes.html#a043bb1e696da61d06523ad35ae16fe8c',1,'eccodes::codes_grib_get_data_real8()']]],
+  ['codes_5fgrib_5fhandle_5fnew_5ffrom_5ffile',['codes_grib_handle_new_from_file',['../group__codes__handle.html#ga36de77229cc3b386d26c1e7b52c21e0e',1,'eccodes.h']]],
+  ['codes_5fgrib_5fhandle_5fnew_5ffrom_5fmulti_5fmessage',['codes_grib_handle_new_from_multi_message',['../group__codes__handle.html#ga385864d5f06e1de0e8ee13388ca4117c',1,'eccodes.h']]],
+  ['codes_5fgrib_5fhandle_5fnew_5ffrom_5fsamples',['codes_grib_handle_new_from_samples',['../group__codes__handle.html#ga3b281a237e311c6b8fa4bd7096d7e025',1,'eccodes.h']]],
+  ['codes_5fgrib_5fiterator_5fdelete',['codes_grib_iterator_delete',['../group__iterators.html#ga3999693d3932a62eada0d1de5b594d2f',1,'codes_grib_iterator_delete(): eccodes.h'],['../namespaceec_codes.html#a18cdf4111053dc0c387a5fbddb0aaf30',1,'ecCodes.codes_grib_iterator_delete()']]],
+  ['codes_5fgrib_5fiterator_5fhas_5fnext',['codes_grib_iterator_has_next',['../group__iterators.html#ga97dfa89fe0ebed41b238d98bac36db8a',1,'eccodes.h']]],
+  ['codes_5fgrib_5fiterator_5fnew',['codes_grib_iterator_new',['../group__iterators.html#ga250295a1b927401bcb1e03aac032396c',1,'codes_grib_iterator_new(): eccodes.h'],['../namespaceec_codes.html#af3e5c3e1ee4d4b1e2f37862b9de92273',1,'ecCodes.codes_grib_iterator_new()']]],
+  ['codes_5fgrib_5fiterator_5fnext',['codes_grib_iterator_next',['../group__iterators.html#ga9bc83fc66d5f39ecf123d3c3e5b1fecf',1,'codes_grib_iterator_next(): eccodes.h'],['../namespaceec_codes.html#ae2bc65694ff09cdd253ef35f760ef841',1,'ecCodes.codes_grib_iterator_next()']]],
+  ['codes_5fgrib_5fiterator_5fprevious',['codes_grib_iterator_previous',['../group__iterators.html#ga93ef62613c251baa5ada3924d3c856ac',1,'eccodes.h']]],
+  ['codes_5fgrib_5fiterator_5freset',['codes_grib_iterator_reset',['../group__iterators.html#ga635320df5854ae08367fed2e5f895e2b',1,'eccodes.h']]],
+  ['codes_5fgrib_5fmulti_5fappend',['codes_grib_multi_append',['../classeccodes.html#a385aa2c504656d11812dd461819446ba',1,'eccodes::codes_grib_multi_append()'],['../namespaceec_codes.html#a956a6f84f7b418551cd6c4976c970140',1,'ecCodes.codes_grib_multi_append()']]],
+  ['codes_5fgrib_5fmulti_5fhandle_5fappend',['codes_grib_multi_handle_append',['../group__codes__handle.html#ga068715aab8b82a5d3092064b6bc27f3d',1,'eccodes.h']]],
+  ['codes_5fgrib_5fmulti_5fhandle_5fdelete',['codes_grib_multi_handle_delete',['../group__codes__handle.html#ga85a955bdd3012ce499e50768e298b849',1,'eccodes.h']]],
+  ['codes_5fgrib_5fmulti_5fhandle_5fnew',['codes_grib_multi_handle_new',['../group__codes__handle.html#ga5ff59672d9eab49c0285c8f60e379d88',1,'eccodes.h']]],
+  ['codes_5fgrib_5fmulti_5fhandle_5fwrite',['codes_grib_multi_handle_write',['../group__codes__handle.html#gac06089d897eea71d8944cc622a45737f',1,'eccodes.h']]],
+  ['codes_5fgrib_5fmulti_5fnew',['codes_grib_multi_new',['../namespaceec_codes.html#a0b1fb93a9f550c971a7e08ca16bb5100',1,'ecCodes']]],
+  ['codes_5fgrib_5fmulti_5frelease',['codes_grib_multi_release',['../namespaceec_codes.html#a1e9477394be21ac60be3d6841660c137',1,'ecCodes']]],
+  ['codes_5fgrib_5fmulti_5fsupport_5foff',['codes_grib_multi_support_off',['../classeccodes.html#ab11428b591f9ea0ae46e5116ad9e5c7f',1,'eccodes::codes_grib_multi_support_off()'],['../group__context.html#gafb670b14a995b47a9d8896fc5ca67383',1,'codes_grib_multi_support_off(): eccodes.h'],['../namespaceec_codes.html#aaec2118b6fca48e59ded7d2099e81009',1,'ecCodes.codes_grib_multi_support_off()']]],
+  ['codes_5fgrib_5fmulti_5fsupport_5fon',['codes_grib_multi_support_on',['../classeccodes.html#a69d578039c073e637d727078778ca3ef',1,'eccodes::codes_grib_multi_support_on()'],['../group__context.html#ga7775423a069b2b8b5535b5f68090b847',1,'codes_grib_multi_support_on(): eccodes.h'],['../namespaceec_codes.html#aed3ce5487d6bdd24e1127e638c9cfd54',1,'ecCodes.codes_grib_multi_support_on()']]],
+  ['codes_5fgrib_5fmulti_5fsupport_5freset_5ffile',['codes_grib_multi_support_reset_file',['../group__context.html#ga72e9dabca4fc1d1bbb4cf3e01f77c9fd',1,'eccodes.h']]],
+  ['codes_5fgrib_5fmulti_5fwrite',['codes_grib_multi_write',['../classeccodes.html#aa1ef915b62ebf910254f05cb619c0168',1,'eccodes::codes_grib_multi_write()'],['../namespaceec_codes.html#ac70e34af931428ba9a4874e0ebf75928',1,'ecCodes.codes_grib_multi_write()']]],
+  ['codes_5fgrib_5fnearest_5fdelete',['codes_grib_nearest_delete',['../group__iterators.html#ga8c3b2ed99693a097211000552876a61d',1,'eccodes.h']]],
+  ['codes_5fgrib_5fnearest_5ffind',['codes_grib_nearest_find',['../group__iterators.html#ga8c53c53033259beaf32055154f193a83',1,'eccodes.h']]],
+  ['codes_5fgrib_5fnearest_5ffind_5fmultiple',['codes_grib_nearest_find_multiple',['../group__iterators.html#ga6338ab9e3fb68c25d4fe48a8467cdbfc',1,'eccodes.h']]],
+  ['codes_5fgrib_5fnearest_5fnew',['codes_grib_nearest_new',['../group__iterators.html#ga201d49e6c835f3b6ed041147d0bf4898',1,'eccodes.h']]],
+  ['codes_5fgrib_5fnew_5ffrom_5ffile',['codes_grib_new_from_file',['../classeccodes.html#a7a21cb68f0d5058a63a4ba92a938fd27',1,'eccodes::codes_grib_new_from_file()'],['../namespaceec_codes.html#a80246f356012448955e2e75572a8d210',1,'ecCodes.codes_grib_new_from_file()']]],
+  ['codes_5fgrib_5fnew_5ffrom_5fsamples',['codes_grib_new_from_samples',['../classeccodes.html#acfc477ba642e007ec55c7e4ce2c31a9d',1,'eccodes']]],
+  ['codes_5fgribex_5fmode_5foff',['codes_gribex_mode_off',['../classeccodes.html#acb69eeef59ba780c62d7f600915aa986',1,'eccodes::codes_gribex_mode_off()'],['../group__context.html#ga810b375ccacfb6646e44b8cd0da5ee5b',1,'codes_gribex_mode_off(): eccodes.h'],['../namespaceec_codes.html#a4c5256c7e609cf3eedf7d695a4b58a45',1,'ecCodes.codes_gribex_mode_off()']]],
+  ['codes_5fgribex_5fmode_5fon',['codes_gribex_mode_on',['../classeccodes.html#aa8e36bbbe3caddac4ad7d8bcdfa3cd28',1,'eccodes::codes_gribex_mode_on()'],['../group__context.html#ga51838183704645cc11a270e5f755c30c',1,'codes_gribex_mode_on(): eccodes.h'],['../namespaceec_codes.html#aec0c4f83da942b94d51a3d8b93ecb6c4',1,'ecCodes.codes_gribex_mode_on()']]],
+  ['codes_5fgts_5fheader',['codes_gts_header',['../namespaceec_codes.html#ae71963dcd0256ccf5bd849f1f6643f38',1,'ecCodes']]],
+  ['codes_5fgts_5fheader_5foff',['codes_gts_header_off',['../group__context.html#ga5c766bc156cd1ebcf70139965a41e669',1,'eccodes.h']]],
+  ['codes_5fgts_5fheader_5fon',['codes_gts_header_on',['../group__context.html#ga504a2b1bd0d3b229c120c8285895b03a',1,'eccodes.h']]],
+  ['codes_5fgts_5fnew_5ffrom_5ffile',['codes_gts_new_from_file',['../namespaceec_codes.html#ab06cc33b116103a54fadb4e2735e579a',1,'ecCodes']]],
+  ['codes_5fhandle',['codes_handle',['../structcodes__handle.html',1,'']]],
+  ['codes_5fhandle_5fclone',['codes_handle_clone',['../group__codes__handle.html#ga7b226527aa98d90f2bdb470105732878',1,'eccodes.h']]],
+  ['codes_5fhandle_5fdelete',['codes_handle_delete',['../group__codes__handle.html#ga358ea000ceed775e7367ccab581be978',1,'eccodes.h']]],
+  ['codes_5fhandle_5fnew_5ffrom_5ffile',['codes_handle_new_from_file',['../group__codes__handle.html#ga6ec42bd6272b4a0f2cb2b220b86c71c8',1,'eccodes.h']]],
+  ['codes_5fhandle_5fnew_5ffrom_5findex',['codes_handle_new_from_index',['../group__codes__index.html#gae1947cf7225ca1809c5491aa671d6b91',1,'eccodes.h']]],
+  ['codes_5fhandle_5fnew_5ffrom_5fmessage',['codes_handle_new_from_message',['../group__codes__handle.html#gaece49330c864391261cd6a0c10a18dc2',1,'eccodes.h']]],
+  ['codes_5fhandle_5fnew_5ffrom_5fmessage_5fcopy',['codes_handle_new_from_message_copy',['../group__codes__handle.html#ga079df0c709e381812ae13af08c354032',1,'eccodes.h']]],
+  ['codes_5fhash_5farray_5fno_5fmatch',['CODES_HASH_ARRAY_NO_MATCH',['../group__errors.html#ga396e92d0fa82b59556c924e0dec759c6',1,'eccodes.h']]],
+  ['codes_5findex',['codes_index',['../structcodes__index.html',1,'']]],
+  ['codes_5findex_5fadd_5ffile',['codes_index_add_file',['../classeccodes.html#af89d3c57b15bdbd00241358a10b836a8',1,'eccodes::codes_index_add_file()'],['../group__codes__index.html#ga8fa6ca199182c48c0327e61ac98dfd00',1,'codes_index_add_file(): eccodes.h'],['../namespaceec_codes.html#a1c18ea67e5ce00500824676691b4bc4a',1,'ecCodes.codes_index_add_file()']]],
+  ['codes_5findex_5fcreate',['codes_index_create',['../classeccodes.html#a5f52ecf1abe0a68a32517fe2a0d08058',1,'eccodes']]],
+  ['codes_5findex_5fdelete',['codes_index_delete',['../group__codes__index.html#ga03643d8adf2aa7836e1848b20843b31c',1,'eccodes.h']]],
+  ['codes_5findex_5fget',['codes_index_get',['../interfaceeccodes_1_1codes__index__get.html',1,'eccodes']]],
+  ['codes_5findex_5fget',['codes_index_get',['../namespaceec_codes.html#a267636dba6361f74b330275a1f8e1ed7',1,'ecCodes']]],
+  ['codes_5findex_5fget_5fdouble',['codes_index_get_double',['../group__codes__index.html#ga8a2fae0f5eeb8d708c1831bc1b9b9004',1,'codes_index_get_double(): eccodes.h'],['../namespaceec_codes.html#ab28f95174ea3e8eb760d4019598ec9e6',1,'ecCodes.codes_index_get_double()']]],
+  ['codes_5findex_5fget_5fint',['codes_index_get_int',['../interfaceeccodes_1_1codes__index__get.html#a26cf731cfda4b350500d8520ea674341',1,'eccodes::codes_index_get::codes_index_get_int()'],['../classeccodes.html#a26cf731cfda4b350500d8520ea674341',1,'eccodes::codes_index_get_int()']]],
+  ['codes_5findex_5fget_5flong',['codes_index_get_long',['../interfaceeccodes_1_1codes__index__get.html#afa9bf87d988de7eb04a9de9982e6112f',1,'eccodes::codes_index_get::codes_index_get_long()'],['../classeccodes.html#afa9bf87d988de7eb04a9de9982e6112f',1,'eccodes::codes_index_get_long()'],['../group__codes__index.html#gafb483b993d462b2f0576af70c1aa4cc7',1,'codes_index_get_long(): eccodes.h'],['../namespaceec_codes.html#aeaf2ac58b4a90bd09595986d49228d7c',1,'ecCodes.codes_index_get_long()']]],
+  ['codes_5findex_5fget_5freal8',['codes_index_get_real8',['../interfaceeccodes_1_1codes__index__get.html#aedc38b28a7a27b5e042f7a5a17c73001',1,'eccodes::codes_index_get::codes_index_get_real8()'],['../classeccodes.html#aedc38b28a7a27b5e042f7a5a17c73001',1,'eccodes::codes_index_get_real8()']]],
+  ['codes_5findex_5fget_5fsize',['codes_index_get_size',['../interfaceeccodes_1_1codes__index__get__size.html',1,'eccodes']]],
+  ['codes_5findex_5fget_5fsize',['codes_index_get_size',['../group__codes__index.html#gab1aa5fde30d26360349085efec936c6c',1,'codes_index_get_size(): eccodes.h'],['../namespaceec_codes.html#ab9369968f436ad85084ec1d48e9324c7',1,'ecCodes.codes_index_get_size()']]],
+  ['codes_5findex_5fget_5fsize_5fint',['codes_index_get_size_int',['../interfaceeccodes_1_1codes__index__get__size.html#aeb1c3a999e4726895a94acb9b0de518c',1,'eccodes::codes_index_get_size::codes_index_get_size_int()'],['../classeccodes.html#aeb1c3a999e4726895a94acb9b0de518c',1,'eccodes::codes_index_get_size_int()']]],
+  ['codes_5findex_5fget_5fsize_5flong',['codes_index_get_size_long',['../interfaceeccodes_1_1codes__index__get__size.html#a0d2104143f36bdfb5c7cccb9b56ae3f0',1,'eccodes::codes_index_get_size::codes_index_get_size_long()'],['../classeccodes.html#a0d2104143f36bdfb5c7cccb9b56ae3f0',1,'eccodes::codes_index_get_size_long()']]],
+  ['codes_5findex_5fget_5fstring',['codes_index_get_string',['../interfaceeccodes_1_1codes__index__get.html#ae5eb8fbe2de7d547bc92baddaf77adf1',1,'eccodes::codes_index_get::codes_index_get_string()'],['../classeccodes.html#ae5eb8fbe2de7d547bc92baddaf77adf1',1,'eccodes::codes_index_get_string()'],['../group__codes__index.html#ga86ea092af6a89b0322b873147bba523d',1,'codes_index_get_string(): eccodes.h'],['../namespaceec_codes.html#a19b8c07a5ab06944488e66ce434a615b',1,'ecCodes.codes_inde [...]
+  ['codes_5findex_5fnew',['codes_index_new',['../group__codes__index.html#ga0d7015518d426c012ba6c2b848af96d9',1,'eccodes.h']]],
+  ['codes_5findex_5fnew_5ffrom_5ffile',['codes_index_new_from_file',['../group__codes__index.html#ga42b26aa62c53cef50f0bd9e75ed88281',1,'codes_index_new_from_file(): eccodes.h'],['../namespaceec_codes.html#ae89dc44888bfbba102e6c9332839fc51',1,'ecCodes.codes_index_new_from_file()']]],
+  ['codes_5findex_5fread',['codes_index_read',['../classeccodes.html#a16dfcaea7b7c6c77794914d0570f5bc9',1,'eccodes::codes_index_read()'],['../namespaceec_codes.html#a13866152bfd07b8cd418f6cf8c73d7ab',1,'ecCodes.codes_index_read()']]],
+  ['codes_5findex_5frelease',['codes_index_release',['../classeccodes.html#a8fba1de775308d8a1f0c035c51e3a42d',1,'eccodes::codes_index_release()'],['../namespaceec_codes.html#ae5a40e31f81dd4cdddf8ddc71e833395',1,'ecCodes.codes_index_release()']]],
+  ['codes_5findex_5fselect',['codes_index_select',['../interfaceeccodes_1_1codes__index__select.html',1,'eccodes']]],
+  ['codes_5findex_5fselect',['codes_index_select',['../namespaceec_codes.html#a92041c59bf04e6db88395077802dfe74',1,'ecCodes']]],
+  ['codes_5findex_5fselect_5fdouble',['codes_index_select_double',['../group__codes__index.html#ga3baa4a80cd517d55f088fee7f4630fff',1,'codes_index_select_double(): eccodes.h'],['../namespaceec_codes.html#a98ef64298972c19d87f4fa54b125a268',1,'ecCodes.codes_index_select_double()']]],
+  ['codes_5findex_5fselect_5fint',['codes_index_select_int',['../interfaceeccodes_1_1codes__index__select.html#ac84dca14749c6c8f7b1b32dbcb8c8f88',1,'eccodes::codes_index_select::codes_index_select_int()'],['../classeccodes.html#ac84dca14749c6c8f7b1b32dbcb8c8f88',1,'eccodes::codes_index_select_int()']]],
+  ['codes_5findex_5fselect_5flong',['codes_index_select_long',['../interfaceeccodes_1_1codes__index__select.html#a6acd94d169fc462c5babb5d654c07612',1,'eccodes::codes_index_select::codes_index_select_long()'],['../classeccodes.html#a6acd94d169fc462c5babb5d654c07612',1,'eccodes::codes_index_select_long()'],['../group__codes__index.html#gac0a14aca2fc5385684fdba1cb668959a',1,'codes_index_select_long(): eccodes.h'],['../namespaceec_codes.html#ada63dc27281c249035da5b54e6ec0966',1,'ecCodes [...]
+  ['codes_5findex_5fselect_5freal8',['codes_index_select_real8',['../interfaceeccodes_1_1codes__index__select.html#ae1a4e9f83a13d8ce9b046f141ee990cd',1,'eccodes::codes_index_select::codes_index_select_real8()'],['../classeccodes.html#ae1a4e9f83a13d8ce9b046f141ee990cd',1,'eccodes::codes_index_select_real8()']]],
+  ['codes_5findex_5fselect_5fstring',['codes_index_select_string',['../interfaceeccodes_1_1codes__index__select.html#a500fe1c101af888362bb60a94c68085e',1,'eccodes::codes_index_select::codes_index_select_string()'],['../classeccodes.html#a500fe1c101af888362bb60a94c68085e',1,'eccodes::codes_index_select_string()'],['../group__codes__index.html#gafa8d7b29dfe42d805714db95b5ca044a',1,'codes_index_select_string(): eccodes.h'],['../namespaceec_codes.html#af9fa4123658007a2362baa9afd055063', [...]
+  ['codes_5findex_5fwrite',['codes_index_write',['../classeccodes.html#afd0c12a42f60fe16eabc8b0fca41ff05',1,'eccodes::codes_index_write()'],['../namespaceec_codes.html#a32c66888832215b2860535729ee616f8',1,'ecCodes.codes_index_write()']]],
+  ['codes_5finternal_5farray_5ftoo_5fsmall',['CODES_INTERNAL_ARRAY_TOO_SMALL',['../group__errors.html#ga953130174b4f829aeaa4f2122792ce5b',1,'eccodes.h']]],
+  ['codes_5finternal_5ferror',['CODES_INTERNAL_ERROR',['../group__errors.html#ga4413dbc23fd50185a76014f0478920a6',1,'eccodes.h']]],
+  ['codes_5finvalid_5fargument',['CODES_INVALID_ARGUMENT',['../group__errors.html#ga601fbf553afe7bbdaa1c3c784fcad649',1,'eccodes.h']]],
+  ['codes_5finvalid_5fbpv',['CODES_INVALID_BPV',['../group__errors.html#ga5cf46bac2cc3e9dfc9a0dc81644591b4',1,'eccodes.h']]],
+  ['codes_5finvalid_5ffile',['CODES_INVALID_FILE',['../group__errors.html#gab99b60eded1d7c1ff9adb3521543e956',1,'eccodes.h']]],
+  ['codes_5finvalid_5fgrib',['CODES_INVALID_GRIB',['../group__errors.html#gaa3b634b83f8678b7869cc5ff271a7801',1,'eccodes.h']]],
+  ['codes_5finvalid_5findex',['CODES_INVALID_INDEX',['../group__errors.html#ga5f33aa7859af62f31a87afd8fe0643b4',1,'eccodes.h']]],
+  ['codes_5finvalid_5fiterator',['CODES_INVALID_ITERATOR',['../group__errors.html#ga09b7d84b946021eab0179a1f0e8babff',1,'eccodes.h']]],
+  ['codes_5finvalid_5fkey_5fvalue',['CODES_INVALID_KEY_VALUE',['../group__errors.html#ga713d9143db54f7520a4e0473b73971d8',1,'eccodes.h']]],
+  ['codes_5finvalid_5fkeys_5fiterator',['CODES_INVALID_KEYS_ITERATOR',['../group__errors.html#gaa90810da03e1593e3eb30edcb87da47b',1,'eccodes.h']]],
+  ['codes_5finvalid_5fmessage',['CODES_INVALID_MESSAGE',['../group__errors.html#gad58e1f868ee4e18b4836007d38562b8d',1,'eccodes.h']]],
+  ['codes_5finvalid_5fnearest',['CODES_INVALID_NEAREST',['../group__errors.html#ga3e95bd54244761766d7c39c8a95ee9bf',1,'eccodes.h']]],
+  ['codes_5finvalid_5forderby',['CODES_INVALID_ORDERBY',['../group__errors.html#ga03f1a92629846f6aef37e5933fa4f5e4',1,'eccodes.h']]],
+  ['codes_5finvalid_5fsection_5fnumber',['CODES_INVALID_SECTION_NUMBER',['../group__errors.html#gacc7a7e8cdd1e8ccfc8c9a2956d657d5e',1,'eccodes.h']]],
+  ['codes_5finvalid_5ftype',['CODES_INVALID_TYPE',['../group__errors.html#ga29b65582c871d8c4b0215f38bef6b9c9',1,'eccodes.h']]],
+  ['codes_5fio_5fproblem',['CODES_IO_PROBLEM',['../group__errors.html#ga796a3ec1b15abe60dec0c6817564d173',1,'eccodes.h']]],
+  ['codes_5fis_5fdefined',['codes_is_defined',['../classeccodes.html#a4aeb717b8aba0e2898a83d56363bab98',1,'eccodes::codes_is_defined()'],['../namespaceec_codes.html#adbc403f07e0bcc151d8b0fb1365492ff',1,'ecCodes.codes_is_defined()']]],
+  ['codes_5fis_5fmissing',['codes_is_missing',['../classeccodes.html#aff0e850cce3105f72b76a603e104cce4',1,'eccodes::codes_is_missing()'],['../namespaceec_codes.html#a2dd162c68a1326619a34b45e56fdb46c',1,'ecCodes.codes_is_missing()']]],
+  ['codes_5fiterator',['codes_iterator',['../structcodes__iterator.html',1,'']]],
+  ['codes_5fkeys_5fiterator',['codes_keys_iterator',['../structcodes__keys__iterator.html',1,'']]],
+  ['codes_5fkeys_5fiterator_5fall_5fkeys',['CODES_KEYS_ITERATOR_ALL_KEYS',['../group__keys__iterator.html#gaa0b60d176497f5d4bc34564c31e76cf1',1,'eccodes.h']]],
+  ['codes_5fkeys_5fiterator_5fdelete',['codes_keys_iterator_delete',['../classeccodes.html#a5d81274245d3a60ab85d657aa11512e5',1,'eccodes::codes_keys_iterator_delete()'],['../group__keys__iterator.html#gafdafe484a0e5a82732ddcbaec1e272a5',1,'codes_keys_iterator_delete(): eccodes.h'],['../namespaceec_codes.html#a83a077fb2dda1e7f1d317039fc7267d1',1,'ecCodes.codes_keys_iterator_delete()']]],
+  ['codes_5fkeys_5fiterator_5fget_5fname',['codes_keys_iterator_get_name',['../classeccodes.html#a695b7f3f87bfb465908447ce51024221',1,'eccodes::codes_keys_iterator_get_name()'],['../group__keys__iterator.html#ga1049604cb5a47359f9c7f7a42571a48b',1,'codes_keys_iterator_get_name(): eccodes.h'],['../namespaceec_codes.html#aec91e405c936c335c00267eb221c9f91',1,'ecCodes.codes_keys_iterator_get_name()']]],
+  ['codes_5fkeys_5fiterator_5fnew',['codes_keys_iterator_new',['../classeccodes.html#ae9e9bae052da5148e4a0ca85f31c69b5',1,'eccodes::codes_keys_iterator_new()'],['../group__keys__iterator.html#gad3394316cf1f3c779648fe81428adb8f',1,'codes_keys_iterator_new(): eccodes.h'],['../namespaceec_codes.html#a199fb77e1395975be732e46f93b3e337',1,'ecCodes.codes_keys_iterator_new()']]],
+  ['codes_5fkeys_5fiterator_5fnext',['codes_keys_iterator_next',['../classeccodes.html#aaaa40acb7f8e05783e106c32a541a66d',1,'eccodes::codes_keys_iterator_next()'],['../group__keys__iterator.html#ga804b63ac6be7c95aac71a9050008e409',1,'codes_keys_iterator_next(): eccodes.h'],['../namespaceec_codes.html#af2eecea5df157516fb60556cbd1283cd',1,'ecCodes.codes_keys_iterator_next()']]],
+  ['codes_5fkeys_5fiterator_5frewind',['codes_keys_iterator_rewind',['../classeccodes.html#aa6055f116c22830fc941b6db2e133d25',1,'eccodes::codes_keys_iterator_rewind()'],['../group__keys__iterator.html#ga2f611291982ea92cabc0ca70691291bf',1,'codes_keys_iterator_rewind(): eccodes.h'],['../namespaceec_codes.html#a921bb3a4c69e51a4c276bd6cf37c2d2c',1,'ecCodes.codes_keys_iterator_rewind()']]],
+  ['codes_5fkeys_5fiterator_5fskip_5fcoded',['CODES_KEYS_ITERATOR_SKIP_CODED',['../group__keys__iterator.html#gae3286f2212339d42d43938d9c5c6255c',1,'eccodes.h']]],
+  ['codes_5fkeys_5fiterator_5fskip_5fcomputed',['CODES_KEYS_ITERATOR_SKIP_COMPUTED',['../group__keys__iterator.html#gaaecbb01ec3bd2d67a42aad56c96fb775',1,'eccodes.h']]],
+  ['codes_5fkeys_5fiterator_5fskip_5fduplicates',['CODES_KEYS_ITERATOR_SKIP_DUPLICATES',['../group__keys__iterator.html#ga532be495f6cd54a852288a88bd0a439f',1,'eccodes.h']]],
+  ['codes_5fkeys_5fiterator_5fskip_5fedition_5fspecific',['CODES_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC',['../group__keys__iterator.html#ga81f606c554c906f1fed1b9cd432aec00',1,'eccodes.h']]],
+  ['codes_5fkeys_5fiterator_5fskip_5ffunction',['CODES_KEYS_ITERATOR_SKIP_FUNCTION',['../group__keys__iterator.html#ga441c09493c38e1ab2fc7f296eb12516f',1,'eccodes.h']]],
+  ['codes_5fkeys_5fiterator_5fskip_5foptional',['CODES_KEYS_ITERATOR_SKIP_OPTIONAL',['../group__keys__iterator.html#ga6f7115fdd2c821886a43934e4aa16073',1,'eccodes.h']]],
+  ['codes_5fkeys_5fiterator_5fskip_5fread_5fonly',['CODES_KEYS_ITERATOR_SKIP_READ_ONLY',['../group__keys__iterator.html#ga782b83b0b913da3841eb82921642aaa8',1,'eccodes.h']]],
+  ['codes_5fmessage_5fmalformed',['CODES_MESSAGE_MALFORMED',['../group__errors.html#ga05a6fefc41cb1f342d66b1a99887a8bd',1,'eccodes.h']]],
+  ['codes_5fmessage_5ftoo_5flarge',['CODES_MESSAGE_TOO_LARGE',['../group__errors.html#gafe15d1cbbb9524f6287e99c05265f90b',1,'eccodes.h']]],
+  ['codes_5fmetar_5fnew_5ffrom_5ffile',['codes_metar_new_from_file',['../namespaceec_codes.html#aabd87fd89cfac4d21ec014b838174e3c',1,'ecCodes']]],
+  ['codes_5fmissing_5fbufr_5fentry',['CODES_MISSING_BUFR_ENTRY',['../group__errors.html#ga8c92dd1dc944244225fa0bf129347cb7',1,'eccodes.h']]],
+  ['codes_5fmissing_5fkey',['CODES_MISSING_KEY',['../group__errors.html#ga96acfe0a853dd9243975b62aad503dd7',1,'eccodes.h']]],
+  ['codes_5fmulti_5fhandle',['codes_multi_handle',['../structcodes__multi__handle.html',1,'']]],
+  ['codes_5fnearest',['codes_nearest',['../structcodes__nearest.html',1,'']]],
+  ['codes_5fnew_5ffrom_5ffile',['codes_new_from_file',['../classeccodes.html#a5533c6fb8bd7d8f622c89484b7bbdfb6',1,'eccodes::codes_new_from_file()'],['../namespaceec_codes.html#ab1788f3653df85dd90ac99f40daf98c4',1,'ecCodes.codes_new_from_file()']]],
+  ['codes_5fnew_5ffrom_5findex',['codes_new_from_index',['../classeccodes.html#a2852e5519e2ff8596e461986b99092d7',1,'eccodes::codes_new_from_index()'],['../namespaceec_codes.html#a6fc3995f61a5f34933afd0aeb6427bf6',1,'ecCodes.codes_new_from_index()']]],
+  ['codes_5fnew_5ffrom_5fmessage',['codes_new_from_message',['../interfaceeccodes_1_1codes__new__from__message.html',1,'eccodes']]],
+  ['codes_5fnew_5ffrom_5fmessage',['codes_new_from_message',['../namespaceec_codes.html#a8b42a0c20ab81efa5a214dacc0b75d58',1,'ecCodes']]],
+  ['codes_5fnew_5ffrom_5fmessage_5fchar',['codes_new_from_message_char',['../interfaceeccodes_1_1codes__new__from__message.html#a9734463b78e04c3e803acb25d3314436',1,'eccodes::codes_new_from_message::codes_new_from_message_char()'],['../classeccodes.html#a9734463b78e04c3e803acb25d3314436',1,'eccodes::codes_new_from_message_char()']]],
+  ['codes_5fnew_5ffrom_5fmessage_5fint4',['codes_new_from_message_int4',['../interfaceeccodes_1_1codes__new__from__message.html#af9d90d4940f54ecebb44acb69a59d496',1,'eccodes::codes_new_from_message::codes_new_from_message_int4()'],['../classeccodes.html#af9d90d4940f54ecebb44acb69a59d496',1,'eccodes::codes_new_from_message_int4()']]],
+  ['codes_5fnew_5ffrom_5fsamples',['codes_new_from_samples',['../namespaceec_codes.html#a643c58a9acad239c081794c74a5b86d9',1,'ecCodes']]],
+  ['codes_5fno_5fdefinitions',['CODES_NO_DEFINITIONS',['../group__errors.html#ga737054a732ef481c72997c4face59a02',1,'eccodes.h']]],
+  ['codes_5fno_5ffail_5fon_5fwrong_5flength',['codes_no_fail_on_wrong_length',['../namespaceec_codes.html#a85e89c8eae4fb209ae0a7c566e4a2cb1',1,'ecCodes']]],
+  ['codes_5fno_5fmore_5fin_5fset',['CODES_NO_MORE_IN_SET',['../group__errors.html#gaf624d54629a6e8aabce0c5b60667e268',1,'eccodes.h']]],
+  ['codes_5fno_5fvalues',['CODES_NO_VALUES',['../group__errors.html#gac1e36f8922e9321ca23c6884742f4fbd',1,'eccodes.h']]],
+  ['codes_5fnot_5ffound',['CODES_NOT_FOUND',['../group__errors.html#ga0c9413c3afbe47d2a6f2bba805360084',1,'eccodes.h']]],
+  ['codes_5fnot_5fimplemented',['CODES_NOT_IMPLEMENTED',['../group__errors.html#gaf833ff5b61aa5745728bd8c7dd37e27b',1,'eccodes.h']]],
+  ['codes_5fnull_5fhandle',['CODES_NULL_HANDLE',['../group__errors.html#gac17665aa8fcb3f6422a80c4a666b47b0',1,'eccodes.h']]],
+  ['codes_5fnull_5findex',['CODES_NULL_INDEX',['../group__errors.html#gabbdcba4ec6e2dd470b8f0611fdd37d52',1,'eccodes.h']]],
+  ['codes_5fnull_5fpointer',['CODES_NULL_POINTER',['../group__errors.html#gacbe671c157599d6420eb8dfb1e792f6a',1,'eccodes.h']]],
+  ['codes_5fopen_5ffile',['codes_open_file',['../classeccodes.html#a28594e26f2f4b92b9c60e943dd8e1be3',1,'eccodes']]],
+  ['codes_5fout_5fof_5farea',['CODES_OUT_OF_AREA',['../group__errors.html#ga1535af5117f762da30730d341a27c421',1,'eccodes.h']]],
+  ['codes_5fout_5fof_5fmemory',['CODES_OUT_OF_MEMORY',['../group__errors.html#gaca540f40b9e09270265636b3689d8c2e',1,'eccodes.h']]],
+  ['codes_5fout_5fof_5frange',['CODES_OUT_OF_RANGE',['../group__errors.html#ga8f0a03b5f41dfe79b5dc501ecc596f7b',1,'eccodes.h']]],
+  ['codes_5fpremature_5fend_5fof_5ffile',['CODES_PREMATURE_END_OF_FILE',['../group__errors.html#ga6e92038c31cca9d63ec502de74979044',1,'eccodes.h']]],
+  ['codes_5fprint_5fapi_5fversion',['codes_print_api_version',['../eccodes_8h.html#a8be52d40a8fb51642720d0b8adf6cdce',1,'eccodes.h']]],
+  ['codes_5fread_5fbytes',['codes_read_bytes',['../interfaceeccodes_1_1codes__read__bytes.html',1,'eccodes']]],
+  ['codes_5fread_5fbytes_5fchar',['codes_read_bytes_char',['../interfaceeccodes_1_1codes__read__bytes.html#a30dcd3a6d9d4b084f1dc9d617927b99a',1,'eccodes::codes_read_bytes::codes_read_bytes_char()'],['../classeccodes.html#a30dcd3a6d9d4b084f1dc9d617927b99a',1,'eccodes::codes_read_bytes_char()']]],
+  ['codes_5fread_5fbytes_5fchar_5fsize_5ft',['codes_read_bytes_char_size_t',['../interfaceeccodes_1_1codes__read__bytes.html#aea71591e62a4a6f42682ceb5979c0631',1,'eccodes::codes_read_bytes::codes_read_bytes_char_size_t()'],['../classeccodes.html#aea71591e62a4a6f42682ceb5979c0631',1,'eccodes::codes_read_bytes_char_size_t()']]],
+  ['codes_5fread_5fbytes_5fint4',['codes_read_bytes_int4',['../interfaceeccodes_1_1codes__read__bytes.html#a0b75e479138c6fe2b49cacef123a1c8e',1,'eccodes::codes_read_bytes::codes_read_bytes_int4()'],['../classeccodes.html#a0b75e479138c6fe2b49cacef123a1c8e',1,'eccodes::codes_read_bytes_int4()']]],
+  ['codes_5fread_5fbytes_5fint4_5fsize_5ft',['codes_read_bytes_int4_size_t',['../interfaceeccodes_1_1codes__read__bytes.html#ad1be70ac4cc7c2c5775e3bc6b607c4df',1,'eccodes::codes_read_bytes::codes_read_bytes_int4_size_t()'],['../classeccodes.html#ad1be70ac4cc7c2c5775e3bc6b607c4df',1,'eccodes::codes_read_bytes_int4_size_t()']]],
+  ['codes_5fread_5fbytes_5freal4',['codes_read_bytes_real4',['../interfaceeccodes_1_1codes__read__bytes.html#a19f70122369224f1ef3513bf7f351e86',1,'eccodes::codes_read_bytes::codes_read_bytes_real4()'],['../classeccodes.html#a19f70122369224f1ef3513bf7f351e86',1,'eccodes::codes_read_bytes_real4()']]],
+  ['codes_5fread_5fbytes_5freal4_5fsize_5ft',['codes_read_bytes_real4_size_t',['../interfaceeccodes_1_1codes__read__bytes.html#a9bac4f78f245e52303e85d2ee142d073',1,'eccodes::codes_read_bytes::codes_read_bytes_real4_size_t()'],['../classeccodes.html#a9bac4f78f245e52303e85d2ee142d073',1,'eccodes::codes_read_bytes_real4_size_t()']]],
+  ['codes_5fread_5fbytes_5freal8',['codes_read_bytes_real8',['../interfaceeccodes_1_1codes__read__bytes.html#a4e1e0bb73d3fafe62685a3f7191334e4',1,'eccodes::codes_read_bytes::codes_read_bytes_real8()'],['../classeccodes.html#a4e1e0bb73d3fafe62685a3f7191334e4',1,'eccodes::codes_read_bytes_real8()']]],
+  ['codes_5fread_5fbytes_5freal8_5fsize_5ft',['codes_read_bytes_real8_size_t',['../interfaceeccodes_1_1codes__read__bytes.html#adec76dd3ecf49b71ded2545054828c3d',1,'eccodes::codes_read_bytes::codes_read_bytes_real8_size_t()'],['../classeccodes.html#adec76dd3ecf49b71ded2545054828c3d',1,'eccodes::codes_read_bytes_real8_size_t()']]],
+  ['codes_5fread_5ffrom_5ffile',['codes_read_from_file',['../interfaceeccodes_1_1codes__read__from__file.html',1,'eccodes']]],
+  ['codes_5fread_5ffrom_5ffile_5fchar',['codes_read_from_file_char',['../interfaceeccodes_1_1codes__read__from__file.html#ab84434f52a4a41e68bf3103c392482ae',1,'eccodes::codes_read_from_file::codes_read_from_file_char()'],['../classeccodes.html#ab84434f52a4a41e68bf3103c392482ae',1,'eccodes::codes_read_from_file_char()']]],
+  ['codes_5fread_5ffrom_5ffile_5fchar_5fsize_5ft',['codes_read_from_file_char_size_t',['../interfaceeccodes_1_1codes__read__from__file.html#a9ca8b8009071657b338508a3d6709b8d',1,'eccodes::codes_read_from_file::codes_read_from_file_char_size_t()'],['../classeccodes.html#a9ca8b8009071657b338508a3d6709b8d',1,'eccodes::codes_read_from_file_char_size_t()']]],
+  ['codes_5fread_5ffrom_5ffile_5fint4',['codes_read_from_file_int4',['../interfaceeccodes_1_1codes__read__from__file.html#a7b5b61cc34b32aae4c3f2deeacbc50ae',1,'eccodes::codes_read_from_file::codes_read_from_file_int4()'],['../classeccodes.html#a7b5b61cc34b32aae4c3f2deeacbc50ae',1,'eccodes::codes_read_from_file_int4()']]],
+  ['codes_5fread_5ffrom_5ffile_5fint4_5fsize_5ft',['codes_read_from_file_int4_size_t',['../interfaceeccodes_1_1codes__read__from__file.html#aa04bacd625a2a87d7e490c0361643da3',1,'eccodes::codes_read_from_file::codes_read_from_file_int4_size_t()'],['../classeccodes.html#aa04bacd625a2a87d7e490c0361643da3',1,'eccodes::codes_read_from_file_int4_size_t()']]],
+  ['codes_5fread_5ffrom_5ffile_5freal4',['codes_read_from_file_real4',['../classeccodes.html#aa4182b2add068f538b335c8efd1a8d5f',1,'eccodes']]],
+  ['codes_5fread_5ffrom_5ffile_5freal4_5fsize_5ft',['codes_read_from_file_real4_size_t',['../classeccodes.html#ae866f7aa5270100094390b465e953975',1,'eccodes']]],
+  ['codes_5fread_5ffrom_5ffile_5freal8',['codes_read_from_file_real8',['../classeccodes.html#a2ff542236ca5d1bdeb7192c5c8eca94f',1,'eccodes']]],
+  ['codes_5fread_5ffrom_5ffile_5freal8_5fsize_5ft',['codes_read_from_file_real8_size_t',['../classeccodes.html#ab8fff9495aaf984fb909367290b45591',1,'eccodes']]],
+  ['codes_5fread_5fonly',['CODES_READ_ONLY',['../group__errors.html#gab1809244c05808791f318e1e060592d3',1,'eccodes.h']]],
+  ['codes_5frelease',['codes_release',['../classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7',1,'eccodes::codes_release()'],['../namespaceec_codes.html#a23859e3fb8802982fe865789d61b181f',1,'ecCodes.codes_release()']]],
+  ['codes_5fset',['codes_set',['../namespaceec_codes.html#abb5cff8e4911614c8b04032fb014ea07',1,'ecCodes']]],
+  ['codes_5fset',['codes_set',['../interfaceeccodes_1_1codes__set.html',1,'eccodes']]],
+  ['codes_5fset_5farray',['codes_set_array',['../namespaceec_codes.html#a1e25a749b9cffb9b4b391cde66a3333c',1,'ecCodes']]],
+  ['codes_5fset_5fbyte_5farray',['codes_set_byte_array',['../interfaceeccodes_1_1codes__set.html#a292d71c0a7252bdfded6a38aea4284be',1,'eccodes::codes_set::codes_set_byte_array()'],['../classeccodes.html#a292d71c0a7252bdfded6a38aea4284be',1,'eccodes::codes_set_byte_array()']]],
+  ['codes_5fset_5fbytes',['codes_set_bytes',['../group__get__set.html#ga7acb877bea87a39b3778c21dd8de46c2',1,'eccodes.h']]],
+  ['codes_5fset_5fdefinitions_5fpath',['codes_set_definitions_path',['../classeccodes.html#a8544407e16786d6d72df0fc3cc37ff3a',1,'eccodes::codes_set_definitions_path()'],['../namespaceec_codes.html#a63f59e45ba10997c9e30bf63ea5f66e0',1,'ecCodes.codes_set_definitions_path()']]],
+  ['codes_5fset_5fdouble',['codes_set_double',['../group__get__set.html#ga7d2d68482b903b40b91a0b334855db5f',1,'codes_set_double(): eccodes.h'],['../namespaceec_codes.html#aa619f32357c9107b5b6f96ad1fee4232',1,'ecCodes.codes_set_double()']]],
+  ['codes_5fset_5fdouble_5farray',['codes_set_double_array',['../group__get__set.html#gaff9b5bde2baf126d93f43100e5c1d3f7',1,'codes_set_double_array(): eccodes.h'],['../namespaceec_codes.html#ac18c28cc7bd146dad986e03511fb7340',1,'ecCodes.codes_set_double_array()']]],
+  ['codes_5fset_5fforce_5fdouble_5farray',['codes_set_force_double_array',['../group__get__set.html#ga5610a608f1e58996fa48c7ac8f3859a3',1,'eccodes.h']]],
+  ['codes_5fset_5fint',['codes_set_int',['../interfaceeccodes_1_1codes__set.html#ac060bb983b9e515db8ad7edd3d91ce9a',1,'eccodes::codes_set::codes_set_int()'],['../classeccodes.html#ac060bb983b9e515db8ad7edd3d91ce9a',1,'eccodes::codes_set_int()']]],
+  ['codes_5fset_5fint_5farray',['codes_set_int_array',['../interfaceeccodes_1_1codes__set.html#a18b5890c85f15d5fefeefc2b99a09ce5',1,'eccodes::codes_set::codes_set_int_array()'],['../classeccodes.html#a18b5890c85f15d5fefeefc2b99a09ce5',1,'eccodes::codes_set_int_array()']]],
+  ['codes_5fset_5fkey_5fvals',['codes_set_key_vals',['../namespaceec_codes.html#a997587cb4079552273d224fd3434463b',1,'ecCodes']]],
+  ['codes_5fset_5flong',['codes_set_long',['../interfaceeccodes_1_1codes__set.html#a3c9cdc65f00b3c36742206e6e3dde864',1,'eccodes::codes_set::codes_set_long()'],['../classeccodes.html#a3c9cdc65f00b3c36742206e6e3dde864',1,'eccodes::codes_set_long()'],['../group__get__set.html#ga385881244ca6ef4be9ecee93025c862f',1,'codes_set_long(): eccodes.h'],['../namespaceec_codes.html#ae623fa09d65a3f699026a86d0e4864da',1,'ecCodes.codes_set_long()']]],
+  ['codes_5fset_5flong_5farray',['codes_set_long_array',['../interfaceeccodes_1_1codes__set.html#a5fa893fca21268a9c12d93e9d8c664e3',1,'eccodes::codes_set::codes_set_long_array()'],['../classeccodes.html#a5fa893fca21268a9c12d93e9d8c664e3',1,'eccodes::codes_set_long_array()'],['../group__get__set.html#gabb904f520644caa008034bd2be9349ec',1,'codes_set_long_array(): eccodes.h'],['../namespaceec_codes.html#a59e415f83b7f26b4575a5700ece65c14',1,'ecCodes.codes_set_long_array()']]],
+  ['codes_5fset_5fmissing',['codes_set_missing',['../classeccodes.html#aa85273eb59a545d73f7e3a48516fd5f9',1,'eccodes::codes_set_missing()'],['../namespaceec_codes.html#affddd8311b1127306fa02ce26023d89e',1,'ecCodes.codes_set_missing()']]],
+  ['codes_5fset_5freal4',['codes_set_real4',['../interfaceeccodes_1_1codes__set.html#a2614a1e015c16370ed18cc360a14663e',1,'eccodes::codes_set::codes_set_real4()'],['../classeccodes.html#a2614a1e015c16370ed18cc360a14663e',1,'eccodes::codes_set_real4()']]],
+  ['codes_5fset_5freal4_5farray',['codes_set_real4_array',['../interfaceeccodes_1_1codes__set.html#aabaefc49c8d603bcf18a627dacc38f15',1,'eccodes::codes_set::codes_set_real4_array()'],['../classeccodes.html#aabaefc49c8d603bcf18a627dacc38f15',1,'eccodes::codes_set_real4_array()']]],
+  ['codes_5fset_5freal8',['codes_set_real8',['../interfaceeccodes_1_1codes__set.html#a4b20fe82de5ba6f8355ff8a5d2725b3d',1,'eccodes::codes_set::codes_set_real8()'],['../classeccodes.html#a4b20fe82de5ba6f8355ff8a5d2725b3d',1,'eccodes::codes_set_real8()']]],
+  ['codes_5fset_5freal8_5farray',['codes_set_real8_array',['../interfaceeccodes_1_1codes__set.html#a14b3bc17ea1ee83936f32dd0fced44a4',1,'eccodes::codes_set::codes_set_real8_array()'],['../classeccodes.html#a14b3bc17ea1ee83936f32dd0fced44a4',1,'eccodes::codes_set_real8_array()']]],
+  ['codes_5fset_5fsamples_5fpath',['codes_set_samples_path',['../classeccodes.html#af4be467f3273e17111becbd483c25018',1,'eccodes::codes_set_samples_path()'],['../namespaceec_codes.html#ab7f299aaed48129491cc365a8ca289c2',1,'ecCodes.codes_set_samples_path()']]],
+  ['codes_5fset_5fstring',['codes_set_string',['../interfaceeccodes_1_1codes__set.html#a50acfd20f8dff8b4e547135057ef119a',1,'eccodes::codes_set::codes_set_string()'],['../classeccodes.html#a50acfd20f8dff8b4e547135057ef119a',1,'eccodes::codes_set_string()'],['../group__get__set.html#ga6062cdd5950966bffa72e74708f85368',1,'codes_set_string(): eccodes.h'],['../namespaceec_codes.html#acbb0d241a917a3e726792157c1f5d973',1,'ecCodes.codes_set_string()']]],
+  ['codes_5fset_5fstring_5farray',['codes_set_string_array',['../classeccodes.html#aae3ccb53638a4d16daf98d937a96e8b6',1,'eccodes::codes_set_string_array()'],['../group__get__set.html#ga6840ee00df4366a431bedcef609f8ae5',1,'codes_set_string_array(): eccodes.h']]],
+  ['codes_5fset_5fvalues',['codes_set_values',['../namespaceec_codes.html#abc699d0bb7a7dded968ee0111342ffd0',1,'ecCodes']]],
+  ['codes_5fskip_5fcoded',['codes_skip_coded',['../classeccodes.html#a56a1567687b281d07c193ce273c0e1b2',1,'eccodes::codes_skip_coded()'],['../namespaceec_codes.html#a4b7140ca0dd81372721cffd1d964e4ad',1,'ecCodes.codes_skip_coded()']]],
+  ['codes_5fskip_5fcomputed',['codes_skip_computed',['../classeccodes.html#aad63202303a1b6aaf9f5e605622a8095',1,'eccodes::codes_skip_computed()'],['../namespaceec_codes.html#a587af29aac21a816f8ffd327a1fce779',1,'ecCodes.codes_skip_computed()']]],
+  ['codes_5fskip_5fduplicates',['codes_skip_duplicates',['../classeccodes.html#a2f23dd14b726d10d92637719dda7753b',1,'eccodes::codes_skip_duplicates()'],['../namespaceec_codes.html#a57f7a5a0f6975e1357e5aa1dc4715e0c',1,'ecCodes.codes_skip_duplicates()']]],
+  ['codes_5fskip_5fedition_5fspecific',['codes_skip_edition_specific',['../namespaceec_codes.html#acb01114683ef4aacbf1609eb3a435055',1,'ecCodes']]],
+  ['codes_5fskip_5ffunction',['codes_skip_function',['../namespaceec_codes.html#a6eedc94ffbffad66b92d3fccfc1ec692',1,'ecCodes']]],
+  ['codes_5fskip_5fread_5fonly',['codes_skip_read_only',['../classeccodes.html#aa7f01fdbea67a38997eff86255397181',1,'eccodes::codes_skip_read_only()'],['../namespaceec_codes.html#afb6f25e55aab91e1cf273403c4151c70',1,'ecCodes.codes_skip_read_only()']]],
+  ['codes_5fstring_5ftoo_5fsmall',['CODES_STRING_TOO_SMALL',['../group__errors.html#ga2d577c49ec3604d481c12f1bf5539eee',1,'eccodes.h']]],
+  ['codes_5fsuccess',['CODES_SUCCESS',['../group__errors.html#ga62529e45321708e65678dfc155f1c842',1,'eccodes.h']]],
+  ['codes_5fswitch_5fno_5fmatch',['CODES_SWITCH_NO_MATCH',['../group__errors.html#ga76a9e4341bbdd4fa7aa6f19581294897',1,'eccodes.h']]],
+  ['codes_5ftoo_5fmany_5fattributes',['CODES_TOO_MANY_ATTRIBUTES',['../group__errors.html#gad4cea7d28dfa21cd2eb03594158bc3d6',1,'eccodes.h']]],
+  ['codes_5funderflow',['CODES_UNDERFLOW',['../group__errors.html#ga4fa596b35745d80ac3def70a91f12c97',1,'eccodes.h']]],
+  ['codes_5funsupported_5fedition',['CODES_UNSUPPORTED_EDITION',['../group__errors.html#ga4bc4702f061c30bd03ba48a455e1fdd0',1,'eccodes.h']]],
+  ['codes_5fvalue_5fcannot_5fbe_5fmissing',['CODES_VALUE_CANNOT_BE_MISSING',['../group__errors.html#ga5795dad885ba6527afa8c2301bf8f3a3',1,'eccodes.h']]],
+  ['codes_5fvalue_5fdifferent',['CODES_VALUE_DIFFERENT',['../group__errors.html#ga138dc954bee9af6f849c63699d6b6044',1,'eccodes.h']]],
+  ['codes_5fwrite',['codes_write',['../classeccodes.html#ad91213a6e3ee312c50dba0cdbf2bc55d',1,'eccodes::codes_write()'],['../namespaceec_codes.html#af13b3e69c2b5ad0ea6b7fd07ac37e367',1,'ecCodes.codes_write()']]],
+  ['codes_5fwrite_5fbytes',['codes_write_bytes',['../interfaceeccodes_1_1codes__write__bytes.html',1,'eccodes']]],
+  ['codes_5fwrite_5fbytes_5fchar',['codes_write_bytes_char',['../interfaceeccodes_1_1codes__write__bytes.html#acdb3a889fbd731811821d95d6126e41a',1,'eccodes::codes_write_bytes::codes_write_bytes_char()'],['../classeccodes.html#acdb3a889fbd731811821d95d6126e41a',1,'eccodes::codes_write_bytes_char()']]],
+  ['codes_5fwrite_5fbytes_5fchar_5fsize_5ft',['codes_write_bytes_char_size_t',['../interfaceeccodes_1_1codes__write__bytes.html#a02dd901fef7e6a4cb8ab50ade61e6a66',1,'eccodes::codes_write_bytes::codes_write_bytes_char_size_t()'],['../classeccodes.html#a02dd901fef7e6a4cb8ab50ade61e6a66',1,'eccodes::codes_write_bytes_char_size_t()']]],
+  ['codes_5fwrite_5fbytes_5fint4',['codes_write_bytes_int4',['../interfaceeccodes_1_1codes__write__bytes.html#abe46cbe07d6a64845bf07e21caa3ae94',1,'eccodes::codes_write_bytes::codes_write_bytes_int4()'],['../classeccodes.html#abe46cbe07d6a64845bf07e21caa3ae94',1,'eccodes::codes_write_bytes_int4()']]],
+  ['codes_5fwrite_5fbytes_5fint4_5fsize_5ft',['codes_write_bytes_int4_size_t',['../interfaceeccodes_1_1codes__write__bytes.html#a771149b4e451839ed7713540de92ce27',1,'eccodes::codes_write_bytes::codes_write_bytes_int4_size_t()'],['../classeccodes.html#a771149b4e451839ed7713540de92ce27',1,'eccodes::codes_write_bytes_int4_size_t()']]],
+  ['codes_5fwrite_5fbytes_5freal4',['codes_write_bytes_real4',['../interfaceeccodes_1_1codes__write__bytes.html#a7f69c7e70900ace352970851a4ee5267',1,'eccodes::codes_write_bytes::codes_write_bytes_real4()'],['../classeccodes.html#a7f69c7e70900ace352970851a4ee5267',1,'eccodes::codes_write_bytes_real4()']]],
+  ['codes_5fwrite_5fbytes_5freal4_5fsize_5ft',['codes_write_bytes_real4_size_t',['../interfaceeccodes_1_1codes__write__bytes.html#a7467f8b7c399f5579bd4be244de100dc',1,'eccodes::codes_write_bytes::codes_write_bytes_real4_size_t()'],['../classeccodes.html#a7467f8b7c399f5579bd4be244de100dc',1,'eccodes::codes_write_bytes_real4_size_t()']]],
+  ['codes_5fwrite_5fbytes_5freal8',['codes_write_bytes_real8',['../interfaceeccodes_1_1codes__write__bytes.html#aabda087d7f8ba266b0b9f307270f876a',1,'eccodes::codes_write_bytes::codes_write_bytes_real8()'],['../classeccodes.html#aabda087d7f8ba266b0b9f307270f876a',1,'eccodes::codes_write_bytes_real8()']]],
+  ['codes_5fwrite_5fbytes_5freal8_5fsize_5ft',['codes_write_bytes_real8_size_t',['../interfaceeccodes_1_1codes__write__bytes.html#a2d0be96a6b529f7e0b8079318a5376bb',1,'eccodes::codes_write_bytes::codes_write_bytes_real8_size_t()'],['../classeccodes.html#a2d0be96a6b529f7e0b8079318a5376bb',1,'eccodes::codes_write_bytes_real8_size_t()']]],
+  ['codes_5fwrite_5fmessage',['codes_write_message',['../group__codes__handle.html#gac82dbaba240ebf6e76cdbcf2007a6bee',1,'eccodes.h']]],
+  ['codes_5fwrong_5farray_5fsize',['CODES_WRONG_ARRAY_SIZE',['../group__errors.html#ga17496b69f982d69fc5ae83a5f5b785bf',1,'eccodes.h']]],
+  ['codes_5fwrong_5fbitmap_5fsize',['CODES_WRONG_BITMAP_SIZE',['../group__errors.html#gac049ccb7281fecb514b740bd937b6c3b',1,'eccodes.h']]],
+  ['codes_5fwrong_5fconversion',['CODES_WRONG_CONVERSION',['../group__errors.html#ga419b09c45fc88de701bd32dab76c3d83',1,'eccodes.h']]],
+  ['codes_5fwrong_5fgrid',['CODES_WRONG_GRID',['../group__errors.html#gab7fca3278f1c363103a066d1a1f83fba',1,'eccodes.h']]],
+  ['codes_5fwrong_5flength',['CODES_WRONG_LENGTH',['../group__errors.html#ga988dcc03601078149deac7e4fecbc22f',1,'eccodes.h']]],
+  ['codes_5fwrong_5fstep',['CODES_WRONG_STEP',['../group__errors.html#gadb8db78e83ccc396163068af7d71d32e',1,'eccodes.h']]],
+  ['codes_5fwrong_5fstep_5funit',['CODES_WRONG_STEP_UNIT',['../group__errors.html#ga201ef38b0482edf51e93bf94200dca96',1,'eccodes.h']]],
+  ['codes_5fwrong_5ftype',['CODES_WRONG_TYPE',['../group__errors.html#ga399f4bf77424c64dbb7e94212deffd38',1,'eccodes.h']]],
+  ['codesinternalerror',['CodesInternalError',['../classec_codes_1_1_codes_internal_error.html',1,'ecCodes']]],
+  ['c_20interface',['C interface',['../modules.html',1,'']]]
+];
diff --git a/html/search/all_65.html b/html/search/all_65.html
new file mode 100644
index 0000000..49e2cae
--- /dev/null
+++ b/html/search/all_65.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_65.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/all_65.js b/html/search/all_65.js
new file mode 100644
index 0000000..9f7990d
--- /dev/null
+++ b/html/search/all_65.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+  ['eccodes',['eccodes',['../classeccodes.html',1,'eccodes'],['../namespaceec_codes.html',1,'ecCodes']]],
+  ['eccodes_2eh',['eccodes.h',['../eccodes_8h.html',1,'']]],
+  ['environment_20variables',['Environment variables',['../group__environment.html',1,'']]],
+  ['error_20codes',['Error codes',['../group__errors.html',1,'']]],
+  ['eccodes',['ecCodes',['../index.html',1,'']]]
+];
diff --git a/html/search/all_67.html b/html/search/all_67.html
new file mode 100644
index 0000000..a6568a3
--- /dev/null
+++ b/html/search/all_67.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_67.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/all_67.js b/html/search/all_67.js
new file mode 100644
index 0000000..cb9246d
--- /dev/null
+++ b/html/search/all_67.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['grib_5fget_5fstring_5farray',['grib_get_string_array',['../namespaceec_codes.html#a86388748f15624cd8fd2ec89d066295a',1,'ecCodes']]],
+  ['grib_5fset_5fstring_5farray',['grib_set_string_array',['../namespaceec_codes.html#a2353707d7e586ce4255e3a93bc0f39d4',1,'ecCodes']]],
+  ['grib_20api_20installation',['GRIB API installation',['../installation.html',1,'']]]
+];
diff --git a/html/search/all_68.html b/html/search/all_68.html
new file mode 100644
index 0000000..a954e65
--- /dev/null
+++ b/html/search/all_68.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_68.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/all_68.js b/html/search/all_68.js
new file mode 100644
index 0000000..4489e11
--- /dev/null
+++ b/html/search/all_68.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['handling_20coded_20messages',['Handling coded messages',['../group__handling__coded__messages.html',1,'']]]
+];
diff --git a/html/search/all_69.html b/html/search/all_69.html
new file mode 100644
index 0000000..676651e
--- /dev/null
+++ b/html/search/all_69.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_69.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/all_69.js b/html/search/all_69.js
new file mode 100644
index 0000000..54c98b5
--- /dev/null
+++ b/html/search/all_69.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['iterating_20on_20latitude_2flongitude_2fvalues',['Iterating on latitude/longitude/values',['../group__iterators.html',1,'']]],
+  ['iterating_20on_20keys_20names',['Iterating on keys names',['../group__keys__iterator.html',1,'']]]
+];
diff --git a/html/search/all_74.html b/html/search/all_74.html
new file mode 100644
index 0000000..c2cd095
--- /dev/null
+++ b/html/search/all_74.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_74.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/all_74.js b/html/search/all_74.js
new file mode 100644
index 0000000..9e88231
--- /dev/null
+++ b/html/search/all_74.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['the_20message_20handle',['The message handle',['../group__codes__handle.html',1,'']]],
+  ['the_20indexing_20feature',['The indexing feature',['../group__codes__index.html',1,'']]],
+  ['the_20context_20object',['The context object',['../group__context.html',1,'']]]
+];
diff --git a/html/search/classes_63.html b/html/search/classes_63.html
new file mode 100644
index 0000000..0dccad2
--- /dev/null
+++ b/html/search/classes_63.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_63.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/classes_63.js b/html/search/classes_63.js
new file mode 100644
index 0000000..918e5f7
--- /dev/null
+++ b/html/search/classes_63.js
@@ -0,0 +1,25 @@
+var searchData=
+[
+  ['codes_5fcontext',['codes_context',['../structcodes__context.html',1,'']]],
+  ['codes_5fget',['codes_get',['../interfaceeccodes_1_1codes__get.html',1,'eccodes']]],
+  ['codes_5fget_5felement',['codes_get_element',['../interfaceeccodes_1_1codes__get__element.html',1,'eccodes']]],
+  ['codes_5fget_5fmessage_5fsize',['codes_get_message_size',['../interfaceeccodes_1_1codes__get__message__size.html',1,'eccodes']]],
+  ['codes_5fget_5fsize',['codes_get_size',['../interfaceeccodes_1_1codes__get__size.html',1,'eccodes']]],
+  ['codes_5fgrib_5ffind_5fnearest',['codes_grib_find_nearest',['../interfaceeccodes_1_1codes__grib__find__nearest.html',1,'eccodes']]],
+  ['codes_5fgrib_5fget_5fdata',['codes_grib_get_data',['../interfaceeccodes_1_1codes__grib__get__data.html',1,'eccodes']]],
+  ['codes_5fhandle',['codes_handle',['../structcodes__handle.html',1,'']]],
+  ['codes_5findex',['codes_index',['../structcodes__index.html',1,'']]],
+  ['codes_5findex_5fget',['codes_index_get',['../interfaceeccodes_1_1codes__index__get.html',1,'eccodes']]],
+  ['codes_5findex_5fget_5fsize',['codes_index_get_size',['../interfaceeccodes_1_1codes__index__get__size.html',1,'eccodes']]],
+  ['codes_5findex_5fselect',['codes_index_select',['../interfaceeccodes_1_1codes__index__select.html',1,'eccodes']]],
+  ['codes_5fiterator',['codes_iterator',['../structcodes__iterator.html',1,'']]],
+  ['codes_5fkeys_5fiterator',['codes_keys_iterator',['../structcodes__keys__iterator.html',1,'']]],
+  ['codes_5fmulti_5fhandle',['codes_multi_handle',['../structcodes__multi__handle.html',1,'']]],
+  ['codes_5fnearest',['codes_nearest',['../structcodes__nearest.html',1,'']]],
+  ['codes_5fnew_5ffrom_5fmessage',['codes_new_from_message',['../interfaceeccodes_1_1codes__new__from__message.html',1,'eccodes']]],
+  ['codes_5fread_5fbytes',['codes_read_bytes',['../interfaceeccodes_1_1codes__read__bytes.html',1,'eccodes']]],
+  ['codes_5fread_5ffrom_5ffile',['codes_read_from_file',['../interfaceeccodes_1_1codes__read__from__file.html',1,'eccodes']]],
+  ['codes_5fset',['codes_set',['../interfaceeccodes_1_1codes__set.html',1,'eccodes']]],
+  ['codes_5fwrite_5fbytes',['codes_write_bytes',['../interfaceeccodes_1_1codes__write__bytes.html',1,'eccodes']]],
+  ['codesinternalerror',['CodesInternalError',['../classec_codes_1_1_codes_internal_error.html',1,'ecCodes']]]
+];
diff --git a/html/search/classes_65.html b/html/search/classes_65.html
new file mode 100644
index 0000000..1f0d2ff
--- /dev/null
+++ b/html/search/classes_65.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_65.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/classes_65.js b/html/search/classes_65.js
new file mode 100644
index 0000000..658924c
--- /dev/null
+++ b/html/search/classes_65.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['eccodes',['eccodes',['../classeccodes.html',1,'']]]
+];
diff --git a/html/search/close.png b/html/search/close.png
new file mode 100644
index 0000000..9342d3d
Binary files /dev/null and b/html/search/close.png differ
diff --git a/html/search/files_65.html b/html/search/files_65.html
new file mode 100644
index 0000000..1ad9f69
--- /dev/null
+++ b/html/search/files_65.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_65.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/files_65.js b/html/search/files_65.js
new file mode 100644
index 0000000..d7540f6
--- /dev/null
+++ b/html/search/files_65.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['eccodes_2eh',['eccodes.h',['../eccodes_8h.html',1,'']]]
+];
diff --git a/html/search/functions_63.html b/html/search/functions_63.html
new file mode 100644
index 0000000..98924d8
--- /dev/null
+++ b/html/search/functions_63.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_63.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/functions_63.js b/html/search/functions_63.js
new file mode 100644
index 0000000..0858ee9
--- /dev/null
+++ b/html/search/functions_63.js
@@ -0,0 +1,203 @@
+var searchData=
+[
+  ['codes_5fany_5fnew_5ffrom_5ffile',['codes_any_new_from_file',['../classeccodes.html#aa468943e1c669487375b2e3d46ff84b1',1,'eccodes::codes_any_new_from_file()'],['../namespaceec_codes.html#af4a4c95465d2026ad549920b07150bab',1,'ecCodes.codes_any_new_from_file()']]],
+  ['codes_5fbufr_5fhandle_5fnew_5ffrom_5ffile',['codes_bufr_handle_new_from_file',['../group__codes__handle.html#ga6958c3cd7e4059af5c26898a872262ff',1,'eccodes.h']]],
+  ['codes_5fbufr_5fhandle_5fnew_5ffrom_5fsamples',['codes_bufr_handle_new_from_samples',['../group__codes__handle.html#ga56d0f831e520ec7bc4a0ca334c63f557',1,'eccodes.h']]],
+  ['codes_5fbufr_5fnew_5ffrom_5ffile',['codes_bufr_new_from_file',['../classeccodes.html#a94050d64954482cd82ea6f007fdc9ac0',1,'eccodes::codes_bufr_new_from_file()'],['../namespaceec_codes.html#a44c10386781390c16f1a567590b33c11',1,'ecCodes.codes_bufr_new_from_file()']]],
+  ['codes_5fbufr_5fnew_5ffrom_5fsamples',['codes_bufr_new_from_samples',['../classeccodes.html#a6d32d26f2076db60d78e1c2d222dd01d',1,'eccodes::codes_bufr_new_from_samples()'],['../namespaceec_codes.html#ae042f8fe1cc86718ce658f3b992c87a2',1,'ecCodes.codes_bufr_new_from_samples()']]],
+  ['codes_5fcheck',['codes_check',['../classeccodes.html#a1cd5ff5ea308443bfe166974d9ab1363',1,'eccodes']]],
+  ['codes_5fclone',['codes_clone',['../classeccodes.html#a94c85dbc797f98a177795ff9a8ad8035',1,'eccodes::codes_clone()'],['../namespaceec_codes.html#ab49cb36625cd87b9d898844b1df32516',1,'ecCodes.codes_clone()']]],
+  ['codes_5fclose_5ffile',['codes_close_file',['../classeccodes.html#a436a01aabf91cdbb4c5902a5d1a2886e',1,'eccodes']]],
+  ['codes_5fcontext_5fdelete',['codes_context_delete',['../group__context.html#gae6323d16b5e929f22126d0ddbf43dc7f',1,'eccodes.h']]],
+  ['codes_5fcontext_5fget_5fdefault',['codes_context_get_default',['../group__context.html#ga3c1086a1abccc58db01609611c3e706d',1,'eccodes.h']]],
+  ['codes_5fcontext_5fset_5fdefinitions_5fpath',['codes_context_set_definitions_path',['../group__context.html#ga8abf0ff0f52f1e808edf092f2e7c1147',1,'eccodes.h']]],
+  ['codes_5fcontext_5fset_5fsamples_5fpath',['codes_context_set_samples_path',['../group__context.html#ga4f2f808f560a3b744b4c904b3d1a1c48',1,'eccodes.h']]],
+  ['codes_5fcopy_5fmessage',['codes_copy_message',['../classeccodes.html#afdd32c1a78f0a3d54992e0a6a6bfc66b',1,'eccodes']]],
+  ['codes_5fcopy_5fnamespace',['codes_copy_namespace',['../classeccodes.html#a8bba3684a289b1e8c6bcea0b67c45b5d',1,'eccodes::codes_copy_namespace()'],['../group__get__set.html#gaecd9fa4b22117df7569320ddaa2431e1',1,'codes_copy_namespace(): eccodes.h'],['../namespaceec_codes.html#a6c83d2b9572083c7a83c9c5d39010b14',1,'ecCodes.codes_copy_namespace()']]],
+  ['codes_5fcount_5fin_5ffile',['codes_count_in_file',['../classeccodes.html#a0a09420f86caf79873b2fb067e360049',1,'eccodes::codes_count_in_file()'],['../group__codes__handle.html#ga4c2203d55c2c3ca792e44e4eb26edfb5',1,'codes_count_in_file(): eccodes.h'],['../namespaceec_codes.html#a5c7a1d8a2c7802edd327a35cb35984e7',1,'ecCodes.codes_count_in_file()']]],
+  ['codes_5fdump',['codes_dump',['../classeccodes.html#ab5e1ab3efc1981c886e64e467c1b84a1',1,'eccodes']]],
+  ['codes_5fdump_5faction_5ftree',['codes_dump_action_tree',['../eccodes_8h.html#a1d83df194092088785f1d794356d950d',1,'eccodes.h']]],
+  ['codes_5fdump_5fcontent',['codes_dump_content',['../eccodes_8h.html#ab9cf0dd7ede554cc4b8a56728d768d88',1,'eccodes.h']]],
+  ['codes_5fget',['codes_get',['../namespaceec_codes.html#a1ba4d3b6473499af0581cf52eb4cad0b',1,'ecCodes']]],
+  ['codes_5fget_5fapi_5fversion',['codes_get_api_version',['../eccodes_8h.html#aad3989fb11cbfce477ce7b42daa7b506',1,'codes_get_api_version(): ecCodes.py'],['../namespaceec_codes.html#add6a557c085ea401fc9529ed140025ef',1,'ecCodes.codes_get_api_version()']]],
+  ['codes_5fget_5farray',['codes_get_array',['../namespaceec_codes.html#a648bae4beadb6a82698da40e08323be9',1,'ecCodes']]],
+  ['codes_5fget_5fbyte_5farray',['codes_get_byte_array',['../interfaceeccodes_1_1codes__get.html#adee61373d840f0f6a73be5d574a47a1e',1,'eccodes::codes_get::codes_get_byte_array()'],['../classeccodes.html#adee61373d840f0f6a73be5d574a47a1e',1,'eccodes::codes_get_byte_array()']]],
+  ['codes_5fget_5fbytes',['codes_get_bytes',['../group__get__set.html#ga252c3104621144fb370f302f3a3f6755',1,'eccodes.h']]],
+  ['codes_5fget_5fdouble',['codes_get_double',['../group__get__set.html#ga93c1b612b2b70bbbff335b7d227316fc',1,'codes_get_double(): eccodes.h'],['../namespaceec_codes.html#a22a427ff4355e63b2c16c491572ea6b5',1,'ecCodes.codes_get_double()']]],
+  ['codes_5fget_5fdouble_5farray',['codes_get_double_array',['../group__get__set.html#ga82b919c3196525ec2f21a8378d4cbbf4',1,'codes_get_double_array(): eccodes.h'],['../namespaceec_codes.html#a441ff456dc9990951bf242f4d542713a',1,'ecCodes.codes_get_double_array()']]],
+  ['codes_5fget_5fdouble_5felement',['codes_get_double_element',['../group__get__set.html#ga15b9a4d8dae3002f0b4f6ef4f1cfc197',1,'codes_get_double_element(): eccodes.h'],['../namespaceec_codes.html#a3b085fe4c2ea0090a74959b396b2287f',1,'ecCodes.codes_get_double_element()']]],
+  ['codes_5fget_5fdouble_5felements',['codes_get_double_elements',['../group__get__set.html#ga853aad2cd2bea6b71b8c61fed6adfe0b',1,'codes_get_double_elements(): eccodes.h'],['../namespaceec_codes.html#af0708f169680a9b753789a3d61f7f9ef',1,'ecCodes.codes_get_double_elements()']]],
+  ['codes_5fget_5felements',['codes_get_elements',['../namespaceec_codes.html#a8558de4f563b57fe8104d024eb90e7d2',1,'ecCodes']]],
+  ['codes_5fget_5ferror_5fmessage',['codes_get_error_message',['../eccodes_8h.html#a1257b15cb014452fd6e6662db06e4ede',1,'eccodes.h']]],
+  ['codes_5fget_5ferror_5fstring',['codes_get_error_string',['../classeccodes.html#a835de867b8ad79cc43f127e7048712f3',1,'eccodes']]],
+  ['codes_5fget_5fgit_5fsha1',['codes_get_git_sha1',['../eccodes_8h.html#a82249b16ee12f2e574397f8cccaafb7a',1,'eccodes.h']]],
+  ['codes_5fget_5fgribex_5fmode',['codes_get_gribex_mode',['../group__context.html#ga13cba593f6e5b195bfc83bea419d5022',1,'eccodes.h']]],
+  ['codes_5fget_5fint',['codes_get_int',['../interfaceeccodes_1_1codes__get.html#a15e9f187ba45e4a334f270884c59651e',1,'eccodes::codes_get::codes_get_int()'],['../classeccodes.html#a15e9f187ba45e4a334f270884c59651e',1,'eccodes::codes_get_int()']]],
+  ['codes_5fget_5fint_5farray',['codes_get_int_array',['../interfaceeccodes_1_1codes__get.html#a620d907f796a466b9b849be12e96a274',1,'eccodes::codes_get::codes_get_int_array()'],['../classeccodes.html#a620d907f796a466b9b849be12e96a274',1,'eccodes::codes_get_int_array()']]],
+  ['codes_5fget_5flength',['codes_get_length',['../group__get__set.html#ga98d694dc6caa24afdd393440c94c38f8',1,'eccodes.h']]],
+  ['codes_5fget_5flong',['codes_get_long',['../interfaceeccodes_1_1codes__get.html#ad85e9d6d052fdcbfade2d201357e391d',1,'eccodes::codes_get::codes_get_long()'],['../classeccodes.html#ad85e9d6d052fdcbfade2d201357e391d',1,'eccodes::codes_get_long()'],['../group__get__set.html#ga6ff44dddc3bec09f710b0aa8d0dbded7',1,'codes_get_long(): eccodes.h'],['../namespaceec_codes.html#a88f2a86c370e490dae8e684c957022fd',1,'ecCodes.codes_get_long()']]],
+  ['codes_5fget_5flong_5farray',['codes_get_long_array',['../classeccodes.html#a0ff7f18601949da80f10d1614e0d0541',1,'eccodes::codes_get_long_array()'],['../group__get__set.html#gac43a3c0bf2561ceeb4bcc22d734b53b1',1,'codes_get_long_array(): eccodes.h'],['../namespaceec_codes.html#a680c8ecbf2104d69083c68ea6184192d',1,'ecCodes.codes_get_long_array()']]],
+  ['codes_5fget_5fmessage',['codes_get_message',['../group__handling__coded__messages.html#ga3d6f22a666e8e8dd7b33c98f2a7f3f62',1,'codes_get_message(): eccodes.h'],['../namespaceec_codes.html#a0f446397a9956ed5518ff6461fcc17f0',1,'ecCodes.codes_get_message()']]],
+  ['codes_5fget_5fmessage_5fcopy',['codes_get_message_copy',['../group__handling__coded__messages.html#ga8b2cb8c072b886de83a8e089c004a630',1,'eccodes.h']]],
+  ['codes_5fget_5fmessage_5foffset',['codes_get_message_offset',['../namespaceec_codes.html#a72cc99e87c999a3cd225323fdcddfad7',1,'ecCodes']]],
+  ['codes_5fget_5fmessage_5fsize',['codes_get_message_size',['../namespaceec_codes.html#aa1a3c2d7800aa28297e3a9a11c4f6c0f',1,'ecCodes']]],
+  ['codes_5fget_5fmessage_5fsize_5fint',['codes_get_message_size_int',['../interfaceeccodes_1_1codes__get__message__size.html#af4ff60a9bd8d0c1c0173242897db4816',1,'eccodes::codes_get_message_size::codes_get_message_size_int()'],['../classeccodes.html#af4ff60a9bd8d0c1c0173242897db4816',1,'eccodes::codes_get_message_size_int()']]],
+  ['codes_5fget_5fmessage_5fsize_5fsize_5ft',['codes_get_message_size_size_t',['../interfaceeccodes_1_1codes__get__message__size.html#a032408e4f1a842a42fca23218ec85a4d',1,'eccodes::codes_get_message_size::codes_get_message_size_size_t()'],['../classeccodes.html#a032408e4f1a842a42fca23218ec85a4d',1,'eccodes::codes_get_message_size_size_t()']]],
+  ['codes_5fget_5fnative_5ftype',['codes_get_native_type',['../namespaceec_codes.html#a1250285cb0770393bf6078f3ee3340a2',1,'ecCodes']]],
+  ['codes_5fget_5foffset',['codes_get_offset',['../group__get__set.html#gaefda2b7765e1b737bcd05a825d231a1d',1,'eccodes.h']]],
+  ['codes_5fget_5freal4',['codes_get_real4',['../interfaceeccodes_1_1codes__get.html#ab6c505dfdf5a75f51c07683abed39b68',1,'eccodes::codes_get::codes_get_real4()'],['../classeccodes.html#ab6c505dfdf5a75f51c07683abed39b68',1,'eccodes::codes_get_real4()']]],
+  ['codes_5fget_5freal4_5farray',['codes_get_real4_array',['../interfaceeccodes_1_1codes__get.html#ae1df5b7389172122fe2c84c4156f18d0',1,'eccodes::codes_get::codes_get_real4_array()'],['../classeccodes.html#ae1df5b7389172122fe2c84c4156f18d0',1,'eccodes::codes_get_real4_array()']]],
+  ['codes_5fget_5freal4_5felement',['codes_get_real4_element',['../interfaceeccodes_1_1codes__get__element.html#a95426fb251262a83fbdcc5ae86968b4b',1,'eccodes::codes_get_element::codes_get_real4_element()'],['../classeccodes.html#a95426fb251262a83fbdcc5ae86968b4b',1,'eccodes::codes_get_real4_element()']]],
+  ['codes_5fget_5freal4_5felements',['codes_get_real4_elements',['../interfaceeccodes_1_1codes__get__element.html#a0587c719213f5eb38afbb80cb30a2b8b',1,'eccodes::codes_get_element::codes_get_real4_elements()'],['../classeccodes.html#a0587c719213f5eb38afbb80cb30a2b8b',1,'eccodes::codes_get_real4_elements()']]],
+  ['codes_5fget_5freal8',['codes_get_real8',['../interfaceeccodes_1_1codes__get.html#a2ca22327e21aca686d29f8953e235839',1,'eccodes::codes_get::codes_get_real8()'],['../classeccodes.html#a2ca22327e21aca686d29f8953e235839',1,'eccodes::codes_get_real8()']]],
+  ['codes_5fget_5freal8_5farray',['codes_get_real8_array',['../interfaceeccodes_1_1codes__get.html#a4b28e570e54dad5a779e0452d3ed66d4',1,'eccodes::codes_get::codes_get_real8_array()'],['../classeccodes.html#a4b28e570e54dad5a779e0452d3ed66d4',1,'eccodes::codes_get_real8_array()']]],
+  ['codes_5fget_5freal8_5felement',['codes_get_real8_element',['../interfaceeccodes_1_1codes__get__element.html#ac9ceb83558433f918eac6aeb00b620af',1,'eccodes::codes_get_element::codes_get_real8_element()'],['../classeccodes.html#ac9ceb83558433f918eac6aeb00b620af',1,'eccodes::codes_get_real8_element()']]],
+  ['codes_5fget_5freal8_5felements',['codes_get_real8_elements',['../interfaceeccodes_1_1codes__get__element.html#a1e550ade4f5781f19718fa8bdec802f9',1,'eccodes::codes_get_element::codes_get_real8_elements()'],['../classeccodes.html#a1e550ade4f5781f19718fa8bdec802f9',1,'eccodes::codes_get_real8_elements()']]],
+  ['codes_5fget_5fsize',['codes_get_size',['../group__get__set.html#ga614d4f7a6c789a4fe60ea976b6644343',1,'codes_get_size(): eccodes.h'],['../namespaceec_codes.html#ab07293de06d6ef6c5810ea3f01723884',1,'ecCodes.codes_get_size()']]],
+  ['codes_5fget_5fsize_5fint',['codes_get_size_int',['../interfaceeccodes_1_1codes__get__size.html#ac566c4909f1ea554517d256a780cf87f',1,'eccodes::codes_get_size::codes_get_size_int()'],['../classeccodes.html#ac566c4909f1ea554517d256a780cf87f',1,'eccodes::codes_get_size_int()']]],
+  ['codes_5fget_5fsize_5flong',['codes_get_size_long',['../interfaceeccodes_1_1codes__get__size.html#accd5b68ef585873b05a3f61d7dda3f3a',1,'eccodes::codes_get_size::codes_get_size_long()'],['../classeccodes.html#accd5b68ef585873b05a3f61d7dda3f3a',1,'eccodes::codes_get_size_long()']]],
+  ['codes_5fget_5fstring',['codes_get_string',['../interfaceeccodes_1_1codes__get.html#a9b71df8830b162b7773cf4d1446b4303',1,'eccodes::codes_get::codes_get_string()'],['../classeccodes.html#a9b71df8830b162b7773cf4d1446b4303',1,'eccodes::codes_get_string()'],['../group__get__set.html#ga638d7bbe8dafd11847222a99b259f408',1,'codes_get_string(): eccodes.h'],['../namespaceec_codes.html#a37ff4cf406f9b0b0cd6ede563c1d5ab1',1,'ecCodes.codes_get_string()']]],
+  ['codes_5fget_5fstring_5farray',['codes_get_string_array',['../classeccodes.html#a731aac9d5d75917e12048573ae86e7c6',1,'eccodes']]],
+  ['codes_5fget_5fstring_5flength',['codes_get_string_length',['../namespaceec_codes.html#adc7361072916fe6ec52e9cf53f066839',1,'ecCodes']]],
+  ['codes_5fget_5fvalues',['codes_get_values',['../namespaceec_codes.html#a0af74e12fba25379db678363f5bdafb3',1,'ecCodes']]],
+  ['codes_5fgrib_5ffind_5fnearest',['codes_grib_find_nearest',['../namespaceec_codes.html#a134bac0edaf47f29051ad905a30fb63e',1,'ecCodes']]],
+  ['codes_5fgrib_5ffind_5fnearest_5ffour_5fsingle',['codes_grib_find_nearest_four_single',['../interfaceeccodes_1_1codes__grib__find__nearest.html#ad4b53c47aecc5fa5ae43c95357d2d690',1,'eccodes::codes_grib_find_nearest::codes_grib_find_nearest_four_single()'],['../classeccodes.html#ad4b53c47aecc5fa5ae43c95357d2d690',1,'eccodes::codes_grib_find_nearest_four_single()']]],
+  ['codes_5fgrib_5ffind_5fnearest_5fmultiple',['codes_grib_find_nearest_multiple',['../interfaceeccodes_1_1codes__grib__find__nearest.html#acb92b7a78966c0b2f53ee6e288bff673',1,'eccodes::codes_grib_find_nearest::codes_grib_find_nearest_multiple()'],['../classeccodes.html#acb92b7a78966c0b2f53ee6e288bff673',1,'eccodes::codes_grib_find_nearest_multiple()']]],
+  ['codes_5fgrib_5ffind_5fnearest_5fsingle',['codes_grib_find_nearest_single',['../interfaceeccodes_1_1codes__grib__find__nearest.html#a036ae036cc766718ad224851d47d99a2',1,'eccodes::codes_grib_find_nearest::codes_grib_find_nearest_single()'],['../classeccodes.html#a036ae036cc766718ad224851d47d99a2',1,'eccodes::codes_grib_find_nearest_single()']]],
+  ['codes_5fgrib_5fget_5fdata',['codes_grib_get_data',['../group__iterators.html#ga9d8fdb87efce9d49ac54853ee5871e01',1,'eccodes.h']]],
+  ['codes_5fgrib_5fget_5fdata_5freal4',['codes_grib_get_data_real4',['../interfaceeccodes_1_1codes__grib__get__data.html#a0e93200c0e6e4bdacaf1bec1e0a29ee7',1,'eccodes::codes_grib_get_data::codes_grib_get_data_real4()'],['../classeccodes.html#a0e93200c0e6e4bdacaf1bec1e0a29ee7',1,'eccodes::codes_grib_get_data_real4()']]],
+  ['codes_5fgrib_5fget_5fdata_5freal8',['codes_grib_get_data_real8',['../interfaceeccodes_1_1codes__grib__get__data.html#a043bb1e696da61d06523ad35ae16fe8c',1,'eccodes::codes_grib_get_data::codes_grib_get_data_real8()'],['../classeccodes.html#a043bb1e696da61d06523ad35ae16fe8c',1,'eccodes::codes_grib_get_data_real8()']]],
+  ['codes_5fgrib_5fhandle_5fnew_5ffrom_5ffile',['codes_grib_handle_new_from_file',['../group__codes__handle.html#ga36de77229cc3b386d26c1e7b52c21e0e',1,'eccodes.h']]],
+  ['codes_5fgrib_5fhandle_5fnew_5ffrom_5fmulti_5fmessage',['codes_grib_handle_new_from_multi_message',['../group__codes__handle.html#ga385864d5f06e1de0e8ee13388ca4117c',1,'eccodes.h']]],
+  ['codes_5fgrib_5fhandle_5fnew_5ffrom_5fsamples',['codes_grib_handle_new_from_samples',['../group__codes__handle.html#ga3b281a237e311c6b8fa4bd7096d7e025',1,'eccodes.h']]],
+  ['codes_5fgrib_5fiterator_5fdelete',['codes_grib_iterator_delete',['../group__iterators.html#ga3999693d3932a62eada0d1de5b594d2f',1,'codes_grib_iterator_delete(): eccodes.h'],['../namespaceec_codes.html#a18cdf4111053dc0c387a5fbddb0aaf30',1,'ecCodes.codes_grib_iterator_delete()']]],
+  ['codes_5fgrib_5fiterator_5fhas_5fnext',['codes_grib_iterator_has_next',['../group__iterators.html#ga97dfa89fe0ebed41b238d98bac36db8a',1,'eccodes.h']]],
+  ['codes_5fgrib_5fiterator_5fnew',['codes_grib_iterator_new',['../group__iterators.html#ga250295a1b927401bcb1e03aac032396c',1,'codes_grib_iterator_new(): eccodes.h'],['../namespaceec_codes.html#af3e5c3e1ee4d4b1e2f37862b9de92273',1,'ecCodes.codes_grib_iterator_new()']]],
+  ['codes_5fgrib_5fiterator_5fnext',['codes_grib_iterator_next',['../group__iterators.html#ga9bc83fc66d5f39ecf123d3c3e5b1fecf',1,'codes_grib_iterator_next(): eccodes.h'],['../namespaceec_codes.html#ae2bc65694ff09cdd253ef35f760ef841',1,'ecCodes.codes_grib_iterator_next()']]],
+  ['codes_5fgrib_5fiterator_5fprevious',['codes_grib_iterator_previous',['../group__iterators.html#ga93ef62613c251baa5ada3924d3c856ac',1,'eccodes.h']]],
+  ['codes_5fgrib_5fiterator_5freset',['codes_grib_iterator_reset',['../group__iterators.html#ga635320df5854ae08367fed2e5f895e2b',1,'eccodes.h']]],
+  ['codes_5fgrib_5fmulti_5fappend',['codes_grib_multi_append',['../classeccodes.html#a385aa2c504656d11812dd461819446ba',1,'eccodes::codes_grib_multi_append()'],['../namespaceec_codes.html#a956a6f84f7b418551cd6c4976c970140',1,'ecCodes.codes_grib_multi_append()']]],
+  ['codes_5fgrib_5fmulti_5fhandle_5fappend',['codes_grib_multi_handle_append',['../group__codes__handle.html#ga068715aab8b82a5d3092064b6bc27f3d',1,'eccodes.h']]],
+  ['codes_5fgrib_5fmulti_5fhandle_5fdelete',['codes_grib_multi_handle_delete',['../group__codes__handle.html#ga85a955bdd3012ce499e50768e298b849',1,'eccodes.h']]],
+  ['codes_5fgrib_5fmulti_5fhandle_5fnew',['codes_grib_multi_handle_new',['../group__codes__handle.html#ga5ff59672d9eab49c0285c8f60e379d88',1,'eccodes.h']]],
+  ['codes_5fgrib_5fmulti_5fhandle_5fwrite',['codes_grib_multi_handle_write',['../group__codes__handle.html#gac06089d897eea71d8944cc622a45737f',1,'eccodes.h']]],
+  ['codes_5fgrib_5fmulti_5fnew',['codes_grib_multi_new',['../namespaceec_codes.html#a0b1fb93a9f550c971a7e08ca16bb5100',1,'ecCodes']]],
+  ['codes_5fgrib_5fmulti_5frelease',['codes_grib_multi_release',['../namespaceec_codes.html#a1e9477394be21ac60be3d6841660c137',1,'ecCodes']]],
+  ['codes_5fgrib_5fmulti_5fsupport_5foff',['codes_grib_multi_support_off',['../classeccodes.html#ab11428b591f9ea0ae46e5116ad9e5c7f',1,'eccodes::codes_grib_multi_support_off()'],['../group__context.html#gafb670b14a995b47a9d8896fc5ca67383',1,'codes_grib_multi_support_off(): eccodes.h'],['../namespaceec_codes.html#aaec2118b6fca48e59ded7d2099e81009',1,'ecCodes.codes_grib_multi_support_off()']]],
+  ['codes_5fgrib_5fmulti_5fsupport_5fon',['codes_grib_multi_support_on',['../classeccodes.html#a69d578039c073e637d727078778ca3ef',1,'eccodes::codes_grib_multi_support_on()'],['../group__context.html#ga7775423a069b2b8b5535b5f68090b847',1,'codes_grib_multi_support_on(): eccodes.h'],['../namespaceec_codes.html#aed3ce5487d6bdd24e1127e638c9cfd54',1,'ecCodes.codes_grib_multi_support_on()']]],
+  ['codes_5fgrib_5fmulti_5fsupport_5freset_5ffile',['codes_grib_multi_support_reset_file',['../group__context.html#ga72e9dabca4fc1d1bbb4cf3e01f77c9fd',1,'eccodes.h']]],
+  ['codes_5fgrib_5fmulti_5fwrite',['codes_grib_multi_write',['../classeccodes.html#aa1ef915b62ebf910254f05cb619c0168',1,'eccodes::codes_grib_multi_write()'],['../namespaceec_codes.html#ac70e34af931428ba9a4874e0ebf75928',1,'ecCodes.codes_grib_multi_write()']]],
+  ['codes_5fgrib_5fnearest_5fdelete',['codes_grib_nearest_delete',['../group__iterators.html#ga8c3b2ed99693a097211000552876a61d',1,'eccodes.h']]],
+  ['codes_5fgrib_5fnearest_5ffind',['codes_grib_nearest_find',['../group__iterators.html#ga8c53c53033259beaf32055154f193a83',1,'eccodes.h']]],
+  ['codes_5fgrib_5fnearest_5ffind_5fmultiple',['codes_grib_nearest_find_multiple',['../group__iterators.html#ga6338ab9e3fb68c25d4fe48a8467cdbfc',1,'eccodes.h']]],
+  ['codes_5fgrib_5fnearest_5fnew',['codes_grib_nearest_new',['../group__iterators.html#ga201d49e6c835f3b6ed041147d0bf4898',1,'eccodes.h']]],
+  ['codes_5fgrib_5fnew_5ffrom_5ffile',['codes_grib_new_from_file',['../classeccodes.html#a7a21cb68f0d5058a63a4ba92a938fd27',1,'eccodes::codes_grib_new_from_file()'],['../namespaceec_codes.html#a80246f356012448955e2e75572a8d210',1,'ecCodes.codes_grib_new_from_file()']]],
+  ['codes_5fgrib_5fnew_5ffrom_5fsamples',['codes_grib_new_from_samples',['../classeccodes.html#acfc477ba642e007ec55c7e4ce2c31a9d',1,'eccodes']]],
+  ['codes_5fgribex_5fmode_5foff',['codes_gribex_mode_off',['../classeccodes.html#acb69eeef59ba780c62d7f600915aa986',1,'eccodes::codes_gribex_mode_off()'],['../group__context.html#ga810b375ccacfb6646e44b8cd0da5ee5b',1,'codes_gribex_mode_off(): eccodes.h'],['../namespaceec_codes.html#a4c5256c7e609cf3eedf7d695a4b58a45',1,'ecCodes.codes_gribex_mode_off()']]],
+  ['codes_5fgribex_5fmode_5fon',['codes_gribex_mode_on',['../classeccodes.html#aa8e36bbbe3caddac4ad7d8bcdfa3cd28',1,'eccodes::codes_gribex_mode_on()'],['../group__context.html#ga51838183704645cc11a270e5f755c30c',1,'codes_gribex_mode_on(): eccodes.h'],['../namespaceec_codes.html#aec0c4f83da942b94d51a3d8b93ecb6c4',1,'ecCodes.codes_gribex_mode_on()']]],
+  ['codes_5fgts_5fheader',['codes_gts_header',['../namespaceec_codes.html#ae71963dcd0256ccf5bd849f1f6643f38',1,'ecCodes']]],
+  ['codes_5fgts_5fheader_5foff',['codes_gts_header_off',['../group__context.html#ga5c766bc156cd1ebcf70139965a41e669',1,'eccodes.h']]],
+  ['codes_5fgts_5fheader_5fon',['codes_gts_header_on',['../group__context.html#ga504a2b1bd0d3b229c120c8285895b03a',1,'eccodes.h']]],
+  ['codes_5fgts_5fnew_5ffrom_5ffile',['codes_gts_new_from_file',['../namespaceec_codes.html#ab06cc33b116103a54fadb4e2735e579a',1,'ecCodes']]],
+  ['codes_5fhandle_5fclone',['codes_handle_clone',['../group__codes__handle.html#ga7b226527aa98d90f2bdb470105732878',1,'eccodes.h']]],
+  ['codes_5fhandle_5fdelete',['codes_handle_delete',['../group__codes__handle.html#ga358ea000ceed775e7367ccab581be978',1,'eccodes.h']]],
+  ['codes_5fhandle_5fnew_5ffrom_5ffile',['codes_handle_new_from_file',['../group__codes__handle.html#ga6ec42bd6272b4a0f2cb2b220b86c71c8',1,'eccodes.h']]],
+  ['codes_5fhandle_5fnew_5ffrom_5findex',['codes_handle_new_from_index',['../group__codes__index.html#gae1947cf7225ca1809c5491aa671d6b91',1,'eccodes.h']]],
+  ['codes_5fhandle_5fnew_5ffrom_5fmessage',['codes_handle_new_from_message',['../group__codes__handle.html#gaece49330c864391261cd6a0c10a18dc2',1,'eccodes.h']]],
+  ['codes_5fhandle_5fnew_5ffrom_5fmessage_5fcopy',['codes_handle_new_from_message_copy',['../group__codes__handle.html#ga079df0c709e381812ae13af08c354032',1,'eccodes.h']]],
+  ['codes_5findex_5fadd_5ffile',['codes_index_add_file',['../classeccodes.html#af89d3c57b15bdbd00241358a10b836a8',1,'eccodes::codes_index_add_file()'],['../group__codes__index.html#ga8fa6ca199182c48c0327e61ac98dfd00',1,'codes_index_add_file(): eccodes.h'],['../namespaceec_codes.html#a1c18ea67e5ce00500824676691b4bc4a',1,'ecCodes.codes_index_add_file()']]],
+  ['codes_5findex_5fcreate',['codes_index_create',['../classeccodes.html#a5f52ecf1abe0a68a32517fe2a0d08058',1,'eccodes']]],
+  ['codes_5findex_5fdelete',['codes_index_delete',['../group__codes__index.html#ga03643d8adf2aa7836e1848b20843b31c',1,'eccodes.h']]],
+  ['codes_5findex_5fget',['codes_index_get',['../namespaceec_codes.html#a267636dba6361f74b330275a1f8e1ed7',1,'ecCodes']]],
+  ['codes_5findex_5fget_5fdouble',['codes_index_get_double',['../group__codes__index.html#ga8a2fae0f5eeb8d708c1831bc1b9b9004',1,'codes_index_get_double(): eccodes.h'],['../namespaceec_codes.html#ab28f95174ea3e8eb760d4019598ec9e6',1,'ecCodes.codes_index_get_double()']]],
+  ['codes_5findex_5fget_5fint',['codes_index_get_int',['../interfaceeccodes_1_1codes__index__get.html#a26cf731cfda4b350500d8520ea674341',1,'eccodes::codes_index_get::codes_index_get_int()'],['../classeccodes.html#a26cf731cfda4b350500d8520ea674341',1,'eccodes::codes_index_get_int()']]],
+  ['codes_5findex_5fget_5flong',['codes_index_get_long',['../interfaceeccodes_1_1codes__index__get.html#afa9bf87d988de7eb04a9de9982e6112f',1,'eccodes::codes_index_get::codes_index_get_long()'],['../classeccodes.html#afa9bf87d988de7eb04a9de9982e6112f',1,'eccodes::codes_index_get_long()'],['../group__codes__index.html#gafb483b993d462b2f0576af70c1aa4cc7',1,'codes_index_get_long(): eccodes.h'],['../namespaceec_codes.html#aeaf2ac58b4a90bd09595986d49228d7c',1,'ecCodes.codes_index_get_long()']]],
+  ['codes_5findex_5fget_5freal8',['codes_index_get_real8',['../interfaceeccodes_1_1codes__index__get.html#aedc38b28a7a27b5e042f7a5a17c73001',1,'eccodes::codes_index_get::codes_index_get_real8()'],['../classeccodes.html#aedc38b28a7a27b5e042f7a5a17c73001',1,'eccodes::codes_index_get_real8()']]],
+  ['codes_5findex_5fget_5fsize',['codes_index_get_size',['../group__codes__index.html#gab1aa5fde30d26360349085efec936c6c',1,'codes_index_get_size(): eccodes.h'],['../namespaceec_codes.html#ab9369968f436ad85084ec1d48e9324c7',1,'ecCodes.codes_index_get_size()']]],
+  ['codes_5findex_5fget_5fsize_5fint',['codes_index_get_size_int',['../interfaceeccodes_1_1codes__index__get__size.html#aeb1c3a999e4726895a94acb9b0de518c',1,'eccodes::codes_index_get_size::codes_index_get_size_int()'],['../classeccodes.html#aeb1c3a999e4726895a94acb9b0de518c',1,'eccodes::codes_index_get_size_int()']]],
+  ['codes_5findex_5fget_5fsize_5flong',['codes_index_get_size_long',['../interfaceeccodes_1_1codes__index__get__size.html#a0d2104143f36bdfb5c7cccb9b56ae3f0',1,'eccodes::codes_index_get_size::codes_index_get_size_long()'],['../classeccodes.html#a0d2104143f36bdfb5c7cccb9b56ae3f0',1,'eccodes::codes_index_get_size_long()']]],
+  ['codes_5findex_5fget_5fstring',['codes_index_get_string',['../interfaceeccodes_1_1codes__index__get.html#ae5eb8fbe2de7d547bc92baddaf77adf1',1,'eccodes::codes_index_get::codes_index_get_string()'],['../classeccodes.html#ae5eb8fbe2de7d547bc92baddaf77adf1',1,'eccodes::codes_index_get_string()'],['../group__codes__index.html#ga86ea092af6a89b0322b873147bba523d',1,'codes_index_get_string(): eccodes.h'],['../namespaceec_codes.html#a19b8c07a5ab06944488e66ce434a615b',1,'ecCodes.codes_inde [...]
+  ['codes_5findex_5fnew',['codes_index_new',['../group__codes__index.html#ga0d7015518d426c012ba6c2b848af96d9',1,'eccodes.h']]],
+  ['codes_5findex_5fnew_5ffrom_5ffile',['codes_index_new_from_file',['../group__codes__index.html#ga42b26aa62c53cef50f0bd9e75ed88281',1,'codes_index_new_from_file(): eccodes.h'],['../namespaceec_codes.html#ae89dc44888bfbba102e6c9332839fc51',1,'ecCodes.codes_index_new_from_file()']]],
+  ['codes_5findex_5fread',['codes_index_read',['../classeccodes.html#a16dfcaea7b7c6c77794914d0570f5bc9',1,'eccodes::codes_index_read()'],['../namespaceec_codes.html#a13866152bfd07b8cd418f6cf8c73d7ab',1,'ecCodes.codes_index_read()']]],
+  ['codes_5findex_5frelease',['codes_index_release',['../classeccodes.html#a8fba1de775308d8a1f0c035c51e3a42d',1,'eccodes::codes_index_release()'],['../namespaceec_codes.html#ae5a40e31f81dd4cdddf8ddc71e833395',1,'ecCodes.codes_index_release()']]],
+  ['codes_5findex_5fselect',['codes_index_select',['../namespaceec_codes.html#a92041c59bf04e6db88395077802dfe74',1,'ecCodes']]],
+  ['codes_5findex_5fselect_5fdouble',['codes_index_select_double',['../group__codes__index.html#ga3baa4a80cd517d55f088fee7f4630fff',1,'codes_index_select_double(): eccodes.h'],['../namespaceec_codes.html#a98ef64298972c19d87f4fa54b125a268',1,'ecCodes.codes_index_select_double()']]],
+  ['codes_5findex_5fselect_5fint',['codes_index_select_int',['../interfaceeccodes_1_1codes__index__select.html#ac84dca14749c6c8f7b1b32dbcb8c8f88',1,'eccodes::codes_index_select::codes_index_select_int()'],['../classeccodes.html#ac84dca14749c6c8f7b1b32dbcb8c8f88',1,'eccodes::codes_index_select_int()']]],
+  ['codes_5findex_5fselect_5flong',['codes_index_select_long',['../interfaceeccodes_1_1codes__index__select.html#a6acd94d169fc462c5babb5d654c07612',1,'eccodes::codes_index_select::codes_index_select_long()'],['../classeccodes.html#a6acd94d169fc462c5babb5d654c07612',1,'eccodes::codes_index_select_long()'],['../group__codes__index.html#gac0a14aca2fc5385684fdba1cb668959a',1,'codes_index_select_long(): eccodes.h'],['../namespaceec_codes.html#ada63dc27281c249035da5b54e6ec0966',1,'ecCodes [...]
+  ['codes_5findex_5fselect_5freal8',['codes_index_select_real8',['../interfaceeccodes_1_1codes__index__select.html#ae1a4e9f83a13d8ce9b046f141ee990cd',1,'eccodes::codes_index_select::codes_index_select_real8()'],['../classeccodes.html#ae1a4e9f83a13d8ce9b046f141ee990cd',1,'eccodes::codes_index_select_real8()']]],
+  ['codes_5findex_5fselect_5fstring',['codes_index_select_string',['../interfaceeccodes_1_1codes__index__select.html#a500fe1c101af888362bb60a94c68085e',1,'eccodes::codes_index_select::codes_index_select_string()'],['../classeccodes.html#a500fe1c101af888362bb60a94c68085e',1,'eccodes::codes_index_select_string()'],['../group__codes__index.html#gafa8d7b29dfe42d805714db95b5ca044a',1,'codes_index_select_string(): eccodes.h'],['../namespaceec_codes.html#af9fa4123658007a2362baa9afd055063', [...]
+  ['codes_5findex_5fwrite',['codes_index_write',['../classeccodes.html#afd0c12a42f60fe16eabc8b0fca41ff05',1,'eccodes::codes_index_write()'],['../namespaceec_codes.html#a32c66888832215b2860535729ee616f8',1,'ecCodes.codes_index_write()']]],
+  ['codes_5fis_5fdefined',['codes_is_defined',['../classeccodes.html#a4aeb717b8aba0e2898a83d56363bab98',1,'eccodes::codes_is_defined()'],['../namespaceec_codes.html#adbc403f07e0bcc151d8b0fb1365492ff',1,'ecCodes.codes_is_defined()']]],
+  ['codes_5fis_5fmissing',['codes_is_missing',['../classeccodes.html#aff0e850cce3105f72b76a603e104cce4',1,'eccodes::codes_is_missing()'],['../namespaceec_codes.html#a2dd162c68a1326619a34b45e56fdb46c',1,'ecCodes.codes_is_missing()']]],
+  ['codes_5fkeys_5fiterator_5fdelete',['codes_keys_iterator_delete',['../classeccodes.html#a5d81274245d3a60ab85d657aa11512e5',1,'eccodes::codes_keys_iterator_delete()'],['../group__keys__iterator.html#gafdafe484a0e5a82732ddcbaec1e272a5',1,'codes_keys_iterator_delete(): eccodes.h'],['../namespaceec_codes.html#a83a077fb2dda1e7f1d317039fc7267d1',1,'ecCodes.codes_keys_iterator_delete()']]],
+  ['codes_5fkeys_5fiterator_5fget_5fname',['codes_keys_iterator_get_name',['../classeccodes.html#a695b7f3f87bfb465908447ce51024221',1,'eccodes::codes_keys_iterator_get_name()'],['../group__keys__iterator.html#ga1049604cb5a47359f9c7f7a42571a48b',1,'codes_keys_iterator_get_name(): eccodes.h'],['../namespaceec_codes.html#aec91e405c936c335c00267eb221c9f91',1,'ecCodes.codes_keys_iterator_get_name()']]],
+  ['codes_5fkeys_5fiterator_5fnew',['codes_keys_iterator_new',['../classeccodes.html#ae9e9bae052da5148e4a0ca85f31c69b5',1,'eccodes::codes_keys_iterator_new()'],['../group__keys__iterator.html#gad3394316cf1f3c779648fe81428adb8f',1,'codes_keys_iterator_new(): eccodes.h'],['../namespaceec_codes.html#a199fb77e1395975be732e46f93b3e337',1,'ecCodes.codes_keys_iterator_new()']]],
+  ['codes_5fkeys_5fiterator_5fnext',['codes_keys_iterator_next',['../classeccodes.html#aaaa40acb7f8e05783e106c32a541a66d',1,'eccodes::codes_keys_iterator_next()'],['../group__keys__iterator.html#ga804b63ac6be7c95aac71a9050008e409',1,'codes_keys_iterator_next(): eccodes.h'],['../namespaceec_codes.html#af2eecea5df157516fb60556cbd1283cd',1,'ecCodes.codes_keys_iterator_next()']]],
+  ['codes_5fkeys_5fiterator_5frewind',['codes_keys_iterator_rewind',['../classeccodes.html#aa6055f116c22830fc941b6db2e133d25',1,'eccodes::codes_keys_iterator_rewind()'],['../group__keys__iterator.html#ga2f611291982ea92cabc0ca70691291bf',1,'codes_keys_iterator_rewind(): eccodes.h'],['../namespaceec_codes.html#a921bb3a4c69e51a4c276bd6cf37c2d2c',1,'ecCodes.codes_keys_iterator_rewind()']]],
+  ['codes_5fmetar_5fnew_5ffrom_5ffile',['codes_metar_new_from_file',['../namespaceec_codes.html#aabd87fd89cfac4d21ec014b838174e3c',1,'ecCodes']]],
+  ['codes_5fnew_5ffrom_5ffile',['codes_new_from_file',['../classeccodes.html#a5533c6fb8bd7d8f622c89484b7bbdfb6',1,'eccodes::codes_new_from_file()'],['../namespaceec_codes.html#ab1788f3653df85dd90ac99f40daf98c4',1,'ecCodes.codes_new_from_file()']]],
+  ['codes_5fnew_5ffrom_5findex',['codes_new_from_index',['../classeccodes.html#a2852e5519e2ff8596e461986b99092d7',1,'eccodes::codes_new_from_index()'],['../namespaceec_codes.html#a6fc3995f61a5f34933afd0aeb6427bf6',1,'ecCodes.codes_new_from_index()']]],
+  ['codes_5fnew_5ffrom_5fmessage',['codes_new_from_message',['../namespaceec_codes.html#a8b42a0c20ab81efa5a214dacc0b75d58',1,'ecCodes']]],
+  ['codes_5fnew_5ffrom_5fmessage_5fchar',['codes_new_from_message_char',['../interfaceeccodes_1_1codes__new__from__message.html#a9734463b78e04c3e803acb25d3314436',1,'eccodes::codes_new_from_message::codes_new_from_message_char()'],['../classeccodes.html#a9734463b78e04c3e803acb25d3314436',1,'eccodes::codes_new_from_message_char()']]],
+  ['codes_5fnew_5ffrom_5fmessage_5fint4',['codes_new_from_message_int4',['../interfaceeccodes_1_1codes__new__from__message.html#af9d90d4940f54ecebb44acb69a59d496',1,'eccodes::codes_new_from_message::codes_new_from_message_int4()'],['../classeccodes.html#af9d90d4940f54ecebb44acb69a59d496',1,'eccodes::codes_new_from_message_int4()']]],
+  ['codes_5fnew_5ffrom_5fsamples',['codes_new_from_samples',['../namespaceec_codes.html#a643c58a9acad239c081794c74a5b86d9',1,'ecCodes']]],
+  ['codes_5fno_5ffail_5fon_5fwrong_5flength',['codes_no_fail_on_wrong_length',['../namespaceec_codes.html#a85e89c8eae4fb209ae0a7c566e4a2cb1',1,'ecCodes']]],
+  ['codes_5fopen_5ffile',['codes_open_file',['../classeccodes.html#a28594e26f2f4b92b9c60e943dd8e1be3',1,'eccodes']]],
+  ['codes_5fprint_5fapi_5fversion',['codes_print_api_version',['../eccodes_8h.html#a8be52d40a8fb51642720d0b8adf6cdce',1,'eccodes.h']]],
+  ['codes_5fread_5fbytes_5fchar',['codes_read_bytes_char',['../interfaceeccodes_1_1codes__read__bytes.html#a30dcd3a6d9d4b084f1dc9d617927b99a',1,'eccodes::codes_read_bytes::codes_read_bytes_char()'],['../classeccodes.html#a30dcd3a6d9d4b084f1dc9d617927b99a',1,'eccodes::codes_read_bytes_char()']]],
+  ['codes_5fread_5fbytes_5fchar_5fsize_5ft',['codes_read_bytes_char_size_t',['../interfaceeccodes_1_1codes__read__bytes.html#aea71591e62a4a6f42682ceb5979c0631',1,'eccodes::codes_read_bytes::codes_read_bytes_char_size_t()'],['../classeccodes.html#aea71591e62a4a6f42682ceb5979c0631',1,'eccodes::codes_read_bytes_char_size_t()']]],
+  ['codes_5fread_5fbytes_5fint4',['codes_read_bytes_int4',['../interfaceeccodes_1_1codes__read__bytes.html#a0b75e479138c6fe2b49cacef123a1c8e',1,'eccodes::codes_read_bytes::codes_read_bytes_int4()'],['../classeccodes.html#a0b75e479138c6fe2b49cacef123a1c8e',1,'eccodes::codes_read_bytes_int4()']]],
+  ['codes_5fread_5fbytes_5fint4_5fsize_5ft',['codes_read_bytes_int4_size_t',['../interfaceeccodes_1_1codes__read__bytes.html#ad1be70ac4cc7c2c5775e3bc6b607c4df',1,'eccodes::codes_read_bytes::codes_read_bytes_int4_size_t()'],['../classeccodes.html#ad1be70ac4cc7c2c5775e3bc6b607c4df',1,'eccodes::codes_read_bytes_int4_size_t()']]],
+  ['codes_5fread_5fbytes_5freal4',['codes_read_bytes_real4',['../interfaceeccodes_1_1codes__read__bytes.html#a19f70122369224f1ef3513bf7f351e86',1,'eccodes::codes_read_bytes::codes_read_bytes_real4()'],['../classeccodes.html#a19f70122369224f1ef3513bf7f351e86',1,'eccodes::codes_read_bytes_real4()']]],
+  ['codes_5fread_5fbytes_5freal4_5fsize_5ft',['codes_read_bytes_real4_size_t',['../interfaceeccodes_1_1codes__read__bytes.html#a9bac4f78f245e52303e85d2ee142d073',1,'eccodes::codes_read_bytes::codes_read_bytes_real4_size_t()'],['../classeccodes.html#a9bac4f78f245e52303e85d2ee142d073',1,'eccodes::codes_read_bytes_real4_size_t()']]],
+  ['codes_5fread_5fbytes_5freal8',['codes_read_bytes_real8',['../interfaceeccodes_1_1codes__read__bytes.html#a4e1e0bb73d3fafe62685a3f7191334e4',1,'eccodes::codes_read_bytes::codes_read_bytes_real8()'],['../classeccodes.html#a4e1e0bb73d3fafe62685a3f7191334e4',1,'eccodes::codes_read_bytes_real8()']]],
+  ['codes_5fread_5fbytes_5freal8_5fsize_5ft',['codes_read_bytes_real8_size_t',['../interfaceeccodes_1_1codes__read__bytes.html#adec76dd3ecf49b71ded2545054828c3d',1,'eccodes::codes_read_bytes::codes_read_bytes_real8_size_t()'],['../classeccodes.html#adec76dd3ecf49b71ded2545054828c3d',1,'eccodes::codes_read_bytes_real8_size_t()']]],
+  ['codes_5fread_5ffrom_5ffile_5fchar',['codes_read_from_file_char',['../interfaceeccodes_1_1codes__read__from__file.html#ab84434f52a4a41e68bf3103c392482ae',1,'eccodes::codes_read_from_file::codes_read_from_file_char()'],['../classeccodes.html#ab84434f52a4a41e68bf3103c392482ae',1,'eccodes::codes_read_from_file_char()']]],
+  ['codes_5fread_5ffrom_5ffile_5fchar_5fsize_5ft',['codes_read_from_file_char_size_t',['../interfaceeccodes_1_1codes__read__from__file.html#a9ca8b8009071657b338508a3d6709b8d',1,'eccodes::codes_read_from_file::codes_read_from_file_char_size_t()'],['../classeccodes.html#a9ca8b8009071657b338508a3d6709b8d',1,'eccodes::codes_read_from_file_char_size_t()']]],
+  ['codes_5fread_5ffrom_5ffile_5fint4',['codes_read_from_file_int4',['../interfaceeccodes_1_1codes__read__from__file.html#a7b5b61cc34b32aae4c3f2deeacbc50ae',1,'eccodes::codes_read_from_file::codes_read_from_file_int4()'],['../classeccodes.html#a7b5b61cc34b32aae4c3f2deeacbc50ae',1,'eccodes::codes_read_from_file_int4()']]],
+  ['codes_5fread_5ffrom_5ffile_5fint4_5fsize_5ft',['codes_read_from_file_int4_size_t',['../interfaceeccodes_1_1codes__read__from__file.html#aa04bacd625a2a87d7e490c0361643da3',1,'eccodes::codes_read_from_file::codes_read_from_file_int4_size_t()'],['../classeccodes.html#aa04bacd625a2a87d7e490c0361643da3',1,'eccodes::codes_read_from_file_int4_size_t()']]],
+  ['codes_5fread_5ffrom_5ffile_5freal4',['codes_read_from_file_real4',['../classeccodes.html#aa4182b2add068f538b335c8efd1a8d5f',1,'eccodes']]],
+  ['codes_5fread_5ffrom_5ffile_5freal4_5fsize_5ft',['codes_read_from_file_real4_size_t',['../classeccodes.html#ae866f7aa5270100094390b465e953975',1,'eccodes']]],
+  ['codes_5fread_5ffrom_5ffile_5freal8',['codes_read_from_file_real8',['../classeccodes.html#a2ff542236ca5d1bdeb7192c5c8eca94f',1,'eccodes']]],
+  ['codes_5fread_5ffrom_5ffile_5freal8_5fsize_5ft',['codes_read_from_file_real8_size_t',['../classeccodes.html#ab8fff9495aaf984fb909367290b45591',1,'eccodes']]],
+  ['codes_5frelease',['codes_release',['../classeccodes.html#a1c0ab28b0ae33f04d267d794a8bdd4b7',1,'eccodes::codes_release()'],['../namespaceec_codes.html#a23859e3fb8802982fe865789d61b181f',1,'ecCodes.codes_release()']]],
+  ['codes_5fset',['codes_set',['../namespaceec_codes.html#abb5cff8e4911614c8b04032fb014ea07',1,'ecCodes']]],
+  ['codes_5fset_5farray',['codes_set_array',['../namespaceec_codes.html#a1e25a749b9cffb9b4b391cde66a3333c',1,'ecCodes']]],
+  ['codes_5fset_5fbyte_5farray',['codes_set_byte_array',['../interfaceeccodes_1_1codes__set.html#a292d71c0a7252bdfded6a38aea4284be',1,'eccodes::codes_set::codes_set_byte_array()'],['../classeccodes.html#a292d71c0a7252bdfded6a38aea4284be',1,'eccodes::codes_set_byte_array()']]],
+  ['codes_5fset_5fbytes',['codes_set_bytes',['../group__get__set.html#ga7acb877bea87a39b3778c21dd8de46c2',1,'eccodes.h']]],
+  ['codes_5fset_5fdefinitions_5fpath',['codes_set_definitions_path',['../classeccodes.html#a8544407e16786d6d72df0fc3cc37ff3a',1,'eccodes::codes_set_definitions_path()'],['../namespaceec_codes.html#a63f59e45ba10997c9e30bf63ea5f66e0',1,'ecCodes.codes_set_definitions_path()']]],
+  ['codes_5fset_5fdouble',['codes_set_double',['../group__get__set.html#ga7d2d68482b903b40b91a0b334855db5f',1,'codes_set_double(): eccodes.h'],['../namespaceec_codes.html#aa619f32357c9107b5b6f96ad1fee4232',1,'ecCodes.codes_set_double()']]],
+  ['codes_5fset_5fdouble_5farray',['codes_set_double_array',['../group__get__set.html#gaff9b5bde2baf126d93f43100e5c1d3f7',1,'codes_set_double_array(): eccodes.h'],['../namespaceec_codes.html#ac18c28cc7bd146dad986e03511fb7340',1,'ecCodes.codes_set_double_array()']]],
+  ['codes_5fset_5fforce_5fdouble_5farray',['codes_set_force_double_array',['../group__get__set.html#ga5610a608f1e58996fa48c7ac8f3859a3',1,'eccodes.h']]],
+  ['codes_5fset_5fint',['codes_set_int',['../interfaceeccodes_1_1codes__set.html#ac060bb983b9e515db8ad7edd3d91ce9a',1,'eccodes::codes_set::codes_set_int()'],['../classeccodes.html#ac060bb983b9e515db8ad7edd3d91ce9a',1,'eccodes::codes_set_int()']]],
+  ['codes_5fset_5fint_5farray',['codes_set_int_array',['../interfaceeccodes_1_1codes__set.html#a18b5890c85f15d5fefeefc2b99a09ce5',1,'eccodes::codes_set::codes_set_int_array()'],['../classeccodes.html#a18b5890c85f15d5fefeefc2b99a09ce5',1,'eccodes::codes_set_int_array()']]],
+  ['codes_5fset_5fkey_5fvals',['codes_set_key_vals',['../namespaceec_codes.html#a997587cb4079552273d224fd3434463b',1,'ecCodes']]],
+  ['codes_5fset_5flong',['codes_set_long',['../interfaceeccodes_1_1codes__set.html#a3c9cdc65f00b3c36742206e6e3dde864',1,'eccodes::codes_set::codes_set_long()'],['../classeccodes.html#a3c9cdc65f00b3c36742206e6e3dde864',1,'eccodes::codes_set_long()'],['../group__get__set.html#ga385881244ca6ef4be9ecee93025c862f',1,'codes_set_long(): eccodes.h'],['../namespaceec_codes.html#ae623fa09d65a3f699026a86d0e4864da',1,'ecCodes.codes_set_long()']]],
+  ['codes_5fset_5flong_5farray',['codes_set_long_array',['../interfaceeccodes_1_1codes__set.html#a5fa893fca21268a9c12d93e9d8c664e3',1,'eccodes::codes_set::codes_set_long_array()'],['../classeccodes.html#a5fa893fca21268a9c12d93e9d8c664e3',1,'eccodes::codes_set_long_array()'],['../group__get__set.html#gabb904f520644caa008034bd2be9349ec',1,'codes_set_long_array(): eccodes.h'],['../namespaceec_codes.html#a59e415f83b7f26b4575a5700ece65c14',1,'ecCodes.codes_set_long_array()']]],
+  ['codes_5fset_5fmissing',['codes_set_missing',['../classeccodes.html#aa85273eb59a545d73f7e3a48516fd5f9',1,'eccodes::codes_set_missing()'],['../namespaceec_codes.html#affddd8311b1127306fa02ce26023d89e',1,'ecCodes.codes_set_missing()']]],
+  ['codes_5fset_5freal4',['codes_set_real4',['../interfaceeccodes_1_1codes__set.html#a2614a1e015c16370ed18cc360a14663e',1,'eccodes::codes_set::codes_set_real4()'],['../classeccodes.html#a2614a1e015c16370ed18cc360a14663e',1,'eccodes::codes_set_real4()']]],
+  ['codes_5fset_5freal4_5farray',['codes_set_real4_array',['../interfaceeccodes_1_1codes__set.html#aabaefc49c8d603bcf18a627dacc38f15',1,'eccodes::codes_set::codes_set_real4_array()'],['../classeccodes.html#aabaefc49c8d603bcf18a627dacc38f15',1,'eccodes::codes_set_real4_array()']]],
+  ['codes_5fset_5freal8',['codes_set_real8',['../interfaceeccodes_1_1codes__set.html#a4b20fe82de5ba6f8355ff8a5d2725b3d',1,'eccodes::codes_set::codes_set_real8()'],['../classeccodes.html#a4b20fe82de5ba6f8355ff8a5d2725b3d',1,'eccodes::codes_set_real8()']]],
+  ['codes_5fset_5freal8_5farray',['codes_set_real8_array',['../interfaceeccodes_1_1codes__set.html#a14b3bc17ea1ee83936f32dd0fced44a4',1,'eccodes::codes_set::codes_set_real8_array()'],['../classeccodes.html#a14b3bc17ea1ee83936f32dd0fced44a4',1,'eccodes::codes_set_real8_array()']]],
+  ['codes_5fset_5fsamples_5fpath',['codes_set_samples_path',['../classeccodes.html#af4be467f3273e17111becbd483c25018',1,'eccodes::codes_set_samples_path()'],['../namespaceec_codes.html#ab7f299aaed48129491cc365a8ca289c2',1,'ecCodes.codes_set_samples_path()']]],
+  ['codes_5fset_5fstring',['codes_set_string',['../interfaceeccodes_1_1codes__set.html#a50acfd20f8dff8b4e547135057ef119a',1,'eccodes::codes_set::codes_set_string()'],['../classeccodes.html#a50acfd20f8dff8b4e547135057ef119a',1,'eccodes::codes_set_string()'],['../group__get__set.html#ga6062cdd5950966bffa72e74708f85368',1,'codes_set_string(): eccodes.h'],['../namespaceec_codes.html#acbb0d241a917a3e726792157c1f5d973',1,'ecCodes.codes_set_string()']]],
+  ['codes_5fset_5fstring_5farray',['codes_set_string_array',['../classeccodes.html#aae3ccb53638a4d16daf98d937a96e8b6',1,'eccodes::codes_set_string_array()'],['../group__get__set.html#ga6840ee00df4366a431bedcef609f8ae5',1,'codes_set_string_array(): eccodes.h']]],
+  ['codes_5fset_5fvalues',['codes_set_values',['../namespaceec_codes.html#abc699d0bb7a7dded968ee0111342ffd0',1,'ecCodes']]],
+  ['codes_5fskip_5fcoded',['codes_skip_coded',['../classeccodes.html#a56a1567687b281d07c193ce273c0e1b2',1,'eccodes::codes_skip_coded()'],['../namespaceec_codes.html#a4b7140ca0dd81372721cffd1d964e4ad',1,'ecCodes.codes_skip_coded()']]],
+  ['codes_5fskip_5fcomputed',['codes_skip_computed',['../classeccodes.html#aad63202303a1b6aaf9f5e605622a8095',1,'eccodes::codes_skip_computed()'],['../namespaceec_codes.html#a587af29aac21a816f8ffd327a1fce779',1,'ecCodes.codes_skip_computed()']]],
+  ['codes_5fskip_5fduplicates',['codes_skip_duplicates',['../classeccodes.html#a2f23dd14b726d10d92637719dda7753b',1,'eccodes::codes_skip_duplicates()'],['../namespaceec_codes.html#a57f7a5a0f6975e1357e5aa1dc4715e0c',1,'ecCodes.codes_skip_duplicates()']]],
+  ['codes_5fskip_5fedition_5fspecific',['codes_skip_edition_specific',['../namespaceec_codes.html#acb01114683ef4aacbf1609eb3a435055',1,'ecCodes']]],
+  ['codes_5fskip_5ffunction',['codes_skip_function',['../namespaceec_codes.html#a6eedc94ffbffad66b92d3fccfc1ec692',1,'ecCodes']]],
+  ['codes_5fskip_5fread_5fonly',['codes_skip_read_only',['../classeccodes.html#aa7f01fdbea67a38997eff86255397181',1,'eccodes::codes_skip_read_only()'],['../namespaceec_codes.html#afb6f25e55aab91e1cf273403c4151c70',1,'ecCodes.codes_skip_read_only()']]],
+  ['codes_5fwrite',['codes_write',['../classeccodes.html#ad91213a6e3ee312c50dba0cdbf2bc55d',1,'eccodes::codes_write()'],['../namespaceec_codes.html#af13b3e69c2b5ad0ea6b7fd07ac37e367',1,'ecCodes.codes_write()']]],
+  ['codes_5fwrite_5fbytes_5fchar',['codes_write_bytes_char',['../interfaceeccodes_1_1codes__write__bytes.html#acdb3a889fbd731811821d95d6126e41a',1,'eccodes::codes_write_bytes::codes_write_bytes_char()'],['../classeccodes.html#acdb3a889fbd731811821d95d6126e41a',1,'eccodes::codes_write_bytes_char()']]],
+  ['codes_5fwrite_5fbytes_5fchar_5fsize_5ft',['codes_write_bytes_char_size_t',['../interfaceeccodes_1_1codes__write__bytes.html#a02dd901fef7e6a4cb8ab50ade61e6a66',1,'eccodes::codes_write_bytes::codes_write_bytes_char_size_t()'],['../classeccodes.html#a02dd901fef7e6a4cb8ab50ade61e6a66',1,'eccodes::codes_write_bytes_char_size_t()']]],
+  ['codes_5fwrite_5fbytes_5fint4',['codes_write_bytes_int4',['../interfaceeccodes_1_1codes__write__bytes.html#abe46cbe07d6a64845bf07e21caa3ae94',1,'eccodes::codes_write_bytes::codes_write_bytes_int4()'],['../classeccodes.html#abe46cbe07d6a64845bf07e21caa3ae94',1,'eccodes::codes_write_bytes_int4()']]],
+  ['codes_5fwrite_5fbytes_5fint4_5fsize_5ft',['codes_write_bytes_int4_size_t',['../interfaceeccodes_1_1codes__write__bytes.html#a771149b4e451839ed7713540de92ce27',1,'eccodes::codes_write_bytes::codes_write_bytes_int4_size_t()'],['../classeccodes.html#a771149b4e451839ed7713540de92ce27',1,'eccodes::codes_write_bytes_int4_size_t()']]],
+  ['codes_5fwrite_5fbytes_5freal4',['codes_write_bytes_real4',['../interfaceeccodes_1_1codes__write__bytes.html#a7f69c7e70900ace352970851a4ee5267',1,'eccodes::codes_write_bytes::codes_write_bytes_real4()'],['../classeccodes.html#a7f69c7e70900ace352970851a4ee5267',1,'eccodes::codes_write_bytes_real4()']]],
+  ['codes_5fwrite_5fbytes_5freal4_5fsize_5ft',['codes_write_bytes_real4_size_t',['../interfaceeccodes_1_1codes__write__bytes.html#a7467f8b7c399f5579bd4be244de100dc',1,'eccodes::codes_write_bytes::codes_write_bytes_real4_size_t()'],['../classeccodes.html#a7467f8b7c399f5579bd4be244de100dc',1,'eccodes::codes_write_bytes_real4_size_t()']]],
+  ['codes_5fwrite_5fbytes_5freal8',['codes_write_bytes_real8',['../interfaceeccodes_1_1codes__write__bytes.html#aabda087d7f8ba266b0b9f307270f876a',1,'eccodes::codes_write_bytes::codes_write_bytes_real8()'],['../classeccodes.html#aabda087d7f8ba266b0b9f307270f876a',1,'eccodes::codes_write_bytes_real8()']]],
+  ['codes_5fwrite_5fbytes_5freal8_5fsize_5ft',['codes_write_bytes_real8_size_t',['../interfaceeccodes_1_1codes__write__bytes.html#a2d0be96a6b529f7e0b8079318a5376bb',1,'eccodes::codes_write_bytes::codes_write_bytes_real8_size_t()'],['../classeccodes.html#a2d0be96a6b529f7e0b8079318a5376bb',1,'eccodes::codes_write_bytes_real8_size_t()']]],
+  ['codes_5fwrite_5fmessage',['codes_write_message',['../group__codes__handle.html#gac82dbaba240ebf6e76cdbcf2007a6bee',1,'eccodes.h']]]
+];
diff --git a/html/search/functions_67.html b/html/search/functions_67.html
new file mode 100644
index 0000000..39cc96d
--- /dev/null
+++ b/html/search/functions_67.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_67.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/functions_67.js b/html/search/functions_67.js
new file mode 100644
index 0000000..f6b6951
--- /dev/null
+++ b/html/search/functions_67.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['grib_5fget_5fstring_5farray',['grib_get_string_array',['../namespaceec_codes.html#a86388748f15624cd8fd2ec89d066295a',1,'ecCodes']]],
+  ['grib_5fset_5fstring_5farray',['grib_set_string_array',['../namespaceec_codes.html#a2353707d7e586ce4255e3a93bc0f39d4',1,'ecCodes']]]
+];
diff --git a/html/search/groups_61.html b/html/search/groups_61.html
new file mode 100644
index 0000000..8293fd2
--- /dev/null
+++ b/html/search/groups_61.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_61.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/groups_61.js b/html/search/groups_61.js
new file mode 100644
index 0000000..c66b114
--- /dev/null
+++ b/html/search/groups_61.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['accessing_20header_20and_20data_20values',['Accessing header and data values',['../group__get__set.html',1,'']]]
+];
diff --git a/html/search/groups_65.html b/html/search/groups_65.html
new file mode 100644
index 0000000..07f28ed
--- /dev/null
+++ b/html/search/groups_65.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_65.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/groups_65.js b/html/search/groups_65.js
new file mode 100644
index 0000000..d1e16cc
--- /dev/null
+++ b/html/search/groups_65.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['environment_20variables',['Environment variables',['../group__environment.html',1,'']]],
+  ['error_20codes',['Error codes',['../group__errors.html',1,'']]]
+];
diff --git a/html/search/groups_68.html b/html/search/groups_68.html
new file mode 100644
index 0000000..54dd420
--- /dev/null
+++ b/html/search/groups_68.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_68.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/groups_68.js b/html/search/groups_68.js
new file mode 100644
index 0000000..4489e11
--- /dev/null
+++ b/html/search/groups_68.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['handling_20coded_20messages',['Handling coded messages',['../group__handling__coded__messages.html',1,'']]]
+];
diff --git a/html/search/groups_69.html b/html/search/groups_69.html
new file mode 100644
index 0000000..c265ba2
--- /dev/null
+++ b/html/search/groups_69.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_69.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/groups_69.js b/html/search/groups_69.js
new file mode 100644
index 0000000..54c98b5
--- /dev/null
+++ b/html/search/groups_69.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['iterating_20on_20latitude_2flongitude_2fvalues',['Iterating on latitude/longitude/values',['../group__iterators.html',1,'']]],
+  ['iterating_20on_20keys_20names',['Iterating on keys names',['../group__keys__iterator.html',1,'']]]
+];
diff --git a/html/search/groups_74.html b/html/search/groups_74.html
new file mode 100644
index 0000000..4054bb8
--- /dev/null
+++ b/html/search/groups_74.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_74.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/groups_74.js b/html/search/groups_74.js
new file mode 100644
index 0000000..9e88231
--- /dev/null
+++ b/html/search/groups_74.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['the_20message_20handle',['The message handle',['../group__codes__handle.html',1,'']]],
+  ['the_20indexing_20feature',['The indexing feature',['../group__codes__index.html',1,'']]],
+  ['the_20context_20object',['The context object',['../group__context.html',1,'']]]
+];
diff --git a/html/search/mag_sel.png b/html/search/mag_sel.png
new file mode 100644
index 0000000..81f6040
Binary files /dev/null and b/html/search/mag_sel.png differ
diff --git a/html/search/namespaces_65.html b/html/search/namespaces_65.html
new file mode 100644
index 0000000..173999e
--- /dev/null
+++ b/html/search/namespaces_65.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="namespaces_65.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/namespaces_65.js b/html/search/namespaces_65.js
new file mode 100644
index 0000000..6cca840
--- /dev/null
+++ b/html/search/namespaces_65.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['eccodes',['ecCodes',['../namespaceec_codes.html',1,'']]]
+];
diff --git a/html/search/nomatches.html b/html/search/nomatches.html
new file mode 100644
index 0000000..b1ded27
--- /dev/null
+++ b/html/search/nomatches.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</body>
+</html>
diff --git a/html/search/pages_63.html b/html/search/pages_63.html
new file mode 100644
index 0000000..e45c15b
--- /dev/null
+++ b/html/search/pages_63.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_63.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/pages_63.js b/html/search/pages_63.js
new file mode 100644
index 0000000..66e1d86
--- /dev/null
+++ b/html/search/pages_63.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['c_20interface',['C interface',['../modules.html',1,'']]]
+];
diff --git a/html/search/pages_65.html b/html/search/pages_65.html
new file mode 100644
index 0000000..1f24e0a
--- /dev/null
+++ b/html/search/pages_65.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_65.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/pages_65.js b/html/search/pages_65.js
new file mode 100644
index 0000000..b307ab6
--- /dev/null
+++ b/html/search/pages_65.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['eccodes',['ecCodes',['../index.html',1,'']]]
+];
diff --git a/html/search/pages_67.html b/html/search/pages_67.html
new file mode 100644
index 0000000..dcb43d4
--- /dev/null
+++ b/html/search/pages_67.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.5">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_67.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/html/search/pages_67.js b/html/search/pages_67.js
new file mode 100644
index 0000000..69e45af
--- /dev/null
+++ b/html/search/pages_67.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['grib_20api_20installation',['GRIB API installation',['../installation.html',1,'']]]
+];
diff --git a/html/search/search.css b/html/search/search.css
new file mode 100644
index 0000000..4d7612f
--- /dev/null
+++ b/html/search/search.css
@@ -0,0 +1,271 @@
+/*---------------- Search Box */
+
+#FSearchBox {
+    float: left;
+}
+
+#MSearchBox {
+    white-space : nowrap;
+    position: absolute;
+    float: none;
+    display: inline;
+    margin-top: 8px;
+    right: 0px;
+    width: 170px;
+    z-index: 102;
+    background-color: white;
+}
+
+#MSearchBox .left
+{
+    display:block;
+    position:absolute;
+    left:10px;
+    width:20px;
+    height:19px;
+    background:url('search_l.png') no-repeat;
+    background-position:right;
+}
+
+#MSearchSelect {
+    display:block;
+    position:absolute;
+    width:20px;
+    height:19px;
+}
+
+.left #MSearchSelect {
+    left:4px;
+}
+
+.right #MSearchSelect {
+    right:5px;
+}
+
+#MSearchField {
+    display:block;
+    position:absolute;
+    height:19px;
+    background:url('search_m.png') repeat-x;
+    border:none;
+    width:111px;
+    margin-left:20px;
+    padding-left:4px;
+    color: #909090;
+    outline: none;
+    font: 9pt Arial, Verdana, sans-serif;
+}
+
+#FSearchBox #MSearchField {
+    margin-left:15px;
+}
+
+#MSearchBox .right {
+    display:block;
+    position:absolute;
+    right:10px;
+    top:0px;
+    width:20px;
+    height:19px;
+    background:url('search_r.png') no-repeat;
+    background-position:left;
+}
+
+#MSearchClose {
+    display: none;
+    position: absolute;
+    top: 4px;
+    background : none;
+    border: none;
+    margin: 0px 4px 0px 0px;
+    padding: 0px 0px;
+    outline: none;
+}
+
+.left #MSearchClose {
+    left: 6px;
+}
+
+.right #MSearchClose {
+    right: 2px;
+}
+
+.MSearchBoxActive #MSearchField {
+    color: #000000;
+}
+
+/*---------------- Search filter selection */
+
+#MSearchSelectWindow {
+    display: none;
+    position: absolute;
+    left: 0; top: 0;
+    border: 1px solid #90A5CE;
+    background-color: #F9FAFC;
+    z-index: 1;
+    padding-top: 4px;
+    padding-bottom: 4px;
+    -moz-border-radius: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+.SelectItem {
+    font: 8pt Arial, Verdana, sans-serif;
+    padding-left:  2px;
+    padding-right: 12px;
+    border: 0px;
+}
+
+span.SelectionMark {
+    margin-right: 4px;
+    font-family: monospace;
+    outline-style: none;
+    text-decoration: none;
+}
+
+a.SelectItem {
+    display: block;
+    outline-style: none;
+    color: #000000; 
+    text-decoration: none;
+    padding-left:   6px;
+    padding-right: 12px;
+}
+
+a.SelectItem:focus,
+a.SelectItem:active {
+    color: #000000; 
+    outline-style: none;
+    text-decoration: none;
+}
+
+a.SelectItem:hover {
+    color: #FFFFFF;
+    background-color: #3D578C;
+    outline-style: none;
+    text-decoration: none;
+    cursor: pointer;
+    display: block;
+}
+
+/*---------------- Search results window */
+
+iframe#MSearchResults {
+    width: 60ex;
+    height: 15em;
+}
+
+#MSearchResultsWindow {
+    display: none;
+    position: absolute;
+    left: 0; top: 0;
+    border: 1px solid #000;
+    background-color: #EEF1F7;
+}
+
+/* ----------------------------------- */
+
+
+#SRIndex {
+    clear:both; 
+    padding-bottom: 15px;
+}
+
+.SREntry {
+    font-size: 10pt;
+    padding-left: 1ex;
+}
+
+.SRPage .SREntry {
+    font-size: 8pt;
+    padding: 1px 5px;
+}
+
+body.SRPage {
+    margin: 5px 2px;
+}
+
+.SRChildren {
+    padding-left: 3ex; padding-bottom: .5em 
+}
+
+.SRPage .SRChildren {
+    display: none;
+}
+
+.SRSymbol {
+    font-weight: bold; 
+    color: #425E97;
+    font-family: Arial, Verdana, sans-serif;
+    text-decoration: none;
+    outline: none;
+}
+
+a.SRScope {
+    display: block;
+    color: #425E97; 
+    font-family: Arial, Verdana, sans-serif;
+    text-decoration: none;
+    outline: none;
+}
+
+a.SRSymbol:focus, a.SRSymbol:active,
+a.SRScope:focus, a.SRScope:active {
+    text-decoration: underline;
+}
+
+span.SRScope {
+    padding-left: 4px;
+}
+
+.SRPage .SRStatus {
+    padding: 2px 5px;
+    font-size: 8pt;
+    font-style: italic;
+}
+
+.SRResult {
+    display: none;
+}
+
+DIV.searchresults {
+    margin-left: 10px;
+    margin-right: 10px;
+}
+
+/*---------------- External search page results */
+
+.searchresult {
+    background-color: #F0F3F8;
+}
+
+.pages b {
+   color: white;
+   padding: 5px 5px 3px 5px;
+   background-image: url("../tab_a.png");
+   background-repeat: repeat-x;
+   text-shadow: 0 1px 1px #000000;
+}
+
+.pages {
+    line-height: 17px;
+    margin-left: 4px;
+    text-decoration: none;
+}
+
+.hl {
+    font-weight: bold;
+}
+
+#searchresults {
+    margin-bottom: 20px;
+}
+
+.searchpages {
+    margin-top: 10px;
+}
+
diff --git a/html/search/search.js b/html/search/search.js
new file mode 100644
index 0000000..f61a40a
--- /dev/null
+++ b/html/search/search.js
@@ -0,0 +1,807 @@
+// Search script generated by doxygen
+// Copyright (C) 2009 by Dimitri van Heesch.
+
+// The code in this file is loosly based on main.js, part of Natural Docs,
+// which is Copyright (C) 2003-2008 Greg Valure
+// Natural Docs is licensed under the GPL.
+
+var indexSectionsWithContent =
+{
+  0: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010111000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+  1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+  2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+  3: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+  4: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+  5: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010011000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+  6: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
+};
+
+var indexSectionNames =
+{
+  0: "all",
+  1: "classes",
+  2: "namespaces",
+  3: "files",
+  4: "functions",
+  5: "groups",
+  6: "pages"
+};
+
+function convertToId(search)
+{
+  var result = '';
+  for (i=0;i<search.length;i++)
+  {
+    var c = search.charAt(i);
+    var cn = c.charCodeAt(0);
+    if (c.match(/[a-z0-9]/))
+    {
+      result+=c;
+    }
+    else if (cn<16) 
+    {
+      result+="_0"+cn.toString(16);
+    }
+    else 
+    {
+      result+="_"+cn.toString(16);
+    }
+  }
+  return result;
+}
+
+function getXPos(item)
+{
+  var x = 0;
+  if (item.offsetWidth)
+  {
+    while (item && item!=document.body)
+    {
+      x   += item.offsetLeft;
+      item = item.offsetParent;
+    }
+  }
+  return x;
+}
+
+function getYPos(item)
+{
+  var y = 0;
+  if (item.offsetWidth)
+  {
+     while (item && item!=document.body)
+     {
+       y   += item.offsetTop;
+       item = item.offsetParent;
+     }
+  }
+  return y;
+}
+
+/* A class handling everything associated with the search panel.
+
+   Parameters:
+   name - The name of the global variable that will be 
+          storing this instance.  Is needed to be able to set timeouts.
+   resultPath - path to use for external files
+*/
+function SearchBox(name, resultsPath, inFrame, label)
+{
+  if (!name || !resultsPath) {  alert("Missing parameters to SearchBox."); }
+   
+  // ---------- Instance variables
+  this.name                  = name;
+  this.resultsPath           = resultsPath;
+  this.keyTimeout            = 0;
+  this.keyTimeoutLength      = 500;
+  this.closeSelectionTimeout = 300;
+  this.lastSearchValue       = "";
+  this.lastResultsPage       = "";
+  this.hideTimeout           = 0;
+  this.searchIndex           = 0;
+  this.searchActive          = false;
+  this.insideFrame           = inFrame;
+  this.searchLabel           = label;
+
+  // ----------- DOM Elements
+
+  this.DOMSearchField = function()
+  {  return document.getElementById("MSearchField");  }
+
+  this.DOMSearchSelect = function()
+  {  return document.getElementById("MSearchSelect");  }
+
+  this.DOMSearchSelectWindow = function()
+  {  return document.getElementById("MSearchSelectWindow");  }
+
+  this.DOMPopupSearchResults = function()
+  {  return document.getElementById("MSearchResults");  }
+
+  this.DOMPopupSearchResultsWindow = function()
+  {  return document.getElementById("MSearchResultsWindow");  }
+
+  this.DOMSearchClose = function()
+  {  return document.getElementById("MSearchClose"); }
+
+  this.DOMSearchBox = function()
+  {  return document.getElementById("MSearchBox");  }
+
+  // ------------ Event Handlers
+
+  // Called when focus is added or removed from the search field.
+  this.OnSearchFieldFocus = function(isActive)
+  {
+    this.Activate(isActive);
+  }
+
+  this.OnSearchSelectShow = function()
+  {
+    var searchSelectWindow = this.DOMSearchSelectWindow();
+    var searchField        = this.DOMSearchSelect();
+
+    if (this.insideFrame)
+    {
+      var left = getXPos(searchField);
+      var top  = getYPos(searchField);
+      left += searchField.offsetWidth + 6;
+      top += searchField.offsetHeight;
+
+      // show search selection popup
+      searchSelectWindow.style.display='block';
+      left -= searchSelectWindow.offsetWidth;
+      searchSelectWindow.style.left =  left + 'px';
+      searchSelectWindow.style.top  =  top  + 'px';
+    }
+    else
+    {
+      var left = getXPos(searchField);
+      var top  = getYPos(searchField);
+      top += searchField.offsetHeight;
+
+      // show search selection popup
+      searchSelectWindow.style.display='block';
+      searchSelectWindow.style.left =  left + 'px';
+      searchSelectWindow.style.top  =  top  + 'px';
+    }
+
+    // stop selection hide timer
+    if (this.hideTimeout) 
+    {
+      clearTimeout(this.hideTimeout);
+      this.hideTimeout=0;
+    }
+    return false; // to avoid "image drag" default event
+  }
+
+  this.OnSearchSelectHide = function()
+  {
+    this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
+                                  this.closeSelectionTimeout);
+  }
+
+  // Called when the content of the search field is changed.
+  this.OnSearchFieldChange = function(evt)
+  {
+    if (this.keyTimeout) // kill running timer
+    {
+      clearTimeout(this.keyTimeout);
+      this.keyTimeout = 0;
+    }
+
+    var e  = (evt) ? evt : window.event; // for IE
+    if (e.keyCode==40 || e.keyCode==13)
+    {
+      if (e.shiftKey==1)
+      {
+        this.OnSearchSelectShow();
+        var win=this.DOMSearchSelectWindow(); 
+        for (i=0;i<win.childNodes.length;i++)
+        {
+          var child = win.childNodes[i]; // get span within a
+          if (child.className=='SelectItem')
+          {
+            child.focus();
+            return;
+          }
+        }
+        return;
+      }
+      else if (window.frames.MSearchResults.searchResults)
+      {
+        var elem = window.frames.MSearchResults.searchResults.NavNext(0);
+        if (elem) elem.focus();
+      }
+    }
+    else if (e.keyCode==27) // Escape out of the search field
+    {
+      this.DOMSearchField().blur();
+      this.DOMPopupSearchResultsWindow().style.display = 'none';
+      this.DOMSearchClose().style.display = 'none';
+      this.lastSearchValue = '';
+      this.Activate(false);
+      return;
+    }
+
+    // strip whitespaces
+    var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+
+    if (searchValue != this.lastSearchValue) // search value has changed
+    {
+      if (searchValue != "") // non-empty search
+      {
+        // set timer for search update
+        this.keyTimeout = setTimeout(this.name + '.Search()',
+                                     this.keyTimeoutLength);
+      }
+      else // empty search field
+      {
+        this.DOMPopupSearchResultsWindow().style.display = 'none';
+        this.DOMSearchClose().style.display = 'none';
+        this.lastSearchValue = '';
+      }
+    }
+  }
+
+  this.SelectItemCount = function(id)
+  {
+    var count=0;
+    var win=this.DOMSearchSelectWindow(); 
+    for (i=0;i<win.childNodes.length;i++)
+    {
+      var child = win.childNodes[i]; // get span within a
+      if (child.className=='SelectItem')
+      {
+        count++;
+      }
+    }
+    return count;
+  }
+
+  this.SelectItemSet = function(id)
+  {
+    var i,j=0;
+    var win=this.DOMSearchSelectWindow(); 
+    for (i=0;i<win.childNodes.length;i++)
+    {
+      var child = win.childNodes[i]; // get span within a
+      if (child.className=='SelectItem')
+      {
+        var node = child.firstChild;
+        if (j==id)
+        {
+          node.innerHTML='•';
+        }
+        else
+        {
+          node.innerHTML=' ';
+        }
+        j++;
+      }
+    }
+  }
+
+  // Called when an search filter selection is made.
+  // set item with index id as the active item
+  this.OnSelectItem = function(id)
+  {
+    this.searchIndex = id;
+    this.SelectItemSet(id);
+    var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+    if (searchValue!="" && this.searchActive) // something was found -> do a search
+    {
+      this.Search();
+    }
+  }
+
+  this.OnSearchSelectKey = function(evt)
+  {
+    var e = (evt) ? evt : window.event; // for IE
+    if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
+    {
+      this.searchIndex++;
+      this.OnSelectItem(this.searchIndex);
+    }
+    else if (e.keyCode==38 && this.searchIndex>0) // Up
+    {
+      this.searchIndex--;
+      this.OnSelectItem(this.searchIndex);
+    }
+    else if (e.keyCode==13 || e.keyCode==27)
+    {
+      this.OnSelectItem(this.searchIndex);
+      this.CloseSelectionWindow();
+      this.DOMSearchField().focus();
+    }
+    return false;
+  }
+
+  // --------- Actions
+
+  // Closes the results window.
+  this.CloseResultsWindow = function()
+  {
+    this.DOMPopupSearchResultsWindow().style.display = 'none';
+    this.DOMSearchClose().style.display = 'none';
+    this.Activate(false);
+  }
+
+  this.CloseSelectionWindow = function()
+  {
+    this.DOMSearchSelectWindow().style.display = 'none';
+  }
+
+  // Performs a search.
+  this.Search = function()
+  {
+    this.keyTimeout = 0;
+
+    // strip leading whitespace
+    var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
+
+    var code = searchValue.toLowerCase().charCodeAt(0);
+    var hexCode;
+    if (code<16) 
+    {
+      hexCode="0"+code.toString(16);
+    }
+    else 
+    {
+      hexCode=code.toString(16);
+    }
+
+    var resultsPage;
+    var resultsPageWithSearch;
+    var hasResultsPage;
+
+    if (indexSectionsWithContent[this.searchIndex].charAt(code) == '1')
+    {
+       resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html';
+       resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
+       hasResultsPage = true;
+    }
+    else // nothing available for this search term
+    {
+       resultsPage = this.resultsPath + '/nomatches.html';
+       resultsPageWithSearch = resultsPage;
+       hasResultsPage = false;
+    }
+
+    window.frames.MSearchResults.location = resultsPageWithSearch;  
+    var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
+
+    if (domPopupSearchResultsWindow.style.display!='block')
+    {
+       var domSearchBox = this.DOMSearchBox();
+       this.DOMSearchClose().style.display = 'inline';
+       if (this.insideFrame)
+       {
+         var domPopupSearchResults = this.DOMPopupSearchResults();
+         domPopupSearchResultsWindow.style.position = 'relative';
+         domPopupSearchResultsWindow.style.display  = 'block';
+         var width = document.body.clientWidth - 8; // the -8 is for IE :-(
+         domPopupSearchResultsWindow.style.width    = width + 'px';
+         domPopupSearchResults.style.width          = width + 'px';
+       }
+       else
+       {
+         var domPopupSearchResults = this.DOMPopupSearchResults();
+         var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
+         var top  = getYPos(domSearchBox) + 20;  // domSearchBox.offsetHeight + 1;
+         domPopupSearchResultsWindow.style.display = 'block';
+         left -= domPopupSearchResults.offsetWidth;
+         domPopupSearchResultsWindow.style.top     = top  + 'px';
+         domPopupSearchResultsWindow.style.left    = left + 'px';
+       }
+    }
+
+    this.lastSearchValue = searchValue;
+    this.lastResultsPage = resultsPage;
+  }
+
+  // -------- Activation Functions
+
+  // Activates or deactivates the search panel, resetting things to 
+  // their default values if necessary. 
+  this.Activate = function(isActive)
+  {
+    if (isActive || // open it
+        this.DOMPopupSearchResultsWindow().style.display == 'block' 
+       )
+    {
+      this.DOMSearchBox().className = 'MSearchBoxActive';
+
+      var searchField = this.DOMSearchField();
+
+      if (searchField.value == this.searchLabel) // clear "Search" term upon entry
+      {  
+        searchField.value = '';  
+        this.searchActive = true;
+      }
+    }
+    else if (!isActive) // directly remove the panel
+    {
+      this.DOMSearchBox().className = 'MSearchBoxInactive';
+      this.DOMSearchField().value   = this.searchLabel;
+      this.searchActive             = false;
+      this.lastSearchValue          = ''
+      this.lastResultsPage          = '';
+    }
+  }
+}
+
+// -----------------------------------------------------------------------
+
+// The class that handles everything on the search results page.
+function SearchResults(name)
+{
+    // The number of matches from the last run of <Search()>.
+    this.lastMatchCount = 0;
+    this.lastKey = 0;
+    this.repeatOn = false;
+
+    // Toggles the visibility of the passed element ID.
+    this.FindChildElement = function(id)
+    {
+      var parentElement = document.getElementById(id);
+      var element = parentElement.firstChild;
+
+      while (element && element!=parentElement)
+      {
+        if (element.nodeName == 'DIV' && element.className == 'SRChildren')
+        {
+          return element;
+        }
+
+        if (element.nodeName == 'DIV' && element.hasChildNodes())
+        {  
+           element = element.firstChild;  
+        }
+        else if (element.nextSibling)
+        {  
+           element = element.nextSibling;  
+        }
+        else
+        {
+          do
+          {
+            element = element.parentNode;
+          }
+          while (element && element!=parentElement && !element.nextSibling);
+
+          if (element && element!=parentElement)
+          {  
+            element = element.nextSibling;  
+          }
+        }
+      }
+    }
+
+    this.Toggle = function(id)
+    {
+      var element = this.FindChildElement(id);
+      if (element)
+      {
+        if (element.style.display == 'block')
+        {
+          element.style.display = 'none';
+        }
+        else
+        {
+          element.style.display = 'block';
+        }
+      }
+    }
+
+    // Searches for the passed string.  If there is no parameter,
+    // it takes it from the URL query.
+    //
+    // Always returns true, since other documents may try to call it
+    // and that may or may not be possible.
+    this.Search = function(search)
+    {
+      if (!search) // get search word from URL
+      {
+        search = window.location.search;
+        search = search.substring(1);  // Remove the leading '?'
+        search = unescape(search);
+      }
+
+      search = search.replace(/^ +/, ""); // strip leading spaces
+      search = search.replace(/ +$/, ""); // strip trailing spaces
+      search = search.toLowerCase();
+      search = convertToId(search);
+
+      var resultRows = document.getElementsByTagName("div");
+      var matches = 0;
+
+      var i = 0;
+      while (i < resultRows.length)
+      {
+        var row = resultRows.item(i);
+        if (row.className == "SRResult")
+        {
+          var rowMatchName = row.id.toLowerCase();
+          rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
+
+          if (search.length<=rowMatchName.length && 
+             rowMatchName.substr(0, search.length)==search)
+          {
+            row.style.display = 'block';
+            matches++;
+          }
+          else
+          {
+            row.style.display = 'none';
+          }
+        }
+        i++;
+      }
+      document.getElementById("Searching").style.display='none';
+      if (matches == 0) // no results
+      {
+        document.getElementById("NoMatches").style.display='block';
+      }
+      else // at least one result
+      {
+        document.getElementById("NoMatches").style.display='none';
+      }
+      this.lastMatchCount = matches;
+      return true;
+    }
+
+    // return the first item with index index or higher that is visible
+    this.NavNext = function(index)
+    {
+      var focusItem;
+      while (1)
+      {
+        var focusName = 'Item'+index;
+        focusItem = document.getElementById(focusName);
+        if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
+        {
+          break;
+        }
+        else if (!focusItem) // last element
+        {
+          break;
+        }
+        focusItem=null;
+        index++;
+      }
+      return focusItem;
+    }
+
+    this.NavPrev = function(index)
+    {
+      var focusItem;
+      while (1)
+      {
+        var focusName = 'Item'+index;
+        focusItem = document.getElementById(focusName);
+        if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
+        {
+          break;
+        }
+        else if (!focusItem) // last element
+        {
+          break;
+        }
+        focusItem=null;
+        index--;
+      }
+      return focusItem;
+    }
+
+    this.ProcessKeys = function(e)
+    {
+      if (e.type == "keydown") 
+      {
+        this.repeatOn = false;
+        this.lastKey = e.keyCode;
+      }
+      else if (e.type == "keypress")
+      {
+        if (!this.repeatOn)
+        {
+          if (this.lastKey) this.repeatOn = true;
+          return false; // ignore first keypress after keydown
+        }
+      }
+      else if (e.type == "keyup")
+      {
+        this.lastKey = 0;
+        this.repeatOn = false;
+      }
+      return this.lastKey!=0;
+    }
+
+    this.Nav = function(evt,itemIndex) 
+    {
+      var e  = (evt) ? evt : window.event; // for IE
+      if (e.keyCode==13) return true;
+      if (!this.ProcessKeys(e)) return false;
+
+      if (this.lastKey==38) // Up
+      {
+        var newIndex = itemIndex-1;
+        var focusItem = this.NavPrev(newIndex);
+        if (focusItem)
+        {
+          var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
+          if (child && child.style.display == 'block') // children visible
+          { 
+            var n=0;
+            var tmpElem;
+            while (1) // search for last child
+            {
+              tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
+              if (tmpElem)
+              {
+                focusItem = tmpElem;
+              }
+              else // found it!
+              {
+                break;
+              }
+              n++;
+            }
+          }
+        }
+        if (focusItem)
+        {
+          focusItem.focus();
+        }
+        else // return focus to search field
+        {
+           parent.document.getElementById("MSearchField").focus();
+        }
+      }
+      else if (this.lastKey==40) // Down
+      {
+        var newIndex = itemIndex+1;
+        var focusItem;
+        var item = document.getElementById('Item'+itemIndex);
+        var elem = this.FindChildElement(item.parentNode.parentNode.id);
+        if (elem && elem.style.display == 'block') // children visible
+        {
+          focusItem = document.getElementById('Item'+itemIndex+'_c0');
+        }
+        if (!focusItem) focusItem = this.NavNext(newIndex);
+        if (focusItem)  focusItem.focus();
+      }
+      else if (this.lastKey==39) // Right
+      {
+        var item = document.getElementById('Item'+itemIndex);
+        var elem = this.FindChildElement(item.parentNode.parentNode.id);
+        if (elem) elem.style.display = 'block';
+      }
+      else if (this.lastKey==37) // Left
+      {
+        var item = document.getElementById('Item'+itemIndex);
+        var elem = this.FindChildElement(item.parentNode.parentNode.id);
+        if (elem) elem.style.display = 'none';
+      }
+      else if (this.lastKey==27) // Escape
+      {
+        parent.searchBox.CloseResultsWindow();
+        parent.document.getElementById("MSearchField").focus();
+      }
+      else if (this.lastKey==13) // Enter
+      {
+        return true;
+      }
+      return false;
+    }
+
+    this.NavChild = function(evt,itemIndex,childIndex)
+    {
+      var e  = (evt) ? evt : window.event; // for IE
+      if (e.keyCode==13) return true;
+      if (!this.ProcessKeys(e)) return false;
+
+      if (this.lastKey==38) // Up
+      {
+        if (childIndex>0)
+        {
+          var newIndex = childIndex-1;
+          document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
+        }
+        else // already at first child, jump to parent
+        {
+          document.getElementById('Item'+itemIndex).focus();
+        }
+      }
+      else if (this.lastKey==40) // Down
+      {
+        var newIndex = childIndex+1;
+        var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
+        if (!elem) // last child, jump to parent next parent
+        {
+          elem = this.NavNext(itemIndex+1);
+        }
+        if (elem)
+        {
+          elem.focus();
+        } 
+      }
+      else if (this.lastKey==27) // Escape
+      {
+        parent.searchBox.CloseResultsWindow();
+        parent.document.getElementById("MSearchField").focus();
+      }
+      else if (this.lastKey==13) // Enter
+      {
+        return true;
+      }
+      return false;
+    }
+}
+
+function setKeyActions(elem,action)
+{
+  elem.setAttribute('onkeydown',action);
+  elem.setAttribute('onkeypress',action);
+  elem.setAttribute('onkeyup',action);
+}
+
+function setClassAttr(elem,attr)
+{
+  elem.setAttribute('class',attr);
+  elem.setAttribute('className',attr);
+}
+
+function createResults()
+{
+  var results = document.getElementById("SRResults");
+  for (var e=0; e<searchData.length; e++)
+  {
+    var id = searchData[e][0];
+    var srResult = document.createElement('div');
+    srResult.setAttribute('id','SR_'+id);
+    setClassAttr(srResult,'SRResult');
+    var srEntry = document.createElement('div');
+    setClassAttr(srEntry,'SREntry');
+    var srLink = document.createElement('a');
+    srLink.setAttribute('id','Item'+e);
+    setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
+    setClassAttr(srLink,'SRSymbol');
+    srLink.innerHTML = searchData[e][1][0];
+    srEntry.appendChild(srLink);
+    if (searchData[e][1].length==2) // single result
+    {
+      srLink.setAttribute('href',searchData[e][1][1][0]);
+      if (searchData[e][1][1][1])
+      {
+       srLink.setAttribute('target','_parent');
+      }
+      var srScope = document.createElement('span');
+      setClassAttr(srScope,'SRScope');
+      srScope.innerHTML = searchData[e][1][1][2];
+      srEntry.appendChild(srScope);
+    }
+    else // multiple results
+    {
+      srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
+      var srChildren = document.createElement('div');
+      setClassAttr(srChildren,'SRChildren');
+      for (var c=0; c<searchData[e][1].length-1; c++)
+      {
+        var srChild = document.createElement('a');
+        srChild.setAttribute('id','Item'+e+'_c'+c);
+        setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
+        setClassAttr(srChild,'SRScope');
+        srChild.setAttribute('href',searchData[e][1][c+1][0]);
+        if (searchData[e][1][c+1][1])
+        {
+         srChild.setAttribute('target','_parent');
+        }
+        srChild.innerHTML = searchData[e][1][c+1][2];
+        srChildren.appendChild(srChild);
+      }
+      srEntry.appendChild(srChildren);
+    }
+    srResult.appendChild(srEntry);
+    results.appendChild(srResult);
+  }
+}
+
diff --git a/html/search/search_l.png b/html/search/search_l.png
new file mode 100644
index 0000000..c872f4d
Binary files /dev/null and b/html/search/search_l.png differ
diff --git a/html/search/search_m.png b/html/search/search_m.png
new file mode 100644
index 0000000..b429a16
Binary files /dev/null and b/html/search/search_m.png differ
diff --git a/html/search/search_r.png b/html/search/search_r.png
new file mode 100644
index 0000000..97ee8b4
Binary files /dev/null and b/html/search/search_r.png differ
diff --git a/html/set_8c-example.html b/html/set_8c-example.html
deleted file mode 100644
index 3ec5e10..0000000
--- a/html/set_8c-example.html
+++ /dev/null
@@ -1,100 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: set.c</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>set.c</h1>set.c How to set values through the key names.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
-<a name="l00010"></a>00010 <span class="comment">/*</span>
-<a name="l00011"></a>00011 <span class="comment"> * C Implementation: set</span>
-<a name="l00012"></a>00012 <span class="comment"> *</span>
-<a name="l00013"></a>00013 <span class="comment"> * Description: how to set key values.</span>
-<a name="l00014"></a>00014 <span class="comment"> *</span>
-<a name="l00015"></a>00015 <span class="comment"> *</span>
-<a name="l00016"></a>00016 <span class="comment"> * Author: Enrico Fucile</span>
-<a name="l00017"></a>00017 <span class="comment"> *</span>
-<a name="l00018"></a>00018 <span class="comment"> *</span>
-<a name="l00019"></a>00019 <span class="comment"> */</span>
-<a name="l00020"></a>00020 <span class="preprocessor">#include <stdio.h></span>
-<a name="l00021"></a>00021 <span class="preprocessor">#include <stdlib.h></span>
-<a name="l00022"></a>00022 
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="grib__api_8h.html" title="Copyright 2005-2016 ECMWF.">grib_api.h</a>"</span>
-<a name="l00024"></a>00024 
-<a name="l00025"></a>00025 <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {
-<a name="l00026"></a>00026   <span class="keywordtype">int</span> err = 0;
-<a name="l00027"></a>00027   <span class="keywordtype">long</span> centre=80;
-<a name="l00028"></a>00028   <span class="keywordtype">long</span> long_value=0;
-<a name="l00029"></a>00029   <span class="keywordtype">char</span> string_value[100];
-<a name="l00030"></a>00030   <span class="keywordtype">size_t</span> len = <span class="keyword">sizeof</span>(string_value)/<span class="keyword">sizeof</span>(<span class="keywordtype">char</span>);
-<a name="l00031"></a>00031   <span class="keywordtype">size_t</span> size=0;
-<a name="l00032"></a>00032 
-<a name="l00033"></a>00033   FILE* in = NULL;
-<a name="l00034"></a>00034   <span class="keywordtype">char</span>* infile = <span class="stringliteral">"../../data/regular_latlon_surface.grib1"</span>;
-<a name="l00035"></a>00035   FILE* out = NULL;
-<a name="l00036"></a>00036   <span class="keywordtype">char</span>* outfile = <span class="stringliteral">"out.grib1"</span>;
-<a name="l00037"></a>00037   <a name="a0"></a><a class="code" href="group__grib__handle.html#g309a5ee24f4c730646d3f80ad0ef5f1b">grib_handle</a> *h = NULL;
-<a name="l00038"></a>00038   <span class="keyword">const</span> <span class="keywordtype">void</span>* buffer = NULL;
-<a name="l00039"></a>00039 
-<a name="l00040"></a>00040   in = fopen(infile,<span class="stringliteral">"r"</span>);
-<a name="l00041"></a>00041   <span class="keywordflow">if</span>(!in) {
-<a name="l00042"></a>00042     printf(<span class="stringliteral">"ERROR: unable to open file %s\n"</span>,infile);
-<a name="l00043"></a>00043     <span class="keywordflow">return</span> 1;
-<a name="l00044"></a>00044   }
-<a name="l00045"></a>00045 
-<a name="l00046"></a>00046   out = fopen(outfile,<span class="stringliteral">"w"</span>);
-<a name="l00047"></a>00047   <span class="keywordflow">if</span>(!in) {
-<a name="l00048"></a>00048     printf(<span class="stringliteral">"ERROR: unable to open file %s\n"</span>,outfile);
-<a name="l00049"></a>00049     <span class="keywordflow">return</span> 1;
-<a name="l00050"></a>00050   }
-<a name="l00051"></a>00051 
-<a name="l00052"></a>00052   <span class="comment">/* create a new handle from a message in a file */</span>
-<a name="l00053"></a>00053   h = <a name="a1"></a><a class="code" href="group__grib__handle.html#g5e24f8499aa7e4178ccc25a5de3145c5" title="Create a handle from a file resource.">grib_handle_new_from_file</a>(0,in,&err);
-<a name="l00054"></a>00054   <span class="keywordflow">if</span> (h == NULL) {
-<a name="l00055"></a>00055     printf(<span class="stringliteral">"Error: unable to create handle from file %s\n"</span>,infile);
-<a name="l00056"></a>00056   }
-<a name="l00057"></a>00057 
-<a name="l00058"></a>00058   <span class="comment">/* set centre as a long */</span>
-<a name="l00059"></a>00059   GRIB_CHECK(<a name="a2"></a><a class="code" href="group__get__set.html#g94c33cfe90c3aa887fb8e14f0bd87fe2" title="Set a long value from a key.">grib_set_long</a>(h,<span class="stringliteral">"centre"</span>,centre),0);
-<a name="l00060"></a>00060 
-<a name="l00061"></a>00061   <span class="comment">/* get centre as a long */</span>
-<a name="l00062"></a>00062   GRIB_CHECK(<a name="a3"></a><a class="code" href="group__get__set.html#g03cfa6762312face1a3cc3ef23e16526" title="Get a long value from a key, if several keys of the same name are present, the last...">grib_get_long</a>(h,<span class="stringliteral">"centre"</span>,&long_value),0);
-<a name="l00063"></a>00063   printf(<span class="stringliteral">"centre long value=%ld\n"</span>,long_value);
-<a name="l00064"></a>00064 
-<a name="l00065"></a>00065   <span class="comment">/* get centre as a string */</span>
-<a name="l00066"></a>00066   GRIB_CHECK(<a name="a4"></a><a class="code" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053" title="Get a string value from a key, if several keys of the same name are present, the...">grib_get_string</a>(h,<span class="stringliteral">"centre"</span>,string_value,&len),0);
-<a name="l00067"></a>00067   printf(<span class="stringliteral">"centre string value=%s\n"</span>,string_value);
-<a name="l00068"></a>00068 
-<a name="l00069"></a>00069   <span class="comment">/* get the coded message in a buffer */</span>
-<a name="l00070"></a>00070   GRIB_CHECK(<a name="a5"></a><a class="code" href="group__handling__coded__messages.html#g9d654bd4fc5f422c161edd0a140ea185" title="getting the message attached to a handle">grib_get_message</a>(h,&buffer,&size),0);
-<a name="l00071"></a>00071 
-<a name="l00072"></a>00072   <span class="comment">/* write the buffer in a file*/</span>
-<a name="l00073"></a>00073   <span class="keywordflow">if</span>(fwrite(buffer,1,size,out) != size) 
-<a name="l00074"></a>00074   {
-<a name="l00075"></a>00075      perror(argv[1]);
-<a name="l00076"></a>00076      exit(1);
-<a name="l00077"></a>00077   }
-<a name="l00078"></a>00078 
-<a name="l00079"></a>00079   <span class="comment">/* delete handle */</span>
-<a name="l00080"></a>00080   <a name="a6"></a><a class="code" href="group__grib__handle.html#g0e4b2585f22247c49b930c1579257677" title="Frees a handle, also frees the message if it is not a user message.">grib_handle_delete</a>(h);
-<a name="l00081"></a>00081 
-<a name="l00082"></a>00082   fclose(in);
-<a name="l00083"></a>00083   fclose(out);
-<a name="l00084"></a>00084 
-<a name="l00085"></a>00085   <span class="keywordflow">return</span> 0;
-<a name="l00086"></a>00086 }
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/set_8f90-example.html b/html/set_8f90-example.html
deleted file mode 100644
index 0a93ce9..0000000
--- a/html/set_8f90-example.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: set.f90</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>set.f90</h1>How to set values through the key names.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 ! 
-<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 !
-<a name="l00008"></a>00008 !
-<a name="l00009"></a>00009 !  Description: how to <span class="keyword">set</span> key values.
-<a name="l00010"></a>00010 !
-<a name="l00011"></a>00011 !
-<a name="l00012"></a>00012 !  Author: Anne Fouilloux                            
-<a name="l00013"></a>00013 !
-<a name="l00014"></a>00014 !
-<a name="l00015"></a>00015 program <span class="keyword">set</span>
-<a name="l00016"></a>00016   use grib_api
-<a name="l00017"></a>00017   implicit none
-<a name="l00018"></a>00018   integer(kind = 4)    :: centre, date
-<a name="l00019"></a>00019   integer              :: infile,outfile
-<a name="l00020"></a>00020   integer              :: igrib
-<a name="l00021"></a>00021 
-<a name="l00022"></a>00022 
-<a name="l00023"></a>00023   centre = 80
-<a name="l00024"></a>00024   call current_date(date)
-<a name="l00025"></a>00025   call grib_open_file(infile, &
-<a name="l00026"></a>00026        '../../data/regular_latlon_surface_constant.grib1','r')
-<a name="l00027"></a>00027 
-<a name="l00028"></a>00028   call grib_open_file(outfile, &
-<a name="l00029"></a>00029        'out.grib1','w')
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031   !     a new grib message is loaded from file
-<a name="l00032"></a>00032   !     igrib is the grib id to be used in subsequent calls
-<a name="l00033"></a>00033   call grib_new_from_file(infile,igrib)
-<a name="l00034"></a>00034 
-<a name="l00035"></a>00035   call grib_set(igrib,'date',date)
-<a name="l00036"></a>00036   !     set centre as a integer */
-<a name="l00037"></a>00037   call grib_set(igrib,'centre',centre)
-<a name="l00038"></a>00038 
-<a name="l00039"></a>00039 ! check if it is correct in the actual GRIB message
-<a name="l00040"></a>00040 
-<a name="l00041"></a>00041   call check_settings(igrib)
-<a name="l00042"></a>00042 
-<a name="l00043"></a>00043   !     write modified message to a file
-<a name="l00044"></a>00044   call grib_write(igrib,outfile)
-<a name="l00045"></a>00045 
-<a name="l00046"></a>00046   call grib_release(igrib)
-<a name="l00047"></a>00047 
-<a name="l00048"></a>00048   call grib_close_file(infile)
-<a name="l00049"></a>00049 
-<a name="l00050"></a>00050   call grib_close_file(outfile)
-<a name="l00051"></a>00051 
-<a name="l00052"></a>00052 contains
-<a name="l00053"></a>00053 
-<a name="l00054"></a>00054 !======================================
-<a name="l00055"></a>00055 subroutine current_date(date)
-<a name="l00056"></a>00056 integer, intent(out) :: date
-<a name="l00057"></a>00057 
-<a name="l00058"></a>00058 integer              :: val_date(8)
-<a name="l00059"></a>00059 call date_and_time ( values = val_date)
-<a name="l00060"></a>00060 
-<a name="l00061"></a>00061 date = val_date(1)* 10000 + val_date(2)*100 + val_date(3) 
-<a name="l00062"></a>00062 end subroutine current_date
-<a name="l00063"></a>00063 !======================================
-<a name="l00064"></a>00064 subroutine check_settings(gribid)
-<a name="l00065"></a>00065   use grib_api
-<a name="l00066"></a>00066   implicit none
-<a name="l00067"></a>00067   integer, intent(in) :: gribid
-<a name="l00068"></a>00068   
-<a name="l00069"></a>00069   integer(kind = 4)    :: int_value
-<a name="l00070"></a>00070   character(len = 10)  :: string_value
-<a name="l00071"></a>00071 
-<a name="l00072"></a>00072   !     get centre as a integer
-<a name="l00073"></a>00073   call grib_get(gribid,'centre',int_value)
-<a name="l00074"></a>00074   write(*,*) <span class="stringliteral">"get centre as a integer - centre = "</span>,int_value
-<a name="l00075"></a>00075   
-<a name="l00076"></a>00076   !     get centre as a string
-<a name="l00077"></a>00077   call grib_get(gribid,'centre',string_value)
-<a name="l00078"></a>00078   write(*,*) <span class="stringliteral">"get centre as a string  - centre = "</span>,string_value
-<a name="l00079"></a>00079   
-<a name="l00080"></a>00080   !     get date as a string
-<a name="l00081"></a>00081   call grib_get(gribid,'dataDate',string_value)
-<a name="l00082"></a>00082   write(*,*) <span class="stringliteral">"get date as a string    - date = "</span>,string_value
-<a name="l00083"></a>00083   
-<a name="l00084"></a>00084 end subroutine check_settings
-<a name="l00085"></a>00085 end program set
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/set__bitmap_8f90-example.html b/html/set__bitmap_8f90-example.html
deleted file mode 100644
index a723bc7..0000000
--- a/html/set__bitmap_8f90-example.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: set_bitmap.f90</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>set_bitmap.f90</h1>How to set and use a bitmap.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 ! 
-<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 !
-<a name="l00008"></a>00008 !
-<a name="l00009"></a>00009 !  Description: how to <span class="keyword">set</span> a bitmap in a grib message 
-<a name="l00010"></a>00010 !
-<a name="l00011"></a>00011 !
-<a name="l00012"></a>00012 !  Author: Enrico Fucile 
-<a name="l00013"></a>00013 !
-<a name="l00014"></a>00014 !
-<a name="l00015"></a>00015 program set_bitmap
-<a name="l00016"></a>00016   use grib_api
-<a name="l00017"></a>00017   implicit none
-<a name="l00018"></a>00018   integer                         :: infile,outfile
-<a name="l00019"></a>00019   integer                         :: igrib, iret
-<a name="l00020"></a>00020   integer                         :: numberOfValues
-<a name="l00021"></a>00021   real, dimension(:), allocatable :: values
-<a name="l00022"></a>00022   real                            :: missingValue
-<a name="l00023"></a>00023   logical                         :: grib1Example
-<a name="l00024"></a>00024 
-<a name="l00025"></a>00025   grib1Example=.true.
-<a name="l00026"></a>00026 
-<a name="l00027"></a>00027   <span class="keywordflow">if</span> (grib1Example) then
-<a name="l00028"></a>00028     ! GRIB 1 example
-<a name="l00029"></a>00029     call grib_open_file(infile,'../../data/regular_latlon_surface.grib1<span class="charliteral">','</span>r')
-<a name="l00030"></a>00030   else
-<a name="l00031"></a>00031     ! GRIB 2 example
-<a name="l00032"></a>00032     call grib_open_file(infile,'../../data/regular_latlon_surface.grib2','r')
-<a name="l00033"></a>00033   end if
-<a name="l00034"></a>00034   
-<a name="l00035"></a>00035   call grib_open_file(outfile,'out.grib','w')
-<a name="l00036"></a>00036   
-<a name="l00037"></a>00037   !     a new grib message is loaded from file
-<a name="l00038"></a>00038   !     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
-<a name="l00039"></a>00039   call grib_new_from_file(infile,igrib)
-<a name="l00040"></a>00040   
-<a name="l00041"></a>00041   ! The missingValue is not coded in the message. 
-<a name="l00042"></a>00042   ! It is a value we define as a placeholder for a missing value
-<a name="l00043"></a>00043   ! in a point of the grid.
-<a name="l00044"></a>00044   ! It should be choosen in a way that it cannot be confused 
-<a name="l00045"></a>00045   ! with a valid field value
-<a name="l00046"></a>00046   missingValue=9999
-<a name="l00047"></a>00047   call grib_set(igrib, 'missingValue',missingValue)
-<a name="l00048"></a>00048   write(*,*) 'missingValue=',missingValue
-<a name="l00049"></a>00049 
-<a name="l00050"></a>00050   ! get the size of the values array
-<a name="l00051"></a>00051   call <a name="a0"></a><a class="code" href="group__get__set.html#g18b622ed86b24d5e5fcab70c309fc245" title="Get the number of coded value from a key, if several keys of the same name are present...">grib_get_size</a>(igrib,'values',numberOfValues)
-<a name="l00052"></a>00052   write(*,*) 'numberOfValues=',numberOfValues
-<a name="l00053"></a>00053   
-<a name="l00054"></a>00054   allocate(values(numberOfValues), stat=iret)
-<a name="l00055"></a>00055 
-<a name="l00056"></a>00056   ! get data values
-<a name="l00057"></a>00057   call grib_get(igrib,'values',values)
-<a name="l00058"></a>00058   
-<a name="l00059"></a>00059   ! enable bitmap 
-<a name="l00060"></a>00060   call grib_set(igrib,"bitmapPresent",1)
-<a name="l00061"></a>00061 
-<a name="l00062"></a>00062   ! some values are missing
-<a name="l00063"></a>00063   values(1:10) = missingValue
-<a name="l00064"></a>00064 
-<a name="l00065"></a>00065   ! set the values (the bitmap will be automatically built)
-<a name="l00066"></a>00066   call grib_set(igrib,'values', values)
-<a name="l00067"></a>00067 
-<a name="l00068"></a>00068   !  write modified message to a file
-<a name="l00069"></a>00069   call grib_write(igrib,outfile)
-<a name="l00070"></a>00070   
-<a name="l00071"></a>00071   ! FREE MEMORY
-<a name="l00072"></a>00072   call grib_release(igrib)
-<a name="l00073"></a>00073   
-<a name="l00074"></a>00074   call grib_close_file(infile)
-<a name="l00075"></a>00075 
-<a name="l00076"></a>00076   call grib_close_file(outfile)
-<a name="l00077"></a>00077 
-<a name="l00078"></a>00078   deallocate(values)
-<a name="l00079"></a>00079 
-<a name="l00080"></a>00080 end program set_bitmap
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/set__fortran_8_f-example.html b/html/set__fortran_8_f-example.html
deleted file mode 100644
index aa2fd95..0000000
--- a/html/set__fortran_8_f-example.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: set_fortran.F</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>set_fortran.F</h1>set_fortran.F How to set values through the key names.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 C Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 C This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 C 
-<a name="l00005"></a>00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 C
-<a name="l00008"></a>00008 C
-<a name="l00009"></a>00009 C  Fortran 77 Implementation: set_fortran
-<a name="l00010"></a>00010 C
-<a name="l00011"></a>00011 C  Description: how to <span class="keyword">set</span> key values.
-<a name="l00012"></a>00012 C
-<a name="l00013"></a>00013 C
-<a name="l00014"></a>00014 C  Author: Enrico Fucile
-<a name="l00015"></a>00015 C
-<a name="l00016"></a>00016 C
-<a name="l00017"></a>00017 C
-<a name="l00018"></a>00018       program <span class="keyword">set</span>
-<a name="l00019"></a>00019       implicit none
-<a name="l00020"></a>00020       include 'grib_api_f77.h'
-<a name="l00021"></a>00021       integer err
-<a name="l00022"></a>00022       integer*4 centre
-<a name="l00023"></a>00023       integer*4 int_value
-<a name="l00024"></a>00024       character*10 string_value
-<a name="l00025"></a>00025       character*20 string_centre
-<a name="l00026"></a>00026       integer len
-<a name="l00027"></a>00027       integer size
-<a name="l00028"></a>00028       integer infile,outfile
-<a name="l00029"></a>00029       integer igrib,iret
-<a name="l00030"></a>00030       character*256 error
-<a name="l00031"></a>00031 
-<a name="l00032"></a>00032       infile=5
-<a name="l00033"></a>00033       outfile=6
-<a name="l00034"></a>00034 
-<a name="l00035"></a>00035       call grib_check(grib_open_file(infile
-<a name="l00036"></a>00036      X,'../../data/regular_latlon_surface.grib1<span class="charliteral">','</span>r'))
-<a name="l00037"></a>00037 
-<a name="l00038"></a>00038       call grib_check(grib_open_file(outfile
-<a name="l00039"></a>00039      X,'../../data/out.grib1','w'))
-<a name="l00040"></a>00040 
-<a name="l00041"></a>00041 C     a new grib message is loaded from file
-<a name="l00042"></a>00042 C     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
-<a name="l00043"></a>00043       call grib_check(grib_new_from_file(infile,igrib))
-<a name="l00044"></a>00044 
-<a name="l00045"></a>00045 C     set centre as a <span class="keywordtype">long</span> */
-<a name="l00046"></a>00046       centre=80
-<a name="l00047"></a>00047       call grib_check(grib_set_int(igrib,'centre',centre))
-<a name="l00048"></a>00048 
-<a name="l00049"></a>00049 C     get centre as a integer*4
-<a name="l00050"></a>00050       call grib_check(grib_get_int(igrib,'centre',int_value))
-<a name="l00051"></a>00051       write(*,*) 'centre=',int_value
-<a name="l00052"></a>00052 
-<a name="l00053"></a>00053 C     get centre as a <span class="keywordtype">string</span>
-<a name="l00054"></a>00054       call grib_check(<a name="a0"></a><a class="code" href="group__get__set.html#g8aeaf9f930eea1cc0f15e92f18a25053" title="Get a string value from a key, if several keys of the same name are present, the...">grib_get_string</a>(igrib,'centre',string_value))
-<a name="l00055"></a>00055       string_centre='centre='<span class="comment">//string_value</span>
-<a name="l00056"></a>00056       write(*,*) string_centre
-<a name="l00057"></a>00057 
-<a name="l00058"></a>00058 C     write modified message to a file
-<a name="l00059"></a>00059       call grib_check(grib_write(igrib,outfile))
-<a name="l00060"></a>00060 
-<a name="l00061"></a>00061       call grib_check(grib_release(igrib))
-<a name="l00062"></a>00062 
-<a name="l00063"></a>00063       call grib_check(grib_close_file(infile))
-<a name="l00064"></a>00064 
-<a name="l00065"></a>00065       call grib_check(grib_close_file(outfile))
-<a name="l00066"></a>00066 
-<a name="l00067"></a>00067       end
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/set__missing_8f90-example.html b/html/set__missing_8f90-example.html
deleted file mode 100644
index 4e3ec85..0000000
--- a/html/set__missing_8f90-example.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: set_missing.f90</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>set_missing.f90</h1>How to set a missing value in the header.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 ! 
-<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 !
-<a name="l00008"></a>00008 !
-<a name="l00009"></a>00009 !  Description: how to <span class="keyword">set</span> missing a key value.
-<a name="l00010"></a>00010 !
-<a name="l00011"></a>00011 !
-<a name="l00012"></a>00012 !  Author: Enrico Fucile
-<a name="l00013"></a>00013 !
-<a name="l00014"></a>00014 !
-<a name="l00015"></a>00015 !
-<a name="l00016"></a>00016 program <span class="keyword">set</span>
-<a name="l00017"></a>00017   use grib_api
-<a name="l00018"></a>00018   implicit none
-<a name="l00019"></a>00019   integer              :: infile,outfile
-<a name="l00020"></a>00020   integer              :: igrib
-<a name="l00021"></a>00021 
-<a name="l00022"></a>00022   infile=5
-<a name="l00023"></a>00023   outfile=6
-<a name="l00024"></a>00024 
-<a name="l00025"></a>00025   call grib_open_file(infile, &
-<a name="l00026"></a>00026        '../../data/reduced_gaussian_pressure_level.grib2<span class="charliteral">','</span>r')
-<a name="l00027"></a>00027 
-<a name="l00028"></a>00028   call grib_open_file(outfile, &
-<a name="l00029"></a>00029        'out_surface_level.grib2','w')
-<a name="l00030"></a>00030 
-<a name="l00031"></a>00031   !     a new grib message is loaded from file
-<a name="l00032"></a>00032   !     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
-<a name="l00033"></a>00033   call grib_new_from_file(infile,igrib)
-<a name="l00034"></a>00034 
-<a name="l00035"></a>00035   call grib_set(igrib,'typeOfFirstFixedSurface','sfc')
-<a name="l00036"></a>00036   call grib_set_missing(igrib,'scaleFactorOfFirstFixedSurface')
-<a name="l00037"></a>00037   call grib_set_missing(igrib,'scaledValueOfFirstFixedSurface')
-<a name="l00038"></a>00038 
-<a name="l00039"></a>00039   call grib_write(igrib,outfile)
-<a name="l00040"></a>00040 
-<a name="l00041"></a>00041   call grib_release(igrib)
-<a name="l00042"></a>00042 
-<a name="l00043"></a>00043   call grib_close_file(infile)
-<a name="l00044"></a>00044 
-<a name="l00045"></a>00045   call grib_close_file(outfile)
-<a name="l00046"></a>00046 
-<a name="l00047"></a>00047 end program set
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/set__pv_8f90-example.html b/html/set__pv_8f90-example.html
deleted file mode 100644
index 8c2ef4f..0000000
--- a/html/set__pv_8f90-example.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: set_pv.f90</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1>set_pv.f90</h1>How to set the list of levels.<p>
-<div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 ! Copyright 2005-2016 ECMWF
-<a name="l00002"></a>00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
-<a name="l00003"></a>00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-<a name="l00004"></a>00004 ! 
-<a name="l00005"></a>00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-<a name="l00006"></a>00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-<a name="l00007"></a>00007 !
-<a name="l00008"></a>00008 !
-<a name="l00009"></a>00009 !  Description: how to <span class="keyword">set</span> pv values.
-<a name="l00010"></a>00010 !
-<a name="l00011"></a>00011 !
-<a name="l00012"></a>00012 !  Author: Anne Fouilloux
-<a name="l00013"></a>00013 !
-<a name="l00014"></a>00014 !
-<a name="l00015"></a>00015 program set_pv
-<a name="l00016"></a>00016   use grib_api
-<a name="l00017"></a>00017   implicit none
-<a name="l00018"></a>00018   integer                         :: numberOfLevels
-<a name="l00019"></a>00019   integer                         :: numberOfCoefficients
-<a name="l00020"></a>00020   integer                         :: outfile, igrib
-<a name="l00021"></a>00021   integer                         :: i, ios
-<a name="l00022"></a>00022   real, dimension(:),allocatable  :: pv
-<a name="l00023"></a>00023   
-<a name="l00024"></a>00024   numberOfLevels=60
-<a name="l00025"></a>00025   numberOfCoefficients=2*(numberOfLevels+1)
-<a name="l00026"></a>00026 
-<a name="l00027"></a>00027   allocate(pv(numberOfCoefficients))
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029   ! read the model level coefficients from file
-<a name="l00030"></a>00030   open( unit=1, file=<span class="stringliteral">"../../data/60_model_levels"</span>, &
-<a name="l00031"></a>00031                 form=<span class="stringliteral">"formatted"</span>,action=<span class="stringliteral">"read"</span>)
-<a name="l00032"></a>00032 
-<a name="l00033"></a>00033   <span class="keywordflow">do</span> i=1,numberOfCoefficients,2
-<a name="l00034"></a>00034      read(unit=1,fmt=*, iostat=ios) pv(i), pv(i+1)
-<a name="l00035"></a>00035      if (ios /= 0) then
-<a name="l00036"></a>00036         print *, "I/O error: ",ios
-<a name="l00037"></a>00037         exit
-<a name="l00038"></a>00038      end if
-<a name="l00039"></a>00039   end do
-<a name="l00040"></a>00040   
-<a name="l00041"></a>00041   ! print coefficients
-<a name="l00042"></a>00042   !do i=1,numberOfCoefficients,2
-<a name="l00043"></a>00043   !  print *,"  a=",pv(i)," b=",pv(i+1)
-<a name="l00044"></a>00044   !end do
-<a name="l00045"></a>00045 
-<a name="l00046"></a>00046   close(unit=1)
-<a name="l00047"></a>00047 
-<a name="l00048"></a>00048   call grib_open_file(outfile, 'out.grib1','w')
-<a name="l00049"></a>00049   
-<a name="l00050"></a>00050   !     a new grib message is loaded from file
-<a name="l00051"></a>00051   !     igrib is the grib <span class="keywordtype">id</span> to be used in subsequent calls
-<a name="l00052"></a>00052   call grib_new_from_samples(igrib, "reduced_gg_sfc_grib1")
-<a name="l00053"></a>00053 
-<a name="l00054"></a>00054   !     set levtype to ml (model level)
-<a name="l00055"></a>00055   call grib_set(igrib,'levtype','ml')
-<a name="l00056"></a>00056 
-<a name="l00057"></a>00057   !     set level 
-<a name="l00058"></a>00058   call grib_set(igrib,'level',2)
-<a name="l00059"></a>00059 
-<a name="l00060"></a>00060   !     set PVPresent as an integer 
-<a name="l00061"></a>00061   call grib_set(igrib,'PVPresent',1)
-<a name="l00062"></a>00062   
-<a name="l00063"></a>00063   call grib_set(igrib,'pv',pv)
-<a name="l00064"></a>00064   
-<a name="l00065"></a>00065   !     write modified message to a file
-<a name="l00066"></a>00066   call grib_write(igrib,outfile)
-<a name="l00067"></a>00067   
-<a name="l00068"></a>00068   !  FREE MEMORY
-<a name="l00069"></a>00069   call grib_release(igrib)
-<a name="l00070"></a>00070   deallocate(pv)
-<a name="l00071"></a>00071 
-<a name="l00072"></a>00072   call grib_close_file(outfile)
-<a name="l00073"></a>00073   
-<a name="l00074"></a>00074 end program set_pv
-</pre></div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/html/structcodes__context.html b/html/structcodes__context.html
new file mode 100644
index 0000000..afabcc0
--- /dev/null
+++ b/html/structcodes__context.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: codes_context Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">codes_context Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Codes context, structure containing the memory methods, the parsers and the formats. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="eccodes_8h.html">eccodes.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/structcodes__handle.html b/html/structcodes__handle.html
new file mode 100644
index 0000000..13a879b
--- /dev/null
+++ b/html/structcodes__handle.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: codes_handle Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">codes_handle Struct Reference<div class="ingroups"><a class="el" href="group__codes__handle.html">The message handle</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Codes handle, structure giving access to parsed values by keys </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="eccodes_8h.html">eccodes.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/structcodes__index.html b/html/structcodes__index.html
new file mode 100644
index 0000000..b51fde9
--- /dev/null
+++ b/html/structcodes__index.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: codes_index Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">codes_index Struct Reference<div class="ingroups"><a class="el" href="group__codes__index.html">The indexing feature</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>index structure to access messages in a file. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="eccodes_8h.html">eccodes.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/structcodes__iterator.html b/html/structcodes__iterator.html
new file mode 100644
index 0000000..498e8d4
--- /dev/null
+++ b/html/structcodes__iterator.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: codes_iterator Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">codes_iterator Struct Reference<div class="ingroups"><a class="el" href="group__iterators.html">Iterating on latitude/longitude/values</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Codes iterator, structure supporting a geographic iteration of values in a GRIB message. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="eccodes_8h.html">eccodes.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/structcodes__keys__iterator.html b/html/structcodes__keys__iterator.html
new file mode 100644
index 0000000..e02c432
--- /dev/null
+++ b/html/structcodes__keys__iterator.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: codes_keys_iterator Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">codes_keys_iterator Struct Reference<div class="ingroups"><a class="el" href="group__keys__iterator.html">Iterating on keys names</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Codes keys iterator. Iterator over keys. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="eccodes_8h.html">eccodes.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/structcodes__multi__handle.html b/html/structcodes__multi__handle.html
new file mode 100644
index 0000000..d8754d4
--- /dev/null
+++ b/html/structcodes__multi__handle.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: codes_multi_handle Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">codes_multi_handle Struct Reference<div class="ingroups"><a class="el" href="group__codes__handle.html">The message handle</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>GRIB multi field handle, structure used to build multi fields messages. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="eccodes_8h.html">eccodes.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/structcodes__nearest.html b/html/structcodes__nearest.html
new file mode 100644
index 0000000..ca6ca0f
--- /dev/null
+++ b/html/structcodes__nearest.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>eccodes: codes_nearest Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">eccodes
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="modules.html"><span>C Interface</span></a></li>
+      <li><a href="classeccodes.html"><span>F90 Interface</span></a></li>
+      <li><a href="namespaces.html"><span>Python Interface</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Data Structures</span></a></li>
+      <li><a href="functions.html"><span>Data Fields</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectIt [...]
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">codes_nearest Struct Reference<div class="ingroups"><a class="el" href="group__iterators.html">Iterating on latitude/longitude/values</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Codes nearest, structure used to find the nearest points of a latitude longitude point in a GRIB message. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="eccodes_8h.html">eccodes.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by  <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/html/sync_off.png b/html/sync_off.png
new file mode 100644
index 0000000..3b443fc
Binary files /dev/null and b/html/sync_off.png differ
diff --git a/html/sync_on.png b/html/sync_on.png
new file mode 100644
index 0000000..e08320f
Binary files /dev/null and b/html/sync_on.png differ
diff --git a/html/tab_a.png b/html/tab_a.png
new file mode 100644
index 0000000..3b725c4
Binary files /dev/null and b/html/tab_a.png differ
diff --git a/html/tab_b.gif b/html/tab_b.gif
deleted file mode 100644
index 0d62348..0000000
Binary files a/html/tab_b.gif and /dev/null differ
diff --git a/html/tab_b.png b/html/tab_b.png
new file mode 100644
index 0000000..e2b4a86
Binary files /dev/null and b/html/tab_b.png differ
diff --git a/html/tab_h.png b/html/tab_h.png
new file mode 100644
index 0000000..fd5cb70
Binary files /dev/null and b/html/tab_h.png differ
diff --git a/html/tab_l.gif b/html/tab_l.gif
deleted file mode 100644
index 9b1e633..0000000
Binary files a/html/tab_l.gif and /dev/null differ
diff --git a/html/tab_r.gif b/html/tab_r.gif
deleted file mode 100644
index ce9dd9f..0000000
Binary files a/html/tab_r.gif and /dev/null differ
diff --git a/html/tab_s.png b/html/tab_s.png
new file mode 100644
index 0000000..ab478c9
Binary files /dev/null and b/html/tab_s.png differ
diff --git a/html/tabs.css b/html/tabs.css
index c37faaf..9cf578f 100644
--- a/html/tabs.css
+++ b/html/tabs.css
@@ -1,102 +1,60 @@
-/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
-
-DIV.tabs
-{
-   float            : left;
-   width            : 100%;
-   background       : url("tab_b.gif") repeat-x bottom;
-   margin-bottom    : 4px;
-}
-
-DIV.tabs UL
-{
-   margin           : 0px;
-   padding-left     : 10px;
-   list-style       : none;
-}
-
-DIV.tabs LI, DIV.tabs FORM
-{
-   display          : inline;
-   margin           : 0px;
-   padding          : 0px;
-}
-
-DIV.tabs FORM
-{
-   float            : right;
+.tabs, .tabs2, .tabs3 {
+    background-image: url('tab_b.png');
+    width: 100%;
+    z-index: 101;
+    font-size: 13px;
+    font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
 }
 
-DIV.tabs A
-{
-   float            : left;
-   background       : url("tab_r.gif") no-repeat right top;
-   border-bottom    : 1px solid #84B0C7;
-   font-size        : x-small;
-   font-weight      : bold;
-   text-decoration  : none;
+.tabs2 {
+    font-size: 10px;
 }
-
-DIV.tabs A:hover
-{
-   background-position: 100% -150px;
+.tabs3 {
+    font-size: 9px;
 }
 
-DIV.tabs A:link, DIV.tabs A:visited,
-DIV.tabs A:active, DIV.tabs A:hover
-{
-       color: #1A419D;
+.tablist {
+    margin: 0;
+    padding: 0;
+    display: table;
 }
 
-DIV.tabs SPAN
-{
-   float            : left;
-   display          : block;
-   background       : url("tab_l.gif") no-repeat left top;
-   padding          : 5px 9px;
-   white-space      : nowrap;
+.tablist li {
+    float: left;
+    display: table-cell;
+    background-image: url('tab_b.png');
+    line-height: 36px;
+    list-style: none;
 }
 
-DIV.tabs INPUT
-{
-   float            : right;
-   display          : inline;
-   font-size        : 1em;
-}
-
-DIV.tabs TD
-{
-   font-size        : x-small;
-   font-weight      : bold;
-   text-decoration  : none;
-}
-
-
-
-/* Commented Backslash Hack hides rule from IE5-Mac \*/
-DIV.tabs SPAN {float : none;}
-/* End IE5-Mac hack */
-
-DIV.tabs A:hover SPAN
-{
-   background-position: 0% -150px;
+.tablist a {
+    display: block;
+    padding: 0 20px;
+    font-weight: bold;
+    background-image:url('tab_s.png');
+    background-repeat:no-repeat;
+    background-position:right;
+    color: #283A5D;
+    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+    text-decoration: none;
+    outline: none;
 }
 
-DIV.tabs LI.current A
-{
-   background-position: 100% -150px;
-   border-width     : 0px;
+.tabs3 .tablist a {
+    padding: 0 10px;
 }
 
-DIV.tabs LI.current SPAN
-{
-   background-position: 0% -150px;
-   padding-bottom   : 6px;
+.tablist a:hover {
+    background-image: url('tab_h.png');
+    background-repeat:repeat-x;
+    color: #fff;
+    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+    text-decoration: none;
 }
 
-DIV.nav
-{
-   background       : none;
-   border           : none;
-   border-bottom    : 1px solid #84B0C7;
+.tablist li.current a {
+    background-image: url('tab_a.png');
+    background-repeat:repeat-x;
+    color: #fff;
+    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
 }
diff --git a/html/tools.html b/html/tools.html
deleted file mode 100644
index f8a189f..0000000
--- a/html/tools.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>grib_api: Grib tools</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css">
-<link href="tabs.css" rel="stylesheet" type="text/css">
-</head><body>
-<!-- Generated by Doxygen 1.5.3 -->
-<div class="tabs">
-  <ul>
-    <li><a href="index.html"><span>Main Page</span></a></li>
-    <li><a href="modules.html"><span>Modules</span></a></li>
-    <li><a href="files.html"><span>Files</span></a></li>
-    <li><a href="pages.html"><span>Related Pages</span></a></li>
-    <li><a href="examples.html"><span>Examples</span></a></li>
-  </ul>
-</div>
-<h1><a class="anchor" name="tools">Grib tools</a></h1>The following command line tools are provided to help users in all interactive and batch processing of grib data.<br>
- Use of the tools is recommended whenever possible. They provide a ready and tested solution for many situations and their use will avoid the need to write new cod and thus speeding up your work.<br>
- To make easier their use the tools are provided with a common set of options so that it's quick to apply the same options to different tools. We suggest to begin with <a class="el" href="grib_dump.html">grib_dump</a>, <a class="el" href="grib_ls.html">grib_ls</a> and <a class="el" href="grib_get.html">grib_get</a> to inspect the content of some files and then to learn about the other tools to change the content of the grib message (<a class="el" href="grib_set.html">grib_set</a>, <a cla [...]
-<ul>
-<li><a class="el" href="grib_dump.html">grib_dump</a></li><li><a class="el" href="grib_ls.html">grib_ls</a></li><li><a class="el" href="grib_get.html">grib_get</a></li><li><a class="el" href="grib_copy.html">grib_copy</a></li><li><a class="el" href="grib_set.html">grib_set</a></li><li><a class="el" href="grib_convert.html">grib_convert</a></li><li><a class="el" href="grib_filter.html">grib_filter</a></li><li><a class="el" href="grib_compare.html">grib_compare</a></li><li><a class="el" hr [...]
-<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 22 15:18:22 2009 for grib_api by 
-<a href="http://www.doxygen.org/index.html">
-<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
-</body>
-</html>
diff --git a/ifs_samples/grib1/Makefile.in b/ifs_samples/grib1/Makefile.in
deleted file mode 100644
index 04c137d..0000000
--- a/ifs_samples/grib1/Makefile.in
+++ /dev/null
@@ -1,860 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-#This file is generated by make_makefile_am.pl
-#  DON'T EDIT!!!
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = ifs_samples/grib1
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(dist_grib1_DATA)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(grib1dir)" "$(DESTDIR)$(grib1dir)"
-DATA = $(dist_grib1_DATA) $(nodist_grib1_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AEC_DIR = @AEC_DIR@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CCSDS_TEST = @CCSDS_TEST@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEVEL_RULES = @DEVEL_RULES@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECCODES_AGE = @ECCODES_AGE@
-ECCODES_CURRENT = @ECCODES_CURRENT@
-ECCODES_DEFINITION_PATH = @ECCODES_DEFINITION_PATH@
-ECCODES_MAIN_VERSION = @ECCODES_MAIN_VERSION@
-ECCODES_MAJOR_VERSION = @ECCODES_MAJOR_VERSION@
-ECCODES_MINOR_VERSION = @ECCODES_MINOR_VERSION@
-ECCODES_PATCH_VERSION = @ECCODES_PATCH_VERSION@
-ECCODES_REVISION = @ECCODES_REVISION@
-ECCODES_SAMPLES_PATH = @ECCODES_SAMPLES_PATH@
-ECCODES_VERSION_STR = @ECCODES_VERSION_STR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB = @EMOS_LIB@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-F90_CHECK = @F90_CHECK@
-F90_MODULE_FLAG = @F90_MODULE_FLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FORTRAN_MOD = @FORTRAN_MOD@
-GREP = @GREP@
-GRIB_API_INC = @GRIB_API_INC@
-GRIB_API_LIB = @GRIB_API_LIB@
-GRIB_DEVEL = @GRIB_DEVEL@
-IFS_SAMPLES_DIR = @IFS_SAMPLES_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JASPER_DIR = @JASPER_DIR@
-JPEG_TEST = @JPEG_TEST@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_AEC = @LIB_AEC@
-LIB_JASPER = @LIB_JASPER@
-LIB_OPENJPEG = @LIB_OPENJPEG@
-LIB_PNG = @LIB_PNG@
-LINUX_DISTRIBUTION_NAME = @LINUX_DISTRIBUTION_NAME@
-LINUX_DISTRIBUTION_VERSION = @LINUX_DISTRIBUTION_VERSION@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENJPEG_DIR = @OPENJPEG_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PERLDIR = @PERLDIR@
-PERL_INSTALL_OPTIONS = @PERL_INSTALL_OPTIONS@
-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_CHECK = @PYTHON_CHECK@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_DATA_HANDLER = @PYTHON_DATA_HANDLER@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RM = @RM@
-RPM_CONFIGURE_ARGS = @RPM_CONFIGURE_ARGS@
-RPM_HOST_CPU = @RPM_HOST_CPU@
-RPM_HOST_OS = @RPM_HOST_OS@
-RPM_HOST_VENDOR = @RPM_HOST_VENDOR@
-RPM_RELEASE = @RPM_RELEASE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_PEDANTIC = @WARN_PEDANTIC@
-WERROR = @WERROR@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-grib1dir = @IFS_SAMPLES_DIR@/grib1
-dist_grib1_DATA = \
-	gg_ml.tmpl \
-	gg_sfc.tmpl \
-	sh_ml.tmpl \
-	sh_sfc.tmpl 
-
-nodist_grib1_DATA = \
-	GRIB1.tmpl \
-	GRIB2.tmpl \
-	budg.tmpl \
-	gg_sfc_grib1.tmpl \
-	gg_sfc_grib2.tmpl \
-	polar_stereographic_pl_grib1.tmpl \
-	polar_stereographic_pl_grib2.tmpl \
-	polar_stereographic_sfc_grib1.tmpl \
-	polar_stereographic_sfc_grib2.tmpl \
-	reduced_gg_ml_grib1.tmpl \
-	reduced_gg_ml_grib2.tmpl \
-	reduced_gg_pl_1024_grib1.tmpl \
-	reduced_gg_pl_1024_grib2.tmpl \
-	reduced_gg_pl_1280_grib1.tmpl \
-	reduced_gg_pl_1280_grib2.tmpl \
-	reduced_gg_pl_128_grib1.tmpl \
-	reduced_gg_pl_128_grib2.tmpl \
-	reduced_gg_pl_160_grib1.tmpl \
-	reduced_gg_pl_160_grib2.tmpl \
-	reduced_gg_pl_2000_grib1.tmpl \
-	reduced_gg_pl_2000_grib2.tmpl \
-	reduced_gg_pl_200_grib1.tmpl \
-	reduced_gg_pl_200_grib2.tmpl \
-	reduced_gg_pl_256_grib1.tmpl \
-	reduced_gg_pl_256_grib2.tmpl \
-	reduced_gg_pl_320_grib1.tmpl \
-	reduced_gg_pl_320_grib2.tmpl \
-	reduced_gg_pl_32_grib1.tmpl \
-	reduced_gg_pl_32_grib2.tmpl \
-	reduced_gg_pl_400_grib1.tmpl \
-	reduced_gg_pl_400_grib2.tmpl \
-	reduced_gg_pl_48_grib1.tmpl \
-	reduced_gg_pl_48_grib2.tmpl \
-	reduced_gg_pl_512_grib1.tmpl \
-	reduced_gg_pl_512_grib2.tmpl \
-	reduced_gg_pl_640_grib1.tmpl \
-	reduced_gg_pl_640_grib2.tmpl \
-	reduced_gg_pl_80_grib1.tmpl \
-	reduced_gg_pl_80_grib2.tmpl \
-	reduced_gg_pl_96_grib1.tmpl \
-	reduced_gg_pl_96_grib2.tmpl \
-	reduced_gg_pl_grib1.tmpl \
-	reduced_gg_pl_grib2.tmpl \
-	reduced_gg_sfc_grib1.tmpl \
-	reduced_gg_sfc_grib2.tmpl \
-	reduced_gg_sfc_jpeg_grib2.tmpl \
-	reduced_ll_sfc_grib1.tmpl \
-	reduced_ll_sfc_grib2.tmpl \
-	regular_gg_ml_grib1.tmpl \
-	regular_gg_ml_grib2.tmpl \
-	regular_gg_pl_grib1.tmpl \
-	regular_gg_pl_grib2.tmpl \
-	regular_gg_sfc_grib1.tmpl \
-	regular_gg_sfc_grib2.tmpl \
-	regular_ll_pl_grib1.tmpl \
-	regular_ll_pl_grib2.tmpl \
-	regular_ll_sfc_grib1.tmpl \
-	regular_ll_sfc_grib2.tmpl \
-	rotated_ll_pl_grib1.tmpl \
-	rotated_ll_pl_grib2.tmpl \
-	rotated_ll_sfc_grib1.tmpl \
-	rotated_ll_sfc_grib2.tmpl \
-	sh_ml_grib1.tmpl \
-	sh_ml_grib2.tmpl \
-	sh_pl_grib1.tmpl \
-	sh_pl_grib2.tmpl \
-	sh_sfc_grib1.tmpl \
-	sh_sfc_grib2.tmpl \
-    clusters_grib1.tmpl
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ifs_samples/grib1/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu ifs_samples/grib1/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-dist_grib1DATA: $(dist_grib1_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_grib1_DATA)'; test -n "$(grib1dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(grib1dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(grib1dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(grib1dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(grib1dir)" || exit $$?; \
-	done
-
-uninstall-dist_grib1DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_grib1_DATA)'; test -n "$(grib1dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(grib1dir)'; $(am__uninstall_files_from_dir)
-install-nodist_grib1DATA: $(nodist_grib1_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(nodist_grib1_DATA)'; test -n "$(grib1dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(grib1dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(grib1dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(grib1dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(grib1dir)" || exit $$?; \
-	done
-
-uninstall-nodist_grib1DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(nodist_grib1_DATA)'; test -n "$(grib1dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(grib1dir)'; $(am__uninstall_files_from_dir)
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(grib1dir)" "$(DESTDIR)$(grib1dir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-dist_grib1DATA install-nodist_grib1DATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-dist_grib1DATA uninstall-nodist_grib1DATA
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	cscopelist-am ctags-am distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-dist_grib1DATA install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-nodist_grib1DATA \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags-am uninstall uninstall-am uninstall-dist_grib1DATA \
-	uninstall-nodist_grib1DATA
-
-
-GRIB1.tmpl: ../../samples/GRIB1.tmpl
-	cp -f ../../samples/GRIB1.tmpl .
-
-GRIB2.tmpl: ../../samples/GRIB2.tmpl
-	cp -f ../../samples/GRIB2.tmpl .
-
-gg_sfc_grib1.tmpl: ../../samples/gg_sfc_grib1.tmpl
-	cp -f ../../samples/gg_sfc_grib1.tmpl .
-
-budg.tmpl: ../../samples/budg.tmpl
-	cp -f ../../samples/budg.tmpl .
-
-gg_sfc_grib2.tmpl: ../../samples/gg_sfc_grib2.tmpl
-	cp -f ../../samples/gg_sfc_grib2.tmpl .
-
-polar_stereographic_pl_grib1.tmpl: ../../samples/polar_stereographic_pl_grib1.tmpl
-	cp -f ../../samples/polar_stereographic_pl_grib1.tmpl .
-
-polar_stereographic_pl_grib2.tmpl: ../../samples/polar_stereographic_pl_grib2.tmpl
-	cp -f ../../samples/polar_stereographic_pl_grib2.tmpl .
-
-polar_stereographic_sfc_grib1.tmpl: ../../samples/polar_stereographic_sfc_grib1.tmpl
-	cp -f ../../samples/polar_stereographic_sfc_grib1.tmpl .
-
-polar_stereographic_sfc_grib2.tmpl: ../../samples/polar_stereographic_sfc_grib2.tmpl
-	cp -f ../../samples/polar_stereographic_sfc_grib2.tmpl .
-
-reduced_gg_ml_grib1.tmpl: ../../samples/reduced_gg_ml_grib1.tmpl
-	cp -f ../../samples/reduced_gg_ml_grib1.tmpl .
-
-reduced_gg_ml_grib2.tmpl: ../../samples/reduced_gg_ml_grib2.tmpl
-	cp -f ../../samples/reduced_gg_ml_grib2.tmpl .
-
-reduced_gg_pl_1024_grib1.tmpl: ../../samples/reduced_gg_pl_1024_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_1024_grib1.tmpl .
-
-reduced_gg_pl_1024_grib2.tmpl: ../../samples/reduced_gg_pl_1024_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_1024_grib2.tmpl .
-
-reduced_gg_pl_1280_grib1.tmpl: ../../samples/reduced_gg_pl_1280_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_1280_grib1.tmpl .
-
-reduced_gg_pl_1280_grib2.tmpl: ../../samples/reduced_gg_pl_1280_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_1280_grib2.tmpl .
-
-reduced_gg_pl_128_grib1.tmpl: ../../samples/reduced_gg_pl_128_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_128_grib1.tmpl .
-
-reduced_gg_pl_128_grib2.tmpl: ../../samples/reduced_gg_pl_128_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_128_grib2.tmpl .
-
-reduced_gg_pl_160_grib1.tmpl: ../../samples/reduced_gg_pl_160_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_160_grib1.tmpl .
-
-reduced_gg_pl_160_grib2.tmpl: ../../samples/reduced_gg_pl_160_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_160_grib2.tmpl .
-
-reduced_gg_pl_2000_grib1.tmpl: ../../samples/reduced_gg_pl_2000_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_2000_grib1.tmpl .
-
-reduced_gg_pl_2000_grib2.tmpl: ../../samples/reduced_gg_pl_2000_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_2000_grib2.tmpl .
-
-reduced_gg_pl_200_grib1.tmpl: ../../samples/reduced_gg_pl_200_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_200_grib1.tmpl .
-
-reduced_gg_pl_200_grib2.tmpl: ../../samples/reduced_gg_pl_200_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_200_grib2.tmpl .
-
-reduced_gg_pl_256_grib1.tmpl: ../../samples/reduced_gg_pl_256_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_256_grib1.tmpl .
-
-reduced_gg_pl_256_grib2.tmpl: ../../samples/reduced_gg_pl_256_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_256_grib2.tmpl .
-
-reduced_gg_pl_320_grib1.tmpl: ../../samples/reduced_gg_pl_320_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_320_grib1.tmpl .
-
-reduced_gg_pl_320_grib2.tmpl: ../../samples/reduced_gg_pl_320_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_320_grib2.tmpl .
-
-reduced_gg_pl_32_grib1.tmpl: ../../samples/reduced_gg_pl_32_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_32_grib1.tmpl .
-
-reduced_gg_pl_32_grib2.tmpl: ../../samples/reduced_gg_pl_32_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_32_grib2.tmpl .
-
-reduced_gg_pl_400_grib1.tmpl: ../../samples/reduced_gg_pl_400_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_400_grib1.tmpl .
-
-reduced_gg_pl_400_grib2.tmpl: ../../samples/reduced_gg_pl_400_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_400_grib2.tmpl .
-
-reduced_gg_pl_48_grib1.tmpl: ../../samples/reduced_gg_pl_48_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_48_grib1.tmpl .
-
-reduced_gg_pl_48_grib2.tmpl: ../../samples/reduced_gg_pl_48_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_48_grib2.tmpl .
-
-reduced_gg_pl_512_grib1.tmpl: ../../samples/reduced_gg_pl_512_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_512_grib1.tmpl .
-
-reduced_gg_pl_512_grib2.tmpl: ../../samples/reduced_gg_pl_512_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_512_grib2.tmpl .
-
-reduced_gg_pl_640_grib1.tmpl: ../../samples/reduced_gg_pl_640_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_640_grib1.tmpl .
-
-reduced_gg_pl_640_grib2.tmpl: ../../samples/reduced_gg_pl_640_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_640_grib2.tmpl .
-
-reduced_gg_pl_80_grib1.tmpl: ../../samples/reduced_gg_pl_80_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_80_grib1.tmpl .
-
-reduced_gg_pl_80_grib2.tmpl: ../../samples/reduced_gg_pl_80_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_80_grib2.tmpl .
-
-reduced_gg_pl_96_grib1.tmpl: ../../samples/reduced_gg_pl_96_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_96_grib1.tmpl .
-
-reduced_gg_pl_96_grib2.tmpl: ../../samples/reduced_gg_pl_96_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_96_grib2.tmpl .
-
-reduced_gg_pl_grib1.tmpl: ../../samples/reduced_gg_pl_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_grib1.tmpl .
-
-reduced_gg_pl_grib2.tmpl: ../../samples/reduced_gg_pl_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_grib2.tmpl .
-
-reduced_gg_sfc_grib1.tmpl: ../../samples/reduced_gg_sfc_grib1.tmpl
-	cp -f ../../samples/reduced_gg_sfc_grib1.tmpl .
-
-reduced_gg_sfc_grib2.tmpl: ../../samples/reduced_gg_sfc_grib2.tmpl
-	cp -f ../../samples/reduced_gg_sfc_grib2.tmpl .
-
-reduced_gg_sfc_jpeg_grib2.tmpl: ../../samples/reduced_gg_sfc_jpeg_grib2.tmpl
-	cp -f ../../samples/reduced_gg_sfc_jpeg_grib2.tmpl .
-
-reduced_ll_sfc_grib1.tmpl: ../../samples/reduced_ll_sfc_grib1.tmpl
-	cp -f ../../samples/reduced_ll_sfc_grib1.tmpl .
-
-reduced_ll_sfc_grib2.tmpl: ../../samples/reduced_ll_sfc_grib2.tmpl
-	cp -f ../../samples/reduced_ll_sfc_grib2.tmpl .
-
-regular_gg_ml_grib1.tmpl: ../../samples/regular_gg_ml_grib1.tmpl
-	cp -f ../../samples/regular_gg_ml_grib1.tmpl .
-
-regular_gg_ml_grib2.tmpl: ../../samples/regular_gg_ml_grib2.tmpl
-	cp -f ../../samples/regular_gg_ml_grib2.tmpl .
-
-regular_gg_pl_grib1.tmpl: ../../samples/regular_gg_pl_grib1.tmpl
-	cp -f ../../samples/regular_gg_pl_grib1.tmpl .
-
-regular_gg_pl_grib2.tmpl: ../../samples/regular_gg_pl_grib2.tmpl
-	cp -f ../../samples/regular_gg_pl_grib2.tmpl .
-
-regular_gg_sfc_grib1.tmpl: ../../samples/regular_gg_sfc_grib1.tmpl
-	cp -f ../../samples/regular_gg_sfc_grib1.tmpl .
-
-regular_gg_sfc_grib2.tmpl: ../../samples/regular_gg_sfc_grib2.tmpl
-	cp -f ../../samples/regular_gg_sfc_grib2.tmpl .
-
-regular_ll_pl_grib1.tmpl: ../../samples/regular_ll_pl_grib1.tmpl
-	cp -f ../../samples/regular_ll_pl_grib1.tmpl .
-
-regular_ll_pl_grib2.tmpl: ../../samples/regular_ll_pl_grib2.tmpl
-	cp -f ../../samples/regular_ll_pl_grib2.tmpl .
-
-regular_ll_sfc_grib1.tmpl: ../../samples/regular_ll_sfc_grib1.tmpl
-	cp -f ../../samples/regular_ll_sfc_grib1.tmpl .
-
-regular_ll_sfc_grib2.tmpl: ../../samples/regular_ll_sfc_grib2.tmpl
-	cp -f ../../samples/regular_ll_sfc_grib2.tmpl .
-
-rotated_ll_pl_grib1.tmpl: ../../samples/rotated_ll_pl_grib1.tmpl
-	cp -f ../../samples/rotated_ll_pl_grib1.tmpl .
-
-rotated_ll_pl_grib2.tmpl: ../../samples/rotated_ll_pl_grib2.tmpl
-	cp -f ../../samples/rotated_ll_pl_grib2.tmpl .
-
-rotated_ll_sfc_grib1.tmpl: ../../samples/rotated_ll_sfc_grib1.tmpl
-	cp -f ../../samples/rotated_ll_sfc_grib1.tmpl .
-
-rotated_ll_sfc_grib2.tmpl: ../../samples/rotated_ll_sfc_grib2.tmpl
-	cp -f ../../samples/rotated_ll_sfc_grib2.tmpl .
-
-sh_ml_grib1.tmpl: ../../samples/sh_ml_grib1.tmpl
-	cp -f ../../samples/sh_ml_grib1.tmpl .
-
-sh_ml_grib2.tmpl: ../../samples/sh_ml_grib2.tmpl
-	cp -f ../../samples/sh_ml_grib2.tmpl .
-
-sh_pl_grib1.tmpl: ../../samples/sh_pl_grib1.tmpl
-	cp -f ../../samples/sh_pl_grib1.tmpl .
-
-sh_pl_grib2.tmpl: ../../samples/sh_pl_grib2.tmpl
-	cp -f ../../samples/sh_pl_grib2.tmpl .
-
-sh_sfc_grib1.tmpl: ../../samples/sh_sfc_grib1.tmpl
-	cp -f ../../samples/sh_sfc_grib1.tmpl .
-
-sh_sfc_grib2.tmpl: ../../samples/sh_sfc_grib2.tmpl
-	cp -f ../../samples/sh_sfc_grib2.tmpl .
-
-clusters_grib1.tmpl: ../../samples/clusters_grib1.tmpl
-	cp -f ../../samples/clusters_grib1.tmpl .
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/ifs_samples/grib1_mlgrib2/Makefile.in b/ifs_samples/grib1_mlgrib2/Makefile.in
deleted file mode 100644
index c8957d1..0000000
--- a/ifs_samples/grib1_mlgrib2/Makefile.in
+++ /dev/null
@@ -1,864 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-#This file is generated by make_makefile_am.pl
-#  DON'T EDIT!!!
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = ifs_samples/grib1_mlgrib2
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(dist_grib1_mlgrib2_DATA)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(grib1_mlgrib2dir)" \
-	"$(DESTDIR)$(grib1_mlgrib2dir)"
-DATA = $(dist_grib1_mlgrib2_DATA) $(nodist_grib1_mlgrib2_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AEC_DIR = @AEC_DIR@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CCSDS_TEST = @CCSDS_TEST@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEVEL_RULES = @DEVEL_RULES@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECCODES_AGE = @ECCODES_AGE@
-ECCODES_CURRENT = @ECCODES_CURRENT@
-ECCODES_DEFINITION_PATH = @ECCODES_DEFINITION_PATH@
-ECCODES_MAIN_VERSION = @ECCODES_MAIN_VERSION@
-ECCODES_MAJOR_VERSION = @ECCODES_MAJOR_VERSION@
-ECCODES_MINOR_VERSION = @ECCODES_MINOR_VERSION@
-ECCODES_PATCH_VERSION = @ECCODES_PATCH_VERSION@
-ECCODES_REVISION = @ECCODES_REVISION@
-ECCODES_SAMPLES_PATH = @ECCODES_SAMPLES_PATH@
-ECCODES_VERSION_STR = @ECCODES_VERSION_STR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB = @EMOS_LIB@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-F90_CHECK = @F90_CHECK@
-F90_MODULE_FLAG = @F90_MODULE_FLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FORTRAN_MOD = @FORTRAN_MOD@
-GREP = @GREP@
-GRIB_API_INC = @GRIB_API_INC@
-GRIB_API_LIB = @GRIB_API_LIB@
-GRIB_DEVEL = @GRIB_DEVEL@
-IFS_SAMPLES_DIR = @IFS_SAMPLES_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JASPER_DIR = @JASPER_DIR@
-JPEG_TEST = @JPEG_TEST@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_AEC = @LIB_AEC@
-LIB_JASPER = @LIB_JASPER@
-LIB_OPENJPEG = @LIB_OPENJPEG@
-LIB_PNG = @LIB_PNG@
-LINUX_DISTRIBUTION_NAME = @LINUX_DISTRIBUTION_NAME@
-LINUX_DISTRIBUTION_VERSION = @LINUX_DISTRIBUTION_VERSION@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENJPEG_DIR = @OPENJPEG_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PERLDIR = @PERLDIR@
-PERL_INSTALL_OPTIONS = @PERL_INSTALL_OPTIONS@
-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_CHECK = @PYTHON_CHECK@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_DATA_HANDLER = @PYTHON_DATA_HANDLER@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RM = @RM@
-RPM_CONFIGURE_ARGS = @RPM_CONFIGURE_ARGS@
-RPM_HOST_CPU = @RPM_HOST_CPU@
-RPM_HOST_OS = @RPM_HOST_OS@
-RPM_HOST_VENDOR = @RPM_HOST_VENDOR@
-RPM_RELEASE = @RPM_RELEASE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_PEDANTIC = @WARN_PEDANTIC@
-WERROR = @WERROR@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-grib1_mlgrib2dir = @IFS_SAMPLES_DIR@/grib1_mlgrib2
-dist_grib1_mlgrib2_DATA = \
-	gg_ml.tmpl \
-	gg_sfc.tmpl \
-	sh_ml.tmpl \
-	sh_sfc.tmpl 
-
-nodist_grib1_mlgrib2_DATA = \
-	GRIB1.tmpl \
-	GRIB2.tmpl \
-	budg.tmpl \
-	gg_sfc_grib1.tmpl \
-	gg_sfc_grib2.tmpl \
-	polar_stereographic_pl_grib1.tmpl \
-	polar_stereographic_pl_grib2.tmpl \
-	polar_stereographic_sfc_grib1.tmpl \
-	polar_stereographic_sfc_grib2.tmpl \
-	reduced_gg_ml_grib1.tmpl \
-	reduced_gg_ml_grib2.tmpl \
-	reduced_gg_pl_1024_grib1.tmpl \
-	reduced_gg_pl_1024_grib2.tmpl \
-	reduced_gg_pl_1280_grib1.tmpl \
-	reduced_gg_pl_1280_grib2.tmpl \
-	reduced_gg_pl_128_grib1.tmpl \
-	reduced_gg_pl_128_grib2.tmpl \
-	reduced_gg_pl_160_grib1.tmpl \
-	reduced_gg_pl_160_grib2.tmpl \
-	reduced_gg_pl_2000_grib1.tmpl \
-	reduced_gg_pl_2000_grib2.tmpl \
-	reduced_gg_pl_200_grib1.tmpl \
-	reduced_gg_pl_200_grib2.tmpl \
-	reduced_gg_pl_256_grib1.tmpl \
-	reduced_gg_pl_256_grib2.tmpl \
-	reduced_gg_pl_320_grib1.tmpl \
-	reduced_gg_pl_320_grib2.tmpl \
-	reduced_gg_pl_32_grib1.tmpl \
-	reduced_gg_pl_32_grib2.tmpl \
-	reduced_gg_pl_400_grib1.tmpl \
-	reduced_gg_pl_400_grib2.tmpl \
-	reduced_gg_pl_48_grib1.tmpl \
-	reduced_gg_pl_48_grib2.tmpl \
-	reduced_gg_pl_512_grib1.tmpl \
-	reduced_gg_pl_512_grib2.tmpl \
-	reduced_gg_pl_640_grib1.tmpl \
-	reduced_gg_pl_640_grib2.tmpl \
-	reduced_gg_pl_80_grib1.tmpl \
-	reduced_gg_pl_80_grib2.tmpl \
-	reduced_gg_pl_96_grib1.tmpl \
-	reduced_gg_pl_96_grib2.tmpl \
-	reduced_gg_pl_grib1.tmpl \
-	reduced_gg_pl_grib2.tmpl \
-	reduced_gg_sfc_grib1.tmpl \
-	reduced_gg_sfc_grib2.tmpl \
-	reduced_gg_sfc_jpeg_grib2.tmpl \
-	reduced_ll_sfc_grib1.tmpl \
-	reduced_ll_sfc_grib2.tmpl \
-	regular_gg_ml_grib1.tmpl \
-	regular_gg_ml_grib2.tmpl \
-	regular_gg_pl_grib1.tmpl \
-	regular_gg_pl_grib2.tmpl \
-	regular_gg_sfc_grib1.tmpl \
-	regular_gg_sfc_grib2.tmpl \
-	regular_ll_pl_grib1.tmpl \
-	regular_ll_pl_grib2.tmpl \
-	regular_ll_sfc_grib1.tmpl \
-	regular_ll_sfc_grib2.tmpl \
-	rotated_ll_pl_grib1.tmpl \
-	rotated_ll_pl_grib2.tmpl \
-	rotated_ll_sfc_grib1.tmpl \
-	rotated_ll_sfc_grib2.tmpl \
-	sh_ml_grib1.tmpl \
-	sh_ml_grib2.tmpl \
-	sh_pl_grib1.tmpl \
-	sh_pl_grib2.tmpl \
-	sh_sfc_grib1.tmpl \
-	sh_sfc_grib2.tmpl \
-	clusters_grib1.tmpl
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ifs_samples/grib1_mlgrib2/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu ifs_samples/grib1_mlgrib2/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-dist_grib1_mlgrib2DATA: $(dist_grib1_mlgrib2_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_grib1_mlgrib2_DATA)'; test -n "$(grib1_mlgrib2dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(grib1_mlgrib2dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(grib1_mlgrib2dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(grib1_mlgrib2dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(grib1_mlgrib2dir)" || exit $$?; \
-	done
-
-uninstall-dist_grib1_mlgrib2DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_grib1_mlgrib2_DATA)'; test -n "$(grib1_mlgrib2dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(grib1_mlgrib2dir)'; $(am__uninstall_files_from_dir)
-install-nodist_grib1_mlgrib2DATA: $(nodist_grib1_mlgrib2_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(nodist_grib1_mlgrib2_DATA)'; test -n "$(grib1_mlgrib2dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(grib1_mlgrib2dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(grib1_mlgrib2dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(grib1_mlgrib2dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(grib1_mlgrib2dir)" || exit $$?; \
-	done
-
-uninstall-nodist_grib1_mlgrib2DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(nodist_grib1_mlgrib2_DATA)'; test -n "$(grib1_mlgrib2dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(grib1_mlgrib2dir)'; $(am__uninstall_files_from_dir)
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(grib1_mlgrib2dir)" "$(DESTDIR)$(grib1_mlgrib2dir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-dist_grib1_mlgrib2DATA \
-	install-nodist_grib1_mlgrib2DATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-dist_grib1_mlgrib2DATA \
-	uninstall-nodist_grib1_mlgrib2DATA
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	cscopelist-am ctags-am distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-dist_grib1_mlgrib2DATA install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man \
-	install-nodist_grib1_mlgrib2DATA install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
-	uninstall-am uninstall-dist_grib1_mlgrib2DATA \
-	uninstall-nodist_grib1_mlgrib2DATA
-
-
-GRIB1.tmpl: ../../samples/GRIB1.tmpl
-	cp -f ../../samples/GRIB1.tmpl .
-
-GRIB2.tmpl: ../../samples/GRIB2.tmpl
-	cp -f ../../samples/GRIB2.tmpl .
-
-gg_sfc_grib1.tmpl: ../../samples/gg_sfc_grib1.tmpl
-	cp -f ../../samples/gg_sfc_grib1.tmpl .
-
-budg.tmpl: ../../samples/budg.tmpl
-	cp -f ../../samples/budg.tmpl .
-
-gg_sfc_grib2.tmpl: ../../samples/gg_sfc_grib2.tmpl
-	cp -f ../../samples/gg_sfc_grib2.tmpl .
-
-polar_stereographic_pl_grib1.tmpl: ../../samples/polar_stereographic_pl_grib1.tmpl
-	cp -f ../../samples/polar_stereographic_pl_grib1.tmpl .
-
-polar_stereographic_pl_grib2.tmpl: ../../samples/polar_stereographic_pl_grib2.tmpl
-	cp -f ../../samples/polar_stereographic_pl_grib2.tmpl .
-
-polar_stereographic_sfc_grib1.tmpl: ../../samples/polar_stereographic_sfc_grib1.tmpl
-	cp -f ../../samples/polar_stereographic_sfc_grib1.tmpl .
-
-polar_stereographic_sfc_grib2.tmpl: ../../samples/polar_stereographic_sfc_grib2.tmpl
-	cp -f ../../samples/polar_stereographic_sfc_grib2.tmpl .
-
-reduced_gg_ml_grib1.tmpl: ../../samples/reduced_gg_ml_grib1.tmpl
-	cp -f ../../samples/reduced_gg_ml_grib1.tmpl .
-
-reduced_gg_ml_grib2.tmpl: ../../samples/reduced_gg_ml_grib2.tmpl
-	cp -f ../../samples/reduced_gg_ml_grib2.tmpl .
-
-reduced_gg_pl_1024_grib1.tmpl: ../../samples/reduced_gg_pl_1024_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_1024_grib1.tmpl .
-
-reduced_gg_pl_1024_grib2.tmpl: ../../samples/reduced_gg_pl_1024_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_1024_grib2.tmpl .
-
-reduced_gg_pl_1280_grib1.tmpl: ../../samples/reduced_gg_pl_1280_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_1280_grib1.tmpl .
-
-reduced_gg_pl_1280_grib2.tmpl: ../../samples/reduced_gg_pl_1280_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_1280_grib2.tmpl .
-
-reduced_gg_pl_128_grib1.tmpl: ../../samples/reduced_gg_pl_128_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_128_grib1.tmpl .
-
-reduced_gg_pl_128_grib2.tmpl: ../../samples/reduced_gg_pl_128_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_128_grib2.tmpl .
-
-reduced_gg_pl_160_grib1.tmpl: ../../samples/reduced_gg_pl_160_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_160_grib1.tmpl .
-
-reduced_gg_pl_160_grib2.tmpl: ../../samples/reduced_gg_pl_160_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_160_grib2.tmpl .
-
-reduced_gg_pl_2000_grib1.tmpl: ../../samples/reduced_gg_pl_2000_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_2000_grib1.tmpl .
-
-reduced_gg_pl_2000_grib2.tmpl: ../../samples/reduced_gg_pl_2000_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_2000_grib2.tmpl .
-
-reduced_gg_pl_200_grib1.tmpl: ../../samples/reduced_gg_pl_200_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_200_grib1.tmpl .
-
-reduced_gg_pl_200_grib2.tmpl: ../../samples/reduced_gg_pl_200_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_200_grib2.tmpl .
-
-reduced_gg_pl_256_grib1.tmpl: ../../samples/reduced_gg_pl_256_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_256_grib1.tmpl .
-
-reduced_gg_pl_256_grib2.tmpl: ../../samples/reduced_gg_pl_256_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_256_grib2.tmpl .
-
-reduced_gg_pl_320_grib1.tmpl: ../../samples/reduced_gg_pl_320_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_320_grib1.tmpl .
-
-reduced_gg_pl_320_grib2.tmpl: ../../samples/reduced_gg_pl_320_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_320_grib2.tmpl .
-
-reduced_gg_pl_32_grib1.tmpl: ../../samples/reduced_gg_pl_32_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_32_grib1.tmpl .
-
-reduced_gg_pl_32_grib2.tmpl: ../../samples/reduced_gg_pl_32_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_32_grib2.tmpl .
-
-reduced_gg_pl_400_grib1.tmpl: ../../samples/reduced_gg_pl_400_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_400_grib1.tmpl .
-
-reduced_gg_pl_400_grib2.tmpl: ../../samples/reduced_gg_pl_400_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_400_grib2.tmpl .
-
-reduced_gg_pl_48_grib1.tmpl: ../../samples/reduced_gg_pl_48_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_48_grib1.tmpl .
-
-reduced_gg_pl_48_grib2.tmpl: ../../samples/reduced_gg_pl_48_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_48_grib2.tmpl .
-
-reduced_gg_pl_512_grib1.tmpl: ../../samples/reduced_gg_pl_512_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_512_grib1.tmpl .
-
-reduced_gg_pl_512_grib2.tmpl: ../../samples/reduced_gg_pl_512_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_512_grib2.tmpl .
-
-reduced_gg_pl_640_grib1.tmpl: ../../samples/reduced_gg_pl_640_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_640_grib1.tmpl .
-
-reduced_gg_pl_640_grib2.tmpl: ../../samples/reduced_gg_pl_640_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_640_grib2.tmpl .
-
-reduced_gg_pl_80_grib1.tmpl: ../../samples/reduced_gg_pl_80_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_80_grib1.tmpl .
-
-reduced_gg_pl_80_grib2.tmpl: ../../samples/reduced_gg_pl_80_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_80_grib2.tmpl .
-
-reduced_gg_pl_96_grib1.tmpl: ../../samples/reduced_gg_pl_96_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_96_grib1.tmpl .
-
-reduced_gg_pl_96_grib2.tmpl: ../../samples/reduced_gg_pl_96_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_96_grib2.tmpl .
-
-reduced_gg_pl_grib1.tmpl: ../../samples/reduced_gg_pl_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_grib1.tmpl .
-
-reduced_gg_pl_grib2.tmpl: ../../samples/reduced_gg_pl_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_grib2.tmpl .
-
-reduced_gg_sfc_grib1.tmpl: ../../samples/reduced_gg_sfc_grib1.tmpl
-	cp -f ../../samples/reduced_gg_sfc_grib1.tmpl .
-
-reduced_gg_sfc_grib2.tmpl: ../../samples/reduced_gg_sfc_grib2.tmpl
-	cp -f ../../samples/reduced_gg_sfc_grib2.tmpl .
-
-reduced_gg_sfc_jpeg_grib2.tmpl: ../../samples/reduced_gg_sfc_jpeg_grib2.tmpl
-	cp -f ../../samples/reduced_gg_sfc_jpeg_grib2.tmpl .
-
-reduced_ll_sfc_grib1.tmpl: ../../samples/reduced_ll_sfc_grib1.tmpl
-	cp -f ../../samples/reduced_ll_sfc_grib1.tmpl .
-
-reduced_ll_sfc_grib2.tmpl: ../../samples/reduced_ll_sfc_grib2.tmpl
-	cp -f ../../samples/reduced_ll_sfc_grib2.tmpl .
-
-regular_gg_ml_grib1.tmpl: ../../samples/regular_gg_ml_grib1.tmpl
-	cp -f ../../samples/regular_gg_ml_grib1.tmpl .
-
-regular_gg_ml_grib2.tmpl: ../../samples/regular_gg_ml_grib2.tmpl
-	cp -f ../../samples/regular_gg_ml_grib2.tmpl .
-
-regular_gg_pl_grib1.tmpl: ../../samples/regular_gg_pl_grib1.tmpl
-	cp -f ../../samples/regular_gg_pl_grib1.tmpl .
-
-regular_gg_pl_grib2.tmpl: ../../samples/regular_gg_pl_grib2.tmpl
-	cp -f ../../samples/regular_gg_pl_grib2.tmpl .
-
-regular_gg_sfc_grib1.tmpl: ../../samples/regular_gg_sfc_grib1.tmpl
-	cp -f ../../samples/regular_gg_sfc_grib1.tmpl .
-
-regular_gg_sfc_grib2.tmpl: ../../samples/regular_gg_sfc_grib2.tmpl
-	cp -f ../../samples/regular_gg_sfc_grib2.tmpl .
-
-regular_ll_pl_grib1.tmpl: ../../samples/regular_ll_pl_grib1.tmpl
-	cp -f ../../samples/regular_ll_pl_grib1.tmpl .
-
-regular_ll_pl_grib2.tmpl: ../../samples/regular_ll_pl_grib2.tmpl
-	cp -f ../../samples/regular_ll_pl_grib2.tmpl .
-
-regular_ll_sfc_grib1.tmpl: ../../samples/regular_ll_sfc_grib1.tmpl
-	cp -f ../../samples/regular_ll_sfc_grib1.tmpl .
-
-regular_ll_sfc_grib2.tmpl: ../../samples/regular_ll_sfc_grib2.tmpl
-	cp -f ../../samples/regular_ll_sfc_grib2.tmpl .
-
-rotated_ll_pl_grib1.tmpl: ../../samples/rotated_ll_pl_grib1.tmpl
-	cp -f ../../samples/rotated_ll_pl_grib1.tmpl .
-
-rotated_ll_pl_grib2.tmpl: ../../samples/rotated_ll_pl_grib2.tmpl
-	cp -f ../../samples/rotated_ll_pl_grib2.tmpl .
-
-rotated_ll_sfc_grib1.tmpl: ../../samples/rotated_ll_sfc_grib1.tmpl
-	cp -f ../../samples/rotated_ll_sfc_grib1.tmpl .
-
-rotated_ll_sfc_grib2.tmpl: ../../samples/rotated_ll_sfc_grib2.tmpl
-	cp -f ../../samples/rotated_ll_sfc_grib2.tmpl .
-
-sh_ml_grib1.tmpl: ../../samples/sh_ml_grib1.tmpl
-	cp -f ../../samples/sh_ml_grib1.tmpl .
-
-sh_ml_grib2.tmpl: ../../samples/sh_ml_grib2.tmpl
-	cp -f ../../samples/sh_ml_grib2.tmpl .
-
-sh_pl_grib1.tmpl: ../../samples/sh_pl_grib1.tmpl
-	cp -f ../../samples/sh_pl_grib1.tmpl .
-
-sh_pl_grib2.tmpl: ../../samples/sh_pl_grib2.tmpl
-	cp -f ../../samples/sh_pl_grib2.tmpl .
-
-sh_sfc_grib1.tmpl: ../../samples/sh_sfc_grib1.tmpl
-	cp -f ../../samples/sh_sfc_grib1.tmpl .
-
-sh_sfc_grib2.tmpl: ../../samples/sh_sfc_grib2.tmpl
-	cp -f ../../samples/sh_sfc_grib2.tmpl .
-
-clusters_grib1.tmpl: ../../samples/clusters_grib1.tmpl
-	cp -f ../../samples/clusters_grib1.tmpl .
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/ifs_samples/grib1_mlgrib2_ieee64/Makefile.in b/ifs_samples/grib1_mlgrib2_ieee64/Makefile.in
deleted file mode 100644
index e3bb941..0000000
--- a/ifs_samples/grib1_mlgrib2_ieee64/Makefile.in
+++ /dev/null
@@ -1,865 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-#This file is generated by make_makefile_am.pl
-#  DON'T EDIT!!!
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = ifs_samples/grib1_mlgrib2_ieee64
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(dist_grib1_mlgrib2_ieee64_DATA)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(grib1_mlgrib2_ieee64dir)" \
-	"$(DESTDIR)$(grib1_mlgrib2_ieee64dir)"
-DATA = $(dist_grib1_mlgrib2_ieee64_DATA) \
-	$(nodist_grib1_mlgrib2_ieee64_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AEC_DIR = @AEC_DIR@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CCSDS_TEST = @CCSDS_TEST@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEVEL_RULES = @DEVEL_RULES@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECCODES_AGE = @ECCODES_AGE@
-ECCODES_CURRENT = @ECCODES_CURRENT@
-ECCODES_DEFINITION_PATH = @ECCODES_DEFINITION_PATH@
-ECCODES_MAIN_VERSION = @ECCODES_MAIN_VERSION@
-ECCODES_MAJOR_VERSION = @ECCODES_MAJOR_VERSION@
-ECCODES_MINOR_VERSION = @ECCODES_MINOR_VERSION@
-ECCODES_PATCH_VERSION = @ECCODES_PATCH_VERSION@
-ECCODES_REVISION = @ECCODES_REVISION@
-ECCODES_SAMPLES_PATH = @ECCODES_SAMPLES_PATH@
-ECCODES_VERSION_STR = @ECCODES_VERSION_STR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB = @EMOS_LIB@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-F90_CHECK = @F90_CHECK@
-F90_MODULE_FLAG = @F90_MODULE_FLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FORTRAN_MOD = @FORTRAN_MOD@
-GREP = @GREP@
-GRIB_API_INC = @GRIB_API_INC@
-GRIB_API_LIB = @GRIB_API_LIB@
-GRIB_DEVEL = @GRIB_DEVEL@
-IFS_SAMPLES_DIR = @IFS_SAMPLES_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JASPER_DIR = @JASPER_DIR@
-JPEG_TEST = @JPEG_TEST@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_AEC = @LIB_AEC@
-LIB_JASPER = @LIB_JASPER@
-LIB_OPENJPEG = @LIB_OPENJPEG@
-LIB_PNG = @LIB_PNG@
-LINUX_DISTRIBUTION_NAME = @LINUX_DISTRIBUTION_NAME@
-LINUX_DISTRIBUTION_VERSION = @LINUX_DISTRIBUTION_VERSION@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENJPEG_DIR = @OPENJPEG_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PERLDIR = @PERLDIR@
-PERL_INSTALL_OPTIONS = @PERL_INSTALL_OPTIONS@
-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_CHECK = @PYTHON_CHECK@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_DATA_HANDLER = @PYTHON_DATA_HANDLER@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RM = @RM@
-RPM_CONFIGURE_ARGS = @RPM_CONFIGURE_ARGS@
-RPM_HOST_CPU = @RPM_HOST_CPU@
-RPM_HOST_OS = @RPM_HOST_OS@
-RPM_HOST_VENDOR = @RPM_HOST_VENDOR@
-RPM_RELEASE = @RPM_RELEASE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_PEDANTIC = @WARN_PEDANTIC@
-WERROR = @WERROR@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-grib1_mlgrib2_ieee64dir = @IFS_SAMPLES_DIR@/grib1_mlgrib2_ieee64
-dist_grib1_mlgrib2_ieee64_DATA = \
-	gg_ml.tmpl \
-	gg_sfc.tmpl \
-	sh_ml.tmpl \
-	sh_sfc.tmpl 
-
-nodist_grib1_mlgrib2_ieee64_DATA = \
-	GRIB1.tmpl \
-	GRIB2.tmpl \
-	budg.tmpl \
-	gg_sfc_grib1.tmpl \
-	gg_sfc_grib2.tmpl \
-	polar_stereographic_pl_grib1.tmpl \
-	polar_stereographic_pl_grib2.tmpl \
-	polar_stereographic_sfc_grib1.tmpl \
-	polar_stereographic_sfc_grib2.tmpl \
-	reduced_gg_ml_grib1.tmpl \
-	reduced_gg_ml_grib2.tmpl \
-	reduced_gg_pl_1024_grib1.tmpl \
-	reduced_gg_pl_1024_grib2.tmpl \
-	reduced_gg_pl_1280_grib1.tmpl \
-	reduced_gg_pl_1280_grib2.tmpl \
-	reduced_gg_pl_128_grib1.tmpl \
-	reduced_gg_pl_128_grib2.tmpl \
-	reduced_gg_pl_160_grib1.tmpl \
-	reduced_gg_pl_160_grib2.tmpl \
-	reduced_gg_pl_2000_grib1.tmpl \
-	reduced_gg_pl_2000_grib2.tmpl \
-	reduced_gg_pl_200_grib1.tmpl \
-	reduced_gg_pl_200_grib2.tmpl \
-	reduced_gg_pl_256_grib1.tmpl \
-	reduced_gg_pl_256_grib2.tmpl \
-	reduced_gg_pl_320_grib1.tmpl \
-	reduced_gg_pl_320_grib2.tmpl \
-	reduced_gg_pl_32_grib1.tmpl \
-	reduced_gg_pl_32_grib2.tmpl \
-	reduced_gg_pl_400_grib1.tmpl \
-	reduced_gg_pl_400_grib2.tmpl \
-	reduced_gg_pl_48_grib1.tmpl \
-	reduced_gg_pl_48_grib2.tmpl \
-	reduced_gg_pl_512_grib1.tmpl \
-	reduced_gg_pl_512_grib2.tmpl \
-	reduced_gg_pl_640_grib1.tmpl \
-	reduced_gg_pl_640_grib2.tmpl \
-	reduced_gg_pl_80_grib1.tmpl \
-	reduced_gg_pl_80_grib2.tmpl \
-	reduced_gg_pl_96_grib1.tmpl \
-	reduced_gg_pl_96_grib2.tmpl \
-	reduced_gg_pl_grib1.tmpl \
-	reduced_gg_pl_grib2.tmpl \
-	reduced_gg_sfc_grib1.tmpl \
-	reduced_gg_sfc_grib2.tmpl \
-	reduced_gg_sfc_jpeg_grib2.tmpl \
-	reduced_ll_sfc_grib1.tmpl \
-	reduced_ll_sfc_grib2.tmpl \
-	regular_gg_ml_grib1.tmpl \
-	regular_gg_ml_grib2.tmpl \
-	regular_gg_pl_grib1.tmpl \
-	regular_gg_pl_grib2.tmpl \
-	regular_gg_sfc_grib1.tmpl \
-	regular_gg_sfc_grib2.tmpl \
-	regular_ll_pl_grib1.tmpl \
-	regular_ll_pl_grib2.tmpl \
-	regular_ll_sfc_grib1.tmpl \
-	regular_ll_sfc_grib2.tmpl \
-	rotated_ll_pl_grib1.tmpl \
-	rotated_ll_pl_grib2.tmpl \
-	rotated_ll_sfc_grib1.tmpl \
-	rotated_ll_sfc_grib2.tmpl \
-	sh_ml_grib1.tmpl \
-	sh_ml_grib2.tmpl \
-	sh_pl_grib1.tmpl \
-	sh_pl_grib2.tmpl \
-	sh_sfc_grib1.tmpl \
-	sh_sfc_grib2.tmpl \
-	clusters_grib1.tmpl
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ifs_samples/grib1_mlgrib2_ieee64/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu ifs_samples/grib1_mlgrib2_ieee64/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-dist_grib1_mlgrib2_ieee64DATA: $(dist_grib1_mlgrib2_ieee64_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_grib1_mlgrib2_ieee64_DATA)'; test -n "$(grib1_mlgrib2_ieee64dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(grib1_mlgrib2_ieee64dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(grib1_mlgrib2_ieee64dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(grib1_mlgrib2_ieee64dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(grib1_mlgrib2_ieee64dir)" || exit $$?; \
-	done
-
-uninstall-dist_grib1_mlgrib2_ieee64DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_grib1_mlgrib2_ieee64_DATA)'; test -n "$(grib1_mlgrib2_ieee64dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(grib1_mlgrib2_ieee64dir)'; $(am__uninstall_files_from_dir)
-install-nodist_grib1_mlgrib2_ieee64DATA: $(nodist_grib1_mlgrib2_ieee64_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(nodist_grib1_mlgrib2_ieee64_DATA)'; test -n "$(grib1_mlgrib2_ieee64dir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(grib1_mlgrib2_ieee64dir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(grib1_mlgrib2_ieee64dir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(grib1_mlgrib2_ieee64dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(grib1_mlgrib2_ieee64dir)" || exit $$?; \
-	done
-
-uninstall-nodist_grib1_mlgrib2_ieee64DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(nodist_grib1_mlgrib2_ieee64_DATA)'; test -n "$(grib1_mlgrib2_ieee64dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(grib1_mlgrib2_ieee64dir)'; $(am__uninstall_files_from_dir)
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(grib1_mlgrib2_ieee64dir)" "$(DESTDIR)$(grib1_mlgrib2_ieee64dir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-dist_grib1_mlgrib2_ieee64DATA \
-	install-nodist_grib1_mlgrib2_ieee64DATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-dist_grib1_mlgrib2_ieee64DATA \
-	uninstall-nodist_grib1_mlgrib2_ieee64DATA
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	cscopelist-am ctags-am distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-dist_grib1_mlgrib2_ieee64DATA install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-nodist_grib1_mlgrib2_ieee64DATA install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
-	uninstall-am uninstall-dist_grib1_mlgrib2_ieee64DATA \
-	uninstall-nodist_grib1_mlgrib2_ieee64DATA
-
-
-GRIB1.tmpl: ../../samples/GRIB1.tmpl
-	cp -f ../../samples/GRIB1.tmpl .
-
-GRIB2.tmpl: ../../samples/GRIB2.tmpl
-	cp -f ../../samples/GRIB2.tmpl .
-
-gg_sfc_grib1.tmpl: ../../samples/gg_sfc_grib1.tmpl
-	cp -f ../../samples/gg_sfc_grib1.tmpl .
-
-budg.tmpl: ../../samples/budg.tmpl
-	cp -f ../../samples/budg.tmpl .
-
-gg_sfc_grib2.tmpl: ../../samples/gg_sfc_grib2.tmpl
-	cp -f ../../samples/gg_sfc_grib2.tmpl .
-
-polar_stereographic_pl_grib1.tmpl: ../../samples/polar_stereographic_pl_grib1.tmpl
-	cp -f ../../samples/polar_stereographic_pl_grib1.tmpl .
-
-polar_stereographic_pl_grib2.tmpl: ../../samples/polar_stereographic_pl_grib2.tmpl
-	cp -f ../../samples/polar_stereographic_pl_grib2.tmpl .
-
-polar_stereographic_sfc_grib1.tmpl: ../../samples/polar_stereographic_sfc_grib1.tmpl
-	cp -f ../../samples/polar_stereographic_sfc_grib1.tmpl .
-
-polar_stereographic_sfc_grib2.tmpl: ../../samples/polar_stereographic_sfc_grib2.tmpl
-	cp -f ../../samples/polar_stereographic_sfc_grib2.tmpl .
-
-reduced_gg_ml_grib1.tmpl: ../../samples/reduced_gg_ml_grib1.tmpl
-	cp -f ../../samples/reduced_gg_ml_grib1.tmpl .
-
-reduced_gg_ml_grib2.tmpl: ../../samples/reduced_gg_ml_grib2.tmpl
-	cp -f ../../samples/reduced_gg_ml_grib2.tmpl .
-
-reduced_gg_pl_1024_grib1.tmpl: ../../samples/reduced_gg_pl_1024_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_1024_grib1.tmpl .
-
-reduced_gg_pl_1024_grib2.tmpl: ../../samples/reduced_gg_pl_1024_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_1024_grib2.tmpl .
-
-reduced_gg_pl_1280_grib1.tmpl: ../../samples/reduced_gg_pl_1280_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_1280_grib1.tmpl .
-
-reduced_gg_pl_1280_grib2.tmpl: ../../samples/reduced_gg_pl_1280_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_1280_grib2.tmpl .
-
-reduced_gg_pl_128_grib1.tmpl: ../../samples/reduced_gg_pl_128_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_128_grib1.tmpl .
-
-reduced_gg_pl_128_grib2.tmpl: ../../samples/reduced_gg_pl_128_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_128_grib2.tmpl .
-
-reduced_gg_pl_160_grib1.tmpl: ../../samples/reduced_gg_pl_160_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_160_grib1.tmpl .
-
-reduced_gg_pl_160_grib2.tmpl: ../../samples/reduced_gg_pl_160_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_160_grib2.tmpl .
-
-reduced_gg_pl_2000_grib1.tmpl: ../../samples/reduced_gg_pl_2000_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_2000_grib1.tmpl .
-
-reduced_gg_pl_2000_grib2.tmpl: ../../samples/reduced_gg_pl_2000_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_2000_grib2.tmpl .
-
-reduced_gg_pl_200_grib1.tmpl: ../../samples/reduced_gg_pl_200_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_200_grib1.tmpl .
-
-reduced_gg_pl_200_grib2.tmpl: ../../samples/reduced_gg_pl_200_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_200_grib2.tmpl .
-
-reduced_gg_pl_256_grib1.tmpl: ../../samples/reduced_gg_pl_256_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_256_grib1.tmpl .
-
-reduced_gg_pl_256_grib2.tmpl: ../../samples/reduced_gg_pl_256_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_256_grib2.tmpl .
-
-reduced_gg_pl_320_grib1.tmpl: ../../samples/reduced_gg_pl_320_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_320_grib1.tmpl .
-
-reduced_gg_pl_320_grib2.tmpl: ../../samples/reduced_gg_pl_320_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_320_grib2.tmpl .
-
-reduced_gg_pl_32_grib1.tmpl: ../../samples/reduced_gg_pl_32_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_32_grib1.tmpl .
-
-reduced_gg_pl_32_grib2.tmpl: ../../samples/reduced_gg_pl_32_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_32_grib2.tmpl .
-
-reduced_gg_pl_400_grib1.tmpl: ../../samples/reduced_gg_pl_400_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_400_grib1.tmpl .
-
-reduced_gg_pl_400_grib2.tmpl: ../../samples/reduced_gg_pl_400_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_400_grib2.tmpl .
-
-reduced_gg_pl_48_grib1.tmpl: ../../samples/reduced_gg_pl_48_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_48_grib1.tmpl .
-
-reduced_gg_pl_48_grib2.tmpl: ../../samples/reduced_gg_pl_48_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_48_grib2.tmpl .
-
-reduced_gg_pl_512_grib1.tmpl: ../../samples/reduced_gg_pl_512_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_512_grib1.tmpl .
-
-reduced_gg_pl_512_grib2.tmpl: ../../samples/reduced_gg_pl_512_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_512_grib2.tmpl .
-
-reduced_gg_pl_640_grib1.tmpl: ../../samples/reduced_gg_pl_640_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_640_grib1.tmpl .
-
-reduced_gg_pl_640_grib2.tmpl: ../../samples/reduced_gg_pl_640_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_640_grib2.tmpl .
-
-reduced_gg_pl_80_grib1.tmpl: ../../samples/reduced_gg_pl_80_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_80_grib1.tmpl .
-
-reduced_gg_pl_80_grib2.tmpl: ../../samples/reduced_gg_pl_80_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_80_grib2.tmpl .
-
-reduced_gg_pl_96_grib1.tmpl: ../../samples/reduced_gg_pl_96_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_96_grib1.tmpl .
-
-reduced_gg_pl_96_grib2.tmpl: ../../samples/reduced_gg_pl_96_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_96_grib2.tmpl .
-
-reduced_gg_pl_grib1.tmpl: ../../samples/reduced_gg_pl_grib1.tmpl
-	cp -f ../../samples/reduced_gg_pl_grib1.tmpl .
-
-reduced_gg_pl_grib2.tmpl: ../../samples/reduced_gg_pl_grib2.tmpl
-	cp -f ../../samples/reduced_gg_pl_grib2.tmpl .
-
-reduced_gg_sfc_grib1.tmpl: ../../samples/reduced_gg_sfc_grib1.tmpl
-	cp -f ../../samples/reduced_gg_sfc_grib1.tmpl .
-
-reduced_gg_sfc_grib2.tmpl: ../../samples/reduced_gg_sfc_grib2.tmpl
-	cp -f ../../samples/reduced_gg_sfc_grib2.tmpl .
-
-reduced_gg_sfc_jpeg_grib2.tmpl: ../../samples/reduced_gg_sfc_jpeg_grib2.tmpl
-	cp -f ../../samples/reduced_gg_sfc_jpeg_grib2.tmpl .
-
-reduced_ll_sfc_grib1.tmpl: ../../samples/reduced_ll_sfc_grib1.tmpl
-	cp -f ../../samples/reduced_ll_sfc_grib1.tmpl .
-
-reduced_ll_sfc_grib2.tmpl: ../../samples/reduced_ll_sfc_grib2.tmpl
-	cp -f ../../samples/reduced_ll_sfc_grib2.tmpl .
-
-regular_gg_ml_grib1.tmpl: ../../samples/regular_gg_ml_grib1.tmpl
-	cp -f ../../samples/regular_gg_ml_grib1.tmpl .
-
-regular_gg_ml_grib2.tmpl: ../../samples/regular_gg_ml_grib2.tmpl
-	cp -f ../../samples/regular_gg_ml_grib2.tmpl .
-
-regular_gg_pl_grib1.tmpl: ../../samples/regular_gg_pl_grib1.tmpl
-	cp -f ../../samples/regular_gg_pl_grib1.tmpl .
-
-regular_gg_pl_grib2.tmpl: ../../samples/regular_gg_pl_grib2.tmpl
-	cp -f ../../samples/regular_gg_pl_grib2.tmpl .
-
-regular_gg_sfc_grib1.tmpl: ../../samples/regular_gg_sfc_grib1.tmpl
-	cp -f ../../samples/regular_gg_sfc_grib1.tmpl .
-
-regular_gg_sfc_grib2.tmpl: ../../samples/regular_gg_sfc_grib2.tmpl
-	cp -f ../../samples/regular_gg_sfc_grib2.tmpl .
-
-regular_ll_pl_grib1.tmpl: ../../samples/regular_ll_pl_grib1.tmpl
-	cp -f ../../samples/regular_ll_pl_grib1.tmpl .
-
-regular_ll_pl_grib2.tmpl: ../../samples/regular_ll_pl_grib2.tmpl
-	cp -f ../../samples/regular_ll_pl_grib2.tmpl .
-
-regular_ll_sfc_grib1.tmpl: ../../samples/regular_ll_sfc_grib1.tmpl
-	cp -f ../../samples/regular_ll_sfc_grib1.tmpl .
-
-regular_ll_sfc_grib2.tmpl: ../../samples/regular_ll_sfc_grib2.tmpl
-	cp -f ../../samples/regular_ll_sfc_grib2.tmpl .
-
-rotated_ll_pl_grib1.tmpl: ../../samples/rotated_ll_pl_grib1.tmpl
-	cp -f ../../samples/rotated_ll_pl_grib1.tmpl .
-
-rotated_ll_pl_grib2.tmpl: ../../samples/rotated_ll_pl_grib2.tmpl
-	cp -f ../../samples/rotated_ll_pl_grib2.tmpl .
-
-rotated_ll_sfc_grib1.tmpl: ../../samples/rotated_ll_sfc_grib1.tmpl
-	cp -f ../../samples/rotated_ll_sfc_grib1.tmpl .
-
-rotated_ll_sfc_grib2.tmpl: ../../samples/rotated_ll_sfc_grib2.tmpl
-	cp -f ../../samples/rotated_ll_sfc_grib2.tmpl .
-
-sh_ml_grib1.tmpl: ../../samples/sh_ml_grib1.tmpl
-	cp -f ../../samples/sh_ml_grib1.tmpl .
-
-sh_ml_grib2.tmpl: ../../samples/sh_ml_grib2.tmpl
-	cp -f ../../samples/sh_ml_grib2.tmpl .
-
-sh_pl_grib1.tmpl: ../../samples/sh_pl_grib1.tmpl
-	cp -f ../../samples/sh_pl_grib1.tmpl .
-
-sh_pl_grib2.tmpl: ../../samples/sh_pl_grib2.tmpl
-	cp -f ../../samples/sh_pl_grib2.tmpl .
-
-sh_sfc_grib1.tmpl: ../../samples/sh_sfc_grib1.tmpl
-	cp -f ../../samples/sh_sfc_grib1.tmpl .
-
-sh_sfc_grib2.tmpl: ../../samples/sh_sfc_grib2.tmpl
-	cp -f ../../samples/sh_sfc_grib2.tmpl .
-
-clusters_grib1.tmpl: ../../samples/clusters_grib1.tmpl
-	cp -f ../../samples/clusters_grib1.tmpl .
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/libtool b/libtool
deleted file mode 100755
index d99b7d2..0000000
--- a/libtool
+++ /dev/null
@@ -1,10395 +0,0 @@
-#! /bin/sh
-
-# libtool - Provide generalized library-building support services.
-# Generated automatically by config.status (eccodes) 0.16.0
-# Libtool was configured on host costard:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-
-# The names of the tagged configurations supported by this script.
-available_tags="F77 FC "
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Which release of libtool.m4 was used?
-macro_version=2.4.2
-macro_revision=1.3337
-
-# Whether or not to build shared libraries.
-build_libtool_libs=no
-
-# Whether or not to build static libraries.
-build_old_libs=yes
-
-# What type of objects to build.
-pic_mode=default
-
-# Whether or not to optimize for fast installation.
-fast_install=needless
-
-# Shell to use when invoking shell scripts.
-SHELL="/bin/sh"
-
-# An echo program that protects backslashes.
-ECHO="printf %s\\n"
-
-# The PATH separator for the build system.
-PATH_SEPARATOR=":"
-
-# The host system.
-host_alias=
-host=x86_64-suse-linux-gnu
-host_os=linux-gnu
-
-# The build system.
-build_alias=
-build=x86_64-suse-linux-gnu
-build_os=linux-gnu
-
-# A sed program that does not truncate output.
-SED="/usr/bin/sed"
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="$SED -e 1s/^X//"
-
-# A grep program that handles long lines.
-GREP="/usr/bin/grep"
-
-# An ERE matcher.
-EGREP="/usr/bin/grep -E"
-
-# A literal string matcher.
-FGREP="/usr/bin/grep -F"
-
-# A BSD- or MS-compatible name lister.
-NM="/usr/bin/nm -B"
-
-# Whether we need soft or hard links.
-LN_S="ln -s"
-
-# What is the maximum length of a command?
-max_cmd_len=1572864
-
-# Object file suffix (normally "o").
-objext=o
-
-# Executable file suffix (normally "").
-exeext=
-
-# whether the shell understands "unset".
-lt_unset=unset
-
-# turn spaces into newlines.
-SP2NL="tr \\040 \\012"
-
-# turn newlines into spaces.
-NL2SP="tr \\015\\012 \\040\\040"
-
-# convert $build file names to $host format.
-to_host_file_cmd=func_convert_file_noop
-
-# convert $build files to toolchain format.
-to_tool_file_cmd=func_convert_file_noop
-
-# An object symbol dumper.
-OBJDUMP="objdump"
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method="pass_all"
-
-# Command to use when deplibs_check_method = "file_magic".
-file_magic_cmd="\$MAGIC_CMD"
-
-# How to find potential files when deplibs_check_method = "file_magic".
-file_magic_glob=""
-
-# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-want_nocaseglob="no"
-
-# DLL creation program.
-DLLTOOL="false"
-
-# Command to associate shared and link libraries.
-sharedlib_from_linklib_cmd="printf %s\\n"
-
-# The archiver.
-AR="ar"
-
-# Flags to create an archive.
-AR_FLAGS="cru"
-
-# How to feed a file listing to the archiver.
-archiver_list_spec="@"
-
-# A symbol stripping program.
-STRIP="strip"
-
-# Commands used to install an old-style archive.
-RANLIB="ranlib"
-old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$tool_oldlib"
-old_postuninstall_cmds=""
-
-# Whether to use a lock for old archive extraction.
-lock_old_archive_extraction=no
-
-# A C compiler.
-LTCC="gcc"
-
-# LTCC compiler flags.
-LTCFLAGS="-g -O2"
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe="sed -n -e 's/^.*[	 ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[	 ][	 ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p' | sed '/ __gnu_lto/d'"
-
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'"
-
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\)[ ]*\$/  {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/  {\"\\2\", (void *) \\&\\2},/p'"
-
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\)[ ]*\$/  {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/  {\"\\2\", (void *) \\&\\2},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/  {\"lib\\2\", (void *) \\&\\2},/p'"
-
-# Specify filename containing input files for $NM.
-nm_file_list_spec="@"
-
-# The root where to search for dependent libraries,and in which our libraries should be installed.
-lt_sysroot=
-
-# The name of the directory that contains temporary libtool files.
-objdir=.libs
-
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=file
-
-# Must we lock files when doing compilation?
-need_locks="no"
-
-# Manifest tool.
-MANIFEST_TOOL=":"
-
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=""
-
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=""
-
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=""
-
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=""
-
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=""
-
-# Old archive suffix (normally "a").
-libext=a
-
-# Shared library suffix (normally ".so").
-shrext_cmds=".so"
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=""
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=no
-
-# Do we need a version for libraries?
-need_version=no
-
-# Library versioning type.
-version_type=linux
-
-# Shared library runtime path variable.
-runpath_var=LD_RUN_PATH
-
-# Shared library path variable.
-shlibpath_var=LD_LIBRARY_PATH
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=yes
-
-# Format of library name prefix.
-libname_spec="lib\$name"
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
-
-# The coded name of the library, if different from the real name.
-soname_spec="\${libname}\${release}\${shared_ext}\$major"
-
-# Permission mode override for installation of shared libraries.
-install_override_mode=""
-
-# Command to use after installation of a shared archive.
-postinstall_cmds=""
-
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=""
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
-
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=""
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=yes
-
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec="/usr/lib64/gcc/x86_64-suse-linux/4.8 /usr/lib64 /lib64 /usr/x86_64-suse-linux/lib "
-
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib64 /usr/local/lib /usr/lib64/apper /usr/lib64/graphviz /usr/lib64/graphviz/sharp /usr/lib64/graphviz/java /usr/lib64/graphviz/perl /usr/lib64/graphviz/php /usr/lib64/graphviz/ocaml /usr/lib64/graphviz/python /usr/lib64/graphviz/lua /usr/lib64/graphviz/tcl /usr/lib64/graphviz/guile /usr/lib64/graphviz/ruby /opt/kde3/lib64 /opt/kde3/lib /usr/lib64/mysql-workbench /usr/X11R6/lib64 /usr/X11R6/lib /usr/lib64/smokegen "
-
-# Whether dlopen is supported.
-dlopen_support=unknown
-
-# Whether dlopen of programs is supported.
-dlopen_self=unknown
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=unknown
-
-# Commands to strip libraries.
-old_striplib="strip --strip-debug"
-striplib="strip --strip-unneeded"
-
-
-# The linker used to build libraries.
-LD="/usr/x86_64-suse-linux/bin/ld -m elf_x86_64"
-
-# How to create reloadable object files.
-reload_flag=" -r"
-reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
-
-# Commands used to build an old-style archive.
-old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib"
-
-# A language specific compiler.
-CC="gcc"
-
-# Is the compiler the GNU compiler?
-with_gcc=yes
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=" -fno-builtin"
-
-# Additional compiler flags for building library objects.
-pic_flag=" -fPIC -DPIC"
-
-# How to pass a linker flag through the compiler.
-wl="-Wl,"
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=""
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o="yes"
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=yes
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=no
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec="\${wl}--export-dynamic"
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object="no"
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=""
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=""
-
-# Commands used to build a shared archive.
-archive_cmds="\$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
-archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
-	    cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
-	    echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
-	    \$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=""
-module_expsym_cmds=""
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld="yes"
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=""
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=""
-
-# Flag to hardcode $libdir into a binary during linking.
-# This must work even if $libdir does not exist
-hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=""
-
-# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=no
-
-# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting ${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=no
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=no
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=unsupported
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=no
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=no
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=unknown
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=no
-
-# The commands to list exported symbols.
-export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
-
-# Symbols that must always be exported.
-include_expsyms=""
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=""
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=""
-
-# Specify filename containing input files.
-file_list_spec=""
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=immediate
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=""
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=""
-postdep_objects=""
-predeps=""
-postdeps=""
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=""
-
-# ### END LIBTOOL CONFIG
-
-
-# libtool (GNU libtool) 2.4.2
-# Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# GNU Libtool is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html,
-# or obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-# Usage: $progname [OPTION]... [MODE-ARG]...
-#
-# Provide generalized library-building support services.
-#
-#       --config             show all configuration variables
-#       --debug              enable verbose shell tracing
-#   -n, --dry-run            display commands without modifying any files
-#       --features           display basic configuration information and exit
-#       --mode=MODE          use operation mode MODE
-#       --preserve-dup-deps  don't remove duplicate dependency libraries
-#       --quiet, --silent    don't print informational messages
-#       --no-quiet, --no-silent
-#                            print informational messages (default)
-#       --no-warn            don't display warning messages
-#       --tag=TAG            use configuration variables from tag TAG
-#   -v, --verbose            print more informational messages than default
-#       --no-verbose         don't print the extra informational messages
-#       --version            print version information
-#   -h, --help, --help-all   print short, long, or detailed help message
-#
-# MODE must be one of the following:
-#
-#         clean              remove files from the build directory
-#         compile            compile a source file into a libtool object
-#         execute            automatically set library path, then run a program
-#         finish             complete the installation of libtool libraries
-#         install            install libraries or executables
-#         link               create a library or an executable
-#         uninstall          remove libraries from an installed directory
-#
-# MODE-ARGS vary depending on the MODE.  When passed as first option,
-# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
-# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
-#
-# When reporting a bug, please describe a test case to reproduce it and
-# include the following information:
-#
-#         host-triplet:	$host
-#         shell:		$SHELL
-#         compiler:		$LTCC
-#         compiler flags:		$LTCFLAGS
-#         linker:		$LD (gnu? $with_gnu_ld)
-#         $progname:	(GNU libtool) 2.4.2
-#         automake:	$automake_version
-#         autoconf:	$autoconf_version
-#
-# Report bugs to <bug-libtool at gnu.org>.
-# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
-# General help using GNU software: <http://www.gnu.org/gethelp/>.
-
-PROGRAM=libtool
-PACKAGE=libtool
-VERSION=2.4.2
-TIMESTAMP=""
-package_revision=1.3337
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-}
-
-# NLS nuisances: We save the old values to restore during execute mode.
-lt_user_locale=
-lt_safe_locale=
-for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-do
-  eval "if test \"\${$lt_var+set}\" = set; then
-          save_$lt_var=\$$lt_var
-          $lt_var=C
-	  export $lt_var
-	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
-	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
-	fi"
-done
-LC_ALL=C
-LANGUAGE=C
-export LANGUAGE LC_ALL
-
-$lt_unset CDPATH
-
-
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath="$0"
-
-
-
-: ${CP="cp -f"}
-test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
-: ${MAKE="make"}
-: ${MKDIR="mkdir"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
-: ${Xsed="$SED -e 1s/^X//"}
-
-# Global variables:
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
-EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
-
-exit_status=$EXIT_SUCCESS
-
-# Make sure IFS has a sensible default
-lt_nl='
-'
-IFS=" 	$lt_nl"
-
-dirname="s,/[^/]*$,,"
-basename="s,^.*/,,"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-    case ${1} in
-      */*) func_dirname_result="${1%/*}${2}" ;;
-      *  ) func_dirname_result="${3}" ;;
-    esac
-} # Extended-shell func_dirname implementation
-
-
-# func_basename file
-func_basename ()
-{
-    func_basename_result="${1##*/}"
-} # Extended-shell func_basename implementation
-
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
-    case ${1} in
-      */*) func_dirname_result="${1%/*}${2}" ;;
-      *  ) func_dirname_result="${3}" ;;
-    esac
-    func_basename_result="${1##*/}"
-} # Extended-shell func_dirname_and_basename implementation
-
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
-    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-    # positional parameters, so assign one to ordinary parameter first.
-    func_stripname_result=${3}
-    func_stripname_result=${func_stripname_result#"${1}"}
-    func_stripname_result=${func_stripname_result%"${2}"}
-} # Extended-shell func_stripname implementation
-
-
-# These SED scripts presuppose an absolute path with a trailing slash.
-pathcar='s,^/\([^/]*\).*$,\1,'
-pathcdr='s,^/[^/]*,,'
-removedotparts=':dotsl
-		s@/\./@/@g
-		t dotsl
-		s,/\.$,/,'
-collapseslashes='s@/\{1,\}@/@g'
-finalslash='s,/*$,/,'
-
-# func_normal_abspath PATH
-# Remove doubled-up and trailing slashes, "." path components,
-# and cancel out any ".." path components in PATH after making
-# it an absolute path.
-#             value returned in "$func_normal_abspath_result"
-func_normal_abspath ()
-{
-  # Start from root dir and reassemble the path.
-  func_normal_abspath_result=
-  func_normal_abspath_tpath=$1
-  func_normal_abspath_altnamespace=
-  case $func_normal_abspath_tpath in
-    "")
-      # Empty path, that just means $cwd.
-      func_stripname '' '/' "`pwd`"
-      func_normal_abspath_result=$func_stripname_result
-      return
-    ;;
-    # The next three entries are used to spot a run of precisely
-    # two leading slashes without using negated character classes;
-    # we take advantage of case's first-match behaviour.
-    ///*)
-      # Unusual form of absolute path, do nothing.
-    ;;
-    //*)
-      # Not necessarily an ordinary path; POSIX reserves leading '//'
-      # and for example Cygwin uses it to access remote file shares
-      # over CIFS/SMB, so we conserve a leading double slash if found.
-      func_normal_abspath_altnamespace=/
-    ;;
-    /*)
-      # Absolute path, do nothing.
-    ;;
-    *)
-      # Relative path, prepend $cwd.
-      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
-    ;;
-  esac
-  # Cancel out all the simple stuff to save iterations.  We also want
-  # the path to end with a slash for ease of parsing, so make sure
-  # there is one (and only one) here.
-  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
-  while :; do
-    # Processed it all yet?
-    if test "$func_normal_abspath_tpath" = / ; then
-      # If we ascended to the root using ".." the result may be empty now.
-      if test -z "$func_normal_abspath_result" ; then
-        func_normal_abspath_result=/
-      fi
-      break
-    fi
-    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$pathcar"`
-    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$pathcdr"`
-    # Figure out what to do with it
-    case $func_normal_abspath_tcomponent in
-      "")
-        # Trailing empty path component, ignore it.
-      ;;
-      ..)
-        # Parent dir; strip last assembled component from result.
-        func_dirname "$func_normal_abspath_result"
-        func_normal_abspath_result=$func_dirname_result
-      ;;
-      *)
-        # Actual path component, append it.
-        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
-      ;;
-    esac
-  done
-  # Restore leading double-slash if one was found on entry.
-  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
-}
-
-# func_relative_path SRCDIR DSTDIR
-# generates a relative path from SRCDIR to DSTDIR, with a trailing
-# slash if non-empty, suitable for immediately appending a filename
-# without needing to append a separator.
-#             value returned in "$func_relative_path_result"
-func_relative_path ()
-{
-  func_relative_path_result=
-  func_normal_abspath "$1"
-  func_relative_path_tlibdir=$func_normal_abspath_result
-  func_normal_abspath "$2"
-  func_relative_path_tbindir=$func_normal_abspath_result
-
-  # Ascend the tree starting from libdir
-  while :; do
-    # check if we have found a prefix of bindir
-    case $func_relative_path_tbindir in
-      $func_relative_path_tlibdir)
-        # found an exact match
-        func_relative_path_tcancelled=
-        break
-        ;;
-      $func_relative_path_tlibdir*)
-        # found a matching prefix
-        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
-        func_relative_path_tcancelled=$func_stripname_result
-        if test -z "$func_relative_path_result"; then
-          func_relative_path_result=.
-        fi
-        break
-        ;;
-      *)
-        func_dirname $func_relative_path_tlibdir
-        func_relative_path_tlibdir=${func_dirname_result}
-        if test "x$func_relative_path_tlibdir" = x ; then
-          # Have to descend all the way to the root!
-          func_relative_path_result=../$func_relative_path_result
-          func_relative_path_tcancelled=$func_relative_path_tbindir
-          break
-        fi
-        func_relative_path_result=../$func_relative_path_result
-        ;;
-    esac
-  done
-
-  # Now calculate path; take care to avoid doubling-up slashes.
-  func_stripname '' '/' "$func_relative_path_result"
-  func_relative_path_result=$func_stripname_result
-  func_stripname '/' '/' "$func_relative_path_tcancelled"
-  if test "x$func_stripname_result" != x ; then
-    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
-  fi
-
-  # Normalisation. If bindir is libdir, return empty string,
-  # else relative path ending with a slash; either way, target
-  # file name can be directly appended.
-  if test ! -z "$func_relative_path_result"; then
-    func_stripname './' '' "$func_relative_path_result/"
-    func_relative_path_result=$func_stripname_result
-  fi
-}
-
-# The name of this program:
-func_dirname_and_basename "$progpath"
-progname=$func_basename_result
-
-# Make sure we have an absolute path for reexecution:
-case $progpath in
-  [\\/]*|[A-Za-z]:\\*) ;;
-  *[\\/]*)
-     progdir=$func_dirname_result
-     progdir=`cd "$progdir" && pwd`
-     progpath="$progdir/$progname"
-     ;;
-  *)
-     save_IFS="$IFS"
-     IFS=${PATH_SEPARATOR-:}
-     for progdir in $PATH; do
-       IFS="$save_IFS"
-       test -x "$progdir/$progname" && break
-     done
-     IFS="$save_IFS"
-     test -n "$progdir" || progdir=`pwd`
-     progpath="$progdir/$progname"
-     ;;
-esac
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed="${SED}"' -e 1s/^X//'
-sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution that turns a string into a regex matching for the
-# string literally.
-sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
-
-# Sed substitution that converts a w32 file name or path
-# which contains forward slashes, into one that contains
-# (escaped) backslashes.  A very naive implementation.
-lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-
-# Re-`\' parameter expansions in output of double_quote_subst that were
-# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
-# in input to double_quote_subst, that '$' was protected from expansion.
-# Since each input `\' is now two `\'s, look for any number of runs of
-# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
-bs='\\'
-bs2='\\\\'
-bs4='\\\\\\\\'
-dollar='\$'
-sed_double_backslash="\
-  s/$bs4/&\\
-/g
-  s/^$bs2$dollar/$bs&/
-  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
-  s/\n//g"
-
-# Standard options:
-opt_dry_run=false
-opt_help=false
-opt_quiet=false
-opt_verbose=false
-opt_warning=:
-
-# func_echo arg...
-# Echo program name prefixed message, along with the current mode
-# name if it has been set yet.
-func_echo ()
-{
-    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
-}
-
-# func_verbose arg...
-# Echo program name prefixed message in verbose mode only.
-func_verbose ()
-{
-    $opt_verbose && func_echo ${1+"$@"}
-
-    # A bug in bash halts the script if the last line of a function
-    # fails when set -e is in force, so we need another command to
-    # work around that:
-    :
-}
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "$*"
-}
-
-# func_error arg...
-# Echo program name prefixed message to standard error.
-func_error ()
-{
-    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
-}
-
-# func_warning arg...
-# Echo program name prefixed warning message to standard error.
-func_warning ()
-{
-    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
-
-    # bash bug again:
-    :
-}
-
-# func_fatal_error arg...
-# Echo program name prefixed message to standard error, and exit.
-func_fatal_error ()
-{
-    func_error ${1+"$@"}
-    exit $EXIT_FAILURE
-}
-
-# func_fatal_help arg...
-# Echo program name prefixed message to standard error, followed by
-# a help hint, and exit.
-func_fatal_help ()
-{
-    func_error ${1+"$@"}
-    func_fatal_error "$help"
-}
-help="Try \`$progname --help' for more information."  ## default
-
-
-# func_grep expression filename
-# Check whether EXPRESSION matches any line of FILENAME, without output.
-func_grep ()
-{
-    $GREP "$1" "$2" >/dev/null 2>&1
-}
-
-
-# func_mkdir_p directory-path
-# Make sure the entire path to DIRECTORY-PATH is available.
-func_mkdir_p ()
-{
-    my_directory_path="$1"
-    my_dir_list=
-
-    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
-
-      # Protect directory names starting with `-'
-      case $my_directory_path in
-        -*) my_directory_path="./$my_directory_path" ;;
-      esac
-
-      # While some portion of DIR does not yet exist...
-      while test ! -d "$my_directory_path"; do
-        # ...make a list in topmost first order.  Use a colon delimited
-	# list incase some portion of path contains whitespace.
-        my_dir_list="$my_directory_path:$my_dir_list"
-
-        # If the last portion added has no slash in it, the list is done
-        case $my_directory_path in */*) ;; *) break ;; esac
-
-        # ...otherwise throw away the child directory and loop
-        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
-      done
-      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
-
-      save_mkdir_p_IFS="$IFS"; IFS=':'
-      for my_dir in $my_dir_list; do
-	IFS="$save_mkdir_p_IFS"
-        # mkdir can fail with a `File exist' error if two processes
-        # try to create one of the directories concurrently.  Don't
-        # stop in that case!
-        $MKDIR "$my_dir" 2>/dev/null || :
-      done
-      IFS="$save_mkdir_p_IFS"
-
-      # Bail out if we (or some other process) failed to create a directory.
-      test -d "$my_directory_path" || \
-        func_fatal_error "Failed to create \`$1'"
-    fi
-}
-
-
-# func_mktempdir [string]
-# Make a temporary directory that won't clash with other running
-# libtool processes, and avoids race conditions if possible.  If
-# given, STRING is the basename for that directory.
-func_mktempdir ()
-{
-    my_template="${TMPDIR-/tmp}/${1-$progname}"
-
-    if test "$opt_dry_run" = ":"; then
-      # Return a directory name, but don't create it in dry-run mode
-      my_tmpdir="${my_template}-$$"
-    else
-
-      # If mktemp works, use that first and foremost
-      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
-
-      if test ! -d "$my_tmpdir"; then
-        # Failing that, at least try and use $RANDOM to avoid a race
-        my_tmpdir="${my_template}-${RANDOM-0}$$"
-
-        save_mktempdir_umask=`umask`
-        umask 0077
-        $MKDIR "$my_tmpdir"
-        umask $save_mktempdir_umask
-      fi
-
-      # If we're not in dry-run mode, bomb out on failure
-      test -d "$my_tmpdir" || \
-        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
-    fi
-
-    $ECHO "$my_tmpdir"
-}
-
-
-# func_quote_for_eval arg
-# Aesthetically quote ARG to be evaled later.
-# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
-# is double-quoted, suitable for a subsequent eval, whereas
-# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
-# which are still active within double quotes backslashified.
-func_quote_for_eval ()
-{
-    case $1 in
-      *[\\\`\"\$]*)
-	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
-      *)
-        func_quote_for_eval_unquoted_result="$1" ;;
-    esac
-
-    case $func_quote_for_eval_unquoted_result in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting, command substitution and and variable
-      # expansion for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
-        ;;
-      *)
-        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
-    esac
-}
-
-
-# func_quote_for_expand arg
-# Aesthetically quote ARG to be evaled later; same as above,
-# but do not quote variable references.
-func_quote_for_expand ()
-{
-    case $1 in
-      *[\\\`\"]*)
-	my_arg=`$ECHO "$1" | $SED \
-	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
-      *)
-        my_arg="$1" ;;
-    esac
-
-    case $my_arg in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting and command substitution for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        my_arg="\"$my_arg\""
-        ;;
-    esac
-
-    func_quote_for_expand_result="$my_arg"
-}
-
-
-# func_show_eval cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.
-func_show_eval ()
-{
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
-
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
-
-    if ${opt_dry_run-false}; then :; else
-      eval "$my_cmd"
-      my_status=$?
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
-      fi
-    fi
-}
-
-
-# func_show_eval_locale cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.  Use the saved locale for evaluation.
-func_show_eval_locale ()
-{
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
-
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
-
-    if ${opt_dry_run-false}; then :; else
-      eval "$lt_user_locale
-	    $my_cmd"
-      my_status=$?
-      eval "$lt_safe_locale"
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
-      fi
-    fi
-}
-
-# func_tr_sh
-# Turn $1 into a string suitable for a shell variable name.
-# Result is stored in $func_tr_sh_result.  All characters
-# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
-# if $1 begins with a digit, a '_' is prepended as well.
-func_tr_sh ()
-{
-  case $1 in
-  [0-9]* | *[!a-zA-Z0-9_]*)
-    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
-    ;;
-  * )
-    func_tr_sh_result=$1
-    ;;
-  esac
-}
-
-
-# func_version
-# Echo version message to standard output and exit.
-func_version ()
-{
-    $opt_debug
-
-    $SED -n '/(C)/!b go
-	:more
-	/\./!{
-	  N
-	  s/\n# / /
-	  b more
-	}
-	:go
-	/^# '$PROGRAM' (GNU /,/# warranty; / {
-        s/^# //
-	s/^# *$//
-        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
-        p
-     }' < "$progpath"
-     exit $?
-}
-
-# func_usage
-# Echo short help message to standard output and exit.
-func_usage ()
-{
-    $opt_debug
-
-    $SED -n '/^# Usage:/,/^#  *.*--help/ {
-        s/^# //
-	s/^# *$//
-	s/\$progname/'$progname'/
-	p
-    }' < "$progpath"
-    echo
-    $ECHO "run \`$progname --help | more' for full usage"
-    exit $?
-}
-
-# func_help [NOEXIT]
-# Echo long help message to standard output and exit,
-# unless 'noexit' is passed as argument.
-func_help ()
-{
-    $opt_debug
-
-    $SED -n '/^# Usage:/,/# Report bugs to/ {
-	:print
-        s/^# //
-	s/^# *$//
-	s*\$progname*'$progname'*
-	s*\$host*'"$host"'*
-	s*\$SHELL*'"$SHELL"'*
-	s*\$LTCC*'"$LTCC"'*
-	s*\$LTCFLAGS*'"$LTCFLAGS"'*
-	s*\$LD*'"$LD"'*
-	s/\$with_gnu_ld/'"$with_gnu_ld"'/
-	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
-	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
-	p
-	d
-     }
-     /^# .* home page:/b print
-     /^# General help using/b print
-     ' < "$progpath"
-    ret=$?
-    if test -z "$1"; then
-      exit $ret
-    fi
-}
-
-# func_missing_arg argname
-# Echo program name prefixed message to standard error and set global
-# exit_cmd.
-func_missing_arg ()
-{
-    $opt_debug
-
-    func_error "missing argument for $1."
-    exit_cmd=exit
-}
-
-
-# func_split_short_opt shortopt
-# Set func_split_short_opt_name and func_split_short_opt_arg shell
-# variables after splitting SHORTOPT after the 2nd character.
-func_split_short_opt ()
-{
-    func_split_short_opt_arg=${1#??}
-    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
-} # Extended-shell func_split_short_opt implementation
-
-
-# func_split_long_opt longopt
-# Set func_split_long_opt_name and func_split_long_opt_arg shell
-# variables after splitting LONGOPT at the `=' sign.
-func_split_long_opt ()
-{
-    func_split_long_opt_name=${1%%=*}
-    func_split_long_opt_arg=${1#*=}
-} # Extended-shell func_split_long_opt implementation
-
-exit_cmd=:
-
-
-
-
-
-magic="%%%MAGIC variable%%%"
-magic_exe="%%%MAGIC EXE variable%%%"
-
-# Global variables.
-nonopt=
-preserve_args=
-lo2o="s/\\.lo\$/.${objext}/"
-o2lo="s/\\.${objext}\$/.lo/"
-extracted_archives=
-extracted_serial=0
-
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end.  This prevents here-documents from being
-# left over by shells.
-exec_cmd=
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-    eval "${1}+=\${2}"
-} # Extended-shell func_append implementation
-
-# func_append_quoted var value
-# Quote VALUE and append to the end of shell variable VAR, separated
-# by a space.
-func_append_quoted ()
-{
-    func_quote_for_eval "${2}"
-    eval "${1}+=\\ \$func_quote_for_eval_result"
-} # Extended-shell func_append_quoted implementation
-
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-    func_arith_result=$(( $* ))
-} # Extended-shell func_arith implementation
-
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-    func_len_result=${#1}
-} # Extended-shell func_len implementation
-
-
-# func_lo2o object
-func_lo2o ()
-{
-    case ${1} in
-      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-      *)    func_lo2o_result=${1} ;;
-    esac
-} # Extended-shell func_lo2o implementation
-
-
-# func_xform libobj-or-source
-func_xform ()
-{
-    func_xform_result=${1%.*}.lo
-} # Extended-shell func_xform implementation
-
-
-# func_fatal_configuration arg...
-# Echo program name prefixed message to standard error, followed by
-# a configuration failure hint, and exit.
-func_fatal_configuration ()
-{
-    func_error ${1+"$@"}
-    func_error "See the $PACKAGE documentation for more information."
-    func_fatal_error "Fatal configuration error."
-}
-
-
-# func_config
-# Display the configuration for all the tags in this script.
-func_config ()
-{
-    re_begincf='^# ### BEGIN LIBTOOL'
-    re_endcf='^# ### END LIBTOOL'
-
-    # Default configuration.
-    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
-
-    # Now print the configurations for the tags.
-    for tagname in $taglist; do
-      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
-    done
-
-    exit $?
-}
-
-# func_features
-# Display the features supported by this script.
-func_features ()
-{
-    echo "host: $host"
-    if test "$build_libtool_libs" = yes; then
-      echo "enable shared libraries"
-    else
-      echo "disable shared libraries"
-    fi
-    if test "$build_old_libs" = yes; then
-      echo "enable static libraries"
-    else
-      echo "disable static libraries"
-    fi
-
-    exit $?
-}
-
-# func_enable_tag tagname
-# Verify that TAGNAME is valid, and either flag an error and exit, or
-# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
-# variable here.
-func_enable_tag ()
-{
-  # Global variable:
-  tagname="$1"
-
-  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
-  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
-  sed_extractcf="/$re_begincf/,/$re_endcf/p"
-
-  # Validate tagname.
-  case $tagname in
-    *[!-_A-Za-z0-9,/]*)
-      func_fatal_error "invalid tag name: $tagname"
-      ;;
-  esac
-
-  # Don't test for the "default" C tag, as we know it's
-  # there but not specially marked.
-  case $tagname in
-    CC) ;;
-    *)
-      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
-	taglist="$taglist $tagname"
-
-	# Evaluate the configuration.  Be careful to quote the path
-	# and the sed script, to avoid splitting on whitespace, but
-	# also don't use non-portable quotes within backquotes within
-	# quotes we have to do it in 2 steps:
-	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
-	eval "$extractedcf"
-      else
-	func_error "ignoring unknown tag $tagname"
-      fi
-      ;;
-  esac
-}
-
-# func_check_version_match
-# Ensure that we are using m4 macros, and libtool script from the same
-# release of libtool.
-func_check_version_match ()
-{
-  if test "$package_revision" != "$macro_revision"; then
-    if test "$VERSION" != "$macro_version"; then
-      if test -z "$macro_version"; then
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from an older release.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-      else
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-      fi
-    else
-      cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
-$progname: but the definition of this LT_INIT comes from revision $macro_revision.
-$progname: You should recreate aclocal.m4 with macros from revision $package_revision
-$progname: of $PACKAGE $VERSION and run autoconf again.
-_LT_EOF
-    fi
-
-    exit $EXIT_MISMATCH
-  fi
-}
-
-
-# Shorthand for --mode=foo, only valid as the first argument
-case $1 in
-clean|clea|cle|cl)
-  shift; set dummy --mode clean ${1+"$@"}; shift
-  ;;
-compile|compil|compi|comp|com|co|c)
-  shift; set dummy --mode compile ${1+"$@"}; shift
-  ;;
-execute|execut|execu|exec|exe|ex|e)
-  shift; set dummy --mode execute ${1+"$@"}; shift
-  ;;
-finish|finis|fini|fin|fi|f)
-  shift; set dummy --mode finish ${1+"$@"}; shift
-  ;;
-install|instal|insta|inst|ins|in|i)
-  shift; set dummy --mode install ${1+"$@"}; shift
-  ;;
-link|lin|li|l)
-  shift; set dummy --mode link ${1+"$@"}; shift
-  ;;
-uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-  shift; set dummy --mode uninstall ${1+"$@"}; shift
-  ;;
-esac
-
-
-
-# Option defaults:
-opt_debug=:
-opt_dry_run=false
-opt_config=false
-opt_preserve_dup_deps=false
-opt_features=false
-opt_finish=false
-opt_help=false
-opt_help_all=false
-opt_silent=:
-opt_warning=:
-opt_verbose=:
-opt_silent=false
-opt_verbose=false
-
-
-# Parse options once, thoroughly.  This comes as soon as possible in the
-# script to make things like `--version' happen as quickly as we can.
-{
-  # this just eases exit handling
-  while test $# -gt 0; do
-    opt="$1"
-    shift
-    case $opt in
-      --debug|-x)	opt_debug='set -x'
-			func_echo "enabling shell trace mode"
-			$opt_debug
-			;;
-      --dry-run|--dryrun|-n)
-			opt_dry_run=:
-			;;
-      --config)
-			opt_config=:
-func_config
-			;;
-      --dlopen|-dlopen)
-			optarg="$1"
-			opt_dlopen="${opt_dlopen+$opt_dlopen
-}$optarg"
-			shift
-			;;
-      --preserve-dup-deps)
-			opt_preserve_dup_deps=:
-			;;
-      --features)
-			opt_features=:
-func_features
-			;;
-      --finish)
-			opt_finish=:
-set dummy --mode finish ${1+"$@"}; shift
-			;;
-      --help)
-			opt_help=:
-			;;
-      --help-all)
-			opt_help_all=:
-opt_help=': help-all'
-			;;
-      --mode)
-			test $# = 0 && func_missing_arg $opt && break
-			optarg="$1"
-			opt_mode="$optarg"
-case $optarg in
-  # Valid mode arguments:
-  clean|compile|execute|finish|install|link|relink|uninstall) ;;
-
-  # Catch anything else as an error
-  *) func_error "invalid argument for $opt"
-     exit_cmd=exit
-     break
-     ;;
-esac
-			shift
-			;;
-      --no-silent|--no-quiet)
-			opt_silent=false
-preserve_args+=" $opt"
-			;;
-      --no-warning|--no-warn)
-			opt_warning=false
-preserve_args+=" $opt"
-			;;
-      --no-verbose)
-			opt_verbose=false
-preserve_args+=" $opt"
-			;;
-      --silent|--quiet)
-			opt_silent=:
-preserve_args+=" $opt"
-        opt_verbose=false
-			;;
-      --verbose|-v)
-			opt_verbose=:
-preserve_args+=" $opt"
-opt_silent=false
-			;;
-      --tag)
-			test $# = 0 && func_missing_arg $opt && break
-			optarg="$1"
-			opt_tag="$optarg"
-preserve_args+=" $opt $optarg"
-func_enable_tag "$optarg"
-			shift
-			;;
-
-      -\?|-h)		func_usage				;;
-      --help)		func_help				;;
-      --version)	func_version				;;
-
-      # Separate optargs to long options:
-      --*=*)
-			func_split_long_opt "$opt"
-			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
-			shift
-			;;
-
-      # Separate non-argument short options:
-      -\?*|-h*|-n*|-v*)
-			func_split_short_opt "$opt"
-			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
-			shift
-			;;
-
-      --)		break					;;
-      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
-      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
-    esac
-  done
-
-  # Validate options:
-
-  # save first non-option argument
-  if test "$#" -gt 0; then
-    nonopt="$opt"
-    shift
-  fi
-
-  # preserve --debug
-  test "$opt_debug" = : || preserve_args+=" --debug"
-
-  case $host in
-    *cygwin* | *mingw* | *pw32* | *cegcc*)
-      # don't eliminate duplications in $postdeps and $predeps
-      opt_duplicate_compiler_generated_deps=:
-      ;;
-    *)
-      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
-      ;;
-  esac
-
-  $opt_help || {
-    # Sanity checks first:
-    func_check_version_match
-
-    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-      func_fatal_configuration "not configured to build any kind of library"
-    fi
-
-    # Darwin sucks
-    eval std_shrext=\"$shrext_cmds\"
-
-    # Only execute mode is allowed to have -dlopen flags.
-    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
-      func_error "unrecognized option \`-dlopen'"
-      $ECHO "$help" 1>&2
-      exit $EXIT_FAILURE
-    fi
-
-    # Change the help message to a mode-specific one.
-    generic_help="$help"
-    help="Try \`$progname --help --mode=$opt_mode' for more information."
-  }
-
-
-  # Bail if the options were screwed
-  $exit_cmd $EXIT_FAILURE
-}
-
-
-
-
-## ----------- ##
-##    Main.    ##
-## ----------- ##
-
-# func_lalib_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_lalib_p ()
-{
-    test -f "$1" &&
-      $SED -e 4q "$1" 2>/dev/null \
-        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
-}
-
-# func_lalib_unsafe_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function implements the same check as func_lalib_p without
-# resorting to external programs.  To this end, it redirects stdin and
-# closes it afterwards, without saving the original file descriptor.
-# As a safety measure, use it only where a negative result would be
-# fatal anyway.  Works if `file' does not exist.
-func_lalib_unsafe_p ()
-{
-    lalib_p=no
-    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
-	for lalib_p_l in 1 2 3 4
-	do
-	    read lalib_p_line
-	    case "$lalib_p_line" in
-		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
-	    esac
-	done
-	exec 0<&5 5<&-
-    fi
-    test "$lalib_p" = yes
-}
-
-# func_ltwrapper_script_p file
-# True iff FILE is a libtool wrapper script
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_script_p ()
-{
-    func_lalib_p "$1"
-}
-
-# func_ltwrapper_executable_p file
-# True iff FILE is a libtool wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_executable_p ()
-{
-    func_ltwrapper_exec_suffix=
-    case $1 in
-    *.exe) ;;
-    *) func_ltwrapper_exec_suffix=.exe ;;
-    esac
-    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
-}
-
-# func_ltwrapper_scriptname file
-# Assumes file is an ltwrapper_executable
-# uses $file to determine the appropriate filename for a
-# temporary ltwrapper_script.
-func_ltwrapper_scriptname ()
-{
-    func_dirname_and_basename "$1" "" "."
-    func_stripname '' '.exe' "$func_basename_result"
-    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
-}
-
-# func_ltwrapper_p file
-# True iff FILE is a libtool wrapper script or wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_p ()
-{
-    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
-}
-
-
-# func_execute_cmds commands fail_cmd
-# Execute tilde-delimited COMMANDS.
-# If FAIL_CMD is given, eval that upon failure.
-# FAIL_CMD may read-access the current command in variable CMD!
-func_execute_cmds ()
-{
-    $opt_debug
-    save_ifs=$IFS; IFS='~'
-    for cmd in $1; do
-      IFS=$save_ifs
-      eval cmd=\"$cmd\"
-      func_show_eval "$cmd" "${2-:}"
-    done
-    IFS=$save_ifs
-}
-
-
-# func_source file
-# Source FILE, adding directory component if necessary.
-# Note that it is not necessary on cygwin/mingw to append a dot to
-# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
-# behavior happens only for exec(3), not for open(2)!  Also, sourcing
-# `FILE.' does not work on cygwin managed mounts.
-func_source ()
-{
-    $opt_debug
-    case $1 in
-    */* | *\\*)	. "$1" ;;
-    *)		. "./$1" ;;
-    esac
-}
-
-
-# func_resolve_sysroot PATH
-# Replace a leading = in PATH with a sysroot.  Store the result into
-# func_resolve_sysroot_result
-func_resolve_sysroot ()
-{
-  func_resolve_sysroot_result=$1
-  case $func_resolve_sysroot_result in
-  =*)
-    func_stripname '=' '' "$func_resolve_sysroot_result"
-    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
-    ;;
-  esac
-}
-
-# func_replace_sysroot PATH
-# If PATH begins with the sysroot, replace it with = and
-# store the result into func_replace_sysroot_result.
-func_replace_sysroot ()
-{
-  case "$lt_sysroot:$1" in
-  ?*:"$lt_sysroot"*)
-    func_stripname "$lt_sysroot" '' "$1"
-    func_replace_sysroot_result="=$func_stripname_result"
-    ;;
-  *)
-    # Including no sysroot.
-    func_replace_sysroot_result=$1
-    ;;
-  esac
-}
-
-# func_infer_tag arg
-# Infer tagged configuration to use if any are available and
-# if one wasn't chosen via the "--tag" command line option.
-# Only attempt this if the compiler in the base compile
-# command doesn't match the default compiler.
-# arg is usually of the form 'gcc ...'
-func_infer_tag ()
-{
-    $opt_debug
-    if test -n "$available_tags" && test -z "$tagname"; then
-      CC_quoted=
-      for arg in $CC; do
-	func_append_quoted CC_quoted "$arg"
-      done
-      CC_expanded=`func_echo_all $CC`
-      CC_quoted_expanded=`func_echo_all $CC_quoted`
-      case $@ in
-      # Blanks in the command may have been stripped by the calling shell,
-      # but not from the CC environment variable when configure was run.
-      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
-      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
-      # Blanks at the start of $base_compile will cause this to fail
-      # if we don't check for them as well.
-      *)
-	for z in $available_tags; do
-	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
-	    # Evaluate the configuration.
-	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
-	    CC_quoted=
-	    for arg in $CC; do
-	      # Double-quote args containing other shell metacharacters.
-	      func_append_quoted CC_quoted "$arg"
-	    done
-	    CC_expanded=`func_echo_all $CC`
-	    CC_quoted_expanded=`func_echo_all $CC_quoted`
-	    case "$@ " in
-	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
-	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
-	      # The compiler in the base compile command matches
-	      # the one in the tagged configuration.
-	      # Assume this is the tagged configuration we want.
-	      tagname=$z
-	      break
-	      ;;
-	    esac
-	  fi
-	done
-	# If $tagname still isn't set, then no tagged configuration
-	# was found and let the user know that the "--tag" command
-	# line option must be used.
-	if test -z "$tagname"; then
-	  func_echo "unable to infer tagged configuration"
-	  func_fatal_error "specify a tag with \`--tag'"
-#	else
-#	  func_verbose "using $tagname tagged configuration"
-	fi
-	;;
-      esac
-    fi
-}
-
-
-
-# func_write_libtool_object output_name pic_name nonpic_name
-# Create a libtool object file (analogous to a ".la" file),
-# but don't create it if we're doing a dry run.
-func_write_libtool_object ()
-{
-    write_libobj=${1}
-    if test "$build_libtool_libs" = yes; then
-      write_lobj=\'${2}\'
-    else
-      write_lobj=none
-    fi
-
-    if test "$build_old_libs" = yes; then
-      write_oldobj=\'${3}\'
-    else
-      write_oldobj=none
-    fi
-
-    $opt_dry_run || {
-      cat >${write_libobj}T <<EOF
-# $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object=$write_lobj
-
-# Name of the non-PIC object
-non_pic_object=$write_oldobj
-
-EOF
-      $MV "${write_libobj}T" "${write_libobj}"
-    }
-}
-
-
-##################################################
-# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
-##################################################
-
-# func_convert_core_file_wine_to_w32 ARG
-# Helper function used by file name conversion functions when $build is *nix,
-# and $host is mingw, cygwin, or some other w32 environment. Relies on a
-# correctly configured wine environment available, with the winepath program
-# in $build's $PATH.
-#
-# ARG is the $build file name to be converted to w32 format.
-# Result is available in $func_convert_core_file_wine_to_w32_result, and will
-# be empty on error (or when ARG is empty)
-func_convert_core_file_wine_to_w32 ()
-{
-  $opt_debug
-  func_convert_core_file_wine_to_w32_result="$1"
-  if test -n "$1"; then
-    # Unfortunately, winepath does not exit with a non-zero error code, so we
-    # are forced to check the contents of stdout. On the other hand, if the
-    # command is not found, the shell will set an exit code of 127 and print
-    # *an error message* to stdout. So we must check for both error code of
-    # zero AND non-empty stdout, which explains the odd construction:
-    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
-    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
-      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
-        $SED -e "$lt_sed_naive_backslashify"`
-    else
-      func_convert_core_file_wine_to_w32_result=
-    fi
-  fi
-}
-# end: func_convert_core_file_wine_to_w32
-
-
-# func_convert_core_path_wine_to_w32 ARG
-# Helper function used by path conversion functions when $build is *nix, and
-# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
-# configured wine environment available, with the winepath program in $build's
-# $PATH. Assumes ARG has no leading or trailing path separator characters.
-#
-# ARG is path to be converted from $build format to win32.
-# Result is available in $func_convert_core_path_wine_to_w32_result.
-# Unconvertible file (directory) names in ARG are skipped; if no directory names
-# are convertible, then the result may be empty.
-func_convert_core_path_wine_to_w32 ()
-{
-  $opt_debug
-  # unfortunately, winepath doesn't convert paths, only file names
-  func_convert_core_path_wine_to_w32_result=""
-  if test -n "$1"; then
-    oldIFS=$IFS
-    IFS=:
-    for func_convert_core_path_wine_to_w32_f in $1; do
-      IFS=$oldIFS
-      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
-      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
-        if test -z "$func_convert_core_path_wine_to_w32_result"; then
-          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
-        else
-          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
-        fi
-      fi
-    done
-    IFS=$oldIFS
-  fi
-}
-# end: func_convert_core_path_wine_to_w32
-
-
-# func_cygpath ARGS...
-# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
-# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
-# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
-# (2), returns the Cygwin file name or path in func_cygpath_result (input
-# file name or path is assumed to be in w32 format, as previously converted
-# from $build's *nix or MSYS format). In case (3), returns the w32 file name
-# or path in func_cygpath_result (input file name or path is assumed to be in
-# Cygwin format). Returns an empty string on error.
-#
-# ARGS are passed to cygpath, with the last one being the file name or path to
-# be converted.
-#
-# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
-# environment variable; do not put it in $PATH.
-func_cygpath ()
-{
-  $opt_debug
-  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
-    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
-    if test "$?" -ne 0; then
-      # on failure, ensure result is empty
-      func_cygpath_result=
-    fi
-  else
-    func_cygpath_result=
-    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
-  fi
-}
-#end: func_cygpath
-
-
-# func_convert_core_msys_to_w32 ARG
-# Convert file name or path ARG from MSYS format to w32 format.  Return
-# result in func_convert_core_msys_to_w32_result.
-func_convert_core_msys_to_w32 ()
-{
-  $opt_debug
-  # awkward: cmd appends spaces to result
-  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
-    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
-}
-#end: func_convert_core_msys_to_w32
-
-
-# func_convert_file_check ARG1 ARG2
-# Verify that ARG1 (a file name in $build format) was converted to $host
-# format in ARG2. Otherwise, emit an error message, but continue (resetting
-# func_to_host_file_result to ARG1).
-func_convert_file_check ()
-{
-  $opt_debug
-  if test -z "$2" && test -n "$1" ; then
-    func_error "Could not determine host file name corresponding to"
-    func_error "  \`$1'"
-    func_error "Continuing, but uninstalled executables may not work."
-    # Fallback:
-    func_to_host_file_result="$1"
-  fi
-}
-# end func_convert_file_check
-
-
-# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
-# Verify that FROM_PATH (a path in $build format) was converted to $host
-# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
-# func_to_host_file_result to a simplistic fallback value (see below).
-func_convert_path_check ()
-{
-  $opt_debug
-  if test -z "$4" && test -n "$3"; then
-    func_error "Could not determine the host path corresponding to"
-    func_error "  \`$3'"
-    func_error "Continuing, but uninstalled executables may not work."
-    # Fallback.  This is a deliberately simplistic "conversion" and
-    # should not be "improved".  See libtool.info.
-    if test "x$1" != "x$2"; then
-      lt_replace_pathsep_chars="s|$1|$2|g"
-      func_to_host_path_result=`echo "$3" |
-        $SED -e "$lt_replace_pathsep_chars"`
-    else
-      func_to_host_path_result="$3"
-    fi
-  fi
-}
-# end func_convert_path_check
-
-
-# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
-# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
-# and appending REPL if ORIG matches BACKPAT.
-func_convert_path_front_back_pathsep ()
-{
-  $opt_debug
-  case $4 in
-  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
-    ;;
-  esac
-  case $4 in
-  $2 ) func_to_host_path_result+="$3"
-    ;;
-  esac
-}
-# end func_convert_path_front_back_pathsep
-
-
-##################################################
-# $build to $host FILE NAME CONVERSION FUNCTIONS #
-##################################################
-# invoked via `$to_host_file_cmd ARG'
-#
-# In each case, ARG is the path to be converted from $build to $host format.
-# Result will be available in $func_to_host_file_result.
-
-
-# func_to_host_file ARG
-# Converts the file name ARG from $build format to $host format. Return result
-# in func_to_host_file_result.
-func_to_host_file ()
-{
-  $opt_debug
-  $to_host_file_cmd "$1"
-}
-# end func_to_host_file
-
-
-# func_to_tool_file ARG LAZY
-# converts the file name ARG from $build format to toolchain format. Return
-# result in func_to_tool_file_result.  If the conversion in use is listed
-# in (the comma separated) LAZY, no conversion takes place.
-func_to_tool_file ()
-{
-  $opt_debug
-  case ,$2, in
-    *,"$to_tool_file_cmd",*)
-      func_to_tool_file_result=$1
-      ;;
-    *)
-      $to_tool_file_cmd "$1"
-      func_to_tool_file_result=$func_to_host_file_result
-      ;;
-  esac
-}
-# end func_to_tool_file
-
-
-# func_convert_file_noop ARG
-# Copy ARG to func_to_host_file_result.
-func_convert_file_noop ()
-{
-  func_to_host_file_result="$1"
-}
-# end func_convert_file_noop
-
-
-# func_convert_file_msys_to_w32 ARG
-# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
-# conversion to w32 is not available inside the cwrapper.  Returns result in
-# func_to_host_file_result.
-func_convert_file_msys_to_w32 ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    func_convert_core_msys_to_w32 "$1"
-    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_msys_to_w32
-
-
-# func_convert_file_cygwin_to_w32 ARG
-# Convert file name ARG from Cygwin to w32 format.  Returns result in
-# func_to_host_file_result.
-func_convert_file_cygwin_to_w32 ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
-    # LT_CYGPATH in this case.
-    func_to_host_file_result=`cygpath -m "$1"`
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_cygwin_to_w32
-
-
-# func_convert_file_nix_to_w32 ARG
-# Convert file name ARG from *nix to w32 format.  Requires a wine environment
-# and a working winepath. Returns result in func_to_host_file_result.
-func_convert_file_nix_to_w32 ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    func_convert_core_file_wine_to_w32 "$1"
-    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_nix_to_w32
-
-
-# func_convert_file_msys_to_cygwin ARG
-# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
-# Returns result in func_to_host_file_result.
-func_convert_file_msys_to_cygwin ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    func_convert_core_msys_to_w32 "$1"
-    func_cygpath -u "$func_convert_core_msys_to_w32_result"
-    func_to_host_file_result="$func_cygpath_result"
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_msys_to_cygwin
-
-
-# func_convert_file_nix_to_cygwin ARG
-# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
-# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
-# in func_to_host_file_result.
-func_convert_file_nix_to_cygwin ()
-{
-  $opt_debug
-  func_to_host_file_result="$1"
-  if test -n "$1"; then
-    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
-    func_convert_core_file_wine_to_w32 "$1"
-    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
-    func_to_host_file_result="$func_cygpath_result"
-  fi
-  func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_nix_to_cygwin
-
-
-#############################################
-# $build to $host PATH CONVERSION FUNCTIONS #
-#############################################
-# invoked via `$to_host_path_cmd ARG'
-#
-# In each case, ARG is the path to be converted from $build to $host format.
-# The result will be available in $func_to_host_path_result.
-#
-# Path separators are also converted from $build format to $host format.  If
-# ARG begins or ends with a path separator character, it is preserved (but
-# converted to $host format) on output.
-#
-# All path conversion functions are named using the following convention:
-#   file name conversion function    : func_convert_file_X_to_Y ()
-#   path conversion function         : func_convert_path_X_to_Y ()
-# where, for any given $build/$host combination the 'X_to_Y' value is the
-# same.  If conversion functions are added for new $build/$host combinations,
-# the two new functions must follow this pattern, or func_init_to_host_path_cmd
-# will break.
-
-
-# func_init_to_host_path_cmd
-# Ensures that function "pointer" variable $to_host_path_cmd is set to the
-# appropriate value, based on the value of $to_host_file_cmd.
-to_host_path_cmd=
-func_init_to_host_path_cmd ()
-{
-  $opt_debug
-  if test -z "$to_host_path_cmd"; then
-    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
-    to_host_path_cmd="func_convert_path_${func_stripname_result}"
-  fi
-}
-
-
-# func_to_host_path ARG
-# Converts the path ARG from $build format to $host format. Return result
-# in func_to_host_path_result.
-func_to_host_path ()
-{
-  $opt_debug
-  func_init_to_host_path_cmd
-  $to_host_path_cmd "$1"
-}
-# end func_to_host_path
-
-
-# func_convert_path_noop ARG
-# Copy ARG to func_to_host_path_result.
-func_convert_path_noop ()
-{
-  func_to_host_path_result="$1"
-}
-# end func_convert_path_noop
-
-
-# func_convert_path_msys_to_w32 ARG
-# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
-# conversion to w32 is not available inside the cwrapper.  Returns result in
-# func_to_host_path_result.
-func_convert_path_msys_to_w32 ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # Remove leading and trailing path separator characters from ARG.  MSYS
-    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
-    # and winepath ignores them completely.
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_msys_to_w32
-
-
-# func_convert_path_cygwin_to_w32 ARG
-# Convert path ARG from Cygwin to w32 format.  Returns result in
-# func_to_host_file_result.
-func_convert_path_cygwin_to_w32 ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_cygwin_to_w32
-
-
-# func_convert_path_nix_to_w32 ARG
-# Convert path ARG from *nix to w32 format.  Requires a wine environment and
-# a working winepath.  Returns result in func_to_host_file_result.
-func_convert_path_nix_to_w32 ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
-    func_convert_path_check : ";" \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
-  fi
-}
-# end func_convert_path_nix_to_w32
-
-
-# func_convert_path_msys_to_cygwin ARG
-# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
-# Returns result in func_to_host_file_result.
-func_convert_path_msys_to_cygwin ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # See func_convert_path_msys_to_w32:
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
-    func_to_host_path_result="$func_cygpath_result"
-    func_convert_path_check : : \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
-  fi
-}
-# end func_convert_path_msys_to_cygwin
-
-
-# func_convert_path_nix_to_cygwin ARG
-# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
-# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
-# func_to_host_file_result.
-func_convert_path_nix_to_cygwin ()
-{
-  $opt_debug
-  func_to_host_path_result="$1"
-  if test -n "$1"; then
-    # Remove leading and trailing path separator characters from
-    # ARG. msys behavior is inconsistent here, cygpath turns them
-    # into '.;' and ';.', and winepath ignores them completely.
-    func_stripname : : "$1"
-    func_to_host_path_tmp1=$func_stripname_result
-    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
-    func_to_host_path_result="$func_cygpath_result"
-    func_convert_path_check : : \
-      "$func_to_host_path_tmp1" "$func_to_host_path_result"
-    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
-  fi
-}
-# end func_convert_path_nix_to_cygwin
-
-
-# func_mode_compile arg...
-func_mode_compile ()
-{
-    $opt_debug
-    # Get the compilation command and the source file.
-    base_compile=
-    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
-    suppress_opt=yes
-    suppress_output=
-    arg_mode=normal
-    libobj=
-    later=
-    pie_flag=
-
-    for arg
-    do
-      case $arg_mode in
-      arg  )
-	# do not "continue".  Instead, add this to base_compile
-	lastarg="$arg"
-	arg_mode=normal
-	;;
-
-      target )
-	libobj="$arg"
-	arg_mode=normal
-	continue
-	;;
-
-      normal )
-	# Accept any command-line options.
-	case $arg in
-	-o)
-	  test -n "$libobj" && \
-	    func_fatal_error "you cannot specify \`-o' more than once"
-	  arg_mode=target
-	  continue
-	  ;;
-
-	-pie | -fpie | -fPIE)
-          pie_flag+=" $arg"
-	  continue
-	  ;;
-
-	-shared | -static | -prefer-pic | -prefer-non-pic)
-	  later+=" $arg"
-	  continue
-	  ;;
-
-	-no-suppress)
-	  suppress_opt=no
-	  continue
-	  ;;
-
-	-Xcompiler)
-	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
-	  continue      #  The current "srcfile" will either be retained or
-	  ;;            #  replaced later.  I would guess that would be a bug.
-
-	-Wc,*)
-	  func_stripname '-Wc,' '' "$arg"
-	  args=$func_stripname_result
-	  lastarg=
-	  save_ifs="$IFS"; IFS=','
-	  for arg in $args; do
-	    IFS="$save_ifs"
-	    func_append_quoted lastarg "$arg"
-	  done
-	  IFS="$save_ifs"
-	  func_stripname ' ' '' "$lastarg"
-	  lastarg=$func_stripname_result
-
-	  # Add the arguments to base_compile.
-	  base_compile+=" $lastarg"
-	  continue
-	  ;;
-
-	*)
-	  # Accept the current argument as the source file.
-	  # The previous "srcfile" becomes the current argument.
-	  #
-	  lastarg="$srcfile"
-	  srcfile="$arg"
-	  ;;
-	esac  #  case $arg
-	;;
-      esac    #  case $arg_mode
-
-      # Aesthetically quote the previous argument.
-      func_append_quoted base_compile "$lastarg"
-    done # for arg
-
-    case $arg_mode in
-    arg)
-      func_fatal_error "you must specify an argument for -Xcompile"
-      ;;
-    target)
-      func_fatal_error "you must specify a target with \`-o'"
-      ;;
-    *)
-      # Get the name of the library object.
-      test -z "$libobj" && {
-	func_basename "$srcfile"
-	libobj="$func_basename_result"
-      }
-      ;;
-    esac
-
-    # Recognize several different file suffixes.
-    # If the user specifies -o file.o, it is replaced with file.lo
-    case $libobj in
-    *.[cCFSifmso] | \
-    *.ada | *.adb | *.ads | *.asm | \
-    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
-      func_xform "$libobj"
-      libobj=$func_xform_result
-      ;;
-    esac
-
-    case $libobj in
-    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
-    *)
-      func_fatal_error "cannot determine name of library object from \`$libobj'"
-      ;;
-    esac
-
-    func_infer_tag $base_compile
-
-    for arg in $later; do
-      case $arg in
-      -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
-	build_old_libs=no
-	continue
-	;;
-
-      -static)
-	build_libtool_libs=no
-	build_old_libs=yes
-	continue
-	;;
-
-      -prefer-pic)
-	pic_mode=yes
-	continue
-	;;
-
-      -prefer-non-pic)
-	pic_mode=no
-	continue
-	;;
-      esac
-    done
-
-    func_quote_for_eval "$libobj"
-    test "X$libobj" != "X$func_quote_for_eval_result" \
-      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
-      && func_warning "libobj name \`$libobj' may not contain shell special characters."
-    func_dirname_and_basename "$obj" "/" ""
-    objname="$func_basename_result"
-    xdir="$func_dirname_result"
-    lobj=${xdir}$objdir/$objname
-
-    test -z "$base_compile" && \
-      func_fatal_help "you must specify a compilation command"
-
-    # Delete any leftover library objects.
-    if test "$build_old_libs" = yes; then
-      removelist="$obj $lobj $libobj ${libobj}T"
-    else
-      removelist="$lobj $libobj ${libobj}T"
-    fi
-
-    # On Cygwin there's no "real" PIC flag so we must build both object types
-    case $host_os in
-    cygwin* | mingw* | pw32* | os2* | cegcc*)
-      pic_mode=default
-      ;;
-    esac
-    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
-      # non-PIC code in shared libraries is not supported
-      pic_mode=default
-    fi
-
-    # Calculate the filename of the output object if compiler does
-    # not support -o with -c
-    if test "$compiler_c_o" = no; then
-      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
-      lockfile="$output_obj.lock"
-    else
-      output_obj=
-      need_locks=no
-      lockfile=
-    fi
-
-    # Lock this critical section if it is needed
-    # We use this script file to make the link, it avoids creating a new file
-    if test "$need_locks" = yes; then
-      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
-	func_echo "Waiting for $lockfile to be removed"
-	sleep 2
-      done
-    elif test "$need_locks" = warn; then
-      if test -f "$lockfile"; then
-	$ECHO "\
-*** ERROR, $lockfile exists and contains:
-`cat $lockfile 2>/dev/null`
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-      removelist+=" $output_obj"
-      $ECHO "$srcfile" > "$lockfile"
-    fi
-
-    $opt_dry_run || $RM $removelist
-    removelist+=" $lockfile"
-    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
-
-    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
-    srcfile=$func_to_tool_file_result
-    func_quote_for_eval "$srcfile"
-    qsrcfile=$func_quote_for_eval_result
-
-    # Only build a PIC object if we are building libtool libraries.
-    if test "$build_libtool_libs" = yes; then
-      # Without this assignment, base_compile gets emptied.
-      fbsd_hideous_sh_bug=$base_compile
-
-      if test "$pic_mode" != no; then
-	command="$base_compile $qsrcfile $pic_flag"
-      else
-	# Don't build PIC code
-	command="$base_compile $qsrcfile"
-      fi
-
-      func_mkdir_p "$xdir$objdir"
-
-      if test -z "$output_obj"; then
-	# Place PIC objects in $objdir
-	command+=" -o $lobj"
-      fi
-
-      func_show_eval_locale "$command"	\
-          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
-
-      if test "$need_locks" = warn &&
-	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-	$ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed, then go on to compile the next one
-      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
-	func_show_eval '$MV "$output_obj" "$lobj"' \
-	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-
-      # Allow error messages only from the first compilation.
-      if test "$suppress_opt" = yes; then
-	suppress_output=' >/dev/null 2>&1'
-      fi
-    fi
-
-    # Only build a position-dependent object if we build old libraries.
-    if test "$build_old_libs" = yes; then
-      if test "$pic_mode" != yes; then
-	# Don't build PIC code
-	command="$base_compile $qsrcfile$pie_flag"
-      else
-	command="$base_compile $qsrcfile $pic_flag"
-      fi
-      if test "$compiler_c_o" = yes; then
-	command+=" -o $obj"
-      fi
-
-      # Suppress compiler output if we already did a PIC compilation.
-      command+="$suppress_output"
-      func_show_eval_locale "$command" \
-        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
-
-      if test "$need_locks" = warn &&
-	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-	$ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
-	$opt_dry_run || $RM $removelist
-	exit $EXIT_FAILURE
-      fi
-
-      # Just move the object if needed
-      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
-	func_show_eval '$MV "$output_obj" "$obj"' \
-	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
-      fi
-    fi
-
-    $opt_dry_run || {
-      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
-
-      # Unlock the critical section if it was locked
-      if test "$need_locks" != no; then
-	removelist=$lockfile
-        $RM "$lockfile"
-      fi
-    }
-
-    exit $EXIT_SUCCESS
-}
-
-$opt_help || {
-  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
-}
-
-func_mode_help ()
-{
-    # We need to display help for each of the modes.
-    case $opt_mode in
-      "")
-        # Generic help is extracted from the usage comments
-        # at the start of this file.
-        func_help
-        ;;
-
-      clean)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
-
-Remove files from the build directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, object or program, all the files associated
-with it are deleted. Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      compile)
-      $ECHO \
-"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
-
-Compile a source file into a libtool library object.
-
-This mode accepts the following additional options:
-
-  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
-  -no-suppress      do not suppress compiler output for multiple passes
-  -prefer-pic       try to build PIC objects only
-  -prefer-non-pic   try to build non-PIC objects only
-  -shared           do not build a \`.o' file suitable for static linking
-  -static           only build a \`.o' file suitable for static linking
-  -Wc,FLAG          pass FLAG directly to the compiler
-
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
-from the given SOURCEFILE.
-
-The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
-        ;;
-
-      execute)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
-
-Automatically set library path, then run a program.
-
-This mode accepts the following additional options:
-
-  -dlopen FILE      add the directory containing FILE to the library path
-
-This mode sets the library path environment variable according to \`-dlopen'
-flags.
-
-If any of the ARGS are libtool executable wrappers, then they are translated
-into their corresponding uninstalled binary, and any of their required library
-directories are added to the library path.
-
-Then, COMMAND is executed, with ARGS as arguments."
-        ;;
-
-      finish)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
-
-Complete the installation of libtool libraries.
-
-Each LIBDIR is a directory that contains libtool libraries.
-
-The commands that this mode executes may require superuser privileges.  Use
-the \`--dry-run' option if you just want to see what would be executed."
-        ;;
-
-      install)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
-
-Install executables or libraries.
-
-INSTALL-COMMAND is the installation command.  The first component should be
-either the \`install' or \`cp' program.
-
-The following components of INSTALL-COMMAND are treated specially:
-
-  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
-
-The rest of the components are interpreted as arguments to that command (only
-BSD-compatible install options are recognized)."
-        ;;
-
-      link)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
-
-Link object files or libraries together to form another library, or to
-create an executable program.
-
-LINK-COMMAND is a command using the C compiler that you would use to create
-a program from several object files.
-
-The following components of LINK-COMMAND are treated specially:
-
-  -all-static       do not do any dynamic linking at all
-  -avoid-version    do not add a version suffix if possible
-  -bindir BINDIR    specify path to binaries directory (for systems where
-                    libraries must be found in the PATH setting at runtime)
-  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
-  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
-  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-  -export-symbols SYMFILE
-                    try to export only the symbols listed in SYMFILE
-  -export-symbols-regex REGEX
-                    try to export only the symbols matching REGEX
-  -LLIBDIR          search LIBDIR for required installed libraries
-  -lNAME            OUTPUT-FILE requires the installed library libNAME
-  -module           build a library that can dlopened
-  -no-fast-install  disable the fast-install mode
-  -no-install       link a not-installable executable
-  -no-undefined     declare that a library does not refer to external symbols
-  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
-  -objectlist FILE  Use a list of object files found in FILE to specify objects
-  -precious-files-regex REGEX
-                    don't remove output files matching REGEX
-  -release RELEASE  specify package release information
-  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
-  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
-  -shared           only do dynamic linking of libtool libraries
-  -shrext SUFFIX    override the standard shared library file extension
-  -static           do not do any dynamic linking of uninstalled libtool libraries
-  -static-libtool-libs
-                    do not do any dynamic linking of libtool libraries
-  -version-info CURRENT[:REVISION[:AGE]]
-                    specify library version info [each variable defaults to 0]
-  -weak LIBNAME     declare that the target provides the LIBNAME interface
-  -Wc,FLAG
-  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
-  -Wl,FLAG
-  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
-  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
-
-All other options (arguments beginning with \`-') are ignored.
-
-Every other argument is treated as a filename.  Files ending in \`.la' are
-treated as uninstalled libtool libraries, other files are standard or library
-object files.
-
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
-required, except when creating a convenience library.
-
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
-
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
-is created, otherwise an executable program is created."
-        ;;
-
-      uninstall)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
-
-Remove libraries from an installation directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, all the files associated with it are deleted.
-Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      *)
-        func_fatal_help "invalid operation mode \`$opt_mode'"
-        ;;
-    esac
-
-    echo
-    $ECHO "Try \`$progname --help' for more information about other modes."
-}
-
-# Now that we've collected a possible --mode arg, show help if necessary
-if $opt_help; then
-  if test "$opt_help" = :; then
-    func_mode_help
-  else
-    {
-      func_help noexit
-      for opt_mode in compile link execute install finish uninstall clean; do
-	func_mode_help
-      done
-    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
-    {
-      func_help noexit
-      for opt_mode in compile link execute install finish uninstall clean; do
-	echo
-	func_mode_help
-      done
-    } |
-    sed '1d
-      /^When reporting/,/^Report/{
-	H
-	d
-      }
-      $x
-      /information about other modes/d
-      /more detailed .*MODE/d
-      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
-  fi
-  exit $?
-fi
-
-
-# func_mode_execute arg...
-func_mode_execute ()
-{
-    $opt_debug
-    # The first argument is the command name.
-    cmd="$nonopt"
-    test -z "$cmd" && \
-      func_fatal_help "you must specify a COMMAND"
-
-    # Handle -dlopen flags immediately.
-    for file in $opt_dlopen; do
-      test -f "$file" \
-	|| func_fatal_help "\`$file' is not a file"
-
-      dir=
-      case $file in
-      *.la)
-	func_resolve_sysroot "$file"
-	file=$func_resolve_sysroot_result
-
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$lib' is not a valid libtool archive"
-
-	# Read the libtool library.
-	dlname=
-	library_names=
-	func_source "$file"
-
-	# Skip this library if it cannot be dlopened.
-	if test -z "$dlname"; then
-	  # Warn if it was a shared library.
-	  test -n "$library_names" && \
-	    func_warning "\`$file' was not linked with \`-export-dynamic'"
-	  continue
-	fi
-
-	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
-
-	if test -f "$dir/$objdir/$dlname"; then
-	  dir+="/$objdir"
-	else
-	  if test ! -f "$dir/$dlname"; then
-	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
-	  fi
-	fi
-	;;
-
-      *.lo)
-	# Just add the directory containing the .lo file.
-	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
-	;;
-
-      *)
-	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
-	continue
-	;;
-      esac
-
-      # Get the absolute pathname.
-      absdir=`cd "$dir" && pwd`
-      test -n "$absdir" && dir="$absdir"
-
-      # Now add the directory to shlibpath_var.
-      if eval "test -z \"\$$shlibpath_var\""; then
-	eval "$shlibpath_var=\"\$dir\""
-      else
-	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
-      fi
-    done
-
-    # This variable tells wrapper scripts just to set shlibpath_var
-    # rather than running their programs.
-    libtool_execute_magic="$magic"
-
-    # Check if any of the arguments is a wrapper script.
-    args=
-    for file
-    do
-      case $file in
-      -* | *.la | *.lo ) ;;
-      *)
-	# Do a test to see if this is really a libtool program.
-	if func_ltwrapper_script_p "$file"; then
-	  func_source "$file"
-	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
-	elif func_ltwrapper_executable_p "$file"; then
-	  func_ltwrapper_scriptname "$file"
-	  func_source "$func_ltwrapper_scriptname_result"
-	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
-	fi
-	;;
-      esac
-      # Quote arguments (to preserve shell metacharacters).
-      func_append_quoted args "$file"
-    done
-
-    if test "X$opt_dry_run" = Xfalse; then
-      if test -n "$shlibpath_var"; then
-	# Export the shlibpath_var.
-	eval "export $shlibpath_var"
-      fi
-
-      # Restore saved environment variables
-      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-      do
-	eval "if test \"\${save_$lt_var+set}\" = set; then
-                $lt_var=\$save_$lt_var; export $lt_var
-	      else
-		$lt_unset $lt_var
-	      fi"
-      done
-
-      # Now prepare to actually exec the command.
-      exec_cmd="\$cmd$args"
-    else
-      # Display what would be done.
-      if test -n "$shlibpath_var"; then
-	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
-	echo "export $shlibpath_var"
-      fi
-      $ECHO "$cmd$args"
-      exit $EXIT_SUCCESS
-    fi
-}
-
-test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
-
-
-# func_mode_finish arg...
-func_mode_finish ()
-{
-    $opt_debug
-    libs=
-    libdirs=
-    admincmds=
-
-    for opt in "$nonopt" ${1+"$@"}
-    do
-      if test -d "$opt"; then
-	libdirs+=" $opt"
-
-      elif test -f "$opt"; then
-	if func_lalib_unsafe_p "$opt"; then
-	  libs+=" $opt"
-	else
-	  func_warning "\`$opt' is not a valid libtool archive"
-	fi
-
-      else
-	func_fatal_error "invalid argument \`$opt'"
-      fi
-    done
-
-    if test -n "$libs"; then
-      if test -n "$lt_sysroot"; then
-        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
-        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
-      else
-        sysroot_cmd=
-      fi
-
-      # Remove sysroot references
-      if $opt_dry_run; then
-        for lib in $libs; do
-          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
-        done
-      else
-        tmpdir=`func_mktempdir`
-        for lib in $libs; do
-	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
-	    > $tmpdir/tmp-la
-	  mv -f $tmpdir/tmp-la $lib
-	done
-        ${RM}r "$tmpdir"
-      fi
-    fi
-
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      for libdir in $libdirs; do
-	if test -n "$finish_cmds"; then
-	  # Do each command in the finish commands.
-	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
-'"$cmd"'"'
-	fi
-	if test -n "$finish_eval"; then
-	  # Do the single finish_eval.
-	  eval cmds=\"$finish_eval\"
-	  $opt_dry_run || eval "$cmds" || admincmds+="
-       $cmds"
-	fi
-      done
-    fi
-
-    # Exit here if they wanted silent mode.
-    $opt_silent && exit $EXIT_SUCCESS
-
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      echo "----------------------------------------------------------------------"
-      echo "Libraries have been installed in:"
-      for libdir in $libdirs; do
-	$ECHO "   $libdir"
-      done
-      echo
-      echo "If you ever happen to want to link against installed libraries"
-      echo "in a given directory, LIBDIR, you must either use libtool, and"
-      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
-      echo "flag during linking and do at least one of the following:"
-      if test -n "$shlibpath_var"; then
-	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
-	echo "     during execution"
-      fi
-      if test -n "$runpath_var"; then
-	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
-	echo "     during linking"
-      fi
-      if test -n "$hardcode_libdir_flag_spec"; then
-	libdir=LIBDIR
-	eval flag=\"$hardcode_libdir_flag_spec\"
-
-	$ECHO "   - use the \`$flag' linker flag"
-      fi
-      if test -n "$admincmds"; then
-	$ECHO "   - have your system administrator run these commands:$admincmds"
-      fi
-      if test -f /etc/ld.so.conf; then
-	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
-      fi
-      echo
-
-      echo "See any operating system documentation about shared libraries for"
-      case $host in
-	solaris2.[6789]|solaris2.1[0-9])
-	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
-	  echo "pages."
-	  ;;
-	*)
-	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
-	  ;;
-      esac
-      echo "----------------------------------------------------------------------"
-    fi
-    exit $EXIT_SUCCESS
-}
-
-test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
-
-
-# func_mode_install arg...
-func_mode_install ()
-{
-    $opt_debug
-    # There may be an optional sh(1) argument at the beginning of
-    # install_prog (especially on Windows NT).
-    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
-       # Allow the use of GNU shtool's install command.
-       case $nonopt in *shtool*) :;; *) false;; esac; then
-      # Aesthetically quote it.
-      func_quote_for_eval "$nonopt"
-      install_prog="$func_quote_for_eval_result "
-      arg=$1
-      shift
-    else
-      install_prog=
-      arg=$nonopt
-    fi
-
-    # The real first argument should be the name of the installation program.
-    # Aesthetically quote it.
-    func_quote_for_eval "$arg"
-    install_prog+="$func_quote_for_eval_result"
-    install_shared_prog=$install_prog
-    case " $install_prog " in
-      *[\\\ /]cp\ *) install_cp=: ;;
-      *) install_cp=false ;;
-    esac
-
-    # We need to accept at least all the BSD install flags.
-    dest=
-    files=
-    opts=
-    prev=
-    install_type=
-    isdir=no
-    stripme=
-    no_mode=:
-    for arg
-    do
-      arg2=
-      if test -n "$dest"; then
-	files+=" $dest"
-	dest=$arg
-	continue
-      fi
-
-      case $arg in
-      -d) isdir=yes ;;
-      -f)
-	if $install_cp; then :; else
-	  prev=$arg
-	fi
-	;;
-      -g | -m | -o)
-	prev=$arg
-	;;
-      -s)
-	stripme=" -s"
-	continue
-	;;
-      -*)
-	;;
-      *)
-	# If the previous option needed an argument, then skip it.
-	if test -n "$prev"; then
-	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
-	    arg2=$install_override_mode
-	    no_mode=false
-	  fi
-	  prev=
-	else
-	  dest=$arg
-	  continue
-	fi
-	;;
-      esac
-
-      # Aesthetically quote the argument.
-      func_quote_for_eval "$arg"
-      install_prog+=" $func_quote_for_eval_result"
-      if test -n "$arg2"; then
-	func_quote_for_eval "$arg2"
-      fi
-      install_shared_prog+=" $func_quote_for_eval_result"
-    done
-
-    test -z "$install_prog" && \
-      func_fatal_help "you must specify an install program"
-
-    test -n "$prev" && \
-      func_fatal_help "the \`$prev' option requires an argument"
-
-    if test -n "$install_override_mode" && $no_mode; then
-      if $install_cp; then :; else
-	func_quote_for_eval "$install_override_mode"
-	install_shared_prog+=" -m $func_quote_for_eval_result"
-      fi
-    fi
-
-    if test -z "$files"; then
-      if test -z "$dest"; then
-	func_fatal_help "no file or destination specified"
-      else
-	func_fatal_help "you must specify a destination"
-      fi
-    fi
-
-    # Strip any trailing slash from the destination.
-    func_stripname '' '/' "$dest"
-    dest=$func_stripname_result
-
-    # Check to see that the destination is a directory.
-    test -d "$dest" && isdir=yes
-    if test "$isdir" = yes; then
-      destdir="$dest"
-      destname=
-    else
-      func_dirname_and_basename "$dest" "" "."
-      destdir="$func_dirname_result"
-      destname="$func_basename_result"
-
-      # Not a directory, so check to see that there is only one file specified.
-      set dummy $files; shift
-      test "$#" -gt 1 && \
-	func_fatal_help "\`$dest' is not a directory"
-    fi
-    case $destdir in
-    [\\/]* | [A-Za-z]:[\\/]*) ;;
-    *)
-      for file in $files; do
-	case $file in
-	*.lo) ;;
-	*)
-	  func_fatal_help "\`$destdir' must be an absolute directory name"
-	  ;;
-	esac
-      done
-      ;;
-    esac
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic="$magic"
-
-    staticlibs=
-    future_libdirs=
-    current_libdirs=
-    for file in $files; do
-
-      # Do each installation.
-      case $file in
-      *.$libext)
-	# Do the static libraries later.
-	staticlibs+=" $file"
-	;;
-
-      *.la)
-	func_resolve_sysroot "$file"
-	file=$func_resolve_sysroot_result
-
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$file' is not a valid libtool archive"
-
-	library_names=
-	old_library=
-	relink_command=
-	func_source "$file"
-
-	# Add the libdir to current_libdirs if it is the destination.
-	if test "X$destdir" = "X$libdir"; then
-	  case "$current_libdirs " in
-	  *" $libdir "*) ;;
-	  *) current_libdirs+=" $libdir" ;;
-	  esac
-	else
-	  # Note the libdir as a future libdir.
-	  case "$future_libdirs " in
-	  *" $libdir "*) ;;
-	  *) future_libdirs+=" $libdir" ;;
-	  esac
-	fi
-
-	func_dirname "$file" "/" ""
-	dir="$func_dirname_result"
-	dir+="$objdir"
-
-	if test -n "$relink_command"; then
-	  # Determine the prefix the user has applied to our future dir.
-	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
-
-	  # Don't allow the user to place us outside of our expected
-	  # location b/c this prevents finding dependent libraries that
-	  # are installed to the same prefix.
-	  # At present, this check doesn't affect windows .dll's that
-	  # are installed into $libdir/../bin (currently, that works fine)
-	  # but it's something to keep an eye on.
-	  test "$inst_prefix_dir" = "$destdir" && \
-	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
-
-	  if test -n "$inst_prefix_dir"; then
-	    # Stick the inst_prefix_dir data into the link command.
-	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
-	  else
-	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
-	  fi
-
-	  func_warning "relinking \`$file'"
-	  func_show_eval "$relink_command" \
-	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
-	fi
-
-	# See the names of the shared library.
-	set dummy $library_names; shift
-	if test -n "$1"; then
-	  realname="$1"
-	  shift
-
-	  srcname="$realname"
-	  test -n "$relink_command" && srcname="$realname"T
-
-	  # Install the shared library and build the symlinks.
-	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
-	      'exit $?'
-	  tstripme="$stripme"
-	  case $host_os in
-	  cygwin* | mingw* | pw32* | cegcc*)
-	    case $realname in
-	    *.dll.a)
-	      tstripme=""
-	      ;;
-	    esac
-	    ;;
-	  esac
-	  if test -n "$tstripme" && test -n "$striplib"; then
-	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
-	  fi
-
-	  if test "$#" -gt 0; then
-	    # Delete the old symlinks, and create new ones.
-	    # Try `ln -sf' first, because the `ln' binary might depend on
-	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
-	    # so we also need to try rm && ln -s.
-	    for linkname
-	    do
-	      test "$linkname" != "$realname" \
-		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
-	    done
-	  fi
-
-	  # Do each command in the postinstall commands.
-	  lib="$destdir/$realname"
-	  func_execute_cmds "$postinstall_cmds" 'exit $?'
-	fi
-
-	# Install the pseudo-library for information purposes.
-	func_basename "$file"
-	name="$func_basename_result"
-	instname="$dir/$name"i
-	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
-
-	# Maybe install the static library, too.
-	test -n "$old_library" && staticlibs+=" $dir/$old_library"
-	;;
-
-      *.lo)
-	# Install (i.e. copy) a libtool object.
-
-	# Figure out destination file name, if it wasn't already specified.
-	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
-	else
-	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
-	fi
-
-	# Deduce the name of the destination old-style object file.
-	case $destfile in
-	*.lo)
-	  func_lo2o "$destfile"
-	  staticdest=$func_lo2o_result
-	  ;;
-	*.$objext)
-	  staticdest="$destfile"
-	  destfile=
-	  ;;
-	*)
-	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
-	  ;;
-	esac
-
-	# Install the libtool object if requested.
-	test -n "$destfile" && \
-	  func_show_eval "$install_prog $file $destfile" 'exit $?'
-
-	# Install the old object if enabled.
-	if test "$build_old_libs" = yes; then
-	  # Deduce the name of the old-style object file.
-	  func_lo2o "$file"
-	  staticobj=$func_lo2o_result
-	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
-	fi
-	exit $EXIT_SUCCESS
-	;;
-
-      *)
-	# Figure out destination file name, if it wasn't already specified.
-	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
-	else
-	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
-	fi
-
-	# If the file is missing, and there is a .exe on the end, strip it
-	# because it is most likely a libtool script we actually want to
-	# install
-	stripped_ext=""
-	case $file in
-	  *.exe)
-	    if test ! -f "$file"; then
-	      func_stripname '' '.exe' "$file"
-	      file=$func_stripname_result
-	      stripped_ext=".exe"
-	    fi
-	    ;;
-	esac
-
-	# Do a test to see if this is really a libtool program.
-	case $host in
-	*cygwin* | *mingw*)
-	    if func_ltwrapper_executable_p "$file"; then
-	      func_ltwrapper_scriptname "$file"
-	      wrapper=$func_ltwrapper_scriptname_result
-	    else
-	      func_stripname '' '.exe' "$file"
-	      wrapper=$func_stripname_result
-	    fi
-	    ;;
-	*)
-	    wrapper=$file
-	    ;;
-	esac
-	if func_ltwrapper_script_p "$wrapper"; then
-	  notinst_deplibs=
-	  relink_command=
-
-	  func_source "$wrapper"
-
-	  # Check the variables that should have been set.
-	  test -z "$generated_by_libtool_version" && \
-	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
-
-	  finalize=yes
-	  for lib in $notinst_deplibs; do
-	    # Check to see that each library is installed.
-	    libdir=
-	    if test -f "$lib"; then
-	      func_source "$lib"
-	    fi
-	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
-	    if test -n "$libdir" && test ! -f "$libfile"; then
-	      func_warning "\`$lib' has not been installed in \`$libdir'"
-	      finalize=no
-	    fi
-	  done
-
-	  relink_command=
-	  func_source "$wrapper"
-
-	  outputname=
-	  if test "$fast_install" = no && test -n "$relink_command"; then
-	    $opt_dry_run || {
-	      if test "$finalize" = yes; then
-	        tmpdir=`func_mktempdir`
-		func_basename "$file$stripped_ext"
-		file="$func_basename_result"
-	        outputname="$tmpdir/$file"
-	        # Replace the output file specification.
-	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
-
-	        $opt_silent || {
-	          func_quote_for_expand "$relink_command"
-		  eval "func_echo $func_quote_for_expand_result"
-	        }
-	        if eval "$relink_command"; then :
-	          else
-		  func_error "error: relink \`$file' with the above command before installing it"
-		  $opt_dry_run || ${RM}r "$tmpdir"
-		  continue
-	        fi
-	        file="$outputname"
-	      else
-	        func_warning "cannot relink \`$file'"
-	      fi
-	    }
-	  else
-	    # Install the binary that we compiled earlier.
-	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
-	  fi
-	fi
-
-	# remove .exe since cygwin /usr/bin/install will append another
-	# one anyway
-	case $install_prog,$host in
-	*/usr/bin/install*,*cygwin*)
-	  case $file:$destfile in
-	  *.exe:*.exe)
-	    # this is ok
-	    ;;
-	  *.exe:*)
-	    destfile=$destfile.exe
-	    ;;
-	  *:*.exe)
-	    func_stripname '' '.exe' "$destfile"
-	    destfile=$func_stripname_result
-	    ;;
-	  esac
-	  ;;
-	esac
-	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
-	$opt_dry_run || if test -n "$outputname"; then
-	  ${RM}r "$tmpdir"
-	fi
-	;;
-      esac
-    done
-
-    for file in $staticlibs; do
-      func_basename "$file"
-      name="$func_basename_result"
-
-      # Set up the ranlib parameters.
-      oldlib="$destdir/$name"
-      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
-      tool_oldlib=$func_to_tool_file_result
-
-      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
-
-      if test -n "$stripme" && test -n "$old_striplib"; then
-	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
-      fi
-
-      # Do each command in the postinstall commands.
-      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
-    done
-
-    test -n "$future_libdirs" && \
-      func_warning "remember to run \`$progname --finish$future_libdirs'"
-
-    if test -n "$current_libdirs"; then
-      # Maybe just do a dry run.
-      $opt_dry_run && current_libdirs=" -n$current_libdirs"
-      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
-    else
-      exit $EXIT_SUCCESS
-    fi
-}
-
-test "$opt_mode" = install && func_mode_install ${1+"$@"}
-
-
-# func_generate_dlsyms outputname originator pic_p
-# Extract symbols from dlprefiles and create ${outputname}S.o with
-# a dlpreopen symbol table.
-func_generate_dlsyms ()
-{
-    $opt_debug
-    my_outputname="$1"
-    my_originator="$2"
-    my_pic_p="${3-no}"
-    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
-    my_dlsyms=
-
-    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-      if test -n "$NM" && test -n "$global_symbol_pipe"; then
-	my_dlsyms="${my_outputname}S.c"
-      else
-	func_error "not configured to extract global symbols from dlpreopened files"
-      fi
-    fi
-
-    if test -n "$my_dlsyms"; then
-      case $my_dlsyms in
-      "") ;;
-      *.c)
-	# Discover the nlist of each of the dlfiles.
-	nlist="$output_objdir/${my_outputname}.nm"
-
-	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
-
-	# Parse the name list into a source file.
-	func_verbose "creating $output_objdir/$my_dlsyms"
-
-	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
-
-#ifdef __cplusplus
-extern \"C\" {
-#endif
-
-#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
-#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
-#endif
-
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
-#else
-# define LT_DLSYM_CONST const
-#endif
-
-/* External symbol declarations for the compiler. */\
-"
-
-	if test "$dlself" = yes; then
-	  func_verbose "generating symbol list for \`$output'"
-
-	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
-
-	  # Add our own program objects to the symbol list.
-	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
-	  for progfile in $progfiles; do
-	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
-	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
-	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
-	  done
-
-	  if test -n "$exclude_expsyms"; then
-	    $opt_dry_run || {
-	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	    }
-	  fi
-
-	  if test -n "$export_symbols_regex"; then
-	    $opt_dry_run || {
-	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	    }
-	  fi
-
-	  # Prepare the list of exported symbols
-	  if test -z "$export_symbols"; then
-	    export_symbols="$output_objdir/$outputname.exp"
-	    $opt_dry_run || {
-	      $RM $export_symbols
-	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
-	      case $host in
-	      *cygwin* | *mingw* | *cegcc* )
-                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
-	        ;;
-	      esac
-	    }
-	  else
-	    $opt_dry_run || {
-	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
-	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
-	      eval '$MV "$nlist"T "$nlist"'
-	      case $host in
-	        *cygwin* | *mingw* | *cegcc* )
-	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
-	          ;;
-	      esac
-	    }
-	  fi
-	fi
-
-	for dlprefile in $dlprefiles; do
-	  func_verbose "extracting global C symbols from \`$dlprefile'"
-	  func_basename "$dlprefile"
-	  name="$func_basename_result"
-          case $host in
-	    *cygwin* | *mingw* | *cegcc* )
-	      # if an import library, we need to obtain dlname
-	      if func_win32_import_lib_p "$dlprefile"; then
-	        func_tr_sh "$dlprefile"
-	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
-	        dlprefile_dlbasename=""
-	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
-	          # Use subshell, to avoid clobbering current variable values
-	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
-	          if test -n "$dlprefile_dlname" ; then
-	            func_basename "$dlprefile_dlname"
-	            dlprefile_dlbasename="$func_basename_result"
-	          else
-	            # no lafile. user explicitly requested -dlpreopen <import library>.
-	            $sharedlib_from_linklib_cmd "$dlprefile"
-	            dlprefile_dlbasename=$sharedlib_from_linklib_result
-	          fi
-	        fi
-	        $opt_dry_run || {
-	          if test -n "$dlprefile_dlbasename" ; then
-	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
-	          else
-	            func_warning "Could not compute DLL name from $name"
-	            eval '$ECHO ": $name " >> "$nlist"'
-	          fi
-	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
-	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
-	        }
-	      else # not an import lib
-	        $opt_dry_run || {
-	          eval '$ECHO ": $name " >> "$nlist"'
-	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-	        }
-	      fi
-	    ;;
-	    *)
-	      $opt_dry_run || {
-	        eval '$ECHO ": $name " >> "$nlist"'
-	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
-	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-	      }
-	    ;;
-          esac
-	done
-
-	$opt_dry_run || {
-	  # Make sure we have at least an empty file.
-	  test -f "$nlist" || : > "$nlist"
-
-	  if test -n "$exclude_expsyms"; then
-	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
-	    $MV "$nlist"T "$nlist"
-	  fi
-
-	  # Try sorting and uniquifying the output.
-	  if $GREP -v "^: " < "$nlist" |
-	      if sort -k 3 </dev/null >/dev/null 2>&1; then
-		sort -k 3
-	      else
-		sort +2
-	      fi |
-	      uniq > "$nlist"S; then
-	    :
-	  else
-	    $GREP -v "^: " < "$nlist" > "$nlist"S
-	  fi
-
-	  if test -f "$nlist"S; then
-	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
-	  else
-	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
-	  fi
-
-	  echo >> "$output_objdir/$my_dlsyms" "\
-
-/* The mapping between symbol names and symbols.  */
-typedef struct {
-  const char *name;
-  void *address;
-} lt_dlsymlist;
-extern LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[];
-LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[] =
-{\
-  { \"$my_originator\", (void *) 0 },"
-
-	  case $need_lib_prefix in
-	  no)
-	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
-	    ;;
-	  *)
-	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
-	    ;;
-	  esac
-	  echo >> "$output_objdir/$my_dlsyms" "\
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt_${my_prefix}_LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif\
-"
-	} # !$opt_dry_run
-
-	pic_flag_for_symtable=
-	case "$compile_command " in
-	*" -static "*) ;;
-	*)
-	  case $host in
-	  # compiling the symbol table file with pic_flag works around
-	  # a FreeBSD bug that causes programs to crash when -lm is
-	  # linked before any other PIC object.  But we must not use
-	  # pic_flag when linking with -static.  The problem exists in
-	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
-	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
-	  *-*-hpux*)
-	    pic_flag_for_symtable=" $pic_flag"  ;;
-	  *)
-	    if test "X$my_pic_p" != Xno; then
-	      pic_flag_for_symtable=" $pic_flag"
-	    fi
-	    ;;
-	  esac
-	  ;;
-	esac
-	symtab_cflags=
-	for arg in $LTCFLAGS; do
-	  case $arg in
-	  -pie | -fpie | -fPIE) ;;
-	  *) symtab_cflags+=" $arg" ;;
-	  esac
-	done
-
-	# Now compile the dynamic symbol file.
-	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
-
-	# Clean up the generated files.
-	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
-
-	# Transform the symbol file into the correct name.
-	symfileobj="$output_objdir/${my_outputname}S.$objext"
-	case $host in
-	*cygwin* | *mingw* | *cegcc* )
-	  if test -f "$output_objdir/$my_outputname.def"; then
-	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-	  else
-	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-	  fi
-	  ;;
-	*)
-	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
-	  ;;
-	esac
-	;;
-      *)
-	func_fatal_error "unknown suffix for \`$my_dlsyms'"
-	;;
-      esac
-    else
-      # We keep going just in case the user didn't refer to
-      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
-      # really was required.
-
-      # Nullify the symbol file.
-      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
-      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
-    fi
-}
-
-# func_win32_libid arg
-# return the library type of file 'arg'
-#
-# Need a lot of goo to handle *both* DLLs and import libs
-# Has to be a shell function in order to 'eat' the argument
-# that is supplied when $file_magic_command is called.
-# Despite the name, also deal with 64 bit binaries.
-func_win32_libid ()
-{
-  $opt_debug
-  win32_libid_type="unknown"
-  win32_fileres=`file -L $1 2>/dev/null`
-  case $win32_fileres in
-  *ar\ archive\ import\ library*) # definitely import
-    win32_libid_type="x86 archive import"
-    ;;
-  *ar\ archive*) # could be an import, or static
-    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
-    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
-       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
-      func_to_tool_file "$1" func_convert_file_msys_to_w32
-      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
-	$SED -n -e '
-	    1,100{
-		/ I /{
-		    s,.*,import,
-		    p
-		    q
-		}
-	    }'`
-      case $win32_nmres in
-      import*)  win32_libid_type="x86 archive import";;
-      *)        win32_libid_type="x86 archive static";;
-      esac
-    fi
-    ;;
-  *DLL*)
-    win32_libid_type="x86 DLL"
-    ;;
-  *executable*) # but shell scripts are "executable" too...
-    case $win32_fileres in
-    *MS\ Windows\ PE\ Intel*)
-      win32_libid_type="x86 DLL"
-      ;;
-    esac
-    ;;
-  esac
-  $ECHO "$win32_libid_type"
-}
-
-# func_cygming_dll_for_implib ARG
-#
-# Platform-specific function to extract the
-# name of the DLL associated with the specified
-# import library ARG.
-# Invoked by eval'ing the libtool variable
-#    $sharedlib_from_linklib_cmd
-# Result is available in the variable
-#    $sharedlib_from_linklib_result
-func_cygming_dll_for_implib ()
-{
-  $opt_debug
-  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
-}
-
-# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
-#
-# The is the core of a fallback implementation of a
-# platform-specific function to extract the name of the
-# DLL associated with the specified import library LIBNAME.
-#
-# SECTION_NAME is either .idata$6 or .idata$7, depending
-# on the platform and compiler that created the implib.
-#
-# Echos the name of the DLL associated with the
-# specified import library.
-func_cygming_dll_for_implib_fallback_core ()
-{
-  $opt_debug
-  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
-  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
-    $SED '/^Contents of section '"$match_literal"':/{
-      # Place marker at beginning of archive member dllname section
-      s/.*/====MARK====/
-      p
-      d
-    }
-    # These lines can sometimes be longer than 43 characters, but
-    # are always uninteresting
-    /:[	 ]*file format pe[i]\{,1\}-/d
-    /^In archive [^:]*:/d
-    # Ensure marker is printed
-    /^====MARK====/p
-    # Remove all lines with less than 43 characters
-    /^.\{43\}/!d
-    # From remaining lines, remove first 43 characters
-    s/^.\{43\}//' |
-    $SED -n '
-      # Join marker and all lines until next marker into a single line
-      /^====MARK====/ b para
-      H
-      $ b para
-      b
-      :para
-      x
-      s/\n//g
-      # Remove the marker
-      s/^====MARK====//
-      # Remove trailing dots and whitespace
-      s/[\. \t]*$//
-      # Print
-      /./p' |
-    # we now have a list, one entry per line, of the stringified
-    # contents of the appropriate section of all members of the
-    # archive which possess that section. Heuristic: eliminate
-    # all those which have a first or second character that is
-    # a '.' (that is, objdump's representation of an unprintable
-    # character.) This should work for all archives with less than
-    # 0x302f exports -- but will fail for DLLs whose name actually
-    # begins with a literal '.' or a single character followed by
-    # a '.'.
-    #
-    # Of those that remain, print the first one.
-    $SED -e '/^\./d;/^.\./d;q'
-}
-
-# func_cygming_gnu_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is a GNU/binutils-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_gnu_implib_p ()
-{
-  $opt_debug
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
-  test -n "$func_cygming_gnu_implib_tmp"
-}
-
-# func_cygming_ms_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is an MS-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_ms_implib_p ()
-{
-  $opt_debug
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
-  test -n "$func_cygming_ms_implib_tmp"
-}
-
-# func_cygming_dll_for_implib_fallback ARG
-# Platform-specific function to extract the
-# name of the DLL associated with the specified
-# import library ARG.
-#
-# This fallback implementation is for use when $DLLTOOL
-# does not support the --identify-strict option.
-# Invoked by eval'ing the libtool variable
-#    $sharedlib_from_linklib_cmd
-# Result is available in the variable
-#    $sharedlib_from_linklib_result
-func_cygming_dll_for_implib_fallback ()
-{
-  $opt_debug
-  if func_cygming_gnu_implib_p "$1" ; then
-    # binutils import library
-    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
-  elif func_cygming_ms_implib_p "$1" ; then
-    # ms-generated import library
-    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
-  else
-    # unknown
-    sharedlib_from_linklib_result=""
-  fi
-}
-
-
-# func_extract_an_archive dir oldlib
-func_extract_an_archive ()
-{
-    $opt_debug
-    f_ex_an_ar_dir="$1"; shift
-    f_ex_an_ar_oldlib="$1"
-    if test "$lock_old_archive_extraction" = yes; then
-      lockfile=$f_ex_an_ar_oldlib.lock
-      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
-	func_echo "Waiting for $lockfile to be removed"
-	sleep 2
-      done
-    fi
-    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
-		   'stat=$?; rm -f "$lockfile"; exit $stat'
-    if test "$lock_old_archive_extraction" = yes; then
-      $opt_dry_run || rm -f "$lockfile"
-    fi
-    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
-     :
-    else
-      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
-    fi
-}
-
-
-# func_extract_archives gentop oldlib ...
-func_extract_archives ()
-{
-    $opt_debug
-    my_gentop="$1"; shift
-    my_oldlibs=${1+"$@"}
-    my_oldobjs=""
-    my_xlib=""
-    my_xabs=""
-    my_xdir=""
-
-    for my_xlib in $my_oldlibs; do
-      # Extract the objects.
-      case $my_xlib in
-	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
-	*) my_xabs=`pwd`"/$my_xlib" ;;
-      esac
-      func_basename "$my_xlib"
-      my_xlib="$func_basename_result"
-      my_xlib_u=$my_xlib
-      while :; do
-        case " $extracted_archives " in
-	*" $my_xlib_u "*)
-	  func_arith $extracted_serial + 1
-	  extracted_serial=$func_arith_result
-	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
-	*) break ;;
-	esac
-      done
-      extracted_archives="$extracted_archives $my_xlib_u"
-      my_xdir="$my_gentop/$my_xlib_u"
-
-      func_mkdir_p "$my_xdir"
-
-      case $host in
-      *-darwin*)
-	func_verbose "Extracting $my_xabs"
-	# Do not bother doing anything if just a dry run
-	$opt_dry_run || {
-	  darwin_orig_dir=`pwd`
-	  cd $my_xdir || exit $?
-	  darwin_archive=$my_xabs
-	  darwin_curdir=`pwd`
-	  darwin_base_archive=`basename "$darwin_archive"`
-	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
-	  if test -n "$darwin_arches"; then
-	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
-	    darwin_arch=
-	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
-	    for darwin_arch in  $darwin_arches ; do
-	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
-	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
-	      cd "$darwin_curdir"
-	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
-	    done # $darwin_arches
-            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
-	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
-	    darwin_file=
-	    darwin_files=
-	    for darwin_file in $darwin_filelist; do
-	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
-	      $LIPO -create -output "$darwin_file" $darwin_files
-	    done # $darwin_filelist
-	    $RM -rf unfat-$$
-	    cd "$darwin_orig_dir"
-	  else
-	    cd $darwin_orig_dir
-	    func_extract_an_archive "$my_xdir" "$my_xabs"
-	  fi # $darwin_arches
-	} # !$opt_dry_run
-	;;
-      *)
-        func_extract_an_archive "$my_xdir" "$my_xabs"
-	;;
-      esac
-      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
-    done
-
-    func_extract_archives_result="$my_oldobjs"
-}
-
-
-# func_emit_wrapper [arg=no]
-#
-# Emit a libtool wrapper script on stdout.
-# Don't directly open a file because we may want to
-# incorporate the script contents within a cygwin/mingw
-# wrapper executable.  Must ONLY be called from within
-# func_mode_link because it depends on a number of variables
-# set therein.
-#
-# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
-# variable will take.  If 'yes', then the emitted script
-# will assume that the directory in which it is stored is
-# the $objdir directory.  This is a cygwin/mingw-specific
-# behavior.
-func_emit_wrapper ()
-{
-	func_emit_wrapper_arg1=${1-no}
-
-	$ECHO "\
-#! $SHELL
-
-# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# The $output program cannot be directly executed until all the libtool
-# libraries that it depends on are installed.
-#
-# This wrapper script should never be moved out of the build directory.
-# If it is, it will not operate correctly.
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='$sed_quote_subst'
-
-# Be Bourne compatible
-if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-relink_command=\"$relink_command\"
-
-# This environment variable determines our operation mode.
-if test \"\$libtool_install_magic\" = \"$magic\"; then
-  # install mode needs the following variables:
-  generated_by_libtool_version='$macro_version'
-  notinst_deplibs='$notinst_deplibs'
-else
-  # When we are sourced in execute mode, \$file and \$ECHO are already set.
-  if test \"\$libtool_execute_magic\" != \"$magic\"; then
-    file=\"\$0\""
-
-    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
-    $ECHO "\
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-    ECHO=\"$qECHO\"
-  fi
-
-# Very basic option parsing. These options are (a) specific to
-# the libtool wrapper, (b) are identical between the wrapper
-# /script/ and the wrapper /executable/ which is used only on
-# windows platforms, and (c) all begin with the string "--lt-"
-# (application programs are unlikely to have options which match
-# this pattern).
-#
-# There are only two supported options: --lt-debug and
-# --lt-dump-script. There is, deliberately, no --lt-help.
-#
-# The first argument to this parsing function should be the
-# script's $0 value, followed by "$@".
-lt_option_debug=
-func_parse_lt_options ()
-{
-  lt_script_arg0=\$0
-  shift
-  for lt_opt
-  do
-    case \"\$lt_opt\" in
-    --lt-debug) lt_option_debug=1 ;;
-    --lt-dump-script)
-        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
-        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
-        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
-        cat \"\$lt_dump_D/\$lt_dump_F\"
-        exit 0
-      ;;
-    --lt-*)
-        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
-        exit 1
-      ;;
-    esac
-  done
-
-  # Print the debug banner immediately:
-  if test -n \"\$lt_option_debug\"; then
-    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
-  fi
-}
-
-# Used when --lt-debug. Prints its arguments to stdout
-# (redirection is the responsibility of the caller)
-func_lt_dump_args ()
-{
-  lt_dump_args_N=1;
-  for lt_arg
-  do
-    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
-    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
-  done
-}
-
-# Core function for launching the target application
-func_exec_program_core ()
-{
-"
-  case $host in
-  # Backslashes separate directories on plain windows
-  *-*-mingw | *-*-os2* | *-cegcc*)
-    $ECHO "\
-      if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
-        func_lt_dump_args \${1+\"\$@\"} 1>&2
-      fi
-      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-"
-    ;;
-
-  *)
-    $ECHO "\
-      if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
-        func_lt_dump_args \${1+\"\$@\"} 1>&2
-      fi
-      exec \"\$progdir/\$program\" \${1+\"\$@\"}
-"
-    ;;
-  esac
-  $ECHO "\
-      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
-      exit 1
-}
-
-# A function to encapsulate launching the target application
-# Strips options in the --lt-* namespace from \$@ and
-# launches target application with the remaining arguments.
-func_exec_program ()
-{
-  case \" \$* \" in
-  *\\ --lt-*)
-    for lt_wr_arg
-    do
-      case \$lt_wr_arg in
-      --lt-*) ;;
-      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
-      esac
-      shift
-    done ;;
-  esac
-  func_exec_program_core \${1+\"\$@\"}
-}
-
-  # Parse options
-  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
-
-  # Find the directory that this script lives in.
-  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
-  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
-
-  # Follow symbolic links until we get to the real thisdir.
-  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
-  while test -n \"\$file\"; do
-    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
-
-    # If there was a directory component, then change thisdir.
-    if test \"x\$destdir\" != \"x\$file\"; then
-      case \"\$destdir\" in
-      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
-      *) thisdir=\"\$thisdir/\$destdir\" ;;
-      esac
-    fi
-
-    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
-    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
-  done
-
-  # Usually 'no', except on cygwin/mingw when embedded into
-  # the cwrapper.
-  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
-  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
-    # special case for '.'
-    if test \"\$thisdir\" = \".\"; then
-      thisdir=\`pwd\`
-    fi
-    # remove .libs from thisdir
-    case \"\$thisdir\" in
-    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
-    $objdir )   thisdir=. ;;
-    esac
-  fi
-
-  # Try to get the absolute directory name.
-  absdir=\`cd \"\$thisdir\" && pwd\`
-  test -n \"\$absdir\" && thisdir=\"\$absdir\"
-"
-
-	if test "$fast_install" = yes; then
-	  $ECHO "\
-  program=lt-'$outputname'$exeext
-  progdir=\"\$thisdir/$objdir\"
-
-  if test ! -f \"\$progdir/\$program\" ||
-     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
-       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
-
-    file=\"\$\$-\$program\"
-
-    if test ! -d \"\$progdir\"; then
-      $MKDIR \"\$progdir\"
-    else
-      $RM \"\$progdir/\$file\"
-    fi"
-
-	  $ECHO "\
-
-    # relink executable if necessary
-    if test -n \"\$relink_command\"; then
-      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
-      else
-	$ECHO \"\$relink_command_output\" >&2
-	$RM \"\$progdir/\$file\"
-	exit 1
-      fi
-    fi
-
-    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
-    { $RM \"\$progdir/\$program\";
-      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
-    $RM \"\$progdir/\$file\"
-  fi"
-	else
-	  $ECHO "\
-  program='$outputname'
-  progdir=\"\$thisdir/$objdir\"
-"
-	fi
-
-	$ECHO "\
-
-  if test -f \"\$progdir/\$program\"; then"
-
-	# fixup the dll searchpath if we need to.
-	#
-	# Fix the DLL searchpath if we need to.  Do this before prepending
-	# to shlibpath, because on Windows, both are PATH and uninstalled
-	# libraries must come first.
-	if test -n "$dllsearchpath"; then
-	  $ECHO "\
-    # Add the dll search path components to the executable PATH
-    PATH=$dllsearchpath:\$PATH
-"
-	fi
-
-	# Export our shlibpath_var if we have one.
-	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-	  $ECHO "\
-    # Add our own library path to $shlibpath_var
-    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
-
-    # Some systems cannot cope with colon-terminated $shlibpath_var
-    # The second colon is a workaround for a bug in BeOS R4 sed
-    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
-
-    export $shlibpath_var
-"
-	fi
-
-	$ECHO "\
-    if test \"\$libtool_execute_magic\" != \"$magic\"; then
-      # Run the actual program with our arguments.
-      func_exec_program \${1+\"\$@\"}
-    fi
-  else
-    # The program doesn't exist.
-    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
-    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
-    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
-    exit 1
-  fi
-fi\
-"
-}
-
-
-# func_emit_cwrapperexe_src
-# emit the source code for a wrapper executable on stdout
-# Must ONLY be called from within func_mode_link because
-# it depends on a number of variable set therein.
-func_emit_cwrapperexe_src ()
-{
-	cat <<EOF
-
-/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
-   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-
-   The $output program cannot be directly executed until all the libtool
-   libraries that it depends on are installed.
-
-   This wrapper executable should never be moved out of the build directory.
-   If it is, it will not operate correctly.
-*/
-EOF
-	    cat <<"EOF"
-#ifdef _MSC_VER
-# define _CRT_SECURE_NO_DEPRECATE 1
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef _MSC_VER
-# include <direct.h>
-# include <process.h>
-# include <io.h>
-#else
-# include <unistd.h>
-# include <stdint.h>
-# ifdef __CYGWIN__
-#  include <io.h>
-# endif
-#endif
-#include <malloc.h>
-#include <stdarg.h>
-#include <assert.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-/* declarations of non-ANSI functions */
-#if defined(__MINGW32__)
-# ifdef __STRICT_ANSI__
-int _putenv (const char *);
-# endif
-#elif defined(__CYGWIN__)
-# ifdef __STRICT_ANSI__
-char *realpath (const char *, char *);
-int putenv (char *);
-int setenv (const char *, const char *, int);
-# endif
-/* #elif defined (other platforms) ... */
-#endif
-
-/* portability defines, excluding path handling macros */
-#if defined(_MSC_VER)
-# define setmode _setmode
-# define stat    _stat
-# define chmod   _chmod
-# define getcwd  _getcwd
-# define putenv  _putenv
-# define S_IXUSR _S_IEXEC
-# ifndef _INTPTR_T_DEFINED
-#  define _INTPTR_T_DEFINED
-#  define intptr_t int
-# endif
-#elif defined(__MINGW32__)
-# define setmode _setmode
-# define stat    _stat
-# define chmod   _chmod
-# define getcwd  _getcwd
-# define putenv  _putenv
-#elif defined(__CYGWIN__)
-# define HAVE_SETENV
-# define FOPEN_WB "wb"
-/* #elif defined (other platforms) ... */
-#endif
-
-#if defined(PATH_MAX)
-# define LT_PATHMAX PATH_MAX
-#elif defined(MAXPATHLEN)
-# define LT_PATHMAX MAXPATHLEN
-#else
-# define LT_PATHMAX 1024
-#endif
-
-#ifndef S_IXOTH
-# define S_IXOTH 0
-#endif
-#ifndef S_IXGRP
-# define S_IXGRP 0
-#endif
-
-/* path handling portability macros */
-#ifndef DIR_SEPARATOR
-# define DIR_SEPARATOR '/'
-# define PATH_SEPARATOR ':'
-#endif
-
-#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
-  defined (__OS2__)
-# define HAVE_DOS_BASED_FILE_SYSTEM
-# define FOPEN_WB "wb"
-# ifndef DIR_SEPARATOR_2
-#  define DIR_SEPARATOR_2 '\\'
-# endif
-# ifndef PATH_SEPARATOR_2
-#  define PATH_SEPARATOR_2 ';'
-# endif
-#endif
-
-#ifndef DIR_SEPARATOR_2
-# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
-#else /* DIR_SEPARATOR_2 */
-# define IS_DIR_SEPARATOR(ch) \
-	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
-#endif /* DIR_SEPARATOR_2 */
-
-#ifndef PATH_SEPARATOR_2
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
-#else /* PATH_SEPARATOR_2 */
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
-#endif /* PATH_SEPARATOR_2 */
-
-#ifndef FOPEN_WB
-# define FOPEN_WB "w"
-#endif
-#ifndef _O_BINARY
-# define _O_BINARY 0
-#endif
-
-#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
-#define XFREE(stale) do { \
-  if (stale) { free ((void *) stale); stale = 0; } \
-} while (0)
-
-#if defined(LT_DEBUGWRAPPER)
-static int lt_debug = 1;
-#else
-static int lt_debug = 0;
-#endif
-
-const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
-
-void *xmalloc (size_t num);
-char *xstrdup (const char *string);
-const char *base_name (const char *name);
-char *find_executable (const char *wrapper);
-char *chase_symlinks (const char *pathspec);
-int make_executable (const char *path);
-int check_executable (const char *path);
-char *strendzap (char *str, const char *pat);
-void lt_debugprintf (const char *file, int line, const char *fmt, ...);
-void lt_fatal (const char *file, int line, const char *message, ...);
-static const char *nonnull (const char *s);
-static const char *nonempty (const char *s);
-void lt_setenv (const char *name, const char *value);
-char *lt_extend_str (const char *orig_value, const char *add, int to_end);
-void lt_update_exe_path (const char *name, const char *value);
-void lt_update_lib_path (const char *name, const char *value);
-char **prepare_spawn (char **argv);
-void lt_dump_script (FILE *f);
-EOF
-
-	    cat <<EOF
-volatile const char * MAGIC_EXE = "$magic_exe";
-const char * LIB_PATH_VARNAME = "$shlibpath_var";
-EOF
-
-	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-              func_to_host_path "$temp_rpath"
-	      cat <<EOF
-const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
-EOF
-	    else
-	      cat <<"EOF"
-const char * LIB_PATH_VALUE   = "";
-EOF
-	    fi
-
-	    if test -n "$dllsearchpath"; then
-              func_to_host_path "$dllsearchpath:"
-	      cat <<EOF
-const char * EXE_PATH_VARNAME = "PATH";
-const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
-EOF
-	    else
-	      cat <<"EOF"
-const char * EXE_PATH_VARNAME = "";
-const char * EXE_PATH_VALUE   = "";
-EOF
-	    fi
-
-	    if test "$fast_install" = yes; then
-	      cat <<EOF
-const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
-EOF
-	    else
-	      cat <<EOF
-const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
-EOF
-	    fi
-
-
-	    cat <<"EOF"
-
-#define LTWRAPPER_OPTION_PREFIX         "--lt-"
-
-static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
-static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
-static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
-
-int
-main (int argc, char *argv[])
-{
-  char **newargz;
-  int  newargc;
-  char *tmp_pathspec;
-  char *actual_cwrapper_path;
-  char *actual_cwrapper_name;
-  char *target_name;
-  char *lt_argv_zero;
-  intptr_t rval = 127;
-
-  int i;
-
-  program_name = (char *) xstrdup (base_name (argv[0]));
-  newargz = XMALLOC (char *, argc + 1);
-
-  /* very simple arg parsing; don't want to rely on getopt
-   * also, copy all non cwrapper options to newargz, except
-   * argz[0], which is handled differently
-   */
-  newargc=0;
-  for (i = 1; i < argc; i++)
-    {
-      if (strcmp (argv[i], dumpscript_opt) == 0)
-	{
-EOF
-	    case "$host" in
-	      *mingw* | *cygwin* )
-		# make stdout use "unix" line endings
-		echo "          setmode(1,_O_BINARY);"
-		;;
-	      esac
-
-	    cat <<"EOF"
-	  lt_dump_script (stdout);
-	  return 0;
-	}
-      if (strcmp (argv[i], debug_opt) == 0)
-	{
-          lt_debug = 1;
-          continue;
-	}
-      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
-        {
-          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
-             namespace, but it is not one of the ones we know about and
-             have already dealt with, above (inluding dump-script), then
-             report an error. Otherwise, targets might begin to believe
-             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
-             namespace. The first time any user complains about this, we'll
-             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
-             or a configure.ac-settable value.
-           */
-          lt_fatal (__FILE__, __LINE__,
-		    "unrecognized %s option: '%s'",
-                    ltwrapper_option_prefix, argv[i]);
-        }
-      /* otherwise ... */
-      newargz[++newargc] = xstrdup (argv[i]);
-    }
-  newargz[++newargc] = NULL;
-
-EOF
-	    cat <<EOF
-  /* The GNU banner must be the first non-error debug message */
-  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
-EOF
-	    cat <<"EOF"
-  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
-  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
-
-  tmp_pathspec = find_executable (argv[0]);
-  if (tmp_pathspec == NULL)
-    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
-  lt_debugprintf (__FILE__, __LINE__,
-                  "(main) found exe (before symlink chase) at: %s\n",
-		  tmp_pathspec);
-
-  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
-  lt_debugprintf (__FILE__, __LINE__,
-                  "(main) found exe (after symlink chase) at: %s\n",
-		  actual_cwrapper_path);
-  XFREE (tmp_pathspec);
-
-  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
-  strendzap (actual_cwrapper_path, actual_cwrapper_name);
-
-  /* wrapper name transforms */
-  strendzap (actual_cwrapper_name, ".exe");
-  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
-  XFREE (actual_cwrapper_name);
-  actual_cwrapper_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  /* target_name transforms -- use actual target program name; might have lt- prefix */
-  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
-  strendzap (target_name, ".exe");
-  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
-  XFREE (target_name);
-  target_name = tmp_pathspec;
-  tmp_pathspec = 0;
-
-  lt_debugprintf (__FILE__, __LINE__,
-		  "(main) libtool target name: %s\n",
-		  target_name);
-EOF
-
-	    cat <<EOF
-  newargz[0] =
-    XMALLOC (char, (strlen (actual_cwrapper_path) +
-		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
-  strcpy (newargz[0], actual_cwrapper_path);
-  strcat (newargz[0], "$objdir");
-  strcat (newargz[0], "/");
-EOF
-
-	    cat <<"EOF"
-  /* stop here, and copy so we don't have to do this twice */
-  tmp_pathspec = xstrdup (newargz[0]);
-
-  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
-  strcat (newargz[0], actual_cwrapper_name);
-
-  /* DO want the lt- prefix here if it exists, so use target_name */
-  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
-  XFREE (tmp_pathspec);
-  tmp_pathspec = NULL;
-EOF
-
-	    case $host_os in
-	      mingw*)
-	    cat <<"EOF"
-  {
-    char* p;
-    while ((p = strchr (newargz[0], '\\')) != NULL)
-      {
-	*p = '/';
-      }
-    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
-      {
-	*p = '/';
-      }
-  }
-EOF
-	    ;;
-	    esac
-
-	    cat <<"EOF"
-  XFREE (target_name);
-  XFREE (actual_cwrapper_path);
-  XFREE (actual_cwrapper_name);
-
-  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
-  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
-  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
-     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
-     because on Windows, both *_VARNAMEs are PATH but uninstalled
-     libraries must come first. */
-  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
-  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
-
-  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
-		  nonnull (lt_argv_zero));
-  for (i = 0; i < newargc; i++)
-    {
-      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
-		      i, nonnull (newargz[i]));
-    }
-
-EOF
-
-	    case $host_os in
-	      mingw*)
-		cat <<"EOF"
-  /* execv doesn't actually work on mingw as expected on unix */
-  newargz = prepare_spawn (newargz);
-  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
-  if (rval == -1)
-    {
-      /* failed to start process */
-      lt_debugprintf (__FILE__, __LINE__,
-		      "(main) failed to launch target \"%s\": %s\n",
-		      lt_argv_zero, nonnull (strerror (errno)));
-      return 127;
-    }
-  return rval;
-EOF
-		;;
-	      *)
-		cat <<"EOF"
-  execv (lt_argv_zero, newargz);
-  return rval; /* =127, but avoids unused variable warning */
-EOF
-		;;
-	    esac
-
-	    cat <<"EOF"
-}
-
-void *
-xmalloc (size_t num)
-{
-  void *p = (void *) malloc (num);
-  if (!p)
-    lt_fatal (__FILE__, __LINE__, "memory exhausted");
-
-  return p;
-}
-
-char *
-xstrdup (const char *string)
-{
-  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
-			  string) : NULL;
-}
-
-const char *
-base_name (const char *name)
-{
-  const char *base;
-
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  /* Skip over the disk name in MSDOS pathnames. */
-  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
-    name += 2;
-#endif
-
-  for (base = name; *name; name++)
-    if (IS_DIR_SEPARATOR (*name))
-      base = name + 1;
-  return base;
-}
-
-int
-check_executable (const char *path)
-{
-  struct stat st;
-
-  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
-                  nonempty (path));
-  if ((!path) || (!*path))
-    return 0;
-
-  if ((stat (path, &st) >= 0)
-      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
-    return 1;
-  else
-    return 0;
-}
-
-int
-make_executable (const char *path)
-{
-  int rval = 0;
-  struct stat st;
-
-  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
-                  nonempty (path));
-  if ((!path) || (!*path))
-    return 0;
-
-  if (stat (path, &st) >= 0)
-    {
-      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
-    }
-  return rval;
-}
-
-/* Searches for the full path of the wrapper.  Returns
-   newly allocated full path name if found, NULL otherwise
-   Does not chase symlinks, even on platforms that support them.
-*/
-char *
-find_executable (const char *wrapper)
-{
-  int has_slash = 0;
-  const char *p;
-  const char *p_next;
-  /* static buffer for getcwd */
-  char tmp[LT_PATHMAX + 1];
-  int tmp_len;
-  char *concat_name;
-
-  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
-                  nonempty (wrapper));
-
-  if ((wrapper == NULL) || (*wrapper == '\0'))
-    return NULL;
-
-  /* Absolute path? */
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
-    {
-      concat_name = xstrdup (wrapper);
-      if (check_executable (concat_name))
-	return concat_name;
-      XFREE (concat_name);
-    }
-  else
-    {
-#endif
-      if (IS_DIR_SEPARATOR (wrapper[0]))
-	{
-	  concat_name = xstrdup (wrapper);
-	  if (check_executable (concat_name))
-	    return concat_name;
-	  XFREE (concat_name);
-	}
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-    }
-#endif
-
-  for (p = wrapper; *p; p++)
-    if (*p == '/')
-      {
-	has_slash = 1;
-	break;
-      }
-  if (!has_slash)
-    {
-      /* no slashes; search PATH */
-      const char *path = getenv ("PATH");
-      if (path != NULL)
-	{
-	  for (p = path; *p; p = p_next)
-	    {
-	      const char *q;
-	      size_t p_len;
-	      for (q = p; *q; q++)
-		if (IS_PATH_SEPARATOR (*q))
-		  break;
-	      p_len = q - p;
-	      p_next = (*q == '\0' ? q : q + 1);
-	      if (p_len == 0)
-		{
-		  /* empty path: current directory */
-		  if (getcwd (tmp, LT_PATHMAX) == NULL)
-		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
-                              nonnull (strerror (errno)));
-		  tmp_len = strlen (tmp);
-		  concat_name =
-		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-		  memcpy (concat_name, tmp, tmp_len);
-		  concat_name[tmp_len] = '/';
-		  strcpy (concat_name + tmp_len + 1, wrapper);
-		}
-	      else
-		{
-		  concat_name =
-		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
-		  memcpy (concat_name, p, p_len);
-		  concat_name[p_len] = '/';
-		  strcpy (concat_name + p_len + 1, wrapper);
-		}
-	      if (check_executable (concat_name))
-		return concat_name;
-	      XFREE (concat_name);
-	    }
-	}
-      /* not found in PATH; assume curdir */
-    }
-  /* Relative path | not found in path: prepend cwd */
-  if (getcwd (tmp, LT_PATHMAX) == NULL)
-    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
-              nonnull (strerror (errno)));
-  tmp_len = strlen (tmp);
-  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
-  memcpy (concat_name, tmp, tmp_len);
-  concat_name[tmp_len] = '/';
-  strcpy (concat_name + tmp_len + 1, wrapper);
-
-  if (check_executable (concat_name))
-    return concat_name;
-  XFREE (concat_name);
-  return NULL;
-}
-
-char *
-chase_symlinks (const char *pathspec)
-{
-#ifndef S_ISLNK
-  return xstrdup (pathspec);
-#else
-  char buf[LT_PATHMAX];
-  struct stat s;
-  char *tmp_pathspec = xstrdup (pathspec);
-  char *p;
-  int has_symlinks = 0;
-  while (strlen (tmp_pathspec) && !has_symlinks)
-    {
-      lt_debugprintf (__FILE__, __LINE__,
-		      "checking path component for symlinks: %s\n",
-		      tmp_pathspec);
-      if (lstat (tmp_pathspec, &s) == 0)
-	{
-	  if (S_ISLNK (s.st_mode) != 0)
-	    {
-	      has_symlinks = 1;
-	      break;
-	    }
-
-	  /* search backwards for last DIR_SEPARATOR */
-	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
-	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-	    p--;
-	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
-	    {
-	      /* no more DIR_SEPARATORS left */
-	      break;
-	    }
-	  *p = '\0';
-	}
-      else
-	{
-	  lt_fatal (__FILE__, __LINE__,
-		    "error accessing file \"%s\": %s",
-		    tmp_pathspec, nonnull (strerror (errno)));
-	}
-    }
-  XFREE (tmp_pathspec);
-
-  if (!has_symlinks)
-    {
-      return xstrdup (pathspec);
-    }
-
-  tmp_pathspec = realpath (pathspec, buf);
-  if (tmp_pathspec == 0)
-    {
-      lt_fatal (__FILE__, __LINE__,
-		"could not follow symlinks for %s", pathspec);
-    }
-  return xstrdup (tmp_pathspec);
-#endif
-}
-
-char *
-strendzap (char *str, const char *pat)
-{
-  size_t len, patlen;
-
-  assert (str != NULL);
-  assert (pat != NULL);
-
-  len = strlen (str);
-  patlen = strlen (pat);
-
-  if (patlen <= len)
-    {
-      str += len - patlen;
-      if (strcmp (str, pat) == 0)
-	*str = '\0';
-    }
-  return str;
-}
-
-void
-lt_debugprintf (const char *file, int line, const char *fmt, ...)
-{
-  va_list args;
-  if (lt_debug)
-    {
-      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
-      va_start (args, fmt);
-      (void) vfprintf (stderr, fmt, args);
-      va_end (args);
-    }
-}
-
-static void
-lt_error_core (int exit_status, const char *file,
-	       int line, const char *mode,
-	       const char *message, va_list ap)
-{
-  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
-  vfprintf (stderr, message, ap);
-  fprintf (stderr, ".\n");
-
-  if (exit_status >= 0)
-    exit (exit_status);
-}
-
-void
-lt_fatal (const char *file, int line, const char *message, ...)
-{
-  va_list ap;
-  va_start (ap, message);
-  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
-  va_end (ap);
-}
-
-static const char *
-nonnull (const char *s)
-{
-  return s ? s : "(null)";
-}
-
-static const char *
-nonempty (const char *s)
-{
-  return (s && !*s) ? "(empty)" : nonnull (s);
-}
-
-void
-lt_setenv (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-		  "(lt_setenv) setting '%s' to '%s'\n",
-                  nonnull (name), nonnull (value));
-  {
-#ifdef HAVE_SETENV
-    /* always make a copy, for consistency with !HAVE_SETENV */
-    char *str = xstrdup (value);
-    setenv (name, str, 1);
-#else
-    int len = strlen (name) + 1 + strlen (value) + 1;
-    char *str = XMALLOC (char, len);
-    sprintf (str, "%s=%s", name, value);
-    if (putenv (str) != EXIT_SUCCESS)
-      {
-        XFREE (str);
-      }
-#endif
-  }
-}
-
-char *
-lt_extend_str (const char *orig_value, const char *add, int to_end)
-{
-  char *new_value;
-  if (orig_value && *orig_value)
-    {
-      int orig_value_len = strlen (orig_value);
-      int add_len = strlen (add);
-      new_value = XMALLOC (char, add_len + orig_value_len + 1);
-      if (to_end)
-        {
-          strcpy (new_value, orig_value);
-          strcpy (new_value + orig_value_len, add);
-        }
-      else
-        {
-          strcpy (new_value, add);
-          strcpy (new_value + add_len, orig_value);
-        }
-    }
-  else
-    {
-      new_value = xstrdup (add);
-    }
-  return new_value;
-}
-
-void
-lt_update_exe_path (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
-                  nonnull (name), nonnull (value));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      /* some systems can't cope with a ':'-terminated path #' */
-      int len = strlen (new_value);
-      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
-        {
-          new_value[len-1] = '\0';
-        }
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-void
-lt_update_lib_path (const char *name, const char *value)
-{
-  lt_debugprintf (__FILE__, __LINE__,
-		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
-                  nonnull (name), nonnull (value));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-EOF
-	    case $host_os in
-	      mingw*)
-		cat <<"EOF"
-
-/* Prepares an argument vector before calling spawn().
-   Note that spawn() does not by itself call the command interpreter
-     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
-      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
-         GetVersionEx(&v);
-         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
-      }) ? "cmd.exe" : "command.com").
-   Instead it simply concatenates the arguments, separated by ' ', and calls
-   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
-   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
-   special way:
-   - Space and tab are interpreted as delimiters. They are not treated as
-     delimiters if they are surrounded by double quotes: "...".
-   - Unescaped double quotes are removed from the input. Their only effect is
-     that within double quotes, space and tab are treated like normal
-     characters.
-   - Backslashes not followed by double quotes are not special.
-   - But 2*n+1 backslashes followed by a double quote become
-     n backslashes followed by a double quote (n >= 0):
-       \" -> "
-       \\\" -> \"
-       \\\\\" -> \\"
- */
-#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
-#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
-char **
-prepare_spawn (char **argv)
-{
-  size_t argc;
-  char **new_argv;
-  size_t i;
-
-  /* Count number of arguments.  */
-  for (argc = 0; argv[argc] != NULL; argc++)
-    ;
-
-  /* Allocate new argument vector.  */
-  new_argv = XMALLOC (char *, argc + 1);
-
-  /* Put quoted arguments into the new argument vector.  */
-  for (i = 0; i < argc; i++)
-    {
-      const char *string = argv[i];
-
-      if (string[0] == '\0')
-	new_argv[i] = xstrdup ("\"\"");
-      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
-	{
-	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
-	  size_t length;
-	  unsigned int backslashes;
-	  const char *s;
-	  char *quoted_string;
-	  char *p;
-
-	  length = 0;
-	  backslashes = 0;
-	  if (quote_around)
-	    length++;
-	  for (s = string; *s != '\0'; s++)
-	    {
-	      char c = *s;
-	      if (c == '"')
-		length += backslashes + 1;
-	      length++;
-	      if (c == '\\')
-		backslashes++;
-	      else
-		backslashes = 0;
-	    }
-	  if (quote_around)
-	    length += backslashes + 1;
-
-	  quoted_string = XMALLOC (char, length + 1);
-
-	  p = quoted_string;
-	  backslashes = 0;
-	  if (quote_around)
-	    *p++ = '"';
-	  for (s = string; *s != '\0'; s++)
-	    {
-	      char c = *s;
-	      if (c == '"')
-		{
-		  unsigned int j;
-		  for (j = backslashes + 1; j > 0; j--)
-		    *p++ = '\\';
-		}
-	      *p++ = c;
-	      if (c == '\\')
-		backslashes++;
-	      else
-		backslashes = 0;
-	    }
-	  if (quote_around)
-	    {
-	      unsigned int j;
-	      for (j = backslashes; j > 0; j--)
-		*p++ = '\\';
-	      *p++ = '"';
-	    }
-	  *p = '\0';
-
-	  new_argv[i] = quoted_string;
-	}
-      else
-	new_argv[i] = (char *) string;
-    }
-  new_argv[argc] = NULL;
-
-  return new_argv;
-}
-EOF
-		;;
-	    esac
-
-            cat <<"EOF"
-void lt_dump_script (FILE* f)
-{
-EOF
-	    func_emit_wrapper yes |
-	      $SED -n -e '
-s/^\(.\{79\}\)\(..*\)/\1\
-\2/
-h
-s/\([\\"]\)/\\\1/g
-s/$/\\n/
-s/\([^\n]*\).*/  fputs ("\1", f);/p
-g
-D'
-            cat <<"EOF"
-}
-EOF
-}
-# end: func_emit_cwrapperexe_src
-
-# func_win32_import_lib_p ARG
-# True if ARG is an import lib, as indicated by $file_magic_cmd
-func_win32_import_lib_p ()
-{
-    $opt_debug
-    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
-    *import*) : ;;
-    *) false ;;
-    esac
-}
-
-# func_mode_link arg...
-func_mode_link ()
-{
-    $opt_debug
-    case $host in
-    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-      # It is impossible to link a dll without this setting, and
-      # we shouldn't force the makefile maintainer to figure out
-      # which system we are compiling for in order to pass an extra
-      # flag for every libtool invocation.
-      # allow_undefined=no
-
-      # FIXME: Unfortunately, there are problems with the above when trying
-      # to make a dll which has undefined symbols, in which case not
-      # even a static library is built.  For now, we need to specify
-      # -no-undefined on the libtool link line when we can be certain
-      # that all symbols are satisfied, otherwise we get a static library.
-      allow_undefined=yes
-      ;;
-    *)
-      allow_undefined=yes
-      ;;
-    esac
-    libtool_args=$nonopt
-    base_compile="$nonopt $@"
-    compile_command=$nonopt
-    finalize_command=$nonopt
-
-    compile_rpath=
-    finalize_rpath=
-    compile_shlibpath=
-    finalize_shlibpath=
-    convenience=
-    old_convenience=
-    deplibs=
-    old_deplibs=
-    compiler_flags=
-    linker_flags=
-    dllsearchpath=
-    lib_search_path=`pwd`
-    inst_prefix_dir=
-    new_inherited_linker_flags=
-
-    avoid_version=no
-    bindir=
-    dlfiles=
-    dlprefiles=
-    dlself=no
-    export_dynamic=no
-    export_symbols=
-    export_symbols_regex=
-    generated=
-    libobjs=
-    ltlibs=
-    module=no
-    no_install=no
-    objs=
-    non_pic_objects=
-    precious_files_regex=
-    prefer_static_libs=no
-    preload=no
-    prev=
-    prevarg=
-    release=
-    rpath=
-    xrpath=
-    perm_rpath=
-    temp_rpath=
-    thread_safe=no
-    vinfo=
-    vinfo_number=no
-    weak_libs=
-    single_module="${wl}-single_module"
-    func_infer_tag $base_compile
-
-    # We need to know -static, to get the right output filenames.
-    for arg
-    do
-      case $arg in
-      -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
-	build_old_libs=no
-	break
-	;;
-      -all-static | -static | -static-libtool-libs)
-	case $arg in
-	-all-static)
-	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
-	    func_warning "complete static linking is impossible in this configuration"
-	  fi
-	  if test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=yes
-	  ;;
-	-static)
-	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=built
-	  ;;
-	-static-libtool-libs)
-	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
-	    dlopen_self=$dlopen_self_static
-	  fi
-	  prefer_static_libs=yes
-	  ;;
-	esac
-	build_libtool_libs=no
-	build_old_libs=yes
-	break
-	;;
-      esac
-    done
-
-    # See if our shared archives depend on static archives.
-    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
-
-    # Go through the arguments, transforming them on the way.
-    while test "$#" -gt 0; do
-      arg="$1"
-      shift
-      func_quote_for_eval "$arg"
-      qarg=$func_quote_for_eval_unquoted_result
-      libtool_args+=" $func_quote_for_eval_result"
-
-      # If the previous option needs an argument, assign it.
-      if test -n "$prev"; then
-	case $prev in
-	output)
-	  compile_command+=" @OUTPUT@"
-	  finalize_command+=" @OUTPUT@"
-	  ;;
-	esac
-
-	case $prev in
-	bindir)
-	  bindir="$arg"
-	  prev=
-	  continue
-	  ;;
-	dlfiles|dlprefiles)
-	  if test "$preload" = no; then
-	    # Add the symbol object into the linking commands.
-	    compile_command+=" @SYMFILE@"
-	    finalize_command+=" @SYMFILE@"
-	    preload=yes
-	  fi
-	  case $arg in
-	  *.la | *.lo) ;;  # We handle these cases below.
-	  force)
-	    if test "$dlself" = no; then
-	      dlself=needless
-	      export_dynamic=yes
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  self)
-	    if test "$prev" = dlprefiles; then
-	      dlself=yes
-	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
-	      dlself=yes
-	    else
-	      dlself=needless
-	      export_dynamic=yes
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  *)
-	    if test "$prev" = dlfiles; then
-	      dlfiles+=" $arg"
-	    else
-	      dlprefiles+=" $arg"
-	    fi
-	    prev=
-	    continue
-	    ;;
-	  esac
-	  ;;
-	expsyms)
-	  export_symbols="$arg"
-	  test -f "$arg" \
-	    || func_fatal_error "symbol file \`$arg' does not exist"
-	  prev=
-	  continue
-	  ;;
-	expsyms_regex)
-	  export_symbols_regex="$arg"
-	  prev=
-	  continue
-	  ;;
-	framework)
-	  case $host in
-	    *-*-darwin*)
-	      case "$deplibs " in
-		*" $qarg.ltframework "*) ;;
-		*) deplibs+=" $qarg.ltframework" # this is fixed later
-		   ;;
-	      esac
-	      ;;
-	  esac
-	  prev=
-	  continue
-	  ;;
-	inst_prefix)
-	  inst_prefix_dir="$arg"
-	  prev=
-	  continue
-	  ;;
-	objectlist)
-	  if test -f "$arg"; then
-	    save_arg=$arg
-	    moreargs=
-	    for fil in `cat "$save_arg"`
-	    do
-#	      moreargs+=" $fil"
-	      arg=$fil
-	      # A libtool-controlled object.
-
-	      # Check to see that this really is a libtool object.
-	      if func_lalib_unsafe_p "$arg"; then
-		pic_object=
-		non_pic_object=
-
-		# Read the .lo file
-		func_source "$arg"
-
-		if test -z "$pic_object" ||
-		   test -z "$non_pic_object" ||
-		   test "$pic_object" = none &&
-		   test "$non_pic_object" = none; then
-		  func_fatal_error "cannot find name of object for \`$arg'"
-		fi
-
-		# Extract subdirectory from the argument.
-		func_dirname "$arg" "/" ""
-		xdir="$func_dirname_result"
-
-		if test "$pic_object" != none; then
-		  # Prepend the subdirectory the object is found in.
-		  pic_object="$xdir$pic_object"
-
-		  if test "$prev" = dlfiles; then
-		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		      dlfiles+=" $pic_object"
-		      prev=
-		      continue
-		    else
-		      # If libtool objects are unsupported, then we need to preload.
-		      prev=dlprefiles
-		    fi
-		  fi
-
-		  # CHECK ME:  I think I busted this.  -Ossama
-		  if test "$prev" = dlprefiles; then
-		    # Preload the old-style object.
-		    dlprefiles+=" $pic_object"
-		    prev=
-		  fi
-
-		  # A PIC object.
-		  libobjs+=" $pic_object"
-		  arg="$pic_object"
-		fi
-
-		# Non-PIC object.
-		if test "$non_pic_object" != none; then
-		  # Prepend the subdirectory the object is found in.
-		  non_pic_object="$xdir$non_pic_object"
-
-		  # A standard non-PIC object
-		  non_pic_objects+=" $non_pic_object"
-		  if test -z "$pic_object" || test "$pic_object" = none ; then
-		    arg="$non_pic_object"
-		  fi
-		else
-		  # If the PIC object exists, use it instead.
-		  # $xdir was prepended to $pic_object above.
-		  non_pic_object="$pic_object"
-		  non_pic_objects+=" $non_pic_object"
-		fi
-	      else
-		# Only an error if not doing a dry-run.
-		if $opt_dry_run; then
-		  # Extract subdirectory from the argument.
-		  func_dirname "$arg" "/" ""
-		  xdir="$func_dirname_result"
-
-		  func_lo2o "$arg"
-		  pic_object=$xdir$objdir/$func_lo2o_result
-		  non_pic_object=$xdir$func_lo2o_result
-		  libobjs+=" $pic_object"
-		  non_pic_objects+=" $non_pic_object"
-	        else
-		  func_fatal_error "\`$arg' is not a valid libtool object"
-		fi
-	      fi
-	    done
-	  else
-	    func_fatal_error "link input file \`$arg' does not exist"
-	  fi
-	  arg=$save_arg
-	  prev=
-	  continue
-	  ;;
-	precious_regex)
-	  precious_files_regex="$arg"
-	  prev=
-	  continue
-	  ;;
-	release)
-	  release="-$arg"
-	  prev=
-	  continue
-	  ;;
-	rpath | xrpath)
-	  # We need an absolute path.
-	  case $arg in
-	  [\\/]* | [A-Za-z]:[\\/]*) ;;
-	  *)
-	    func_fatal_error "only absolute run-paths are allowed"
-	    ;;
-	  esac
-	  if test "$prev" = rpath; then
-	    case "$rpath " in
-	    *" $arg "*) ;;
-	    *) rpath+=" $arg" ;;
-	    esac
-	  else
-	    case "$xrpath " in
-	    *" $arg "*) ;;
-	    *) xrpath+=" $arg" ;;
-	    esac
-	  fi
-	  prev=
-	  continue
-	  ;;
-	shrext)
-	  shrext_cmds="$arg"
-	  prev=
-	  continue
-	  ;;
-	weak)
-	  weak_libs+=" $arg"
-	  prev=
-	  continue
-	  ;;
-	xcclinker)
-	  linker_flags+=" $qarg"
-	  compiler_flags+=" $qarg"
-	  prev=
-	  compile_command+=" $qarg"
-	  finalize_command+=" $qarg"
-	  continue
-	  ;;
-	xcompiler)
-	  compiler_flags+=" $qarg"
-	  prev=
-	  compile_command+=" $qarg"
-	  finalize_command+=" $qarg"
-	  continue
-	  ;;
-	xlinker)
-	  linker_flags+=" $qarg"
-	  compiler_flags+=" $wl$qarg"
-	  prev=
-	  compile_command+=" $wl$qarg"
-	  finalize_command+=" $wl$qarg"
-	  continue
-	  ;;
-	*)
-	  eval "$prev=\"\$arg\""
-	  prev=
-	  continue
-	  ;;
-	esac
-      fi # test -n "$prev"
-
-      prevarg="$arg"
-
-      case $arg in
-      -all-static)
-	if test -n "$link_static_flag"; then
-	  # See comment for -static flag below, for more details.
-	  compile_command+=" $link_static_flag"
-	  finalize_command+=" $link_static_flag"
-	fi
-	continue
-	;;
-
-      -allow-undefined)
-	# FIXME: remove this flag sometime in the future.
-	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
-	;;
-
-      -avoid-version)
-	avoid_version=yes
-	continue
-	;;
-
-      -bindir)
-	prev=bindir
-	continue
-	;;
-
-      -dlopen)
-	prev=dlfiles
-	continue
-	;;
-
-      -dlpreopen)
-	prev=dlprefiles
-	continue
-	;;
-
-      -export-dynamic)
-	export_dynamic=yes
-	continue
-	;;
-
-      -export-symbols | -export-symbols-regex)
-	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
-	  func_fatal_error "more than one -exported-symbols argument is not allowed"
-	fi
-	if test "X$arg" = "X-export-symbols"; then
-	  prev=expsyms
-	else
-	  prev=expsyms_regex
-	fi
-	continue
-	;;
-
-      -framework)
-	prev=framework
-	continue
-	;;
-
-      -inst-prefix-dir)
-	prev=inst_prefix
-	continue
-	;;
-
-      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
-      # so, if we see these flags be careful not to treat them like -L
-      -L[A-Z][A-Z]*:*)
-	case $with_gcc/$host in
-	no/*-*-irix* | /*-*-irix*)
-	  compile_command+=" $arg"
-	  finalize_command+=" $arg"
-	  ;;
-	esac
-	continue
-	;;
-
-      -L*)
-	func_stripname "-L" '' "$arg"
-	if test -z "$func_stripname_result"; then
-	  if test "$#" -gt 0; then
-	    func_fatal_error "require no space between \`-L' and \`$1'"
-	  else
-	    func_fatal_error "need path for \`-L' option"
-	  fi
-	fi
-	func_resolve_sysroot "$func_stripname_result"
-	dir=$func_resolve_sysroot_result
-	# We need an absolute path.
-	case $dir in
-	[\\/]* | [A-Za-z]:[\\/]*) ;;
-	*)
-	  absdir=`cd "$dir" && pwd`
-	  test -z "$absdir" && \
-	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
-	  dir="$absdir"
-	  ;;
-	esac
-	case "$deplibs " in
-	*" -L$dir "* | *" $arg "*)
-	  # Will only happen for absolute or sysroot arguments
-	  ;;
-	*)
-	  # Preserve sysroot, but never include relative directories
-	  case $dir in
-	    [\\/]* | [A-Za-z]:[\\/]* | =*) deplibs+=" $arg" ;;
-	    *) deplibs+=" -L$dir" ;;
-	  esac
-	  lib_search_path+=" $dir"
-	  ;;
-	esac
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
-	  case :$dllsearchpath: in
-	  *":$dir:"*) ;;
-	  ::) dllsearchpath=$dir;;
-	  *) dllsearchpath+=":$dir";;
-	  esac
-	  case :$dllsearchpath: in
-	  *":$testbindir:"*) ;;
-	  ::) dllsearchpath=$testbindir;;
-	  *) dllsearchpath+=":$testbindir";;
-	  esac
-	  ;;
-	esac
-	continue
-	;;
-
-      -l*)
-	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
-	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
-	    # These systems don't actually have a C or math library (as such)
-	    continue
-	    ;;
-	  *-*-os2*)
-	    # These systems don't actually have a C library (as such)
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	    # Do not include libc due to us having libc/libc_r.
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-rhapsody* | *-*-darwin1.[012])
-	    # Rhapsody C and math libraries are in the System framework
-	    deplibs+=" System.ltframework"
-	    continue
-	    ;;
-	  *-*-sco3.2v5* | *-*-sco5v6*)
-	    # Causes problems with __ctype
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-	    # Compiler inserts libc in the correct place for threads to work
-	    test "X$arg" = "X-lc" && continue
-	    ;;
-	  esac
-	elif test "X$arg" = "X-lc_r"; then
-	 case $host in
-	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	   # Do not include libc_r directly, use -pthread flag.
-	   continue
-	   ;;
-	 esac
-	fi
-	deplibs+=" $arg"
-	continue
-	;;
-
-      -module)
-	module=yes
-	continue
-	;;
-
-      # Tru64 UNIX uses -model [arg] to determine the layout of C++
-      # classes, name mangling, and exception handling.
-      # Darwin uses the -arch flag to determine output architecture.
-      -model|-arch|-isysroot|--sysroot)
-	compiler_flags+=" $arg"
-	compile_command+=" $arg"
-	finalize_command+=" $arg"
-	prev=xcompiler
-	continue
-	;;
-
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
-      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-	compiler_flags+=" $arg"
-	compile_command+=" $arg"
-	finalize_command+=" $arg"
-	case "$new_inherited_linker_flags " in
-	    *" $arg "*) ;;
-	    * ) new_inherited_linker_flags+=" $arg" ;;
-	esac
-	continue
-	;;
-
-      -multi_module)
-	single_module="${wl}-multi_module"
-	continue
-	;;
-
-      -no-fast-install)
-	fast_install=no
-	continue
-	;;
-
-      -no-install)
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
-	  # The PATH hackery in wrapper scripts is required on Windows
-	  # and Darwin in order for the loader to find any dlls it needs.
-	  func_warning "\`-no-install' is ignored for $host"
-	  func_warning "assuming \`-no-fast-install' instead"
-	  fast_install=no
-	  ;;
-	*) no_install=yes ;;
-	esac
-	continue
-	;;
-
-      -no-undefined)
-	allow_undefined=no
-	continue
-	;;
-
-      -objectlist)
-	prev=objectlist
-	continue
-	;;
-
-      -o) prev=output ;;
-
-      -precious-files-regex)
-	prev=precious_regex
-	continue
-	;;
-
-      -release)
-	prev=release
-	continue
-	;;
-
-      -rpath)
-	prev=rpath
-	continue
-	;;
-
-      -R)
-	prev=xrpath
-	continue
-	;;
-
-      -R*)
-	func_stripname '-R' '' "$arg"
-	dir=$func_stripname_result
-	# We need an absolute path.
-	case $dir in
-	[\\/]* | [A-Za-z]:[\\/]*) ;;
-	=*)
-	  func_stripname '=' '' "$dir"
-	  dir=$lt_sysroot$func_stripname_result
-	  ;;
-	*)
-	  func_fatal_error "only absolute run-paths are allowed"
-	  ;;
-	esac
-	case "$xrpath " in
-	*" $dir "*) ;;
-	*) xrpath+=" $dir" ;;
-	esac
-	continue
-	;;
-
-      -shared)
-	# The effects of -shared are defined in a previous loop.
-	continue
-	;;
-
-      -shrext)
-	prev=shrext
-	continue
-	;;
-
-      -static | -static-libtool-libs)
-	# The effects of -static are defined in a previous loop.
-	# We used to do the same as -all-static on platforms that
-	# didn't have a PIC flag, but the assumption that the effects
-	# would be equivalent was wrong.  It would break on at least
-	# Digital Unix and AIX.
-	continue
-	;;
-
-      -thread-safe)
-	thread_safe=yes
-	continue
-	;;
-
-      -version-info)
-	prev=vinfo
-	continue
-	;;
-
-      -version-number)
-	prev=vinfo
-	vinfo_number=yes
-	continue
-	;;
-
-      -weak)
-        prev=weak
-	continue
-	;;
-
-      -Wc,*)
-	func_stripname '-Wc,' '' "$arg"
-	args=$func_stripname_result
-	arg=
-	save_ifs="$IFS"; IFS=','
-	for flag in $args; do
-	  IFS="$save_ifs"
-          func_quote_for_eval "$flag"
-	  arg+=" $func_quote_for_eval_result"
-	  compiler_flags+=" $func_quote_for_eval_result"
-	done
-	IFS="$save_ifs"
-	func_stripname ' ' '' "$arg"
-	arg=$func_stripname_result
-	;;
-
-      -Wl,*)
-	func_stripname '-Wl,' '' "$arg"
-	args=$func_stripname_result
-	arg=
-	save_ifs="$IFS"; IFS=','
-	for flag in $args; do
-	  IFS="$save_ifs"
-          func_quote_for_eval "$flag"
-	  arg+=" $wl$func_quote_for_eval_result"
-	  compiler_flags+=" $wl$func_quote_for_eval_result"
-	  linker_flags+=" $func_quote_for_eval_result"
-	done
-	IFS="$save_ifs"
-	func_stripname ' ' '' "$arg"
-	arg=$func_stripname_result
-	;;
-
-      -Xcompiler)
-	prev=xcompiler
-	continue
-	;;
-
-      -Xlinker)
-	prev=xlinker
-	continue
-	;;
-
-      -XCClinker)
-	prev=xcclinker
-	continue
-	;;
-
-      # -msg_* for osf cc
-      -msg_*)
-	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-
-      # Flags to be passed through unchanged, with rationale:
-      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
-      # -r[0-9][0-9]*        specify processor for the SGI compiler
-      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
-      # +DA*, +DD*           enable 64-bit mode for the HP compiler
-      # -q*                  compiler args for the IBM compiler
-      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
-      # -F/path              path to uninstalled frameworks, gcc on darwin
-      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
-      # @file                GCC response files
-      # -tp=*                Portland pgcc target processor selection
-      # --sysroot=*          for sysroot support
-      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
-      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
-        func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-        compile_command+=" $arg"
-        finalize_command+=" $arg"
-        compiler_flags+=" $arg"
-        continue
-        ;;
-
-      # Some other compiler flag.
-      -* | +*)
-        func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-
-      *.$objext)
-	# A standard object.
-	objs+=" $arg"
-	;;
-
-      *.lo)
-	# A libtool-controlled object.
-
-	# Check to see that this really is a libtool object.
-	if func_lalib_unsafe_p "$arg"; then
-	  pic_object=
-	  non_pic_object=
-
-	  # Read the .lo file
-	  func_source "$arg"
-
-	  if test -z "$pic_object" ||
-	     test -z "$non_pic_object" ||
-	     test "$pic_object" = none &&
-	     test "$non_pic_object" = none; then
-	    func_fatal_error "cannot find name of object for \`$arg'"
-	  fi
-
-	  # Extract subdirectory from the argument.
-	  func_dirname "$arg" "/" ""
-	  xdir="$func_dirname_result"
-
-	  if test "$pic_object" != none; then
-	    # Prepend the subdirectory the object is found in.
-	    pic_object="$xdir$pic_object"
-
-	    if test "$prev" = dlfiles; then
-	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		dlfiles+=" $pic_object"
-		prev=
-		continue
-	      else
-		# If libtool objects are unsupported, then we need to preload.
-		prev=dlprefiles
-	      fi
-	    fi
-
-	    # CHECK ME:  I think I busted this.  -Ossama
-	    if test "$prev" = dlprefiles; then
-	      # Preload the old-style object.
-	      dlprefiles+=" $pic_object"
-	      prev=
-	    fi
-
-	    # A PIC object.
-	    libobjs+=" $pic_object"
-	    arg="$pic_object"
-	  fi
-
-	  # Non-PIC object.
-	  if test "$non_pic_object" != none; then
-	    # Prepend the subdirectory the object is found in.
-	    non_pic_object="$xdir$non_pic_object"
-
-	    # A standard non-PIC object
-	    non_pic_objects+=" $non_pic_object"
-	    if test -z "$pic_object" || test "$pic_object" = none ; then
-	      arg="$non_pic_object"
-	    fi
-	  else
-	    # If the PIC object exists, use it instead.
-	    # $xdir was prepended to $pic_object above.
-	    non_pic_object="$pic_object"
-	    non_pic_objects+=" $non_pic_object"
-	  fi
-	else
-	  # Only an error if not doing a dry-run.
-	  if $opt_dry_run; then
-	    # Extract subdirectory from the argument.
-	    func_dirname "$arg" "/" ""
-	    xdir="$func_dirname_result"
-
-	    func_lo2o "$arg"
-	    pic_object=$xdir$objdir/$func_lo2o_result
-	    non_pic_object=$xdir$func_lo2o_result
-	    libobjs+=" $pic_object"
-	    non_pic_objects+=" $non_pic_object"
-	  else
-	    func_fatal_error "\`$arg' is not a valid libtool object"
-	  fi
-	fi
-	;;
-
-      *.$libext)
-	# An archive.
-	deplibs+=" $arg"
-	old_deplibs+=" $arg"
-	continue
-	;;
-
-      *.la)
-	# A libtool-controlled library.
-
-	func_resolve_sysroot "$arg"
-	if test "$prev" = dlfiles; then
-	  # This library was specified with -dlopen.
-	  dlfiles+=" $func_resolve_sysroot_result"
-	  prev=
-	elif test "$prev" = dlprefiles; then
-	  # The library was specified with -dlpreopen.
-	  dlprefiles+=" $func_resolve_sysroot_result"
-	  prev=
-	else
-	  deplibs+=" $func_resolve_sysroot_result"
-	fi
-	continue
-	;;
-
-      # Some other compiler argument.
-      *)
-	# Unknown arguments in both finalize_command and compile_command need
-	# to be aesthetically quoted because they are evaled later.
-	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-      esac # arg
-
-      # Now actually substitute the argument into the commands.
-      if test -n "$arg"; then
-	compile_command+=" $arg"
-	finalize_command+=" $arg"
-      fi
-    done # argument parsing loop
-
-    test -n "$prev" && \
-      func_fatal_help "the \`$prevarg' option requires an argument"
-
-    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
-      eval arg=\"$export_dynamic_flag_spec\"
-      compile_command+=" $arg"
-      finalize_command+=" $arg"
-    fi
-
-    oldlibs=
-    # calculate the name of the file, without its directory
-    func_basename "$output"
-    outputname="$func_basename_result"
-    libobjs_save="$libobjs"
-
-    if test -n "$shlibpath_var"; then
-      # get the directories listed in $shlibpath_var
-      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
-    else
-      shlib_search_path=
-    fi
-    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
-    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-
-    func_dirname "$output" "/" ""
-    output_objdir="$func_dirname_result$objdir"
-    func_to_tool_file "$output_objdir/"
-    tool_output_objdir=$func_to_tool_file_result
-    # Create the object directory.
-    func_mkdir_p "$output_objdir"
-
-    # Determine the type of output
-    case $output in
-    "")
-      func_fatal_help "you must specify an output file"
-      ;;
-    *.$libext) linkmode=oldlib ;;
-    *.lo | *.$objext) linkmode=obj ;;
-    *.la) linkmode=lib ;;
-    *) linkmode=prog ;; # Anything else should be a program.
-    esac
-
-    specialdeplibs=
-
-    libs=
-    # Find all interdependent deplibs by searching for libraries
-    # that are linked more than once (e.g. -la -lb -la)
-    for deplib in $deplibs; do
-      if $opt_preserve_dup_deps ; then
-	case "$libs " in
-	*" $deplib "*) specialdeplibs+=" $deplib" ;;
-	esac
-      fi
-      libs+=" $deplib"
-    done
-
-    if test "$linkmode" = lib; then
-      libs="$predeps $libs $compiler_lib_search_path $postdeps"
-
-      # Compute libraries that are listed more than once in $predeps
-      # $postdeps and mark them as special (i.e., whose duplicates are
-      # not to be eliminated).
-      pre_post_deps=
-      if $opt_duplicate_compiler_generated_deps; then
-	for pre_post_dep in $predeps $postdeps; do
-	  case "$pre_post_deps " in
-	  *" $pre_post_dep "*) specialdeplibs+=" $pre_post_deps" ;;
-	  esac
-	  pre_post_deps+=" $pre_post_dep"
-	done
-      fi
-      pre_post_deps=
-    fi
-
-    deplibs=
-    newdependency_libs=
-    newlib_search_path=
-    need_relink=no # whether we're linking any uninstalled libtool libraries
-    notinst_deplibs= # not-installed libtool libraries
-    notinst_path= # paths that contain not-installed libtool libraries
-
-    case $linkmode in
-    lib)
-	passes="conv dlpreopen link"
-	for file in $dlfiles $dlprefiles; do
-	  case $file in
-	  *.la) ;;
-	  *)
-	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
-	    ;;
-	  esac
-	done
-	;;
-    prog)
-	compile_deplibs=
-	finalize_deplibs=
-	alldeplibs=no
-	newdlfiles=
-	newdlprefiles=
-	passes="conv scan dlopen dlpreopen link"
-	;;
-    *)  passes="conv"
-	;;
-    esac
-
-    for pass in $passes; do
-      # The preopen pass in lib mode reverses $deplibs; put it back here
-      # so that -L comes before libs that need it for instance...
-      if test "$linkmode,$pass" = "lib,link"; then
-	## FIXME: Find the place where the list is rebuilt in the wrong
-	##        order, and fix it there properly
-        tmp_deplibs=
-	for deplib in $deplibs; do
-	  tmp_deplibs="$deplib $tmp_deplibs"
-	done
-	deplibs="$tmp_deplibs"
-      fi
-
-      if test "$linkmode,$pass" = "lib,link" ||
-	 test "$linkmode,$pass" = "prog,scan"; then
-	libs="$deplibs"
-	deplibs=
-      fi
-      if test "$linkmode" = prog; then
-	case $pass in
-	dlopen) libs="$dlfiles" ;;
-	dlpreopen) libs="$dlprefiles" ;;
-	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
-	esac
-      fi
-      if test "$linkmode,$pass" = "lib,dlpreopen"; then
-	# Collect and forward deplibs of preopened libtool libs
-	for lib in $dlprefiles; do
-	  # Ignore non-libtool-libs
-	  dependency_libs=
-	  func_resolve_sysroot "$lib"
-	  case $lib in
-	  *.la)	func_source "$func_resolve_sysroot_result" ;;
-	  esac
-
-	  # Collect preopened libtool deplibs, except any this library
-	  # has declared as weak libs
-	  for deplib in $dependency_libs; do
-	    func_basename "$deplib"
-            deplib_base=$func_basename_result
-	    case " $weak_libs " in
-	    *" $deplib_base "*) ;;
-	    *) deplibs+=" $deplib" ;;
-	    esac
-	  done
-	done
-	libs="$dlprefiles"
-      fi
-      if test "$pass" = dlopen; then
-	# Collect dlpreopened libraries
-	save_deplibs="$deplibs"
-	deplibs=
-      fi
-
-      for deplib in $libs; do
-	lib=
-	found=no
-	case $deplib in
-	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
-        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-	  if test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$deplib $compile_deplibs"
-	    finalize_deplibs="$deplib $finalize_deplibs"
-	  else
-	    compiler_flags+=" $deplib"
-	    if test "$linkmode" = lib ; then
-		case "$new_inherited_linker_flags " in
-		    *" $deplib "*) ;;
-		    * ) new_inherited_linker_flags+=" $deplib" ;;
-		esac
-	    fi
-	  fi
-	  continue
-	  ;;
-	-l*)
-	  if test "$linkmode" != lib && test "$linkmode" != prog; then
-	    func_warning "\`-l' is ignored for archives/objects"
-	    continue
-	  fi
-	  func_stripname '-l' '' "$deplib"
-	  name=$func_stripname_result
-	  if test "$linkmode" = lib; then
-	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
-	  else
-	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
-	  fi
-	  for searchdir in $searchdirs; do
-	    for search_ext in .la $std_shrext .so .a; do
-	      # Search the libtool library
-	      lib="$searchdir/lib${name}${search_ext}"
-	      if test -f "$lib"; then
-		if test "$search_ext" = ".la"; then
-		  found=yes
-		else
-		  found=no
-		fi
-		break 2
-	      fi
-	    done
-	  done
-	  if test "$found" != yes; then
-	    # deplib doesn't seem to be a libtool library
-	    if test "$linkmode,$pass" = "prog,link"; then
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    else
-	      deplibs="$deplib $deplibs"
-	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-	    fi
-	    continue
-	  else # deplib is a libtool library
-	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
-	    # We need to do some special things here, and not later.
-	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-	      case " $predeps $postdeps " in
-	      *" $deplib "*)
-		if func_lalib_p "$lib"; then
-		  library_names=
-		  old_library=
-		  func_source "$lib"
-		  for l in $old_library $library_names; do
-		    ll="$l"
-		  done
-		  if test "X$ll" = "X$old_library" ; then # only static version available
-		    found=no
-		    func_dirname "$lib" "" "."
-		    ladir="$func_dirname_result"
-		    lib=$ladir/$old_library
-		    if test "$linkmode,$pass" = "prog,link"; then
-		      compile_deplibs="$deplib $compile_deplibs"
-		      finalize_deplibs="$deplib $finalize_deplibs"
-		    else
-		      deplibs="$deplib $deplibs"
-		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-		    fi
-		    continue
-		  fi
-		fi
-		;;
-	      *) ;;
-	      esac
-	    fi
-	  fi
-	  ;; # -l
-	*.ltframework)
-	  if test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$deplib $compile_deplibs"
-	    finalize_deplibs="$deplib $finalize_deplibs"
-	  else
-	    deplibs="$deplib $deplibs"
-	    if test "$linkmode" = lib ; then
-		case "$new_inherited_linker_flags " in
-		    *" $deplib "*) ;;
-		    * ) new_inherited_linker_flags+=" $deplib" ;;
-		esac
-	    fi
-	  fi
-	  continue
-	  ;;
-	-L*)
-	  case $linkmode in
-	  lib)
-	    deplibs="$deplib $deplibs"
-	    test "$pass" = conv && continue
-	    newdependency_libs="$deplib $newdependency_libs"
-	    func_stripname '-L' '' "$deplib"
-	    func_resolve_sysroot "$func_stripname_result"
-	    newlib_search_path+=" $func_resolve_sysroot_result"
-	    ;;
-	  prog)
-	    if test "$pass" = conv; then
-	      deplibs="$deplib $deplibs"
-	      continue
-	    fi
-	    if test "$pass" = scan; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    fi
-	    func_stripname '-L' '' "$deplib"
-	    func_resolve_sysroot "$func_stripname_result"
-	    newlib_search_path+=" $func_resolve_sysroot_result"
-	    ;;
-	  *)
-	    func_warning "\`-L' is ignored for archives/objects"
-	    ;;
-	  esac # linkmode
-	  continue
-	  ;; # -L
-	-R*)
-	  if test "$pass" = link; then
-	    func_stripname '-R' '' "$deplib"
-	    func_resolve_sysroot "$func_stripname_result"
-	    dir=$func_resolve_sysroot_result
-	    # Make sure the xrpath contains only unique directories.
-	    case "$xrpath " in
-	    *" $dir "*) ;;
-	    *) xrpath+=" $dir" ;;
-	    esac
-	  fi
-	  deplibs="$deplib $deplibs"
-	  continue
-	  ;;
-	*.la)
-	  func_resolve_sysroot "$deplib"
-	  lib=$func_resolve_sysroot_result
-	  ;;
-	*.$libext)
-	  if test "$pass" = conv; then
-	    deplibs="$deplib $deplibs"
-	    continue
-	  fi
-	  case $linkmode in
-	  lib)
-	    # Linking convenience modules into shared libraries is allowed,
-	    # but linking other static libraries is non-portable.
-	    case " $dlpreconveniencelibs " in
-	    *" $deplib "*) ;;
-	    *)
-	      valid_a_lib=no
-	      case $deplibs_check_method in
-		match_pattern*)
-		  set dummy $deplibs_check_method; shift
-		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
-		    | $EGREP "$match_pattern_regex" > /dev/null; then
-		    valid_a_lib=yes
-		  fi
-		;;
-		pass_all)
-		  valid_a_lib=yes
-		;;
-	      esac
-	      if test "$valid_a_lib" != yes; then
-		echo
-		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
-		echo "*** I have the capability to make that library automatically link in when"
-		echo "*** you link to this library.  But I can only do this if you have a"
-		echo "*** shared version of the library, which you do not appear to have"
-		echo "*** because the file extensions .$libext of this argument makes me believe"
-		echo "*** that it is just a static archive that I should not use here."
-	      else
-		echo
-		$ECHO "*** Warning: Linking the shared library $output against the"
-		$ECHO "*** static library $deplib is not portable!"
-		deplibs="$deplib $deplibs"
-	      fi
-	      ;;
-	    esac
-	    continue
-	    ;;
-	  prog)
-	    if test "$pass" != link; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    fi
-	    continue
-	    ;;
-	  esac # linkmode
-	  ;; # *.$libext
-	*.lo | *.$objext)
-	  if test "$pass" = conv; then
-	    deplibs="$deplib $deplibs"
-	  elif test "$linkmode" = prog; then
-	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
-	      # If there is no dlopen support or we're linking statically,
-	      # we need to preload.
-	      newdlprefiles+=" $deplib"
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    else
-	      newdlfiles+=" $deplib"
-	    fi
-	  fi
-	  continue
-	  ;;
-	%DEPLIBS%)
-	  alldeplibs=yes
-	  continue
-	  ;;
-	esac # case $deplib
-
-	if test "$found" = yes || test -f "$lib"; then :
-	else
-	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
-	fi
-
-	# Check to see that this really is a libtool archive.
-	func_lalib_unsafe_p "$lib" \
-	  || func_fatal_error "\`$lib' is not a valid libtool archive"
-
-	func_dirname "$lib" "" "."
-	ladir="$func_dirname_result"
-
-	dlname=
-	dlopen=
-	dlpreopen=
-	libdir=
-	library_names=
-	old_library=
-	inherited_linker_flags=
-	# If the library was installed with an old release of libtool,
-	# it will not redefine variables installed, or shouldnotlink
-	installed=yes
-	shouldnotlink=no
-	avoidtemprpath=
-
-
-	# Read the .la file
-	func_source "$lib"
-
-	# Convert "-framework foo" to "foo.ltframework"
-	if test -n "$inherited_linker_flags"; then
-	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
-	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
-	    case " $new_inherited_linker_flags " in
-	      *" $tmp_inherited_linker_flag "*) ;;
-	      *) new_inherited_linker_flags+=" $tmp_inherited_linker_flag";;
-	    esac
-	  done
-	fi
-	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	if test "$linkmode,$pass" = "lib,link" ||
-	   test "$linkmode,$pass" = "prog,scan" ||
-	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
-	  test -n "$dlopen" && dlfiles+=" $dlopen"
-	  test -n "$dlpreopen" && dlprefiles+=" $dlpreopen"
-	fi
-
-	if test "$pass" = conv; then
-	  # Only check for convenience libraries
-	  deplibs="$lib $deplibs"
-	  if test -z "$libdir"; then
-	    if test -z "$old_library"; then
-	      func_fatal_error "cannot find name of link library for \`$lib'"
-	    fi
-	    # It is a libtool convenience library, so add in its objects.
-	    convenience+=" $ladir/$objdir/$old_library"
-	    old_convenience+=" $ladir/$objdir/$old_library"
-	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
-	    func_fatal_error "\`$lib' is not a convenience library"
-	  fi
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    deplibs="$deplib $deplibs"
-	    if $opt_preserve_dup_deps ; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs+=" $deplib" ;;
-	      esac
-	    fi
-	    tmp_libs+=" $deplib"
-	  done
-	  continue
-	fi # $pass = conv
-
-
-	# Get the name of the library we link against.
-	linklib=
-	if test -n "$old_library" &&
-	   { test "$prefer_static_libs" = yes ||
-	     test "$prefer_static_libs,$installed" = "built,no"; }; then
-	  linklib=$old_library
-	else
-	  for l in $old_library $library_names; do
-	    linklib="$l"
-	  done
-	fi
-	if test -z "$linklib"; then
-	  func_fatal_error "cannot find name of link library for \`$lib'"
-	fi
-
-	# This library was specified with -dlopen.
-	if test "$pass" = dlopen; then
-	  if test -z "$libdir"; then
-	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
-	  fi
-	  if test -z "$dlname" ||
-	     test "$dlopen_support" != yes ||
-	     test "$build_libtool_libs" = no; then
-	    # If there is no dlname, no dlopen support or we're linking
-	    # statically, we need to preload.  We also need to preload any
-	    # dependent libraries so libltdl's deplib preloader doesn't
-	    # bomb out in the load deplibs phase.
-	    dlprefiles+=" $lib $dependency_libs"
-	  else
-	    newdlfiles+=" $lib"
-	  fi
-	  continue
-	fi # $pass = dlopen
-
-	# We need an absolute path.
-	case $ladir in
-	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
-	*)
-	  abs_ladir=`cd "$ladir" && pwd`
-	  if test -z "$abs_ladir"; then
-	    func_warning "cannot determine absolute directory name of \`$ladir'"
-	    func_warning "passing it literally to the linker, although it might fail"
-	    abs_ladir="$ladir"
-	  fi
-	  ;;
-	esac
-	func_basename "$lib"
-	laname="$func_basename_result"
-
-	# Find the relevant object directory and library name.
-	if test "X$installed" = Xyes; then
-	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    func_warning "library \`$lib' was moved."
-	    dir="$ladir"
-	    absdir="$abs_ladir"
-	    libdir="$abs_ladir"
-	  else
-	    dir="$lt_sysroot$libdir"
-	    absdir="$lt_sysroot$libdir"
-	  fi
-	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
-	else
-	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    dir="$ladir"
-	    absdir="$abs_ladir"
-	    # Remove this search path later
-	    notinst_path+=" $abs_ladir"
-	  else
-	    dir="$ladir/$objdir"
-	    absdir="$abs_ladir/$objdir"
-	    # Remove this search path later
-	    notinst_path+=" $abs_ladir"
-	  fi
-	fi # $installed = yes
-	func_stripname 'lib' '.la' "$laname"
-	name=$func_stripname_result
-
-	# This library was specified with -dlpreopen.
-	if test "$pass" = dlpreopen; then
-	  if test -z "$libdir" && test "$linkmode" = prog; then
-	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
-	  fi
-	  case "$host" in
-	    # special handling for platforms with PE-DLLs.
-	    *cygwin* | *mingw* | *cegcc* )
-	      # Linker will automatically link against shared library if both
-	      # static and shared are present.  Therefore, ensure we extract
-	      # symbols from the import library if a shared library is present
-	      # (otherwise, the dlopen module name will be incorrect).  We do
-	      # this by putting the import library name into $newdlprefiles.
-	      # We recover the dlopen module name by 'saving' the la file
-	      # name in a special purpose variable, and (later) extracting the
-	      # dlname from the la file.
-	      if test -n "$dlname"; then
-	        func_tr_sh "$dir/$linklib"
-	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
-	        newdlprefiles+=" $dir/$linklib"
-	      else
-	        newdlprefiles+=" $dir/$old_library"
-	        # Keep a list of preopened convenience libraries to check
-	        # that they are being used correctly in the link pass.
-	        test -z "$libdir" && \
-	          dlpreconveniencelibs+=" $dir/$old_library"
-	      fi
-	    ;;
-	    * )
-	      # Prefer using a static library (so that no silly _DYNAMIC symbols
-	      # are required to link).
-	      if test -n "$old_library"; then
-	        newdlprefiles+=" $dir/$old_library"
-	        # Keep a list of preopened convenience libraries to check
-	        # that they are being used correctly in the link pass.
-	        test -z "$libdir" && \
-	          dlpreconveniencelibs+=" $dir/$old_library"
-	      # Otherwise, use the dlname, so that lt_dlopen finds it.
-	      elif test -n "$dlname"; then
-	        newdlprefiles+=" $dir/$dlname"
-	      else
-	        newdlprefiles+=" $dir/$linklib"
-	      fi
-	    ;;
-	  esac
-	fi # $pass = dlpreopen
-
-	if test -z "$libdir"; then
-	  # Link the convenience library
-	  if test "$linkmode" = lib; then
-	    deplibs="$dir/$old_library $deplibs"
-	  elif test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$dir/$old_library $compile_deplibs"
-	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
-	  else
-	    deplibs="$lib $deplibs" # used for prog,scan pass
-	  fi
-	  continue
-	fi
-
-
-	if test "$linkmode" = prog && test "$pass" != link; then
-	  newlib_search_path+=" $ladir"
-	  deplibs="$lib $deplibs"
-
-	  linkalldeplibs=no
-	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
-	     test "$build_libtool_libs" = no; then
-	    linkalldeplibs=yes
-	  fi
-
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    case $deplib in
-	    -L*) func_stripname '-L' '' "$deplib"
-	         func_resolve_sysroot "$func_stripname_result"
-	         newlib_search_path+=" $func_resolve_sysroot_result"
-		 ;;
-	    esac
-	    # Need to link against all dependency_libs?
-	    if test "$linkalldeplibs" = yes; then
-	      deplibs="$deplib $deplibs"
-	    else
-	      # Need to hardcode shared library paths
-	      # or/and link against static libraries
-	      newdependency_libs="$deplib $newdependency_libs"
-	    fi
-	    if $opt_preserve_dup_deps ; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs+=" $deplib" ;;
-	      esac
-	    fi
-	    tmp_libs+=" $deplib"
-	  done # for deplib
-	  continue
-	fi # $linkmode = prog...
-
-	if test "$linkmode,$pass" = "prog,link"; then
-	  if test -n "$library_names" &&
-	     { { test "$prefer_static_libs" = no ||
-	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
-	       test -z "$old_library"; }; then
-	    # We need to hardcode the library path
-	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
-	      # Make sure the rpath contains only unique directories.
-	      case "$temp_rpath:" in
-	      *"$absdir:"*) ;;
-	      *) temp_rpath+="$absdir:" ;;
-	      esac
-	    fi
-
-	    # Hardcode the library path.
-	    # Skip directories that are in the system default run-time
-	    # search path.
-	    case " $sys_lib_dlsearch_path " in
-	    *" $absdir "*) ;;
-	    *)
-	      case "$compile_rpath " in
-	      *" $absdir "*) ;;
-	      *) compile_rpath+=" $absdir" ;;
-	      esac
-	      ;;
-	    esac
-	    case " $sys_lib_dlsearch_path " in
-	    *" $libdir "*) ;;
-	    *)
-	      case "$finalize_rpath " in
-	      *" $libdir "*) ;;
-	      *) finalize_rpath+=" $libdir" ;;
-	      esac
-	      ;;
-	    esac
-	  fi # $linkmode,$pass = prog,link...
-
-	  if test "$alldeplibs" = yes &&
-	     { test "$deplibs_check_method" = pass_all ||
-	       { test "$build_libtool_libs" = yes &&
-		 test -n "$library_names"; }; }; then
-	    # We only need to search for static libraries
-	    continue
-	  fi
-	fi
-
-	link_static=no # Whether the deplib will be linked statically
-	use_static_libs=$prefer_static_libs
-	if test "$use_static_libs" = built && test "$installed" = yes; then
-	  use_static_libs=no
-	fi
-	if test -n "$library_names" &&
-	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
-	  case $host in
-	  *cygwin* | *mingw* | *cegcc*)
-	      # No point in relinking DLLs because paths are not encoded
-	      notinst_deplibs+=" $lib"
-	      need_relink=no
-	    ;;
-	  *)
-	    if test "$installed" = no; then
-	      notinst_deplibs+=" $lib"
-	      need_relink=yes
-	    fi
-	    ;;
-	  esac
-	  # This is a shared library
-
-	  # Warn about portability, can't link against -module's on some
-	  # systems (darwin).  Don't bleat about dlopened modules though!
-	  dlopenmodule=""
-	  for dlpremoduletest in $dlprefiles; do
-	    if test "X$dlpremoduletest" = "X$lib"; then
-	      dlopenmodule="$dlpremoduletest"
-	      break
-	    fi
-	  done
-	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
-	    echo
-	    if test "$linkmode" = prog; then
-	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
-	    else
-	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
-	    fi
-	    $ECHO "*** $linklib is not portable!"
-	  fi
-	  if test "$linkmode" = lib &&
-	     test "$hardcode_into_libs" = yes; then
-	    # Hardcode the library path.
-	    # Skip directories that are in the system default run-time
-	    # search path.
-	    case " $sys_lib_dlsearch_path " in
-	    *" $absdir "*) ;;
-	    *)
-	      case "$compile_rpath " in
-	      *" $absdir "*) ;;
-	      *) compile_rpath+=" $absdir" ;;
-	      esac
-	      ;;
-	    esac
-	    case " $sys_lib_dlsearch_path " in
-	    *" $libdir "*) ;;
-	    *)
-	      case "$finalize_rpath " in
-	      *" $libdir "*) ;;
-	      *) finalize_rpath+=" $libdir" ;;
-	      esac
-	      ;;
-	    esac
-	  fi
-
-	  if test -n "$old_archive_from_expsyms_cmds"; then
-	    # figure out the soname
-	    set dummy $library_names
-	    shift
-	    realname="$1"
-	    shift
-	    libname=`eval "\\$ECHO \"$libname_spec\""`
-	    # use dlname if we got it. it's perfectly good, no?
-	    if test -n "$dlname"; then
-	      soname="$dlname"
-	    elif test -n "$soname_spec"; then
-	      # bleh windows
-	      case $host in
-	      *cygwin* | mingw* | *cegcc*)
-	        func_arith $current - $age
-		major=$func_arith_result
-		versuffix="-$major"
-		;;
-	      esac
-	      eval soname=\"$soname_spec\"
-	    else
-	      soname="$realname"
-	    fi
-
-	    # Make a new name for the extract_expsyms_cmds to use
-	    soroot="$soname"
-	    func_basename "$soroot"
-	    soname="$func_basename_result"
-	    func_stripname 'lib' '.dll' "$soname"
-	    newlib=libimp-$func_stripname_result.a
-
-	    # If the library has no export list, then create one now
-	    if test -f "$output_objdir/$soname-def"; then :
-	    else
-	      func_verbose "extracting exported symbol list from \`$soname'"
-	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
-	    fi
-
-	    # Create $newlib
-	    if test -f "$output_objdir/$newlib"; then :; else
-	      func_verbose "generating import library for \`$soname'"
-	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
-	    fi
-	    # make sure the library variables are pointing to the new library
-	    dir=$output_objdir
-	    linklib=$newlib
-	  fi # test -n "$old_archive_from_expsyms_cmds"
-
-	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
-	    add_shlibpath=
-	    add_dir=
-	    add=
-	    lib_linked=yes
-	    case $hardcode_action in
-	    immediate | unsupported)
-	      if test "$hardcode_direct" = no; then
-		add="$dir/$linklib"
-		case $host in
-		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
-		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
-		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
-		    *-*-unixware7*) add_dir="-L$dir" ;;
-		  *-*-darwin* )
-		    # if the lib is a (non-dlopened) module then we can not
-		    # link against it, someone is ignoring the earlier warnings
-		    if /usr/bin/file -L $add 2> /dev/null |
-			 $GREP ": [^:]* bundle" >/dev/null ; then
-		      if test "X$dlopenmodule" != "X$lib"; then
-			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
-			if test -z "$old_library" ; then
-			  echo
-			  echo "*** And there doesn't seem to be a static archive available"
-			  echo "*** The link will probably fail, sorry"
-			else
-			  add="$dir/$old_library"
-			fi
-		      elif test -n "$old_library"; then
-			add="$dir/$old_library"
-		      fi
-		    fi
-		esac
-	      elif test "$hardcode_minus_L" = no; then
-		case $host in
-		*-*-sunos*) add_shlibpath="$dir" ;;
-		esac
-		add_dir="-L$dir"
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = no; then
-		add_shlibpath="$dir"
-		add="-l$name"
-	      else
-		lib_linked=no
-	      fi
-	      ;;
-	    relink)
-	      if test "$hardcode_direct" = yes &&
-	         test "$hardcode_direct_absolute" = no; then
-		add="$dir/$linklib"
-	      elif test "$hardcode_minus_L" = yes; then
-		add_dir="-L$absdir"
-		# Try looking first in the location we're being installed to.
-		if test -n "$inst_prefix_dir"; then
-		  case $libdir in
-		    [\\/]*)
-		      add_dir+=" -L$inst_prefix_dir$libdir"
-		      ;;
-		  esac
-		fi
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = yes; then
-		add_shlibpath="$dir"
-		add="-l$name"
-	      else
-		lib_linked=no
-	      fi
-	      ;;
-	    *) lib_linked=no ;;
-	    esac
-
-	    if test "$lib_linked" != yes; then
-	      func_fatal_configuration "unsupported hardcode properties"
-	    fi
-
-	    if test -n "$add_shlibpath"; then
-	      case :$compile_shlibpath: in
-	      *":$add_shlibpath:"*) ;;
-	      *) compile_shlibpath+="$add_shlibpath:" ;;
-	      esac
-	    fi
-	    if test "$linkmode" = prog; then
-	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
-	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
-	    else
-	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
-	      test -n "$add" && deplibs="$add $deplibs"
-	      if test "$hardcode_direct" != yes &&
-		 test "$hardcode_minus_L" != yes &&
-		 test "$hardcode_shlibpath_var" = yes; then
-		case :$finalize_shlibpath: in
-		*":$libdir:"*) ;;
-		*) finalize_shlibpath+="$libdir:" ;;
-		esac
-	      fi
-	    fi
-	  fi
-
-	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
-	    add_shlibpath=
-	    add_dir=
-	    add=
-	    # Finalize command for both is simple: just hardcode it.
-	    if test "$hardcode_direct" = yes &&
-	       test "$hardcode_direct_absolute" = no; then
-	      add="$libdir/$linklib"
-	    elif test "$hardcode_minus_L" = yes; then
-	      add_dir="-L$libdir"
-	      add="-l$name"
-	    elif test "$hardcode_shlibpath_var" = yes; then
-	      case :$finalize_shlibpath: in
-	      *":$libdir:"*) ;;
-	      *) finalize_shlibpath+="$libdir:" ;;
-	      esac
-	      add="-l$name"
-	    elif test "$hardcode_automatic" = yes; then
-	      if test -n "$inst_prefix_dir" &&
-		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
-		add="$inst_prefix_dir$libdir/$linklib"
-	      else
-		add="$libdir/$linklib"
-	      fi
-	    else
-	      # We cannot seem to hardcode it, guess we'll fake it.
-	      add_dir="-L$libdir"
-	      # Try looking first in the location we're being installed to.
-	      if test -n "$inst_prefix_dir"; then
-		case $libdir in
-		  [\\/]*)
-		    add_dir+=" -L$inst_prefix_dir$libdir"
-		    ;;
-		esac
-	      fi
-	      add="-l$name"
-	    fi
-
-	    if test "$linkmode" = prog; then
-	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
-	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
-	    else
-	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
-	      test -n "$add" && deplibs="$add $deplibs"
-	    fi
-	  fi
-	elif test "$linkmode" = prog; then
-	  # Here we assume that one of hardcode_direct or hardcode_minus_L
-	  # is not unsupported.  This is valid on all known static and
-	  # shared platforms.
-	  if test "$hardcode_direct" != unsupported; then
-	    test -n "$old_library" && linklib="$old_library"
-	    compile_deplibs="$dir/$linklib $compile_deplibs"
-	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
-	  else
-	    compile_deplibs="-l$name -L$dir $compile_deplibs"
-	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
-	  fi
-	elif test "$build_libtool_libs" = yes; then
-	  # Not a shared library
-	  if test "$deplibs_check_method" != pass_all; then
-	    # We're trying link a shared library against a static one
-	    # but the system doesn't support it.
-
-	    # Just print a warning and add the library to dependency_libs so
-	    # that the program can be linked against the static library.
-	    echo
-	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
-	    echo "*** I have the capability to make that library automatically link in when"
-	    echo "*** you link to this library.  But I can only do this if you have a"
-	    echo "*** shared version of the library, which you do not appear to have."
-	    if test "$module" = yes; then
-	      echo "*** But as you try to build a module library, libtool will still create "
-	      echo "*** a static module, that should work as long as the dlopening application"
-	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
-	      if test -z "$global_symbol_pipe"; then
-		echo
-		echo "*** However, this would only work if libtool was able to extract symbol"
-		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
-		echo "*** not find such a program.  So, this module is probably useless."
-		echo "*** \`nm' from GNU binutils and a full rebuild may help."
-	      fi
-	      if test "$build_old_libs" = no; then
-		build_libtool_libs=module
-		build_old_libs=yes
-	      else
-		build_libtool_libs=no
-	      fi
-	    fi
-	  else
-	    deplibs="$dir/$old_library $deplibs"
-	    link_static=yes
-	  fi
-	fi # link shared/static library?
-
-	if test "$linkmode" = lib; then
-	  if test -n "$dependency_libs" &&
-	     { test "$hardcode_into_libs" != yes ||
-	       test "$build_old_libs" = yes ||
-	       test "$link_static" = yes; }; then
-	    # Extract -R from dependency_libs
-	    temp_deplibs=
-	    for libdir in $dependency_libs; do
-	      case $libdir in
-	      -R*) func_stripname '-R' '' "$libdir"
-	           temp_xrpath=$func_stripname_result
-		   case " $xrpath " in
-		   *" $temp_xrpath "*) ;;
-		   *) xrpath+=" $temp_xrpath";;
-		   esac;;
-	      *) temp_deplibs+=" $libdir";;
-	      esac
-	    done
-	    dependency_libs="$temp_deplibs"
-	  fi
-
-	  newlib_search_path+=" $absdir"
-	  # Link against this library
-	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
-	  # ... and its dependency_libs
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    newdependency_libs="$deplib $newdependency_libs"
-	    case $deplib in
-              -L*) func_stripname '-L' '' "$deplib"
-                   func_resolve_sysroot "$func_stripname_result";;
-              *) func_resolve_sysroot "$deplib" ;;
-            esac
-	    if $opt_preserve_dup_deps ; then
-	      case "$tmp_libs " in
-	      *" $func_resolve_sysroot_result "*)
-                specialdeplibs+=" $func_resolve_sysroot_result" ;;
-	      esac
-	    fi
-	    tmp_libs+=" $func_resolve_sysroot_result"
-	  done
-
-	  if test "$link_all_deplibs" != no; then
-	    # Add the search paths of all dependency libraries
-	    for deplib in $dependency_libs; do
-	      path=
-	      case $deplib in
-	      -L*) path="$deplib" ;;
-	      *.la)
-	        func_resolve_sysroot "$deplib"
-	        deplib=$func_resolve_sysroot_result
-	        func_dirname "$deplib" "" "."
-		dir=$func_dirname_result
-		# We need an absolute path.
-		case $dir in
-		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
-		*)
-		  absdir=`cd "$dir" && pwd`
-		  if test -z "$absdir"; then
-		    func_warning "cannot determine absolute directory name of \`$dir'"
-		    absdir="$dir"
-		  fi
-		  ;;
-		esac
-		if $GREP "^installed=no" $deplib > /dev/null; then
-		case $host in
-		*-*-darwin*)
-		  depdepl=
-		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
-		  if test -n "$deplibrary_names" ; then
-		    for tmp in $deplibrary_names ; do
-		      depdepl=$tmp
-		    done
-		    if test -f "$absdir/$objdir/$depdepl" ; then
-		      depdepl="$absdir/$objdir/$depdepl"
-		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
-                      if test -z "$darwin_install_name"; then
-                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
-                      fi
-		      compiler_flags+=" ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
-		      linker_flags+=" -dylib_file ${darwin_install_name}:${depdepl}"
-		      path=
-		    fi
-		  fi
-		  ;;
-		*)
-		  path="-L$absdir/$objdir"
-		  ;;
-		esac
-		else
-		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-		  test -z "$libdir" && \
-		    func_fatal_error "\`$deplib' is not a valid libtool archive"
-		  test "$absdir" != "$libdir" && \
-		    func_warning "\`$deplib' seems to be moved"
-
-		  path="-L$absdir"
-		fi
-		;;
-	      esac
-	      case " $deplibs " in
-	      *" $path "*) ;;
-	      *) deplibs="$path $deplibs" ;;
-	      esac
-	    done
-	  fi # link_all_deplibs != no
-	fi # linkmode = lib
-      done # for deplib in $libs
-      if test "$pass" = link; then
-	if test "$linkmode" = "prog"; then
-	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
-	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
-	else
-	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	fi
-      fi
-      dependency_libs="$newdependency_libs"
-      if test "$pass" = dlpreopen; then
-	# Link the dlpreopened libraries before other libraries
-	for deplib in $save_deplibs; do
-	  deplibs="$deplib $deplibs"
-	done
-      fi
-      if test "$pass" != dlopen; then
-	if test "$pass" != conv; then
-	  # Make sure lib_search_path contains only unique directories.
-	  lib_search_path=
-	  for dir in $newlib_search_path; do
-	    case "$lib_search_path " in
-	    *" $dir "*) ;;
-	    *) lib_search_path+=" $dir" ;;
-	    esac
-	  done
-	  newlib_search_path=
-	fi
-
-	if test "$linkmode,$pass" != "prog,link"; then
-	  vars="deplibs"
-	else
-	  vars="compile_deplibs finalize_deplibs"
-	fi
-	for var in $vars dependency_libs; do
-	  # Add libraries to $var in reverse order
-	  eval tmp_libs=\"\$$var\"
-	  new_libs=
-	  for deplib in $tmp_libs; do
-	    # FIXME: Pedantically, this is the right thing to do, so
-	    #        that some nasty dependency loop isn't accidentally
-	    #        broken:
-	    #new_libs="$deplib $new_libs"
-	    # Pragmatically, this seems to cause very few problems in
-	    # practice:
-	    case $deplib in
-	    -L*) new_libs="$deplib $new_libs" ;;
-	    -R*) ;;
-	    *)
-	      # And here is the reason: when a library appears more
-	      # than once as an explicit dependence of a library, or
-	      # is implicitly linked in more than once by the
-	      # compiler, it is considered special, and multiple
-	      # occurrences thereof are not removed.  Compare this
-	      # with having the same library being listed as a
-	      # dependency of multiple other libraries: in this case,
-	      # we know (pedantically, we assume) the library does not
-	      # need to be listed more than once, so we keep only the
-	      # last copy.  This is not always right, but it is rare
-	      # enough that we require users that really mean to play
-	      # such unportable linking tricks to link the library
-	      # using -Wl,-lname, so that libtool does not consider it
-	      # for duplicate removal.
-	      case " $specialdeplibs " in
-	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
-	      *)
-		case " $new_libs " in
-		*" $deplib "*) ;;
-		*) new_libs="$deplib $new_libs" ;;
-		esac
-		;;
-	      esac
-	      ;;
-	    esac
-	  done
-	  tmp_libs=
-	  for deplib in $new_libs; do
-	    case $deplib in
-	    -L*)
-	      case " $tmp_libs " in
-	      *" $deplib "*) ;;
-	      *) tmp_libs+=" $deplib" ;;
-	      esac
-	      ;;
-	    *) tmp_libs+=" $deplib" ;;
-	    esac
-	  done
-	  eval $var=\"$tmp_libs\"
-	done # for var
-      fi
-      # Last step: remove runtime libs from dependency_libs
-      # (they stay in deplibs)
-      tmp_libs=
-      for i in $dependency_libs ; do
-	case " $predeps $postdeps $compiler_lib_search_path " in
-	*" $i "*)
-	  i=""
-	  ;;
-	esac
-	if test -n "$i" ; then
-	  tmp_libs+=" $i"
-	fi
-      done
-      dependency_libs=$tmp_libs
-    done # for pass
-    if test "$linkmode" = prog; then
-      dlfiles="$newdlfiles"
-    fi
-    if test "$linkmode" = prog || test "$linkmode" = lib; then
-      dlprefiles="$newdlprefiles"
-    fi
-
-    case $linkmode in
-    oldlib)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for archives"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for archives" ;;
-      esac
-
-      test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for archives"
-
-      test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for archives"
-
-      test -n "$vinfo" && \
-	func_warning "\`-version-info/-version-number' is ignored for archives"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for archives"
-
-      test -n "$export_symbols$export_symbols_regex" && \
-	func_warning "\`-export-symbols' is ignored for archives"
-
-      # Now set the variables for building old libraries.
-      build_libtool_libs=no
-      oldlibs="$output"
-      objs+="$old_deplibs"
-      ;;
-
-    lib)
-      # Make sure we only generate libraries of the form `libNAME.la'.
-      case $outputname in
-      lib*)
-	func_stripname 'lib' '.la' "$outputname"
-	name=$func_stripname_result
-	eval shared_ext=\"$shrext_cmds\"
-	eval libname=\"$libname_spec\"
-	;;
-      *)
-	test "$module" = no && \
-	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
-
-	if test "$need_lib_prefix" != no; then
-	  # Add the "lib" prefix for modules if required
-	  func_stripname '' '.la' "$outputname"
-	  name=$func_stripname_result
-	  eval shared_ext=\"$shrext_cmds\"
-	  eval libname=\"$libname_spec\"
-	else
-	  func_stripname '' '.la' "$outputname"
-	  libname=$func_stripname_result
-	fi
-	;;
-      esac
-
-      if test -n "$objs"; then
-	if test "$deplibs_check_method" != pass_all; then
-	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
-	else
-	  echo
-	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
-	  $ECHO "*** objects $objs is not portable!"
-	  libobjs+=" $objs"
-	fi
-      fi
-
-      test "$dlself" != no && \
-	func_warning "\`-dlopen self' is ignored for libtool libraries"
-
-      set dummy $rpath
-      shift
-      test "$#" -gt 1 && \
-	func_warning "ignoring multiple \`-rpath's for a libtool library"
-
-      install_libdir="$1"
-
-      oldlibs=
-      if test -z "$rpath"; then
-	if test "$build_libtool_libs" = yes; then
-	  # Building a libtool convenience library.
-	  # Some compilers have problems with a `.al' extension so
-	  # convenience libraries should have the same extension an
-	  # archive normally would.
-	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
-	  build_libtool_libs=convenience
-	  build_old_libs=yes
-	fi
-
-	test -n "$vinfo" && \
-	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
-
-	test -n "$release" && \
-	  func_warning "\`-release' is ignored for convenience libraries"
-      else
-
-	# Parse the version information argument.
-	save_ifs="$IFS"; IFS=':'
-	set dummy $vinfo 0 0 0
-	shift
-	IFS="$save_ifs"
-
-	test -n "$7" && \
-	  func_fatal_help "too many parameters to \`-version-info'"
-
-	# convert absolute version numbers to libtool ages
-	# this retains compatibility with .la files and attempts
-	# to make the code below a bit more comprehensible
-
-	case $vinfo_number in
-	yes)
-	  number_major="$1"
-	  number_minor="$2"
-	  number_revision="$3"
-	  #
-	  # There are really only two kinds -- those that
-	  # use the current revision as the major version
-	  # and those that subtract age and use age as
-	  # a minor version.  But, then there is irix
-	  # which has an extra 1 added just for fun
-	  #
-	  case $version_type in
-	  # correct linux to gnu/linux during the next big refactor
-	  darwin|linux|osf|windows|none)
-	    func_arith $number_major + $number_minor
-	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_revision"
-	    ;;
-	  freebsd-aout|freebsd-elf|qnx|sunos)
-	    current="$number_major"
-	    revision="$number_minor"
-	    age="0"
-	    ;;
-	  irix|nonstopux)
-	    func_arith $number_major + $number_minor
-	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_minor"
-	    lt_irix_increment=no
-	    ;;
-	  esac
-	  ;;
-	no)
-	  current="$1"
-	  revision="$2"
-	  age="$3"
-	  ;;
-	esac
-
-	# Check that each of the things are valid numbers.
-	case $current in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "CURRENT \`$current' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	case $revision in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "REVISION \`$revision' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	case $age in
-	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-	*)
-	  func_error "AGE \`$age' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	  ;;
-	esac
-
-	if test "$age" -gt "$current"; then
-	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
-	  func_fatal_error "\`$vinfo' is not valid version information"
-	fi
-
-	# Calculate the version variables.
-	major=
-	versuffix=
-	verstring=
-	case $version_type in
-	none) ;;
-
-	darwin)
-	  # Like Linux, but with the current version available in
-	  # verstring for coding it into the library header
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
-	  # Darwin ld doesn't like 0 for these options...
-	  func_arith $current + 1
-	  minor_current=$func_arith_result
-	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
-	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
-	  ;;
-
-	freebsd-aout)
-	  major=".$current"
-	  versuffix=".$current.$revision";
-	  ;;
-
-	freebsd-elf)
-	  major=".$current"
-	  versuffix=".$current"
-	  ;;
-
-	irix | nonstopux)
-	  if test "X$lt_irix_increment" = "Xno"; then
-	    func_arith $current - $age
-	  else
-	    func_arith $current - $age + 1
-	  fi
-	  major=$func_arith_result
-
-	  case $version_type in
-	    nonstopux) verstring_prefix=nonstopux ;;
-	    *)         verstring_prefix=sgi ;;
-	  esac
-	  verstring="$verstring_prefix$major.$revision"
-
-	  # Add in all the interfaces that we are compatible with.
-	  loop=$revision
-	  while test "$loop" -ne 0; do
-	    func_arith $revision - $loop
-	    iface=$func_arith_result
-	    func_arith $loop - 1
-	    loop=$func_arith_result
-	    verstring="$verstring_prefix$major.$iface:$verstring"
-	  done
-
-	  # Before this point, $major must not contain `.'.
-	  major=.$major
-	  versuffix="$major.$revision"
-	  ;;
-
-	linux) # correct to gnu/linux during the next big refactor
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
-	  ;;
-
-	osf)
-	  func_arith $current - $age
-	  major=.$func_arith_result
-	  versuffix=".$current.$age.$revision"
-	  verstring="$current.$age.$revision"
-
-	  # Add in all the interfaces that we are compatible with.
-	  loop=$age
-	  while test "$loop" -ne 0; do
-	    func_arith $current - $loop
-	    iface=$func_arith_result
-	    func_arith $loop - 1
-	    loop=$func_arith_result
-	    verstring="$verstring:${iface}.0"
-	  done
-
-	  # Make executables depend on our current version.
-	  verstring+=":${current}.0"
-	  ;;
-
-	qnx)
-	  major=".$current"
-	  versuffix=".$current"
-	  ;;
-
-	sunos)
-	  major=".$current"
-	  versuffix=".$current.$revision"
-	  ;;
-
-	windows)
-	  # Use '-' rather than '.', since we only want one
-	  # extension on DOS 8.3 filesystems.
-	  func_arith $current - $age
-	  major=$func_arith_result
-	  versuffix="-$major"
-	  ;;
-
-	*)
-	  func_fatal_configuration "unknown library version type \`$version_type'"
-	  ;;
-	esac
-
-	# Clear the version info if we defaulted, and they specified a release.
-	if test -z "$vinfo" && test -n "$release"; then
-	  major=
-	  case $version_type in
-	  darwin)
-	    # we can't check for "0.0" in archive_cmds due to quoting
-	    # problems, so we reset it completely
-	    verstring=
-	    ;;
-	  *)
-	    verstring="0.0"
-	    ;;
-	  esac
-	  if test "$need_version" = no; then
-	    versuffix=
-	  else
-	    versuffix=".0.0"
-	  fi
-	fi
-
-	# Remove version info from name if versioning should be avoided
-	if test "$avoid_version" = yes && test "$need_version" = no; then
-	  major=
-	  versuffix=
-	  verstring=""
-	fi
-
-	# Check to see if the archive will have undefined symbols.
-	if test "$allow_undefined" = yes; then
-	  if test "$allow_undefined_flag" = unsupported; then
-	    func_warning "undefined symbols not allowed in $host shared libraries"
-	    build_libtool_libs=no
-	    build_old_libs=yes
-	  fi
-	else
-	  # Don't allow undefined symbols.
-	  allow_undefined_flag="$no_undefined_flag"
-	fi
-
-      fi
-
-      func_generate_dlsyms "$libname" "$libname" "yes"
-      libobjs+=" $symfileobj"
-      test "X$libobjs" = "X " && libobjs=
-
-      if test "$opt_mode" != relink; then
-	# Remove our outputs, but don't remove object files since they
-	# may have been created when compiling PIC objects.
-	removelist=
-	tempremovelist=`$ECHO "$output_objdir/*"`
-	for p in $tempremovelist; do
-	  case $p in
-	    *.$objext | *.gcno)
-	       ;;
-	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
-	       if test "X$precious_files_regex" != "X"; then
-		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
-		 then
-		   continue
-		 fi
-	       fi
-	       removelist+=" $p"
-	       ;;
-	    *) ;;
-	  esac
-	done
-	test -n "$removelist" && \
-	  func_show_eval "${RM}r \$removelist"
-      fi
-
-      # Now set the variables for building old libraries.
-      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
-	oldlibs+=" $output_objdir/$libname.$libext"
-
-	# Transform .lo files to .o files.
-	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
-      fi
-
-      # Eliminate all temporary directories.
-      #for path in $notinst_path; do
-      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
-      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
-      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
-      #done
-
-      if test -n "$xrpath"; then
-	# If the user specified any rpath flags, then add them.
-	temp_xrpath=
-	for libdir in $xrpath; do
-	  func_replace_sysroot "$libdir"
-	  temp_xrpath+=" -R$func_replace_sysroot_result"
-	  case "$finalize_rpath " in
-	  *" $libdir "*) ;;
-	  *) finalize_rpath+=" $libdir" ;;
-	  esac
-	done
-	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
-	  dependency_libs="$temp_xrpath $dependency_libs"
-	fi
-      fi
-
-      # Make sure dlfiles contains only unique files that won't be dlpreopened
-      old_dlfiles="$dlfiles"
-      dlfiles=
-      for lib in $old_dlfiles; do
-	case " $dlprefiles $dlfiles " in
-	*" $lib "*) ;;
-	*) dlfiles+=" $lib" ;;
-	esac
-      done
-
-      # Make sure dlprefiles contains only unique files
-      old_dlprefiles="$dlprefiles"
-      dlprefiles=
-      for lib in $old_dlprefiles; do
-	case "$dlprefiles " in
-	*" $lib "*) ;;
-	*) dlprefiles+=" $lib" ;;
-	esac
-      done
-
-      if test "$build_libtool_libs" = yes; then
-	if test -n "$rpath"; then
-	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
-	    # these systems don't actually have a c library (as such)!
-	    ;;
-	  *-*-rhapsody* | *-*-darwin1.[012])
-	    # Rhapsody C library is in the System framework
-	    deplibs+=" System.ltframework"
-	    ;;
-	  *-*-netbsd*)
-	    # Don't link with libc until the a.out ld.so is fixed.
-	    ;;
-	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-	    # Do not include libc due to us having libc/libc_r.
-	    ;;
-	  *-*-sco3.2v5* | *-*-sco5v6*)
-	    # Causes problems with __ctype
-	    ;;
-	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-	    # Compiler inserts libc in the correct place for threads to work
-	    ;;
-	  *)
-	    # Add libc to deplibs on all other systems if necessary.
-	    if test "$build_libtool_need_lc" = "yes"; then
-	      deplibs+=" -lc"
-	    fi
-	    ;;
-	  esac
-	fi
-
-	# Transform deplibs into only deplibs that can be linked in shared.
-	name_save=$name
-	libname_save=$libname
-	release_save=$release
-	versuffix_save=$versuffix
-	major_save=$major
-	# I'm not sure if I'm treating the release correctly.  I think
-	# release should show up in the -l (ie -lgmp5) so we don't want to
-	# add it in twice.  Is that correct?
-	release=""
-	versuffix=""
-	major=""
-	newdeplibs=
-	droppeddeps=no
-	case $deplibs_check_method in
-	pass_all)
-	  # Don't check for shared/static.  Everything works.
-	  # This might be a little naive.  We might want to check
-	  # whether the library exists or not.  But this is on
-	  # osf3 & osf4 and I'm not really sure... Just
-	  # implementing what was already the behavior.
-	  newdeplibs=$deplibs
-	  ;;
-	test_compile)
-	  # This code stresses the "libraries are programs" paradigm to its
-	  # limits. Maybe even breaks it.  We compile a program, linking it
-	  # against the deplibs as a proxy for the library.  Then we can check
-	  # whether they linked in statically or dynamically with ldd.
-	  $opt_dry_run || $RM conftest.c
-	  cat > conftest.c <<EOF
-	  int main() { return 0; }
-EOF
-	  $opt_dry_run || $RM conftest
-	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
-	    ldd_output=`ldd conftest`
-	    for i in $deplibs; do
-	      case $i in
-	      -l*)
-		func_stripname -l '' "$i"
-		name=$func_stripname_result
-		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		  case " $predeps $postdeps " in
-		  *" $i "*)
-		    newdeplibs+=" $i"
-		    i=""
-		    ;;
-		  esac
-		fi
-		if test -n "$i" ; then
-		  libname=`eval "\\$ECHO \"$libname_spec\""`
-		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-		  set dummy $deplib_matches; shift
-		  deplib_match=$1
-		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		    newdeplibs+=" $i"
-		  else
-		    droppeddeps=yes
-		    echo
-		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-		    echo "*** I have the capability to make that library automatically link in when"
-		    echo "*** you link to this library.  But I can only do this if you have a"
-		    echo "*** shared version of the library, which I believe you do not have"
-		    echo "*** because a test_compile did reveal that the linker did not use it for"
-		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
-		  fi
-		fi
-		;;
-	      *)
-		newdeplibs+=" $i"
-		;;
-	      esac
-	    done
-	  else
-	    # Error occurred in the first compile.  Let's try to salvage
-	    # the situation: Compile a separate program for each library.
-	    for i in $deplibs; do
-	      case $i in
-	      -l*)
-		func_stripname -l '' "$i"
-		name=$func_stripname_result
-		$opt_dry_run || $RM conftest
-		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
-		  ldd_output=`ldd conftest`
-		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		    case " $predeps $postdeps " in
-		    *" $i "*)
-		      newdeplibs+=" $i"
-		      i=""
-		      ;;
-		    esac
-		  fi
-		  if test -n "$i" ; then
-		    libname=`eval "\\$ECHO \"$libname_spec\""`
-		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-		    set dummy $deplib_matches; shift
-		    deplib_match=$1
-		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		      newdeplibs+=" $i"
-		    else
-		      droppeddeps=yes
-		      echo
-		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-		      echo "*** I have the capability to make that library automatically link in when"
-		      echo "*** you link to this library.  But I can only do this if you have a"
-		      echo "*** shared version of the library, which you do not appear to have"
-		      echo "*** because a test_compile did reveal that the linker did not use this one"
-		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
-		    fi
-		  fi
-		else
-		  droppeddeps=yes
-		  echo
-		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
-		  echo "*** make it link in!  You will probably need to install it or some"
-		  echo "*** library that it depends on before this library will be fully"
-		  echo "*** functional.  Installing it before continuing would be even better."
-		fi
-		;;
-	      *)
-		newdeplibs+=" $i"
-		;;
-	      esac
-	    done
-	  fi
-	  ;;
-	file_magic*)
-	  set dummy $deplibs_check_method; shift
-	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-	  for a_deplib in $deplibs; do
-	    case $a_deplib in
-	    -l*)
-	      func_stripname -l '' "$a_deplib"
-	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		case " $predeps $postdeps " in
-		*" $a_deplib "*)
-		  newdeplibs+=" $a_deplib"
-		  a_deplib=""
-		  ;;
-		esac
-	      fi
-	      if test -n "$a_deplib" ; then
-		libname=`eval "\\$ECHO \"$libname_spec\""`
-		if test -n "$file_magic_glob"; then
-		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
-		else
-		  libnameglob=$libname
-		fi
-		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
-		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  if test "$want_nocaseglob" = yes; then
-		    shopt -s nocaseglob
-		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
-		    $nocaseglob
-		  else
-		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
-		  fi
-		  for potent_lib in $potential_libs; do
-		      # Follow soft links.
-		      if ls -lLd "$potent_lib" 2>/dev/null |
-			 $GREP " -> " >/dev/null; then
-			continue
-		      fi
-		      # The statement above tries to avoid entering an
-		      # endless loop below, in case of cyclic links.
-		      # We might still enter an endless loop, since a link
-		      # loop can be closed while we follow links,
-		      # but so what?
-		      potlib="$potent_lib"
-		      while test -h "$potlib" 2>/dev/null; do
-			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
-			case $potliblink in
-			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
-			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
-			esac
-		      done
-		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
-			 $SED -e 10q |
-			 $EGREP "$file_magic_regex" > /dev/null; then
-			newdeplibs+=" $a_deplib"
-			a_deplib=""
-			break 2
-		      fi
-		  done
-		done
-	      fi
-	      if test -n "$a_deplib" ; then
-		droppeddeps=yes
-		echo
-		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-		echo "*** I have the capability to make that library automatically link in when"
-		echo "*** you link to this library.  But I can only do this if you have a"
-		echo "*** shared version of the library, which you do not appear to have"
-		echo "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
-		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
-		else
-		  $ECHO "*** with $libname and none of the candidates passed a file format test"
-		  $ECHO "*** using a file magic. Last file checked: $potlib"
-		fi
-	      fi
-	      ;;
-	    *)
-	      # Add a -L argument.
-	      newdeplibs+=" $a_deplib"
-	      ;;
-	    esac
-	  done # Gone through all deplibs.
-	  ;;
-	match_pattern*)
-	  set dummy $deplibs_check_method; shift
-	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-	  for a_deplib in $deplibs; do
-	    case $a_deplib in
-	    -l*)
-	      func_stripname -l '' "$a_deplib"
-	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-		case " $predeps $postdeps " in
-		*" $a_deplib "*)
-		  newdeplibs+=" $a_deplib"
-		  a_deplib=""
-		  ;;
-		esac
-	      fi
-	      if test -n "$a_deplib" ; then
-		libname=`eval "\\$ECHO \"$libname_spec\""`
-		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-		  for potent_lib in $potential_libs; do
-		    potlib="$potent_lib" # see symlink-check above in file_magic test
-		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
-		       $EGREP "$match_pattern_regex" > /dev/null; then
-		      newdeplibs+=" $a_deplib"
-		      a_deplib=""
-		      break 2
-		    fi
-		  done
-		done
-	      fi
-	      if test -n "$a_deplib" ; then
-		droppeddeps=yes
-		echo
-		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-		echo "*** I have the capability to make that library automatically link in when"
-		echo "*** you link to this library.  But I can only do this if you have a"
-		echo "*** shared version of the library, which you do not appear to have"
-		echo "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
-		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
-		else
-		  $ECHO "*** with $libname and none of the candidates passed a file format test"
-		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
-		fi
-	      fi
-	      ;;
-	    *)
-	      # Add a -L argument.
-	      newdeplibs+=" $a_deplib"
-	      ;;
-	    esac
-	  done # Gone through all deplibs.
-	  ;;
-	none | unknown | *)
-	  newdeplibs=""
-	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
-	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-	    for i in $predeps $postdeps ; do
-	      # can't use Xsed below, because $i might contain '/'
-	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
-	    done
-	  fi
-	  case $tmp_deplibs in
-	  *[!\	\ ]*)
-	    echo
-	    if test "X$deplibs_check_method" = "Xnone"; then
-	      echo "*** Warning: inter-library dependencies are not supported in this platform."
-	    else
-	      echo "*** Warning: inter-library dependencies are not known to be supported."
-	    fi
-	    echo "*** All declared inter-library dependencies are being dropped."
-	    droppeddeps=yes
-	    ;;
-	  esac
-	  ;;
-	esac
-	versuffix=$versuffix_save
-	major=$major_save
-	release=$release_save
-	libname=$libname_save
-	name=$name_save
-
-	case $host in
-	*-*-rhapsody* | *-*-darwin1.[012])
-	  # On Rhapsody replace the C library with the System framework
-	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
-	  ;;
-	esac
-
-	if test "$droppeddeps" = yes; then
-	  if test "$module" = yes; then
-	    echo
-	    echo "*** Warning: libtool could not satisfy all declared inter-library"
-	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
-	    echo "*** a static module, that should work as long as the dlopening"
-	    echo "*** application is linked with the -dlopen flag."
-	    if test -z "$global_symbol_pipe"; then
-	      echo
-	      echo "*** However, this would only work if libtool was able to extract symbol"
-	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
-	      echo "*** not find such a program.  So, this module is probably useless."
-	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
-	    fi
-	    if test "$build_old_libs" = no; then
-	      oldlibs="$output_objdir/$libname.$libext"
-	      build_libtool_libs=module
-	      build_old_libs=yes
-	    else
-	      build_libtool_libs=no
-	    fi
-	  else
-	    echo "*** The inter-library dependencies that have been dropped here will be"
-	    echo "*** automatically added whenever a program is linked with this library"
-	    echo "*** or is declared to -dlopen it."
-
-	    if test "$allow_undefined" = no; then
-	      echo
-	      echo "*** Since this library must not contain undefined symbols,"
-	      echo "*** because either the platform does not support them or"
-	      echo "*** it was explicitly requested with -no-undefined,"
-	      echo "*** libtool will only create a static version of it."
-	      if test "$build_old_libs" = no; then
-		oldlibs="$output_objdir/$libname.$libext"
-		build_libtool_libs=module
-		build_old_libs=yes
-	      else
-		build_libtool_libs=no
-	      fi
-	    fi
-	  fi
-	fi
-	# Done checking deplibs!
-	deplibs=$newdeplibs
-      fi
-      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
-      case $host in
-	*-*-darwin*)
-	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  ;;
-      esac
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-	case " $new_libs " in
-	*" -L$path/$objdir "*) ;;
-	*)
-	  case " $deplibs " in
-	  *" -L$path/$objdir "*)
-	    new_libs+=" -L$path/$objdir" ;;
-	  esac
-	  ;;
-	esac
-      done
-      for deplib in $deplibs; do
-	case $deplib in
-	-L*)
-	  case " $new_libs " in
-	  *" $deplib "*) ;;
-	  *) new_libs+=" $deplib" ;;
-	  esac
-	  ;;
-	*) new_libs+=" $deplib" ;;
-	esac
-      done
-      deplibs="$new_libs"
-
-      # All the library-specific variables (install_libdir is set above).
-      library_names=
-      old_library=
-      dlname=
-
-      # Test again, we may have decided not to build it any more
-      if test "$build_libtool_libs" = yes; then
-	# Remove ${wl} instances when linking with ld.
-	# FIXME: should test the right _cmds variable.
-	case $archive_cmds in
-	  *\$LD\ *) wl= ;;
-        esac
-	if test "$hardcode_into_libs" = yes; then
-	  # Hardcode the library paths
-	  hardcode_libdirs=
-	  dep_rpath=
-	  rpath="$finalize_rpath"
-	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
-	  for libdir in $rpath; do
-	    if test -n "$hardcode_libdir_flag_spec"; then
-	      if test -n "$hardcode_libdir_separator"; then
-		func_replace_sysroot "$libdir"
-		libdir=$func_replace_sysroot_result
-		if test -z "$hardcode_libdirs"; then
-		  hardcode_libdirs="$libdir"
-		else
-		  # Just accumulate the unique libdirs.
-		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		    ;;
-		  *)
-		    hardcode_libdirs+="$hardcode_libdir_separator$libdir"
-		    ;;
-		  esac
-		fi
-	      else
-		eval flag=\"$hardcode_libdir_flag_spec\"
-		dep_rpath+=" $flag"
-	      fi
-	    elif test -n "$runpath_var"; then
-	      case "$perm_rpath " in
-	      *" $libdir "*) ;;
-	      *) perm_rpath+=" $libdir" ;;
-	      esac
-	    fi
-	  done
-	  # Substitute the hardcoded libdirs into the rpath.
-	  if test -n "$hardcode_libdir_separator" &&
-	     test -n "$hardcode_libdirs"; then
-	    libdir="$hardcode_libdirs"
-	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
-	  fi
-	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
-	    # We should set the runpath_var.
-	    rpath=
-	    for dir in $perm_rpath; do
-	      rpath+="$dir:"
-	    done
-	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
-	  fi
-	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
-	fi
-
-	shlibpath="$finalize_shlibpath"
-	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
-	if test -n "$shlibpath"; then
-	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
-	fi
-
-	# Get the real and link names of the library.
-	eval shared_ext=\"$shrext_cmds\"
-	eval library_names=\"$library_names_spec\"
-	set dummy $library_names
-	shift
-	realname="$1"
-	shift
-
-	if test -n "$soname_spec"; then
-	  eval soname=\"$soname_spec\"
-	else
-	  soname="$realname"
-	fi
-	if test -z "$dlname"; then
-	  dlname=$soname
-	fi
-
-	lib="$output_objdir/$realname"
-	linknames=
-	for link
-	do
-	  linknames+=" $link"
-	done
-
-	# Use standard objects if they are pic
-	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
-	test "X$libobjs" = "X " && libobjs=
-
-	delfiles=
-	if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
-	  export_symbols="$output_objdir/$libname.uexp"
-	  delfiles+=" $export_symbols"
-	fi
-
-	orig_export_symbols=
-	case $host_os in
-	cygwin* | mingw* | cegcc*)
-	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
-	    # exporting using user supplied symfile
-	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
-	      # and it's NOT already a .def file. Must figure out
-	      # which of the given symbols are data symbols and tag
-	      # them as such. So, trigger use of export_symbols_cmds.
-	      # export_symbols gets reassigned inside the "prepare
-	      # the list of exported symbols" if statement, so the
-	      # include_expsyms logic still works.
-	      orig_export_symbols="$export_symbols"
-	      export_symbols=
-	      always_export_symbols=yes
-	    fi
-	  fi
-	  ;;
-	esac
-
-	# Prepare the list of exported symbols
-	if test -z "$export_symbols"; then
-	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
-	    func_verbose "generating symbol list for \`$libname.la'"
-	    export_symbols="$output_objdir/$libname.exp"
-	    $opt_dry_run || $RM $export_symbols
-	    cmds=$export_symbols_cmds
-	    save_ifs="$IFS"; IFS='~'
-	    for cmd1 in $cmds; do
-	      IFS="$save_ifs"
-	      # Take the normal branch if the nm_file_list_spec branch
-	      # doesn't work or if tool conversion is not needed.
-	      case $nm_file_list_spec~$to_tool_file_cmd in
-		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
-		  try_normal_branch=yes
-		  eval cmd=\"$cmd1\"
-		  func_len " $cmd"
-		  len=$func_len_result
-		  ;;
-		*)
-		  try_normal_branch=no
-		  ;;
-	      esac
-	      if test "$try_normal_branch" = yes \
-		 && { test "$len" -lt "$max_cmd_len" \
-		      || test "$max_cmd_len" -le -1; }
-	      then
-		func_show_eval "$cmd" 'exit $?'
-		skipped_export=false
-	      elif test -n "$nm_file_list_spec"; then
-		func_basename "$output"
-		output_la=$func_basename_result
-		save_libobjs=$libobjs
-		save_output=$output
-		output=${output_objdir}/${output_la}.nm
-		func_to_tool_file "$output"
-		libobjs=$nm_file_list_spec$func_to_tool_file_result
-		delfiles+=" $output"
-		func_verbose "creating $NM input file list: $output"
-		for obj in $save_libobjs; do
-		  func_to_tool_file "$obj"
-		  $ECHO "$func_to_tool_file_result"
-		done > "$output"
-		eval cmd=\"$cmd1\"
-		func_show_eval "$cmd" 'exit $?'
-		output=$save_output
-		libobjs=$save_libobjs
-		skipped_export=false
-	      else
-		# The command line is too long to execute in one step.
-		func_verbose "using reloadable object file for export list..."
-		skipped_export=:
-		# Break out early, otherwise skipped_export may be
-		# set to false by a later but shorter cmd.
-		break
-	      fi
-	    done
-	    IFS="$save_ifs"
-	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
-	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-	    fi
-	  fi
-	fi
-
-	if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	  tmp_export_symbols="$export_symbols"
-	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
-	fi
-
-	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
-	  # The given exports_symbols file has to be filtered, so filter it.
-	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
-	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	  # 's' commands which not all seds can handle. GNU sed should be fine
-	  # though. Also, the filter scales superlinearly with the number of
-	  # global variables. join(1) would be nice here, but unfortunately
-	  # isn't a blessed tool.
-	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-	  delfiles+=" $export_symbols $output_objdir/$libname.filter"
-	  export_symbols=$output_objdir/$libname.def
-	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-	fi
-
-	tmp_deplibs=
-	for test_deplib in $deplibs; do
-	  case " $convenience " in
-	  *" $test_deplib "*) ;;
-	  *)
-	    tmp_deplibs+=" $test_deplib"
-	    ;;
-	  esac
-	done
-	deplibs="$tmp_deplibs"
-
-	if test -n "$convenience"; then
-	  if test -n "$whole_archive_flag_spec" &&
-	    test "$compiler_needs_object" = yes &&
-	    test -z "$libobjs"; then
-	    # extract the archives, so we have objects to list.
-	    # TODO: could optimize this to just extract one archive.
-	    whole_archive_flag_spec=
-	  fi
-	  if test -n "$whole_archive_flag_spec"; then
-	    save_libobjs=$libobjs
-	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-	    test "X$libobjs" = "X " && libobjs=
-	  else
-	    gentop="$output_objdir/${outputname}x"
-	    generated+=" $gentop"
-
-	    func_extract_archives $gentop $convenience
-	    libobjs+=" $func_extract_archives_result"
-	    test "X$libobjs" = "X " && libobjs=
-	  fi
-	fi
-
-	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
-	  eval flag=\"$thread_safe_flag_spec\"
-	  linker_flags+=" $flag"
-	fi
-
-	# Make a backup of the uninstalled library when relinking
-	if test "$opt_mode" = relink; then
-	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
-	fi
-
-	# Do each of the archive commands.
-	if test "$module" = yes && test -n "$module_cmds" ; then
-	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-	    eval test_cmds=\"$module_expsym_cmds\"
-	    cmds=$module_expsym_cmds
-	  else
-	    eval test_cmds=\"$module_cmds\"
-	    cmds=$module_cmds
-	  fi
-	else
-	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-	    eval test_cmds=\"$archive_expsym_cmds\"
-	    cmds=$archive_expsym_cmds
-	  else
-	    eval test_cmds=\"$archive_cmds\"
-	    cmds=$archive_cmds
-	  fi
-	fi
-
-	if test "X$skipped_export" != "X:" &&
-	   func_len " $test_cmds" &&
-	   len=$func_len_result &&
-	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-	  :
-	else
-	  # The command line is too long to link in one step, link piecewise
-	  # or, if using GNU ld and skipped_export is not :, use a linker
-	  # script.
-
-	  # Save the value of $output and $libobjs because we want to
-	  # use them later.  If we have whole_archive_flag_spec, we
-	  # want to use save_libobjs as it was before
-	  # whole_archive_flag_spec was expanded, because we can't
-	  # assume the linker understands whole_archive_flag_spec.
-	  # This may have to be revisited, in case too many
-	  # convenience libraries get linked in and end up exceeding
-	  # the spec.
-	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
-	    save_libobjs=$libobjs
-	  fi
-	  save_output=$output
-	  func_basename "$output"
-	  output_la=$func_basename_result
-
-	  # Clear the reloadable object creation command queue and
-	  # initialize k to one.
-	  test_cmds=
-	  concat_cmds=
-	  objlist=
-	  last_robj=
-	  k=1
-
-	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
-	    output=${output_objdir}/${output_la}.lnkscript
-	    func_verbose "creating GNU ld script: $output"
-	    echo 'INPUT (' > $output
-	    for obj in $save_libobjs
-	    do
-	      func_to_tool_file "$obj"
-	      $ECHO "$func_to_tool_file_result" >> $output
-	    done
-	    echo ')' >> $output
-	    delfiles+=" $output"
-	    func_to_tool_file "$output"
-	    output=$func_to_tool_file_result
-	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
-	    output=${output_objdir}/${output_la}.lnk
-	    func_verbose "creating linker input file list: $output"
-	    : > $output
-	    set x $save_libobjs
-	    shift
-	    firstobj=
-	    if test "$compiler_needs_object" = yes; then
-	      firstobj="$1 "
-	      shift
-	    fi
-	    for obj
-	    do
-	      func_to_tool_file "$obj"
-	      $ECHO "$func_to_tool_file_result" >> $output
-	    done
-	    delfiles+=" $output"
-	    func_to_tool_file "$output"
-	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
-	  else
-	    if test -n "$save_libobjs"; then
-	      func_verbose "creating reloadable object files..."
-	      output=$output_objdir/$output_la-${k}.$objext
-	      eval test_cmds=\"$reload_cmds\"
-	      func_len " $test_cmds"
-	      len0=$func_len_result
-	      len=$len0
-
-	      # Loop over the list of objects to be linked.
-	      for obj in $save_libobjs
-	      do
-		func_len " $obj"
-		func_arith $len + $func_len_result
-		len=$func_arith_result
-		if test "X$objlist" = X ||
-		   test "$len" -lt "$max_cmd_len"; then
-		  objlist+=" $obj"
-		else
-		  # The command $test_cmds is almost too long, add a
-		  # command to the queue.
-		  if test "$k" -eq 1 ; then
-		    # The first file doesn't have a previous command to add.
-		    reload_objs=$objlist
-		    eval concat_cmds=\"$reload_cmds\"
-		  else
-		    # All subsequent reloadable object files will link in
-		    # the last one created.
-		    reload_objs="$objlist $last_robj"
-		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
-		  fi
-		  last_robj=$output_objdir/$output_la-${k}.$objext
-		  func_arith $k + 1
-		  k=$func_arith_result
-		  output=$output_objdir/$output_la-${k}.$objext
-		  objlist=" $obj"
-		  func_len " $last_robj"
-		  func_arith $len0 + $func_len_result
-		  len=$func_arith_result
-		fi
-	      done
-	      # Handle the remaining objects by creating one last
-	      # reloadable object file.  All subsequent reloadable object
-	      # files will link in the last one created.
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      reload_objs="$objlist $last_robj"
-	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
-	      if test -n "$last_robj"; then
-	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
-	      fi
-	      delfiles+=" $output"
-
-	    else
-	      output=
-	    fi
-
-	    if ${skipped_export-false}; then
-	      func_verbose "generating symbol list for \`$libname.la'"
-	      export_symbols="$output_objdir/$libname.exp"
-	      $opt_dry_run || $RM $export_symbols
-	      libobjs=$output
-	      # Append the command to create the export file.
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
-	      if test -n "$last_robj"; then
-		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
-	      fi
-	    fi
-
-	    test -n "$save_libobjs" &&
-	      func_verbose "creating a temporary reloadable object file: $output"
-
-	    # Loop through the commands generated above and execute them.
-	    save_ifs="$IFS"; IFS='~'
-	    for cmd in $concat_cmds; do
-	      IFS="$save_ifs"
-	      $opt_silent || {
-		  func_quote_for_expand "$cmd"
-		  eval "func_echo $func_quote_for_expand_result"
-	      }
-	      $opt_dry_run || eval "$cmd" || {
-		lt_exit=$?
-
-		# Restore the uninstalled library and exit
-		if test "$opt_mode" = relink; then
-		  ( cd "$output_objdir" && \
-		    $RM "${realname}T" && \
-		    $MV "${realname}U" "$realname" )
-		fi
-
-		exit $lt_exit
-	      }
-	    done
-	    IFS="$save_ifs"
-
-	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
-	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
-	    fi
-	  fi
-
-          if ${skipped_export-false}; then
-	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	      tmp_export_symbols="$export_symbols"
-	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
-	    fi
-
-	    if test -n "$orig_export_symbols"; then
-	      # The given exports_symbols file has to be filtered, so filter it.
-	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
-	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	      # 's' commands which not all seds can handle. GNU sed should be fine
-	      # though. Also, the filter scales superlinearly with the number of
-	      # global variables. join(1) would be nice here, but unfortunately
-	      # isn't a blessed tool.
-	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-	      delfiles+=" $export_symbols $output_objdir/$libname.filter"
-	      export_symbols=$output_objdir/$libname.def
-	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-	    fi
-	  fi
-
-	  libobjs=$output
-	  # Restore the value of output.
-	  output=$save_output
-
-	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
-	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-	    test "X$libobjs" = "X " && libobjs=
-	  fi
-	  # Expand the library linking commands again to reset the
-	  # value of $libobjs for piecewise linking.
-
-	  # Do each of the archive commands.
-	  if test "$module" = yes && test -n "$module_cmds" ; then
-	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-	      cmds=$module_expsym_cmds
-	    else
-	      cmds=$module_cmds
-	    fi
-	  else
-	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-	      cmds=$archive_expsym_cmds
-	    else
-	      cmds=$archive_cmds
-	    fi
-	  fi
-	fi
-
-	if test -n "$delfiles"; then
-	  # Append the command to remove temporary files to $cmds.
-	  eval cmds=\"\$cmds~\$RM $delfiles\"
-	fi
-
-	# Add any objects from preloaded convenience libraries
-	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
-	  generated+=" $gentop"
-
-	  func_extract_archives $gentop $dlprefiles
-	  libobjs+=" $func_extract_archives_result"
-	  test "X$libobjs" = "X " && libobjs=
-	fi
-
-	save_ifs="$IFS"; IFS='~'
-	for cmd in $cmds; do
-	  IFS="$save_ifs"
-	  eval cmd=\"$cmd\"
-	  $opt_silent || {
-	    func_quote_for_expand "$cmd"
-	    eval "func_echo $func_quote_for_expand_result"
-	  }
-	  $opt_dry_run || eval "$cmd" || {
-	    lt_exit=$?
-
-	    # Restore the uninstalled library and exit
-	    if test "$opt_mode" = relink; then
-	      ( cd "$output_objdir" && \
-	        $RM "${realname}T" && \
-		$MV "${realname}U" "$realname" )
-	    fi
-
-	    exit $lt_exit
-	  }
-	done
-	IFS="$save_ifs"
-
-	# Restore the uninstalled library and exit
-	if test "$opt_mode" = relink; then
-	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
-
-	  if test -n "$convenience"; then
-	    if test -z "$whole_archive_flag_spec"; then
-	      func_show_eval '${RM}r "$gentop"'
-	    fi
-	  fi
-
-	  exit $EXIT_SUCCESS
-	fi
-
-	# Create links to the real library.
-	for linkname in $linknames; do
-	  if test "$realname" != "$linkname"; then
-	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
-	  fi
-	done
-
-	# If -module or -export-dynamic was specified, set the dlname.
-	if test "$module" = yes || test "$export_dynamic" = yes; then
-	  # On all known operating systems, these are identical.
-	  dlname="$soname"
-	fi
-      fi
-      ;;
-
-    obj)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for objects"
-      fi
-
-      case " $deplibs" in
-      *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for objects" ;;
-      esac
-
-      test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for objects"
-
-      test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for objects"
-
-      test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for objects"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for objects"
-
-      case $output in
-      *.lo)
-	test -n "$objs$old_deplibs" && \
-	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
-
-	libobj=$output
-	func_lo2o "$libobj"
-	obj=$func_lo2o_result
-	;;
-      *)
-	libobj=
-	obj="$output"
-	;;
-      esac
-
-      # Delete the old objects.
-      $opt_dry_run || $RM $obj $libobj
-
-      # Objects from convenience libraries.  This assumes
-      # single-version convenience libraries.  Whenever we create
-      # different ones for PIC/non-PIC, this we'll have to duplicate
-      # the extraction.
-      reload_conv_objs=
-      gentop=
-      # reload_cmds runs $LD directly, so let us get rid of
-      # -Wl from whole_archive_flag_spec and hope we can get by with
-      # turning comma into space..
-      wl=
-
-      if test -n "$convenience"; then
-	if test -n "$whole_archive_flag_spec"; then
-	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
-	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
-	else
-	  gentop="$output_objdir/${obj}x"
-	  generated+=" $gentop"
-
-	  func_extract_archives $gentop $convenience
-	  reload_conv_objs="$reload_objs $func_extract_archives_result"
-	fi
-      fi
-
-      # If we're not building shared, we need to use non_pic_objs
-      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
-
-      # Create the old-style object.
-      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
-
-      output="$obj"
-      func_execute_cmds "$reload_cmds" 'exit $?'
-
-      # Exit if we aren't doing a library object file.
-      if test -z "$libobj"; then
-	if test -n "$gentop"; then
-	  func_show_eval '${RM}r "$gentop"'
-	fi
-
-	exit $EXIT_SUCCESS
-      fi
-
-      if test "$build_libtool_libs" != yes; then
-	if test -n "$gentop"; then
-	  func_show_eval '${RM}r "$gentop"'
-	fi
-
-	# Create an invalid libtool object if no PIC, so that we don't
-	# accidentally link it into a program.
-	# $show "echo timestamp > $libobj"
-	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
-	exit $EXIT_SUCCESS
-      fi
-
-      if test -n "$pic_flag" || test "$pic_mode" != default; then
-	# Only do commands if we really have different PIC objects.
-	reload_objs="$libobjs $reload_conv_objs"
-	output="$libobj"
-	func_execute_cmds "$reload_cmds" 'exit $?'
-      fi
-
-      if test -n "$gentop"; then
-	func_show_eval '${RM}r "$gentop"'
-      fi
-
-      exit $EXIT_SUCCESS
-      ;;
-
-    prog)
-      case $host in
-	*cygwin*) func_stripname '' '.exe' "$output"
-	          output=$func_stripname_result.exe;;
-      esac
-      test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for programs"
-
-      test -n "$release" && \
-	func_warning "\`-release' is ignored for programs"
-
-      test "$preload" = yes \
-        && test "$dlopen_support" = unknown \
-	&& test "$dlopen_self" = unknown \
-	&& test "$dlopen_self_static" = unknown && \
-	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
-
-      case $host in
-      *-*-rhapsody* | *-*-darwin1.[012])
-	# On Rhapsody replace the C library is the System framework
-	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
-	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
-	;;
-      esac
-
-      case $host in
-      *-*-darwin*)
-	# Don't allow lazy linking, it breaks C++ global constructors
-	# But is supposedly fixed on 10.4 or later (yay!).
-	if test "$tagname" = CXX ; then
-	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
-	    10.[0123])
-	      compile_command+=" ${wl}-bind_at_load"
-	      finalize_command+=" ${wl}-bind_at_load"
-	    ;;
-	  esac
-	fi
-	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
-	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	;;
-      esac
-
-
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-	case " $new_libs " in
-	*" -L$path/$objdir "*) ;;
-	*)
-	  case " $compile_deplibs " in
-	  *" -L$path/$objdir "*)
-	    new_libs+=" -L$path/$objdir" ;;
-	  esac
-	  ;;
-	esac
-      done
-      for deplib in $compile_deplibs; do
-	case $deplib in
-	-L*)
-	  case " $new_libs " in
-	  *" $deplib "*) ;;
-	  *) new_libs+=" $deplib" ;;
-	  esac
-	  ;;
-	*) new_libs+=" $deplib" ;;
-	esac
-      done
-      compile_deplibs="$new_libs"
-
-
-      compile_command+=" $compile_deplibs"
-      finalize_command+=" $finalize_deplibs"
-
-      if test -n "$rpath$xrpath"; then
-	# If the user specified any rpath flags, then add them.
-	for libdir in $rpath $xrpath; do
-	  # This is the magic to use -rpath.
-	  case "$finalize_rpath " in
-	  *" $libdir "*) ;;
-	  *) finalize_rpath+=" $libdir" ;;
-	  esac
-	done
-      fi
-
-      # Now hardcode the library paths
-      rpath=
-      hardcode_libdirs=
-      for libdir in $compile_rpath $finalize_rpath; do
-	if test -n "$hardcode_libdir_flag_spec"; then
-	  if test -n "$hardcode_libdir_separator"; then
-	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
-	    else
-	      # Just accumulate the unique libdirs.
-	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		;;
-	      *)
-		hardcode_libdirs+="$hardcode_libdir_separator$libdir"
-		;;
-	      esac
-	    fi
-	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath+=" $flag"
-	  fi
-	elif test -n "$runpath_var"; then
-	  case "$perm_rpath " in
-	  *" $libdir "*) ;;
-	  *) perm_rpath+=" $libdir" ;;
-	  esac
-	fi
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
-	  case :$dllsearchpath: in
-	  *":$libdir:"*) ;;
-	  ::) dllsearchpath=$libdir;;
-	  *) dllsearchpath+=":$libdir";;
-	  esac
-	  case :$dllsearchpath: in
-	  *":$testbindir:"*) ;;
-	  ::) dllsearchpath=$testbindir;;
-	  *) dllsearchpath+=":$testbindir";;
-	  esac
-	  ;;
-	esac
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
-	eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      compile_rpath="$rpath"
-
-      rpath=
-      hardcode_libdirs=
-      for libdir in $finalize_rpath; do
-	if test -n "$hardcode_libdir_flag_spec"; then
-	  if test -n "$hardcode_libdir_separator"; then
-	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
-	    else
-	      # Just accumulate the unique libdirs.
-	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-		;;
-	      *)
-		hardcode_libdirs+="$hardcode_libdir_separator$libdir"
-		;;
-	      esac
-	    fi
-	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath+=" $flag"
-	  fi
-	elif test -n "$runpath_var"; then
-	  case "$finalize_perm_rpath " in
-	  *" $libdir "*) ;;
-	  *) finalize_perm_rpath+=" $libdir" ;;
-	  esac
-	fi
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
-	eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      finalize_rpath="$rpath"
-
-      if test -n "$libobjs" && test "$build_old_libs" = yes; then
-	# Transform all the library objects into standard objects.
-	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
-	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
-      fi
-
-      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
-
-      # template prelinking step
-      if test -n "$prelink_cmds"; then
-	func_execute_cmds "$prelink_cmds" 'exit $?'
-      fi
-
-      wrappers_required=yes
-      case $host in
-      *cegcc* | *mingw32ce*)
-        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
-        wrappers_required=no
-        ;;
-      *cygwin* | *mingw* )
-        if test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
-        ;;
-      *)
-        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
-        ;;
-      esac
-      if test "$wrappers_required" = no; then
-	# Replace the output file specification.
-	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
-	link_command="$compile_command$compile_rpath"
-
-	# We have no uninstalled library dependencies, so finalize right now.
-	exit_status=0
-	func_show_eval "$link_command" 'exit_status=$?'
-
-	if test -n "$postlink_cmds"; then
-	  func_to_tool_file "$output"
-	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-	  func_execute_cmds "$postlink_cmds" 'exit $?'
-	fi
-
-	# Delete the generated files.
-	if test -f "$output_objdir/${outputname}S.${objext}"; then
-	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
-	fi
-
-	exit $exit_status
-      fi
-
-      if test -n "$compile_shlibpath$finalize_shlibpath"; then
-	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
-      fi
-      if test -n "$finalize_shlibpath"; then
-	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
-      fi
-
-      compile_var=
-      finalize_var=
-      if test -n "$runpath_var"; then
-	if test -n "$perm_rpath"; then
-	  # We should set the runpath_var.
-	  rpath=
-	  for dir in $perm_rpath; do
-	    rpath+="$dir:"
-	  done
-	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
-	fi
-	if test -n "$finalize_perm_rpath"; then
-	  # We should set the runpath_var.
-	  rpath=
-	  for dir in $finalize_perm_rpath; do
-	    rpath+="$dir:"
-	  done
-	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
-	fi
-      fi
-
-      if test "$no_install" = yes; then
-	# We don't need to create a wrapper script.
-	link_command="$compile_var$compile_command$compile_rpath"
-	# Replace the output file specification.
-	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
-	# Delete the old output file.
-	$opt_dry_run || $RM $output
-	# Link the executable and exit
-	func_show_eval "$link_command" 'exit $?'
-
-	if test -n "$postlink_cmds"; then
-	  func_to_tool_file "$output"
-	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-	  func_execute_cmds "$postlink_cmds" 'exit $?'
-	fi
-
-	exit $EXIT_SUCCESS
-      fi
-
-      if test "$hardcode_action" = relink; then
-	# Fast installation is not supported
-	link_command="$compile_var$compile_command$compile_rpath"
-	relink_command="$finalize_var$finalize_command$finalize_rpath"
-
-	func_warning "this platform does not like uninstalled shared libraries"
-	func_warning "\`$output' will be relinked during installation"
-      else
-	if test "$fast_install" != no; then
-	  link_command="$finalize_var$compile_command$finalize_rpath"
-	  if test "$fast_install" = yes; then
-	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
-	  else
-	    # fast_install is set to needless
-	    relink_command=
-	  fi
-	else
-	  link_command="$compile_var$compile_command$compile_rpath"
-	  relink_command="$finalize_var$finalize_command$finalize_rpath"
-	fi
-      fi
-
-      # Replace the output file specification.
-      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-
-      # Delete the old output files.
-      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
-
-      func_show_eval "$link_command" 'exit $?'
-
-      if test -n "$postlink_cmds"; then
-	func_to_tool_file "$output_objdir/$outputname"
-	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
-	func_execute_cmds "$postlink_cmds" 'exit $?'
-      fi
-
-      # Now create the wrapper script.
-      func_verbose "creating $output"
-
-      # Quote the relink command for shipping.
-      if test -n "$relink_command"; then
-	# Preserve any variables that may affect compiler behavior
-	for var in $variables_saved_for_relink; do
-	  if eval test -z \"\${$var+set}\"; then
-	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-	  elif eval var_value=\$$var; test -z "$var_value"; then
-	    relink_command="$var=; export $var; $relink_command"
-	  else
-	    func_quote_for_eval "$var_value"
-	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
-	  fi
-	done
-	relink_command="(cd `pwd`; $relink_command)"
-	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
-      fi
-
-      # Only actually do things if not in dry run mode.
-      $opt_dry_run || {
-	# win32 will think the script is a binary if it has
-	# a .exe suffix, so we strip it off here.
-	case $output in
-	  *.exe) func_stripname '' '.exe' "$output"
-	         output=$func_stripname_result ;;
-	esac
-	# test for cygwin because mv fails w/o .exe extensions
-	case $host in
-	  *cygwin*)
-	    exeext=.exe
-	    func_stripname '' '.exe' "$outputname"
-	    outputname=$func_stripname_result ;;
-	  *) exeext= ;;
-	esac
-	case $host in
-	  *cygwin* | *mingw* )
-	    func_dirname_and_basename "$output" "" "."
-	    output_name=$func_basename_result
-	    output_path=$func_dirname_result
-	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
-	    cwrapper="$output_path/$output_name.exe"
-	    $RM $cwrappersource $cwrapper
-	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
-
-	    func_emit_cwrapperexe_src > $cwrappersource
-
-	    # The wrapper executable is built using the $host compiler,
-	    # because it contains $host paths and files. If cross-
-	    # compiling, it, like the target executable, must be
-	    # executed on the $host or under an emulation environment.
-	    $opt_dry_run || {
-	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
-	      $STRIP $cwrapper
-	    }
-
-	    # Now, create the wrapper script for func_source use:
-	    func_ltwrapper_scriptname $cwrapper
-	    $RM $func_ltwrapper_scriptname_result
-	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
-	    $opt_dry_run || {
-	      # note: this script will not be executed, so do not chmod.
-	      if test "x$build" = "x$host" ; then
-		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
-	      else
-		func_emit_wrapper no > $func_ltwrapper_scriptname_result
-	      fi
-	    }
-	  ;;
-	  * )
-	    $RM $output
-	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
-
-	    func_emit_wrapper no > $output
-	    chmod +x $output
-	  ;;
-	esac
-      }
-      exit $EXIT_SUCCESS
-      ;;
-    esac
-
-    # See if we need to build an old-fashioned archive.
-    for oldlib in $oldlibs; do
-
-      if test "$build_libtool_libs" = convenience; then
-	oldobjs="$libobjs_save $symfileobj"
-	addlibs="$convenience"
-	build_libtool_libs=no
-      else
-	if test "$build_libtool_libs" = module; then
-	  oldobjs="$libobjs_save"
-	  build_libtool_libs=no
-	else
-	  oldobjs="$old_deplibs $non_pic_objects"
-	  if test "$preload" = yes && test -f "$symfileobj"; then
-	    oldobjs+=" $symfileobj"
-	  fi
-	fi
-	addlibs="$old_convenience"
-      fi
-
-      if test -n "$addlibs"; then
-	gentop="$output_objdir/${outputname}x"
-	generated+=" $gentop"
-
-	func_extract_archives $gentop $addlibs
-	oldobjs+=" $func_extract_archives_result"
-      fi
-
-      # Do each command in the archive commands.
-      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
-	cmds=$old_archive_from_new_cmds
-      else
-
-	# Add any objects from preloaded convenience libraries
-	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
-	  generated+=" $gentop"
-
-	  func_extract_archives $gentop $dlprefiles
-	  oldobjs+=" $func_extract_archives_result"
-	fi
-
-	# POSIX demands no paths to be encoded in archives.  We have
-	# to avoid creating archives with duplicate basenames if we
-	# might have to extract them afterwards, e.g., when creating a
-	# static archive out of a convenience library, or when linking
-	# the entirety of a libtool archive into another (currently
-	# not supported by libtool).
-	if (for obj in $oldobjs
-	    do
-	      func_basename "$obj"
-	      $ECHO "$func_basename_result"
-	    done | sort | sort -uc >/dev/null 2>&1); then
-	  :
-	else
-	  echo "copying selected object files to avoid basename conflicts..."
-	  gentop="$output_objdir/${outputname}x"
-	  generated+=" $gentop"
-	  func_mkdir_p "$gentop"
-	  save_oldobjs=$oldobjs
-	  oldobjs=
-	  counter=1
-	  for obj in $save_oldobjs
-	  do
-	    func_basename "$obj"
-	    objbase="$func_basename_result"
-	    case " $oldobjs " in
-	    " ") oldobjs=$obj ;;
-	    *[\ /]"$objbase "*)
-	      while :; do
-		# Make sure we don't pick an alternate name that also
-		# overlaps.
-		newobj=lt$counter-$objbase
-		func_arith $counter + 1
-		counter=$func_arith_result
-		case " $oldobjs " in
-		*[\ /]"$newobj "*) ;;
-		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
-		esac
-	      done
-	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
-	      oldobjs+=" $gentop/$newobj"
-	      ;;
-	    *) oldobjs+=" $obj" ;;
-	    esac
-	  done
-	fi
-	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
-	tool_oldlib=$func_to_tool_file_result
-	eval cmds=\"$old_archive_cmds\"
-
-	func_len " $cmds"
-	len=$func_len_result
-	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-	  cmds=$old_archive_cmds
-	elif test -n "$archiver_list_spec"; then
-	  func_verbose "using command file archive linking..."
-	  for obj in $oldobjs
-	  do
-	    func_to_tool_file "$obj"
-	    $ECHO "$func_to_tool_file_result"
-	  done > $output_objdir/$libname.libcmd
-	  func_to_tool_file "$output_objdir/$libname.libcmd"
-	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
-	  cmds=$old_archive_cmds
-	else
-	  # the command line is too long to link in one step, link in parts
-	  func_verbose "using piecewise archive linking..."
-	  save_RANLIB=$RANLIB
-	  RANLIB=:
-	  objlist=
-	  concat_cmds=
-	  save_oldobjs=$oldobjs
-	  oldobjs=
-	  # Is there a better way of finding the last object in the list?
-	  for obj in $save_oldobjs
-	  do
-	    last_oldobj=$obj
-	  done
-	  eval test_cmds=\"$old_archive_cmds\"
-	  func_len " $test_cmds"
-	  len0=$func_len_result
-	  len=$len0
-	  for obj in $save_oldobjs
-	  do
-	    func_len " $obj"
-	    func_arith $len + $func_len_result
-	    len=$func_arith_result
-	    objlist+=" $obj"
-	    if test "$len" -lt "$max_cmd_len"; then
-	      :
-	    else
-	      # the above command should be used before it gets too long
-	      oldobjs=$objlist
-	      if test "$obj" = "$last_oldobj" ; then
-		RANLIB=$save_RANLIB
-	      fi
-	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
-	      objlist=
-	      len=$len0
-	    fi
-	  done
-	  RANLIB=$save_RANLIB
-	  oldobjs=$objlist
-	  if test "X$oldobjs" = "X" ; then
-	    eval cmds=\"\$concat_cmds\"
-	  else
-	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
-	  fi
-	fi
-      fi
-      func_execute_cmds "$cmds" 'exit $?'
-    done
-
-    test -n "$generated" && \
-      func_show_eval "${RM}r$generated"
-
-    # Now create the libtool archive.
-    case $output in
-    *.la)
-      old_library=
-      test "$build_old_libs" = yes && old_library="$libname.$libext"
-      func_verbose "creating $output"
-
-      # Preserve any variables that may affect compiler behavior
-      for var in $variables_saved_for_relink; do
-	if eval test -z \"\${$var+set}\"; then
-	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
-	elif eval var_value=\$$var; test -z "$var_value"; then
-	  relink_command="$var=; export $var; $relink_command"
-	else
-	  func_quote_for_eval "$var_value"
-	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
-	fi
-      done
-      # Quote the link command for shipping.
-      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
-      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
-      if test "$hardcode_automatic" = yes ; then
-	relink_command=
-      fi
-
-      # Only create the output if not a dry run.
-      $opt_dry_run || {
-	for installed in no yes; do
-	  if test "$installed" = yes; then
-	    if test -z "$install_libdir"; then
-	      break
-	    fi
-	    output="$output_objdir/$outputname"i
-	    # Replace all uninstalled libtool libraries with the installed ones
-	    newdependency_libs=
-	    for deplib in $dependency_libs; do
-	      case $deplib in
-	      *.la)
-		func_basename "$deplib"
-		name="$func_basename_result"
-		func_resolve_sysroot "$deplib"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$deplib' is not a valid libtool archive"
-		newdependency_libs+=" ${lt_sysroot:+=}$libdir/$name"
-		;;
-	      -L*)
-		func_stripname -L '' "$deplib"
-		func_replace_sysroot "$func_stripname_result"
-		newdependency_libs+=" -L$func_replace_sysroot_result"
-		;;
-	      -R*)
-		func_stripname -R '' "$deplib"
-		func_replace_sysroot "$func_stripname_result"
-		newdependency_libs+=" -R$func_replace_sysroot_result"
-		;;
-	      *) newdependency_libs+=" $deplib" ;;
-	      esac
-	    done
-	    dependency_libs="$newdependency_libs"
-	    newdlfiles=
-
-	    for lib in $dlfiles; do
-	      case $lib in
-	      *.la)
-	        func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
-		newdlfiles+=" ${lt_sysroot:+=}$libdir/$name"
-		;;
-	      *) newdlfiles+=" $lib" ;;
-	      esac
-	    done
-	    dlfiles="$newdlfiles"
-	    newdlprefiles=
-	    for lib in $dlprefiles; do
-	      case $lib in
-	      *.la)
-		# Only pass preopened files to the pseudo-archive (for
-		# eventual linking with the app. that links it) if we
-		# didn't already link the preopened objects directly into
-		# the library:
-		func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
-		newdlprefiles+=" ${lt_sysroot:+=}$libdir/$name"
-		;;
-	      esac
-	    done
-	    dlprefiles="$newdlprefiles"
-	  else
-	    newdlfiles=
-	    for lib in $dlfiles; do
-	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
-		*) abs=`pwd`"/$lib" ;;
-	      esac
-	      newdlfiles+=" $abs"
-	    done
-	    dlfiles="$newdlfiles"
-	    newdlprefiles=
-	    for lib in $dlprefiles; do
-	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
-		*) abs=`pwd`"/$lib" ;;
-	      esac
-	      newdlprefiles+=" $abs"
-	    done
-	    dlprefiles="$newdlprefiles"
-	  fi
-	  $RM $output
-	  # place dlname in correct position for cygwin
-	  # In fact, it would be nice if we could use this code for all target
-	  # systems that can't hard-code library paths into their executables
-	  # and that have no shared library path variable independent of PATH,
-	  # but it turns out we can't easily determine that from inspecting
-	  # libtool variables, so we have to hard-code the OSs to which it
-	  # applies here; at the moment, that means platforms that use the PE
-	  # object format with DLL files.  See the long comment at the top of
-	  # tests/bindir.at for full details.
-	  tdlname=$dlname
-	  case $host,$output,$installed,$module,$dlname in
-	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
-	      # If a -bindir argument was supplied, place the dll there.
-	      if test "x$bindir" != x ;
-	      then
-		func_relative_path "$install_libdir" "$bindir"
-		tdlname=$func_relative_path_result$dlname
-	      else
-		# Otherwise fall back on heuristic.
-		tdlname=../bin/$dlname
-	      fi
-	      ;;
-	  esac
-	  $ECHO > $output "\
-# $outputname - a libtool library file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='$tdlname'
-
-# Names of this library.
-library_names='$library_names'
-
-# The name of the static archive.
-old_library='$old_library'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags='$new_inherited_linker_flags'
-
-# Libraries that this one depends upon.
-dependency_libs='$dependency_libs'
-
-# Names of additional weak libraries provided by this library
-weak_library_names='$weak_libs'
-
-# Version information for $libname.
-current=$current
-age=$age
-revision=$revision
-
-# Is this an already installed library?
-installed=$installed
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=$module
-
-# Files to dlopen/dlpreopen
-dlopen='$dlfiles'
-dlpreopen='$dlprefiles'
-
-# Directory that this library needs to be installed in:
-libdir='$install_libdir'"
-	  if test "$installed" = no && test "$need_relink" = yes; then
-	    $ECHO >> $output "\
-relink_command=\"$relink_command\""
-	  fi
-	done
-      }
-
-      # Do a symbolic link so that the libtool archive can be found in
-      # LD_LIBRARY_PATH before the program is installed.
-      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
-      ;;
-    esac
-    exit $EXIT_SUCCESS
-}
-
-{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
-    func_mode_link ${1+"$@"}
-
-
-# func_mode_uninstall arg...
-func_mode_uninstall ()
-{
-    $opt_debug
-    RM="$nonopt"
-    files=
-    rmforce=
-    exit_status=0
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic="$magic"
-
-    for arg
-    do
-      case $arg in
-      -f) RM+=" $arg"; rmforce=yes ;;
-      -*) RM+=" $arg" ;;
-      *) files+=" $arg" ;;
-      esac
-    done
-
-    test -z "$RM" && \
-      func_fatal_help "you must specify an RM program"
-
-    rmdirs=
-
-    for file in $files; do
-      func_dirname "$file" "" "."
-      dir="$func_dirname_result"
-      if test "X$dir" = X.; then
-	odir="$objdir"
-      else
-	odir="$dir/$objdir"
-      fi
-      func_basename "$file"
-      name="$func_basename_result"
-      test "$opt_mode" = uninstall && odir="$dir"
-
-      # Remember odir for removal later, being careful to avoid duplicates
-      if test "$opt_mode" = clean; then
-	case " $rmdirs " in
-	  *" $odir "*) ;;
-	  *) rmdirs+=" $odir" ;;
-	esac
-      fi
-
-      # Don't error if the file doesn't exist and rm -f was used.
-      if { test -L "$file"; } >/dev/null 2>&1 ||
-	 { test -h "$file"; } >/dev/null 2>&1 ||
-	 test -f "$file"; then
-	:
-      elif test -d "$file"; then
-	exit_status=1
-	continue
-      elif test "$rmforce" = yes; then
-	continue
-      fi
-
-      rmfiles="$file"
-
-      case $name in
-      *.la)
-	# Possibly a libtool archive, so verify it.
-	if func_lalib_p "$file"; then
-	  func_source $dir/$name
-
-	  # Delete the libtool libraries and symlinks.
-	  for n in $library_names; do
-	    rmfiles+=" $odir/$n"
-	  done
-	  test -n "$old_library" && rmfiles+=" $odir/$old_library"
-
-	  case "$opt_mode" in
-	  clean)
-	    case " $library_names " in
-	    *" $dlname "*) ;;
-	    *) test -n "$dlname" && rmfiles+=" $odir/$dlname" ;;
-	    esac
-	    test -n "$libdir" && rmfiles+=" $odir/$name $odir/${name}i"
-	    ;;
-	  uninstall)
-	    if test -n "$library_names"; then
-	      # Do each command in the postuninstall commands.
-	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
-	    fi
-
-	    if test -n "$old_library"; then
-	      # Do each command in the old_postuninstall commands.
-	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
-	    fi
-	    # FIXME: should reinstall the best remaining shared library.
-	    ;;
-	  esac
-	fi
-	;;
-
-      *.lo)
-	# Possibly a libtool object, so verify it.
-	if func_lalib_p "$file"; then
-
-	  # Read the .lo file
-	  func_source $dir/$name
-
-	  # Add PIC object to the list of files to remove.
-	  if test -n "$pic_object" &&
-	     test "$pic_object" != none; then
-	    rmfiles+=" $dir/$pic_object"
-	  fi
-
-	  # Add non-PIC object to the list of files to remove.
-	  if test -n "$non_pic_object" &&
-	     test "$non_pic_object" != none; then
-	    rmfiles+=" $dir/$non_pic_object"
-	  fi
-	fi
-	;;
-
-      *)
-	if test "$opt_mode" = clean ; then
-	  noexename=$name
-	  case $file in
-	  *.exe)
-	    func_stripname '' '.exe' "$file"
-	    file=$func_stripname_result
-	    func_stripname '' '.exe' "$name"
-	    noexename=$func_stripname_result
-	    # $file with .exe has already been added to rmfiles,
-	    # add $file without .exe
-	    rmfiles+=" $file"
-	    ;;
-	  esac
-	  # Do a test to see if this is a libtool program.
-	  if func_ltwrapper_p "$file"; then
-	    if func_ltwrapper_executable_p "$file"; then
-	      func_ltwrapper_scriptname "$file"
-	      relink_command=
-	      func_source $func_ltwrapper_scriptname_result
-	      rmfiles+=" $func_ltwrapper_scriptname_result"
-	    else
-	      relink_command=
-	      func_source $dir/$noexename
-	    fi
-
-	    # note $name still contains .exe if it was in $file originally
-	    # as does the version of $file that was added into $rmfiles
-	    rmfiles+=" $odir/$name $odir/${name}S.${objext}"
-	    if test "$fast_install" = yes && test -n "$relink_command"; then
-	      rmfiles+=" $odir/lt-$name"
-	    fi
-	    if test "X$noexename" != "X$name" ; then
-	      rmfiles+=" $odir/lt-${noexename}.c"
-	    fi
-	  fi
-	fi
-	;;
-      esac
-      func_show_eval "$RM $rmfiles" 'exit_status=1'
-    done
-
-    # Try to remove the ${objdir}s in the directories where we deleted files
-    for dir in $rmdirs; do
-      if test -d "$dir"; then
-	func_show_eval "rmdir $dir >/dev/null 2>&1"
-      fi
-    done
-
-    exit $exit_status
-}
-
-{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
-    func_mode_uninstall ${1+"$@"}
-
-test -z "$opt_mode" && {
-  help="$generic_help"
-  func_fatal_help "you must specify a MODE"
-}
-
-test -z "$exec_cmd" && \
-  func_fatal_help "invalid operation mode \`$opt_mode'"
-
-if test -n "$exec_cmd"; then
-  eval exec "$exec_cmd"
-  exit $EXIT_FAILURE
-fi
-
-exit $exit_status
-
-
-# The TAGs below are defined such that we never get into a situation
-# in which we disable both kinds of libraries.  Given conflicting
-# choices, we go for a static library, that is the most portable,
-# since we can't tell whether shared libraries were disabled because
-# the user asked for that or because the platform doesn't support
-# them.  This is particularly important on AIX, because we don't
-# support having both static and shared libraries enabled at the same
-# time on that platform, so we default to a shared-only configuration.
-# If a disable-shared tag is given, we'll fallback to a static-only
-# configuration.  But we'll never go from static-only to shared-only.
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
-build_libtool_libs=no
-build_old_libs=yes
-# ### END LIBTOOL TAG CONFIG: disable-shared
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-static
-build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
-# ### END LIBTOOL TAG CONFIG: disable-static
-
-# Local Variables:
-# mode:shell-script
-# sh-indentation:2
-# End:
-# vi:sw=2
-
-
-# ### BEGIN LIBTOOL TAG CONFIG: F77
-
-# The linker used to build libraries.
-LD="/usr/x86_64-suse-linux/bin/ld -m elf_x86_64"
-
-# How to create reloadable object files.
-reload_flag=" -r"
-reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
-
-# Commands used to build an old-style archive.
-old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib"
-
-# A language specific compiler.
-CC="gfortran"
-
-# Is the compiler the GNU compiler?
-with_gcc=yes
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=""
-
-# Additional compiler flags for building library objects.
-pic_flag=" -fPIC"
-
-# How to pass a linker flag through the compiler.
-wl="-Wl,"
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=""
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o="yes"
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=no
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=no
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec="\${wl}--export-dynamic"
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object="no"
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=""
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=""
-
-# Commands used to build a shared archive.
-archive_cmds="\$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
-archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
-	    cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
-	    echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
-	    \$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=""
-module_expsym_cmds=""
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld="yes"
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=""
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=""
-
-# Flag to hardcode $libdir into a binary during linking.
-# This must work even if $libdir does not exist
-hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=""
-
-# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=no
-
-# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting ${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=no
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=no
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=unsupported
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=no
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=no
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=unknown
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=no
-
-# The commands to list exported symbols.
-export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
-
-# Symbols that must always be exported.
-include_expsyms=""
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=""
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=""
-
-# Specify filename containing input files.
-file_list_spec=""
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=immediate
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=""
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=""
-postdep_objects=""
-predeps=""
-postdeps=""
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=""
-
-# ### END LIBTOOL TAG CONFIG: F77
-
-# ### BEGIN LIBTOOL TAG CONFIG: FC
-
-# The linker used to build libraries.
-LD="/usr/x86_64-suse-linux/bin/ld -m elf_x86_64"
-
-# How to create reloadable object files.
-reload_flag=" -r"
-reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
-
-# Commands used to build an old-style archive.
-old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib"
-
-# A language specific compiler.
-CC="gfortran"
-
-# Is the compiler the GNU compiler?
-with_gcc=yes
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=""
-
-# Additional compiler flags for building library objects.
-pic_flag=" -fPIC"
-
-# How to pass a linker flag through the compiler.
-wl="-Wl,"
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=""
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o="yes"
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=no
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=no
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec="\${wl}--export-dynamic"
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object="no"
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=""
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=""
-
-# Commands used to build a shared archive.
-archive_cmds="\$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
-archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
-	    cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
-	    echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
-	    \$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=""
-module_expsym_cmds=""
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld="yes"
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=""
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=""
-
-# Flag to hardcode $libdir into a binary during linking.
-# This must work even if $libdir does not exist
-hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=""
-
-# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=no
-
-# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting ${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=no
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=no
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=unsupported
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=no
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=no
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=unknown
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=no
-
-# The commands to list exported symbols.
-export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
-
-# Symbols that must always be exported.
-include_expsyms=""
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=""
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=""
-
-# Specify filename containing input files.
-file_list_spec=""
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=immediate
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=""
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=""
-postdep_objects=""
-predeps=""
-postdeps=""
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=""
-
-# ### END LIBTOOL TAG CONFIG: FC
diff --git a/m4/ax_linux_distribution.m4 b/m4/ax_linux_distribution.m4
deleted file mode 100644
index 4c22cac..0000000
--- a/m4/ax_linux_distribution.m4
+++ /dev/null
@@ -1,77 +0,0 @@
-# SYNOPSIS
-#
-#   AX_LINUX_DISTRIBUTION
-#
-# DESCRIPTION
-#
-#	Try to detect the name and version of the Linux distribution where the software is being run
-#
-#   In configure.in:
-#
-#     dnl For my rpm.m4 macros
-#     AC_SUBST(LINUX_DISTRIBUTION_NAME)
-#     AC_SUBST(LINUX_DISTRIBUTION_VERSION)
-#
-#  	Daniel Varela <dvarela at ecmwf.int> 2011
-#   Version 1.1 (2011-11-11)
- 
-
-dnl AX_LINUX_DISTRIBUTION
-dnl Figure out the Linux distribution where the software is being built
-dnl automake target
-
-AC_DEFUN([AX_LINUX_DISTRIBUTION],
-[dnl
-AC_REQUIRE([AC_CANONICAL_HOST])
-HOST_CPU=${host_cpu}
-HOST_VENDOR=${host_vendor}
-HOST_OS=${host_os}
-
-if test x$HOST_OS = "xlinux-gnu"
-then
-	AC_MSG_CHECKING(for Linux distribution )
-
-	# This works for Fedora, RedHat and Slackware
-	for f in /etc/fedora-release /etc/redhat-release /etc/slackware-release
-	do
-		if test -f $f; then
-			distro=`cat $f`	
-			break
-		fi
-	done	
-
-	# This works in Ubuntu (11 at least)
-	if test -f /etc/lsb-release; then
-		distro=`cat /etc/lsb-release | grep DISTRIB_ID | awk -F= '{print $2}' `
-		distro_version=`cat /etc/lsb-release | grep DISTRIB_RELEASE | awk -F= '{print $2}' `
-	fi
-
-	# For SuSE
-	if test -f /etc/SuSE-release; then
-		distro=`cat /etc/SuSE-release | head -1`
-		#distro_version=`cat /etc/SuSE-release | tail -1 | awk -F= '{print $2}' `
-	fi
-
-	# At least Debian has this
-	if test -f /etc/issue.net -a "x$distro" = x; then
-		distro=`cat /etc/issue.net | head -1`
-	fi
-
-	# Everything else
-	if test "x$distro" = x; then
-		distro="Unknown Linux"
-	fi
-	
-	LINUX_DISTRIBUTION_NAME=$distro
-	LINUX_DISTRIBUTION_VERSION=$distro_version
-    AC_MSG_RESULT($LINUX_DISTRIBUTION_NAME $LINUX_DISTRIBUTION_VERSION)
-
-else
-	LINUX_DISTRIBUTION_NAME=$HOST_OS
-	LINUX_DISTRIBUTION_VERSION=""
-	AC_MSG_NOTICE(OS is non-Linux UNIX $HOST_OS.)
-fi
-
-AC_SUBST(LINUX_DISTRIBUTION_NAME)
-AC_SUBST(LINUX_DISTRIBUTION_VERSION)
-])
diff --git a/m4/ax_python_devel.m4 b/m4/ax_python_devel.m4
deleted file mode 100644
index c98687d..0000000
--- a/m4/ax_python_devel.m4
+++ /dev/null
@@ -1,325 +0,0 @@
-# ===========================================================================
-#      http://www.gnu.org/software/autoconf-archive/ax_python_devel.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_PYTHON_DEVEL([version])
-#
-# DESCRIPTION
-#
-#   Note: Defines as a precious variable "PYTHON_VERSION". Don't override it
-#   in your configure.ac.
-#
-#   This macro checks for Python and tries to get the include path to
-#   'Python.h'. It provides the $(PYTHON_CPPFLAGS) and $(PYTHON_LDFLAGS)
-#   output variables. It also exports $(PYTHON_EXTRA_LIBS) and
-#   $(PYTHON_EXTRA_LDFLAGS) for embedding Python in your code.
-#
-#   You can search for some particular version of Python by passing a
-#   parameter to this macro, for example ">= '2.3.1'", or "== '2.4'". Please
-#   note that you *have* to pass also an operator along with the version to
-#   match, and pay special attention to the single quotes surrounding the
-#   version number. Don't use "PYTHON_VERSION" for this: that environment
-#   variable is declared as precious and thus reserved for the end-user.
-#
-#   This macro should work for all versions of Python >= 2.1.0. As an end
-#   user, you can disable the check for the python version by setting the
-#   PYTHON_NOVERSIONCHECK environment variable to something else than the
-#   empty string.
-#
-#   If you need to use this macro for an older Python version, please
-#   contact the authors. We're always open for feedback.
-#
-# LICENSE
-#
-#   Copyright (c) 2009 Sebastian Huber <sebastian-huber at web.de>
-#   Copyright (c) 2009 Alan W. Irwin <irwin at beluga.phys.uvic.ca>
-#   Copyright (c) 2009 Rafael Laboissiere <rafael at laboissiere.net>
-#   Copyright (c) 2009 Andrew Collier <colliera at ukzn.ac.za>
-#   Copyright (c) 2009 Matteo Settenvini <matteo at member.fsf.org>
-#   Copyright (c) 2009 Horst Knorr <hk_classes at knoda.org>
-#
-#   This program is free software: you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation, either version 3 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-#serial 8
-
-AU_ALIAS([AC_PYTHON_DEVEL], [AX_PYTHON_DEVEL])
-AC_DEFUN([AX_PYTHON_DEVEL],[
-	#
-	# Allow the use of a (user set) custom python version
-	#
-	AC_ARG_VAR([PYTHON_VERSION],[The installed Python
-		version to use, for example '2.3'. This string
-		will be appended to the Python interpreter
-		canonical name.])
-
-	AC_PATH_PROG([PYTHON],[python[$PYTHON_VERSION]])
-	if test -z "$PYTHON"; then
-	   AC_MSG_ERROR([Cannot find python$PYTHON_VERSION in your system path])
-	   PYTHON_VERSION=""
-	fi
-
-	#
-	# Check for a version of Python >= 2.1.0
-	#
-	AC_MSG_CHECKING([for a version of Python >= '2.1.0'])
-	ac_supports_python_ver=`$PYTHON -c "import sys; \
-		ver = sys.version.split ()[[0]]; \
-		print (ver >= '2.1.0')"`
-	if test "$ac_supports_python_ver" != "True"; then
-		if test -z "$PYTHON_NOVERSIONCHECK"; then
-			AC_MSG_RESULT([no])
-			AC_MSG_FAILURE([
-This version of the AC@&t at _PYTHON_DEVEL macro
-doesn't work properly with versions of Python before
-2.1.0. You may need to re-run configure, setting the
-variables PYTHON_CPPFLAGS, PYTHON_LDFLAGS, PYTHON_SITE_PKG,
-PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand.
-Moreover, to disable this check, set PYTHON_NOVERSIONCHECK
-to something else than an empty string.
-])
-		else
-			AC_MSG_RESULT([skip at user request])
-		fi
-	else
-		AC_MSG_RESULT([yes])
-	fi
-
-	#
-	# if the macro parameter ``version'' is set, honour it
-	#
-	if test -n "$1"; then
-		AC_MSG_CHECKING([for a version of Python $1])
-		ac_supports_python_ver=`$PYTHON -c "import sys; \
-			ver = sys.version.split ()[[0]]; \
-			print (ver $1)"`
-		if test "$ac_supports_python_ver" = "True"; then
-		   AC_MSG_RESULT([yes])
-		else
-			AC_MSG_RESULT([no])
-			AC_MSG_ERROR([this package requires Python $1.
-If you have it installed, but it isn't the default Python
-interpreter in your system path, please pass the PYTHON_VERSION
-variable to configure. See ``configure --help'' for reference.
-])
-			PYTHON_VERSION=""
-		fi
-	fi
-
-	#
-	# Check if you have distutils, else fail
-	#
-	AC_MSG_CHECKING([for the distutils Python package])
-	ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`
-	if test -z "$ac_distutils_result"; then
-		AC_MSG_RESULT([yes])
-	else
-		AC_MSG_RESULT([no])
-		AC_MSG_ERROR([cannot import Python module "distutils".
-Please check your Python installation. The error was:
-$ac_distutils_result])
-		PYTHON_VERSION=""
-	fi
-
-	#
-	# Check for Python include path
-	#
-	AC_MSG_CHECKING([for Python include path])
-	if test -z "$PYTHON_CPPFLAGS"; then
-		python_path=`$PYTHON -c "import distutils.sysconfig; \
-			print (distutils.sysconfig.get_python_inc ());"`
-		if test -n "${python_path}"; then
-			python_path="-I$python_path"
-		fi
-		PYTHON_CPPFLAGS=$python_path
-	fi
-	AC_MSG_RESULT([$PYTHON_CPPFLAGS])
-	AC_SUBST([PYTHON_CPPFLAGS])
-
-	#
-	# Check for Python library path
-	#
-	AC_MSG_CHECKING([for Python library path])
-	if test -z "$PYTHON_LDFLAGS"; then
-		# (makes two attempts to ensure we've got a version number
-		# from the interpreter)
-		ac_python_version=`cat<<EOD | $PYTHON -
-
-# join all versioning strings, on some systems
-# major/minor numbers could be in different list elements
-from distutils.sysconfig import *
-ret = ''
-for e in get_config_vars ('VERSION'):
-	if (e != None):
-		ret += e
-print (ret)
-EOD`
-
-		if test -z "$ac_python_version"; then
-			if test -n "$PYTHON_VERSION"; then
-				ac_python_version=$PYTHON_VERSION
-			else
-				ac_python_version=`$PYTHON -c "import sys; \
-					print (sys.version[[:3]])"`
-			fi
-		fi
-
-		# Make the versioning information available to the compiler
-		AC_DEFINE_UNQUOTED([HAVE_PYTHON], ["$ac_python_version"],
-                                   [If available, contains the Python version number currently in use.])
-
-		# First, the library directory:
-		ac_python_libdir=`cat<<EOD | $PYTHON -
-
-# There should be only one
-import distutils.sysconfig
-for e in distutils.sysconfig.get_config_vars ('LIBDIR'):
-	if e != None:
-		print (e)
-		break
-EOD`
-
-		# Before checking for libpythonX.Y, we need to know
-		# the extension the OS we're on uses for libraries
-		# (we take the first one, if there's more than one fix me!):
-		ac_python_soext=`$PYTHON -c \
-		  "import distutils.sysconfig; \
-		  print (distutils.sysconfig.get_config_vars('SO')[[0]])"`
-
-		# Now, for the library:
-		ac_python_soname=`$PYTHON -c \
-		  "import distutils.sysconfig; \
-		  print (distutils.sysconfig.get_config_vars('LDLIBRARY')[[0]])"`
-
-		# Strip away extension from the end to canonicalize its name:
-		ac_python_library=`echo "$ac_python_soname" | sed "s/${ac_python_soext}$//"`
-
-		# This small piece shamelessly adapted from PostgreSQL python macro;
-		# credits goes to momjian, I think. I'd like to put the right name
-		# in the credits, if someone can point me in the right direction... ?
-		#
-		if test -n "$ac_python_libdir" -a -n "$ac_python_library" \
-			-a x"$ac_python_library" != x"$ac_python_soname"
-		then
-			# use the official shared library
-			ac_python_library=`echo "$ac_python_library" | sed "s/^lib//"`
-			PYTHON_LDFLAGS="-L$ac_python_libdir -l$ac_python_library"
-		else
-			# old way: use libpython from python_configdir
-			ac_python_libdir=`$PYTHON -c \
-			  "from distutils.sysconfig import get_python_lib as f; \
-			  import os; \
-			  print (os.path.join(f(plat_specific=1, standard_lib=1), 'config'));"`
-			PYTHON_LDFLAGS="-L$ac_python_libdir -lpython$ac_python_version"
-		fi
-
-		if test -z "PYTHON_LDFLAGS"; then
-			AC_MSG_ERROR([
-  Cannot determine location of your Python DSO. Please check it was installed with
-  dynamic libraries enabled, or try setting PYTHON_LDFLAGS by hand.
-			])
-		fi
-	fi
-	AC_MSG_RESULT([$PYTHON_LDFLAGS])
-	AC_SUBST([PYTHON_LDFLAGS])
-
-	#
-	# Check for site packages
-	#
-	AC_MSG_CHECKING([for Python site-packages path])
-	if test -z "$PYTHON_SITE_PKG"; then
-		PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
-			print (distutils.sysconfig.get_python_lib(0,0));"`
-	fi
-	AC_MSG_RESULT([$PYTHON_SITE_PKG])
-	AC_SUBST([PYTHON_SITE_PKG])
-
-	#
-	# libraries which must be linked in when embedding
-	#
-	AC_MSG_CHECKING(python extra libraries)
-	if test -z "$PYTHON_EXTRA_LIBS"; then
-	   PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \
-                conf = distutils.sysconfig.get_config_var; \
-                print (conf('LOCALMODLIBS') + ' ' + conf('LIBS') + ' ' + conf('SYSLIBS'))"`
-	fi
-	AC_MSG_RESULT([$PYTHON_EXTRA_LIBS])
-	AC_SUBST(PYTHON_EXTRA_LIBS)
-
-	#
-	# linking flags needed when embedding
-	#
-	AC_MSG_CHECKING(python extra linking flags)
-	if test -z "$PYTHON_EXTRA_LDFLAGS"; then
-		PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \
-			conf = distutils.sysconfig.get_config_var; \
-			print (conf('LINKFORSHARED'))"`
-	fi
-	AC_MSG_RESULT([$PYTHON_EXTRA_LDFLAGS])
-	AC_SUBST(PYTHON_EXTRA_LDFLAGS)
-
-	#
-	# final check to see if everything compiles alright
-	#
-	AC_MSG_CHECKING([consistency of all components of python development environment])
-	# save current global flags
-	ac_save_LIBS="$LIBS"
-	ac_save_CPPFLAGS="$CPPFLAGS"
-	LIBS="$ac_save_LIBS $PYTHON_LDFLAGS $PYTHON_EXTRA_LDFLAGS $PYTHON_EXTRA_LIBS"
-	CPPFLAGS="$ac_save_CPPFLAGS $PYTHON_CPPFLAGS"
-	AC_LANG_PUSH([C])
-	AC_LINK_IFELSE([
-		AC_LANG_PROGRAM([[#include <Python.h>]],
-				[[Py_Initialize();]])
-		],[pythonexists=yes],[pythonexists=no])
-	AC_LANG_POP([C])
-	# turn back to default flags
-	CPPFLAGS="$ac_save_CPPFLAGS"
-	LIBS="$ac_save_LIBS"
-
-	AC_MSG_RESULT([$pythonexists])
-
-        if test ! "x$pythonexists" = "xyes"; then
-	   AC_MSG_FAILURE([
-  Could not link test program to Python. Maybe the main Python library has been
-  installed in some non-standard library path. If so, pass it to configure,
-  via the LDFLAGS environment variable.
-  Example: ./configure LDFLAGS="-L/usr/non-standard-path/python/lib"
-  ============================================================================
-   ERROR!
-   You probably have to install the development version of the Python package
-   for your distribution.  The exact name of this package varies among them.
-  ============================================================================
-	   ])
-	  PYTHON_VERSION=""
-	fi
-
-	#
-	# all done!
-	#
-])
diff --git a/m4/ax_rpm_init.m4 b/m4/ax_rpm_init.m4
deleted file mode 100644
index da84893..0000000
--- a/m4/ax_rpm_init.m4
+++ /dev/null
@@ -1,258 +0,0 @@
-# ===========================================================================
-#        http://www.gnu.org/software/autoconf-archive/ax_rpm_init.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_RPM_INIT
-#
-# DESCRIPTION
-#
-#   Setup variables for creation of rpms. It will define several variables
-#   useful for creating rpms on a system where rpms are supported.
-#   Currently, I requires changes to Makefile.am to function properly (see
-#   the example below).
-#
-#   Also note that I do not use any non-UNIX OSs (and for the most part, I
-#   only use RedHat), so this is probably generally not useful for other
-#   systems.
-#
-#   Required setup:
-#
-#   In configure.in:
-#
-#     dnl For my rpm.m4 macros
-#     RPM_RELEASE=1
-#     AC_SUBST(RPM_RELEASE)
-#
-#     AX_RPM_INIT
-#     dnl Enable or disable the rpm making rules in Makefile.am
-#     AM_CONDITIONAL(MAKE_RPMS, test x$make_rpms = xtrue)
-#
-#   Furthermore, the %GNUconfigure rpm macro has a problem in that it does
-#   not define CXXFLAGS for the target system correctly, so for compiling
-#   C++ code, add the following line _before_ calling AC_PROG_CXX:
-#
-#     dnl This is a little hack to make this work with rpm better (see mysql++.spec.in)
-#     test -z "$CXXFLAGS" && CXXFLAGS="${CFLAGS}"
-#
-#   Changes to Makefile.am (I am trying to get rid of this step; suggestions
-#   invited):
-#
-#     if MAKE_RPMS
-#     rpm: @RPM_TARGET@
-#
-#     .PHONY: rpm
-#
-#     $(RPM_TARGET): $(DISTFILES)
-#       ${MAKE} dist
-#       -mkdir -p $(RPM_DIR)/SRPMS
-#       -mkdir -p `dirname $(RPM_TARGET)`
-#       $(RPM_PROG) $(RPM_ARGS) $(RPM_TARBALL)
-#       @echo Congratulations, $(RPM_TARGET) "(and friends)" should now exist.
-#     else
-#     endif
-#
-#   Also, it works best with a XXXX.spec.in file like the following (this is
-#   way down on the wishlist, but a program to generate the skeleton spec.in
-#   much like autoscan would just kick butt!):
-#
-#     ---------- 8< ----------
-#     # -*- Mode:rpm-spec -*-
-#     # mysql++.spec.in
-#     Summary: Your package description goes here
-#     %define rel @RPM_RELEASE@
-#
-#     %define version @VERSION@
-#     %define pkgname @PACKAGE@
-#     %define prefix /usr
-#
-#     %define lt_release @LT_RELEASE@
-#     %define lt_version @LT_CURRENT at .@LT_REVISION at .@LT_AGE@
-#
-#     # This is a hack until I can figure out how to better handle replacing
-#     # autoconf macros... (gotta love autoconf...)
-#     %define __aclocal   aclocal || aclocal -I ./macros
-#     %define configure_args  @RPM_CONFIGURE_ARGS@
-#
-#     Name: %{pkgname}
-#     Version: %{version}
-#     Release: %{rel}
-#
-#     Copyright: LGPL
-#     Group: # your group name goes here
-#     Source: %{pkgname}-%{version}.tar.gz
-#     Requires: # additional requirements
-#     Buildroot: /tmp/%{pkgname}-root
-#     URL: http://yoururl.go.here
-#     Prefix: %{prefix}
-#     BuildArchitectures: # Target platforms, i.e., i586
-#     Packager: Your Name <youremail at your.address>
-#
-#     %description
-#     Your package description
-#
-#     %changelog
-#
-#     %prep
-#     %setup
-#     #%patch
-#
-#     %build
-#     %GNUconfigure %{configure_args}
-#     # This is why we copy the CFLAGS to the CXXFLAGS in configure.in
-#     # CFLAGS="%{optflags}" CXXFLAGS="%{optflags}" ./configure %{_target_platform} --prefix=%{prefix}
-#     make
-#
-#     %install
-#     # To make things work with BUILDROOT
-#     if [ "$RPM_BUILD_ROOT" != "/tmp/%{pkgname}-root" ]
-#     then
-#       echo
-#       echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-#       echo @                                                                    @
-#       echo @  RPM_BUILD_ROOT is not what I expected.  Please clean it yourself. @
-#       echo @                                                                    @
-#       echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-#       echo
-#     else
-#       echo Cleaning RPM_BUILD_ROOT: "$RPM_BUILD_ROOT"
-#       rm -rf "$RPM_BUILD_ROOT"
-#     fi
-#     make DESTDIR="$RPM_BUILD_ROOT" install
-#
-#     %clean
-#     # Call me paranoid, but I do not want to be responsible for nuking
-#     # someone's harddrive!
-#     if [ "$RPM_BUILD_ROOT" != "/tmp/%{pkgname}-root" ]
-#     then
-#       echo
-#       echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-#       echo @                                                                    @
-#       echo @  RPM_BUILD_ROOT is not what I expected.  Please clean it yourself. @
-#       echo @                                                                    @
-#       echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-#       echo
-#     else
-#       echo Cleaning RPM_BUILD_ROOT: "$RPM_BUILD_ROOT"
-#       rm -rf "$RPM_BUILD_ROOT"
-#     fi
-#
-#     %files
-#     %defattr(-, root, root)
-#     # Your application file list goes here
-#     # %{prefix}/lib/lib*.so*
-#     %doc COPYRIGHT ChangeLog README AUTHORS NEWS
-#     %doc doc/*
-#
-#     # If you install a library
-#     %post -p /sbin/ldconfig
-#
-#     # If you install a library
-#     %postun -p /sbin/ldconfig
-#
-#     %package devel
-#     Summary: Development files for %{pkgname}
-#     Group: Applications/Databases
-#     %description devel
-#     Development files for %{pkgname}.
-#
-#     %files devel
-#     %defattr(-, root, root)
-#     # Your development files go here
-#     # Programmers documentation goes here
-#     %doc doc
-#
-#     # end of file
-#     ---------- >8 ----------
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Dale K. Hawkins <dhawkins at cdrgts.com>
-#
-#   Copying and distribution of this file, with or without modification, are
-#   permitted in any medium without royalty provided the copyright notice
-#   and this notice are preserved. This file is offered as-is, without any
-#   warranty.
-
-#  	Modified by Daniel Varela <dvarela at ecmwf.int> 2011
- 
-#serial 5
-
-dnl AX_RPM_INIT
-dnl Figure out how to create rpms for this system and setup for an
-dnl automake target
-
-AU_ALIAS([AM_RPM_INIT], [AX_RPM_INIT])
-AC_DEFUN([AX_RPM_INIT],
-[dnl
-AC_REQUIRE([AC_CANONICAL_HOST])
-RPM_HOST_CPU=${host_cpu}
-RPM_HOST_VENDOR=${host_vendor}
-RPM_HOST_OS=${host_os}
-
-dnl Find the RPM program
-AC_ARG_WITH(rpmbuild-prog,[  --with-rpmbuild-prog=PROG   Which rpmbuild to use (optional)],
-            rpmbuild_prog="$withval", rpmbuild_prog="")
-
-AC_ARG_WITH(rpmbuild-extra-args, [  --with-rpmbuild-extra-args=ARGS       Run rpmbuild with extra arguments (defaults to none)],
-                rpmbuild_extra_args="$withval", rpmbuild_extra_args="")
-
-AC_ARG_WITH(rpm-release, [  --with-rpm-release=NUMBER       The rpms will use this release number  (defaults to 1)],
-                rpm_release="$withval", rpm_release=1)
-
-RPM_TARGET=""
-RPM_RELEASE=$rpm_release
-
-AC_PATH_PROG(RPMBUILD_PROG, rpmbuild, no)
-no_rpm=no
-
-if test "$RPMBUILD_PROG" = "no"
-then
-	echo rpm package building is disabled. Set the path to the rpmbuild program using  --with-rpmbuild-prog=PROG
-    no_rpm=yes
-    RPM_MAKE_RULES=""
-else
-#   AC_MSG_CHECKING(how rpmbuild sets %{_rpmdir})
-    rpmdir=`$RPMBUILD_PROG --eval %{_rpmdir} 2> /dev/null`
-    if test x$rpmdir = x"%{_rpmdir}" ; then
-        AC_MSG_RESULT([not set (cannot build rpms?)])
-        echo *** Could not determine the value of %{_rpmdir}
-        echo *** This could be because it is not set, or your version of rpm does not set it
-        echo *** It must be set in order to generate the correct rpm generation commands
-        echo ***
-        echo *** You might still be able to create rpms, but I could not automate it for you
-        echo *** BTW, if you know this is wrong, please help to improve the rpm.m4 module
-        echo *** Send corrections, updates and fixes to dhawkins at cdrgts.com.  Thanks.
-#    else
-#        AC_MSG_RESULT([$rpmdir])
-    fi
-    AC_MSG_CHECKING(how rpm sets %{_rpmfilename})
-    rpmfilename=`$RPMBUILD_PROG --eval %{_rpmfilename} 2> /dev/null | sed "s/%{ARCH}/${RPM_HOST_CPU}/g" | sed "s/%{NAME}/$PACKAGE/g" | sed "s/%{VERSION}/${VERSION}/g" | sed "s/%{RELEASE}/${RPM_RELEASE}/g"`
-    AC_MSG_RESULT([$rpmfilename])
-
-    RPM_DIR=${rpmdir}
-    RPM_TARGET=$rpmfilename
-    RPM_ARGS="-ta $rpmbuild_extra_args"
-    RPM_TARBALL=${PACKAGE}-${VERSION}.tar.gz
-
-fi
-
-case "${no_rpm}" in
-  yes) make_rpms=false;;
-  no) make_rpms=true;;
-  *) AC_MSG_WARN([bad value ${no_rpm} for no_rpm (not making rpms)])
-     make_rpms=false;;
-esac
-
-AC_SUBST(RPM_DIR)
-AC_SUBST(RPM_TARGET)
-AC_SUBST(RPM_ARGS)
-AC_SUBST(RPM_TARBALL)
-AC_SUBST(RPM_HOST_CPU)
-AC_SUBST(RPM_HOST_VENDOR)
-AC_SUBST(RPM_HOST_OS)
-
-RPM_CONFIGURE_ARGS=${ac_configure_args}
-AC_SUBST(RPM_CONFIGURE_ARGS)
-])
diff --git a/m4/libtool.m4 b/m4/libtool.m4
deleted file mode 100644
index 44e0ecf..0000000
--- a/m4/libtool.m4
+++ /dev/null
@@ -1,7982 +0,0 @@
-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-m4_define([_LT_COPYING], [dnl
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-])
-
-# serial 57 LT_INIT
-
-
-# LT_PREREQ(VERSION)
-# ------------------
-# Complain and exit if this libtool version is less that VERSION.
-m4_defun([LT_PREREQ],
-[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
-       [m4_default([$3],
-		   [m4_fatal([Libtool version $1 or higher is required],
-		             63)])],
-       [$2])])
-
-
-# _LT_CHECK_BUILDDIR
-# ------------------
-# Complain if the absolute build directory name contains unusual characters
-m4_defun([_LT_CHECK_BUILDDIR],
-[case `pwd` in
-  *\ * | *\	*)
-    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
-esac
-])
-
-
-# LT_INIT([OPTIONS])
-# ------------------
-AC_DEFUN([LT_INIT],
-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
-AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
-AC_BEFORE([$0], [LT_LANG])dnl
-AC_BEFORE([$0], [LT_OUTPUT])dnl
-AC_BEFORE([$0], [LTDL_INIT])dnl
-m4_require([_LT_CHECK_BUILDDIR])dnl
-
-dnl Autoconf doesn't catch unexpanded LT_ macros by default:
-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
-dnl unless we require an AC_DEFUNed macro:
-AC_REQUIRE([LTOPTIONS_VERSION])dnl
-AC_REQUIRE([LTSUGAR_VERSION])dnl
-AC_REQUIRE([LTVERSION_VERSION])dnl
-AC_REQUIRE([LTOBSOLETE_VERSION])dnl
-m4_require([_LT_PROG_LTMAIN])dnl
-
-_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
-
-dnl Parse OPTIONS
-_LT_SET_OPTIONS([$0], [$1])
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-_LT_SETUP
-
-# Only expand once:
-m4_define([LT_INIT])
-])# LT_INIT
-
-# Old names:
-AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
-AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
-dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
-
-
-# _LT_CC_BASENAME(CC)
-# -------------------
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-m4_defun([_LT_CC_BASENAME],
-[for cc_temp in $1""; do
-  case $cc_temp in
-    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
-    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-])
-
-
-# _LT_FILEUTILS_DEFAULTS
-# ----------------------
-# It is okay to use these file commands and assume they have been set
-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
-m4_defun([_LT_FILEUTILS_DEFAULTS],
-[: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-])# _LT_FILEUTILS_DEFAULTS
-
-
-# _LT_SETUP
-# ---------
-m4_defun([_LT_SETUP],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
-
-_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
-dnl
-_LT_DECL([], [host_alias], [0], [The host system])dnl
-_LT_DECL([], [host], [0])dnl
-_LT_DECL([], [host_os], [0])dnl
-dnl
-_LT_DECL([], [build_alias], [0], [The build system])dnl
-_LT_DECL([], [build], [0])dnl
-_LT_DECL([], [build_os], [0])dnl
-dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-test -z "$LN_S" && LN_S="ln -s"
-_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
-dnl
-AC_REQUIRE([LT_CMD_MAX_LEN])dnl
-_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
-_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
-dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
-m4_require([_LT_CMD_RELOAD])dnl
-m4_require([_LT_CHECK_MAGIC_METHOD])dnl
-m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
-m4_require([_LT_CMD_OLD_ARCHIVE])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_WITH_SYSROOT])dnl
-
-_LT_CONFIG_LIBTOOL_INIT([
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-])
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-_LT_CHECK_OBJDIR
-
-m4_require([_LT_TAG_COMPILER])dnl
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-_LT_CC_BASENAME([$compiler])
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    _LT_PATH_MAGIC
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-LT_SUPPORTED_TAG([CC])
-_LT_LANG_C_CONFIG
-_LT_LANG_DEFAULT_CONFIG
-_LT_CONFIG_COMMANDS
-])# _LT_SETUP
-
-
-# _LT_PREPARE_SED_QUOTE_VARS
-# --------------------------
-# Define a few sed substitution that help us do robust quoting.
-m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
-[# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([["`\\]]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-])
-
-# _LT_PROG_LTMAIN
-# ---------------
-# Note that this code is called both from `configure', and `config.status'
-# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
-# `config.status' has no value for ac_aux_dir unless we are using Automake,
-# so we pass a copy along to make sure it has a sensible value anyway.
-m4_defun([_LT_PROG_LTMAIN],
-[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
-_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
-ltmain="$ac_aux_dir/ltmain.sh"
-])# _LT_PROG_LTMAIN
-
-
-## ------------------------------------- ##
-## Accumulate code for creating libtool. ##
-## ------------------------------------- ##
-
-# So that we can recreate a full libtool script including additional
-# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
-# in macros and then make a single call at the end using the `libtool'
-# label.
-
-
-# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
-# ----------------------------------------
-# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL_INIT],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_INIT])
-
-
-# _LT_CONFIG_LIBTOOL([COMMANDS])
-# ------------------------------
-# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
-
-
-# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
-# -----------------------------------------------------
-m4_defun([_LT_CONFIG_SAVE_COMMANDS],
-[_LT_CONFIG_LIBTOOL([$1])
-_LT_CONFIG_LIBTOOL_INIT([$2])
-])
-
-
-# _LT_FORMAT_COMMENT([COMMENT])
-# -----------------------------
-# Add leading comment marks to the start of each line, and a trailing
-# full-stop to the whole comment if one is not present already.
-m4_define([_LT_FORMAT_COMMENT],
-[m4_ifval([$1], [
-m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
-              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
-)])
-
-
-
-## ------------------------ ##
-## FIXME: Eliminate VARNAME ##
-## ------------------------ ##
-
-
-# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
-# -------------------------------------------------------------------
-# CONFIGNAME is the name given to the value in the libtool script.
-# VARNAME is the (base) name used in the configure script.
-# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
-# VARNAME.  Any other value will be used directly.
-m4_define([_LT_DECL],
-[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
-    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
-	[m4_ifval([$1], [$1], [$2])])
-    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
-    m4_ifval([$4],
-	[lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
-    lt_dict_add_subkey([lt_decl_dict], [$2],
-	[tagged?], [m4_ifval([$5], [yes], [no])])])
-])
-
-
-# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
-# --------------------------------------------------------
-m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
-
-
-# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_tag_varnames],
-[_lt_decl_filter([tagged?], [yes], $@)])
-
-
-# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
-# ---------------------------------------------------------
-m4_define([_lt_decl_filter],
-[m4_case([$#],
-  [0], [m4_fatal([$0: too few arguments: $#])],
-  [1], [m4_fatal([$0: too few arguments: $#: $1])],
-  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
-  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
-  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
-])
-
-
-# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
-# --------------------------------------------------
-m4_define([lt_decl_quote_varnames],
-[_lt_decl_filter([value], [1], $@)])
-
-
-# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_dquote_varnames],
-[_lt_decl_filter([value], [2], $@)])
-
-
-# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_varnames_tagged],
-[m4_assert([$# <= 2])dnl
-_$0(m4_quote(m4_default([$1], [[, ]])),
-    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
-    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
-m4_define([_lt_decl_varnames_tagged],
-[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
-
-
-# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_all_varnames],
-[_$0(m4_quote(m4_default([$1], [[, ]])),
-     m4_if([$2], [],
-	   m4_quote(lt_decl_varnames),
-	m4_quote(m4_shift($@))))[]dnl
-])
-m4_define([_lt_decl_all_varnames],
-[lt_join($@, lt_decl_varnames_tagged([$1],
-			lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
-])
-
-
-# _LT_CONFIG_STATUS_DECLARE([VARNAME])
-# ------------------------------------
-# Quote a variable value, and forward it to `config.status' so that its
-# declaration there will have the same value as in `configure'.  VARNAME
-# must have a single quote delimited value for this to work.
-m4_define([_LT_CONFIG_STATUS_DECLARE],
-[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
-
-
-# _LT_CONFIG_STATUS_DECLARATIONS
-# ------------------------------
-# We delimit libtool config variables with single quotes, so when
-# we write them to config.status, we have to be sure to quote all
-# embedded single quotes properly.  In configure, this macro expands
-# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
-#
-#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
-m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
-    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAGS
-# ----------------
-# Output comment and list of tags supported by the script
-m4_defun([_LT_LIBTOOL_TAGS],
-[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
-available_tags="_LT_TAGS"dnl
-])
-
-
-# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
-# -----------------------------------
-# Extract the dictionary values for VARNAME (optionally with TAG) and
-# expand to a commented shell variable setting:
-#
-#    # Some comment about what VAR is for.
-#    visible_name=$lt_internal_name
-m4_define([_LT_LIBTOOL_DECLARE],
-[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
-					   [description])))[]dnl
-m4_pushdef([_libtool_name],
-    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
-m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
-    [0], [_libtool_name=[$]$1],
-    [1], [_libtool_name=$lt_[]$1],
-    [2], [_libtool_name=$lt_[]$1],
-    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
-m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
-])
-
-
-# _LT_LIBTOOL_CONFIG_VARS
-# -----------------------
-# Produce commented declarations of non-tagged libtool config variables
-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
-# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
-# section) are produced by _LT_LIBTOOL_TAG_VARS.
-m4_defun([_LT_LIBTOOL_CONFIG_VARS],
-[m4_foreach([_lt_var],
-    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAG_VARS(TAG)
-# -------------------------
-m4_define([_LT_LIBTOOL_TAG_VARS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
-
-
-# _LT_TAGVAR(VARNAME, [TAGNAME])
-# ------------------------------
-m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
-
-
-# _LT_CONFIG_COMMANDS
-# -------------------
-# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
-# variables for single and double quote escaping we saved from calls
-# to _LT_DECL, we can put quote escaped variables declarations
-# into `config.status', and then the shell code to quote escape them in
-# for loops in `config.status'.  Finally, any additional code accumulated
-# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
-m4_defun([_LT_CONFIG_COMMANDS],
-[AC_PROVIDE_IFELSE([LT_OUTPUT],
-	dnl If the libtool generation code has been placed in $CONFIG_LT,
-	dnl instead of duplicating it all over again into config.status,
-	dnl then we will have config.status run $CONFIG_LT later, so it
-	dnl needs to know what name is stored there:
-        [AC_CONFIG_COMMANDS([libtool],
-            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
-    dnl If the libtool generation code is destined for config.status,
-    dnl expand the accumulated commands and init code now:
-    [AC_CONFIG_COMMANDS([libtool],
-        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
-])#_LT_CONFIG_COMMANDS
-
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
-[
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-_LT_CONFIG_STATUS_DECLARATIONS
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$[]1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_quote_varnames); do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_dquote_varnames); do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-_LT_OUTPUT_LIBTOOL_INIT
-])
-
-# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
-# ------------------------------------
-# Generate a child script FILE with all initialization necessary to
-# reuse the environment learned by the parent script, and make the
-# file executable.  If COMMENT is supplied, it is inserted after the
-# `#!' sequence but before initialization text begins.  After this
-# macro, additional text can be appended to FILE to form the body of
-# the child script.  The macro ends with non-zero status if the
-# file could not be fully written (such as if the disk is full).
-m4_ifdef([AS_INIT_GENERATED],
-[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
-[m4_defun([_LT_GENERATED_FILE_INIT],
-[m4_require([AS_PREPARE])]dnl
-[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
-[lt_write_fail=0
-cat >$1 <<_ASEOF || lt_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-$2
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$1 <<\_ASEOF || lt_write_fail=1
-AS_SHELL_SANITIZE
-_AS_PREPARE
-exec AS_MESSAGE_FD>&1
-_ASEOF
-test $lt_write_fail = 0 && chmod +x $1[]dnl
-m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
-
-# LT_OUTPUT
-# ---------
-# This macro allows early generation of the libtool script (before
-# AC_OUTPUT is called), incase it is used in configure for compilation
-# tests.
-AC_DEFUN([LT_OUTPUT],
-[: ${CONFIG_LT=./config.lt}
-AC_MSG_NOTICE([creating $CONFIG_LT])
-_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
-[# Run this file to recreate a libtool stub with the current configuration.])
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-lt_cl_silent=false
-exec AS_MESSAGE_LOG_FD>>config.log
-{
-  echo
-  AS_BOX([Running $as_me.])
-} >&AS_MESSAGE_LOG_FD
-
-lt_cl_help="\
-\`$as_me' creates a local libtool stub from the current configuration,
-for use in further configure time tests before the real libtool is
-generated.
-
-Usage: $[0] [[OPTIONS]]
-
-  -h, --help      print this help, then exit
-  -V, --version   print version number, then exit
-  -q, --quiet     do not print progress messages
-  -d, --debug     don't remove temporary files
-
-Report bugs to <bug-libtool at gnu.org>."
-
-lt_cl_version="\
-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
-configured by $[0], generated by m4_PACKAGE_STRING.
-
-Copyright (C) 2011 Free Software Foundation, Inc.
-This config.lt script is free software; the Free Software Foundation
-gives unlimited permision to copy, distribute and modify it."
-
-while test $[#] != 0
-do
-  case $[1] in
-    --version | --v* | -V )
-      echo "$lt_cl_version"; exit 0 ;;
-    --help | --h* | -h )
-      echo "$lt_cl_help"; exit 0 ;;
-    --debug | --d* | -d )
-      debug=: ;;
-    --quiet | --q* | --silent | --s* | -q )
-      lt_cl_silent=: ;;
-
-    -*) AC_MSG_ERROR([unrecognized option: $[1]
-Try \`$[0] --help' for more information.]) ;;
-
-    *) AC_MSG_ERROR([unrecognized argument: $[1]
-Try \`$[0] --help' for more information.]) ;;
-  esac
-  shift
-done
-
-if $lt_cl_silent; then
-  exec AS_MESSAGE_FD>/dev/null
-fi
-_LTEOF
-
-cat >>"$CONFIG_LT" <<_LTEOF
-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AC_MSG_NOTICE([creating $ofile])
-_LT_OUTPUT_LIBTOOL_COMMANDS
-AS_EXIT(0)
-_LTEOF
-chmod +x "$CONFIG_LT"
-
-# configure is writing to config.log, but config.lt does its own redirection,
-# appending to config.log, which fails on DOS, as config.log is still kept
-# open by configure.  Here we exec the FD to /dev/null, effectively closing
-# config.log, so it can be properly (re)opened and appended to by config.lt.
-lt_cl_success=:
-test "$silent" = yes &&
-  lt_config_lt_args="$lt_config_lt_args --quiet"
-exec AS_MESSAGE_LOG_FD>/dev/null
-$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
-exec AS_MESSAGE_LOG_FD>>config.log
-$lt_cl_success || AS_EXIT(1)
-])# LT_OUTPUT
-
-
-# _LT_CONFIG(TAG)
-# ---------------
-# If TAG is the built-in tag, create an initial libtool script with a
-# default configuration from the untagged config vars.  Otherwise add code
-# to config.status for appending the configuration named by TAG from the
-# matching tagged config vars.
-m4_defun([_LT_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_CONFIG_SAVE_COMMANDS([
-  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
-  m4_if(_LT_TAG, [C], [
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-_LT_COPYING
-_LT_LIBTOOL_TAGS
-
-# ### BEGIN LIBTOOL CONFIG
-_LT_LIBTOOL_CONFIG_VARS
-_LT_LIBTOOL_TAG_VARS
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-  _LT_PROG_LTMAIN
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-  _LT_PROG_REPLACE_SHELLFNS
-
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-],
-[cat <<_LT_EOF >> "$ofile"
-
-dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
-dnl in a comment (ie after a #).
-# ### BEGIN LIBTOOL TAG CONFIG: $1
-_LT_LIBTOOL_TAG_VARS(_LT_TAG)
-# ### END LIBTOOL TAG CONFIG: $1
-_LT_EOF
-])dnl /m4_if
-],
-[m4_if([$1], [], [
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'], [])
-])dnl /_LT_CONFIG_SAVE_COMMANDS
-])# _LT_CONFIG
-
-
-# LT_SUPPORTED_TAG(TAG)
-# ---------------------
-# Trace this macro to discover what tags are supported by the libtool
-# --tag option, using:
-#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
-AC_DEFUN([LT_SUPPORTED_TAG], [])
-
-
-# C support is built-in for now
-m4_define([_LT_LANG_C_enabled], [])
-m4_define([_LT_TAGS], [])
-
-
-# LT_LANG(LANG)
-# -------------
-# Enable libtool support for the given language if not already enabled.
-AC_DEFUN([LT_LANG],
-[AC_BEFORE([$0], [LT_OUTPUT])dnl
-m4_case([$1],
-  [C],			[_LT_LANG(C)],
-  [C++],		[_LT_LANG(CXX)],
-  [Go],			[_LT_LANG(GO)],
-  [Java],		[_LT_LANG(GCJ)],
-  [Fortran 77],		[_LT_LANG(F77)],
-  [Fortran],		[_LT_LANG(FC)],
-  [Windows Resource],	[_LT_LANG(RC)],
-  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
-    [_LT_LANG($1)],
-    [m4_fatal([$0: unsupported language: "$1"])])])dnl
-])# LT_LANG
-
-
-# _LT_LANG(LANGNAME)
-# ------------------
-m4_defun([_LT_LANG],
-[m4_ifdef([_LT_LANG_]$1[_enabled], [],
-  [LT_SUPPORTED_TAG([$1])dnl
-  m4_append([_LT_TAGS], [$1 ])dnl
-  m4_define([_LT_LANG_]$1[_enabled], [])dnl
-  _LT_LANG_$1_CONFIG($1)])dnl
-])# _LT_LANG
-
-
-m4_ifndef([AC_PROG_GO], [
-############################################################
-# NOTE: This macro has been submitted for inclusion into   #
-#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
-#  a released version of Autoconf we should remove this    #
-#  macro and use it instead.                               #
-############################################################
-m4_defun([AC_PROG_GO],
-[AC_LANG_PUSH(Go)dnl
-AC_ARG_VAR([GOC],     [Go compiler command])dnl
-AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
-_AC_ARG_VAR_LDFLAGS()dnl
-AC_CHECK_TOOL(GOC, gccgo)
-if test -z "$GOC"; then
-  if test -n "$ac_tool_prefix"; then
-    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
-  fi
-fi
-if test -z "$GOC"; then
-  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
-fi
-])#m4_defun
-])#m4_ifndef
-
-
-# _LT_LANG_DEFAULT_CONFIG
-# -----------------------
-m4_defun([_LT_LANG_DEFAULT_CONFIG],
-[AC_PROVIDE_IFELSE([AC_PROG_CXX],
-  [LT_LANG(CXX)],
-  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_F77],
-  [LT_LANG(F77)],
-  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_FC],
-  [LT_LANG(FC)],
-  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
-
-dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
-dnl pulling things in needlessly.
-AC_PROVIDE_IFELSE([AC_PROG_GCJ],
-  [LT_LANG(GCJ)],
-  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
-    [LT_LANG(GCJ)],
-    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
-      [LT_LANG(GCJ)],
-      [m4_ifdef([AC_PROG_GCJ],
-	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([A][M_PROG_GCJ],
-	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([LT_PROG_GCJ],
-	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
-
-AC_PROVIDE_IFELSE([AC_PROG_GO],
-  [LT_LANG(GO)],
-  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
-
-AC_PROVIDE_IFELSE([LT_PROG_RC],
-  [LT_LANG(RC)],
-  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
-])# _LT_LANG_DEFAULT_CONFIG
-
-# Obsolete macros:
-AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
-AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
-AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
-AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
-AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
-dnl AC_DEFUN([AC_LIBTOOL_F77], [])
-dnl AC_DEFUN([AC_LIBTOOL_FC], [])
-dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
-dnl AC_DEFUN([AC_LIBTOOL_RC], [])
-
-
-# _LT_TAG_COMPILER
-# ----------------
-m4_defun([_LT_TAG_COMPILER],
-[AC_REQUIRE([AC_PROG_CC])dnl
-
-_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
-_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
-_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
-_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-])# _LT_TAG_COMPILER
-
-
-# _LT_COMPILER_BOILERPLATE
-# ------------------------
-# Check for compiler boilerplate output or warnings with
-# the simple compiler test code.
-m4_defun([_LT_COMPILER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-])# _LT_COMPILER_BOILERPLATE
-
-
-# _LT_LINKER_BOILERPLATE
-# ----------------------
-# Check for linker boilerplate output or warnings with
-# the simple link test code.
-m4_defun([_LT_LINKER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-])# _LT_LINKER_BOILERPLATE
-
-# _LT_REQUIRED_DARWIN_CHECKS
-# -------------------------
-m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
-  case $host_os in
-    rhapsody* | darwin*)
-    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
-    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
-    AC_CHECK_TOOL([LIPO], [lipo], [:])
-    AC_CHECK_TOOL([OTOOL], [otool], [:])
-    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
-    _LT_DECL([], [DSYMUTIL], [1],
-      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
-    _LT_DECL([], [NMEDIT], [1],
-      [Tool to change global to local symbols on Mac OS X])
-    _LT_DECL([], [LIPO], [1],
-      [Tool to manipulate fat objects and archives on Mac OS X])
-    _LT_DECL([], [OTOOL], [1],
-      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
-    _LT_DECL([], [OTOOL64], [1],
-      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
-
-    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
-      [lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-	# By default we will add the -single_module flag. You can override
-	# by either setting the environment variable LT_MULTI_MODULE
-	# non-empty at configure time, or by adding -multi_module to the
-	# link flags.
-	rm -rf libconftest.dylib*
-	echo "int foo(void){return 1;}" > conftest.c
-	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
-	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-	# If there is a non-empty error log, and "single_module"
-	# appears in it, assume the flag caused a linker warning
-        if test -s conftest.err && $GREP single_module conftest.err; then
-	  cat conftest.err >&AS_MESSAGE_LOG_FD
-	# Otherwise, if the output was created with a 0 exit code from
-	# the compiler, it worked.
-	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
-	  lt_cv_apple_cc_single_mod=yes
-	else
-	  cat conftest.err >&AS_MESSAGE_LOG_FD
-	fi
-	rm -rf libconftest.dylib*
-	rm -f conftest.*
-      fi])
-
-    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
-      [lt_cv_ld_exported_symbols_list],
-      [lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-	[lt_cv_ld_exported_symbols_list=yes],
-	[lt_cv_ld_exported_symbols_list=no])
-	LDFLAGS="$save_LDFLAGS"
-    ])
-
-    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
-      [lt_cv_ld_force_load=no
-      cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
-      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
-      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
-      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
-      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
-      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
-      cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
-      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-      _lt_result=$?
-      if test -s conftest.err && $GREP force_load conftest.err; then
-	cat conftest.err >&AS_MESSAGE_LOG_FD
-      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
-	lt_cv_ld_force_load=yes
-      else
-	cat conftest.err >&AS_MESSAGE_LOG_FD
-      fi
-        rm -f conftest.err libconftest.a conftest conftest.c
-        rm -rf conftest.dSYM
-    ])
-    case $host_os in
-    rhapsody* | darwin1.[[012]])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[[012]]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-])
-
-
-# _LT_DARWIN_LINKER_FEATURES([TAG])
-# ---------------------------------
-# Checks for linker and compiler features on darwin
-m4_defun([_LT_DARWIN_LINKER_FEATURES],
-[
-  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_automatic, $1)=yes
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
-                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
-  else
-    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
-  fi
-  _LT_TAGVAR(link_all_deplibs, $1)=yes
-  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    m4_if([$1], [CXX],
-[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
-    fi
-],[])
-  else
-  _LT_TAGVAR(ld_shlibs, $1)=no
-  fi
-])
-
-# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
-# ----------------------------------
-# Links a minimal program and checks the executable
-# for the system default hardcoded library path. In most cases,
-# this is /usr/lib:/lib, but when the MPI compilers are used
-# the location of the communication and MPI libs are included too.
-# If we don't find anything, use the default library path according
-# to the aix ld manual.
-# Store the results from the different compilers for each TAGNAME.
-# Allow to override them for all tags through lt_cv_aix_libpath.
-m4_defun([_LT_SYS_MODULE_PATH_AIX],
-[m4_require([_LT_DECL_SED])dnl
-if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
-  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
-  lt_aix_libpath_sed='[
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }]'
-  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi],[])
-  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
-  fi
-  ])
-  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
-fi
-])# _LT_SYS_MODULE_PATH_AIX
-
-
-# _LT_SHELL_INIT(ARG)
-# -------------------
-m4_define([_LT_SHELL_INIT],
-[m4_divert_text([M4SH-INIT], [$1
-])])# _LT_SHELL_INIT
-
-
-
-# _LT_PROG_ECHO_BACKSLASH
-# -----------------------
-# Find how we can fake an echo command that does not interpret backslash.
-# In particular, with Autoconf 2.60 or later we add some code to the start
-# of the generated configure script which will find a shell with a builtin
-# printf (which we can use as an echo command).
-m4_defun([_LT_PROG_ECHO_BACKSLASH],
-[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-AC_MSG_CHECKING([how to print strings])
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
-else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$[]1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "$*" 
-}
-
-case "$ECHO" in
-  printf*) AC_MSG_RESULT([printf]) ;;
-  print*) AC_MSG_RESULT([print -r]) ;;
-  *) AC_MSG_RESULT([cat]) ;;
-esac
-
-m4_ifdef([_AS_DETECT_SUGGESTED],
-[_AS_DETECT_SUGGESTED([
-  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
-    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-    PATH=/empty FPATH=/empty; export PATH FPATH
-    test "X`printf %s $ECHO`" = "X$ECHO" \
-      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
-
-_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
-_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
-])# _LT_PROG_ECHO_BACKSLASH
-
-
-# _LT_WITH_SYSROOT
-# ----------------
-AC_DEFUN([_LT_WITH_SYSROOT],
-[AC_MSG_CHECKING([for sysroot])
-AC_ARG_WITH([sysroot],
-[  --with-sysroot[=DIR] Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).],
-[], [with_sysroot=no])
-
-dnl lt_sysroot will always be passed unquoted.  We quote it here
-dnl in case the user passed a directory name.
-lt_sysroot=
-case ${with_sysroot} in #(
- yes)
-   if test "$GCC" = yes; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   AC_MSG_RESULT([${with_sysroot}])
-   AC_MSG_ERROR([The sysroot must be an absolute path.])
-   ;;
-esac
-
- AC_MSG_RESULT([${lt_sysroot:-no}])
-_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
-[dependent libraries, and in which our libraries should be installed.])])
-
-# _LT_ENABLE_LOCK
-# ---------------
-m4_defun([_LT_ENABLE_LOCK],
-[AC_ARG_ENABLE([libtool-lock],
-  [AS_HELP_STRING([--disable-libtool-lock],
-    [avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-	HPUX_IA64_MODE="32"
-	;;
-      *ELF-64*)
-	HPUX_IA64_MODE="64"
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -melf32bsmip"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -melf32bmipn32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -melf64bmip"
-	;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -32"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -n32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -64"
-	  ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_i386_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
-	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
-	    LD="${LD-ld} -m elf32ppclinux"
-	    ;;
-	  s390x-*linux*)
-	    LD="${LD-ld} -m elf_s390"
-	    ;;
-	  sparc64-*linux*)
-	    LD="${LD-ld} -m elf32_sparc"
-	    ;;
-	esac
-	;;
-      *64-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_x86_64_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_x86_64"
-	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
-	    LD="${LD-ld} -m elf64ppc"
-	    ;;
-	  s390*-*linux*|s390*-*tpf*)
-	    LD="${LD-ld} -m elf64_s390"
-	    ;;
-	  sparc*-*linux*)
-	    LD="${LD-ld} -m elf64_sparc"
-	    ;;
-	esac
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-    [AC_LANG_PUSH(C)
-     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
-     AC_LANG_POP])
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*)
-        case $host in
-        i?86-*-solaris*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        sparc*-*-solaris*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-        esac
-        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD="${LD-ld}_sol2"
-        fi
-        ;;
-      *)
-	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-])# _LT_ENABLE_LOCK
-
-
-# _LT_PROG_AR
-# -----------
-m4_defun([_LT_PROG_AR],
-[AC_CHECK_TOOLS(AR, [ar], false)
-: ${AR=ar}
-: ${AR_FLAGS=cru}
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
-
-AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
-  [lt_cv_ar_at_file=no
-   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
-     [echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
-      AC_TRY_EVAL([lt_ar_try])
-      if test "$ac_status" -eq 0; then
-	# Ensure the archiver fails upon bogus file names.
-	rm -f conftest.$ac_objext libconftest.a
-	AC_TRY_EVAL([lt_ar_try])
-	if test "$ac_status" -ne 0; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
-     ])
-  ])
-
-if test "x$lt_cv_ar_at_file" = xno; then
-  archiver_list_spec=
-else
-  archiver_list_spec=$lt_cv_ar_at_file
-fi
-_LT_DECL([], [archiver_list_spec], [1],
-  [How to feed a file listing to the archiver])
-])# _LT_PROG_AR
-
-
-# _LT_CMD_OLD_ARCHIVE
-# -------------------
-m4_defun([_LT_CMD_OLD_ARCHIVE],
-[_LT_PROG_AR
-
-AC_CHECK_TOOL(STRIP, strip, :)
-test -z "$STRIP" && STRIP=:
-_LT_DECL([], [STRIP], [1], [A symbol stripping program])
-
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-test -z "$RANLIB" && RANLIB=:
-_LT_DECL([], [RANLIB], [1],
-    [Commands used to install an old-style archive])
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
-_LT_DECL([], [old_postinstall_cmds], [2])
-_LT_DECL([], [old_postuninstall_cmds], [2])
-_LT_TAGDECL([], [old_archive_cmds], [2],
-    [Commands used to build an old-style archive])
-_LT_DECL([], [lock_old_archive_extraction], [0],
-    [Whether to use a lock for old archive extraction])
-])# _LT_CMD_OLD_ARCHIVE
-
-
-# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------------------
-# Check whether the given compiler option works
-AC_DEFUN([_LT_COMPILER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$3"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       $2=yes
-     fi
-   fi
-   $RM conftest*
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$5], , :, [$5])
-else
-    m4_if([$6], , :, [$6])
-fi
-])# _LT_COMPILER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
-
-
-# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#                  [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------
-# Check whether the given linker option works
-AC_DEFUN([_LT_LINKER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $3"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&AS_MESSAGE_LOG_FD
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         $2=yes
-       fi
-     else
-       $2=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$4], , :, [$4])
-else
-    m4_if([$5], , :, [$5])
-fi
-])# _LT_LINKER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
-
-
-# LT_CMD_MAX_LEN
-#---------------
-AC_DEFUN([LT_CMD_MAX_LEN],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# find the maximum length of command line arguments
-AC_MSG_CHECKING([the maximum length of command line arguments])
-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
-  i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
-	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-])
-if test -n $lt_cv_sys_max_cmd_len ; then
-  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
-else
-  AC_MSG_RESULT(none)
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-_LT_DECL([], [max_cmd_len], [0],
-    [What is the maximum length of a command?])
-])# LT_CMD_MAX_LEN
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
-
-
-# _LT_HEADER_DLFCN
-# ----------------
-m4_defun([_LT_HEADER_DLFCN],
-[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
-])# _LT_HEADER_DLFCN
-
-
-# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-# ----------------------------------------------------------------
-m4_defun([_LT_TRY_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "$cross_compiling" = yes; then :
-  [$4]
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-[#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}]
-_LT_EOF
-  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) $1 ;;
-      x$lt_dlneed_uscore) $2 ;;
-      x$lt_dlunknown|x*) $3 ;;
-    esac
-  else :
-    # compilation failed
-    $3
-  fi
-fi
-rm -fr conftest*
-])# _LT_TRY_DLOPEN_SELF
-
-
-# LT_SYS_DLOPEN_SELF
-# ------------------
-AC_DEFUN([LT_SYS_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ])
-    ;;
-
-  *)
-    AC_CHECK_FUNC([shl_load],
-	  [lt_cv_dlopen="shl_load"],
-      [AC_CHECK_LIB([dld], [shl_load],
-	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
-	[AC_CHECK_FUNC([dlopen],
-	      [lt_cv_dlopen="dlopen"],
-	  [AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-	    [AC_CHECK_LIB([svld], [dlopen],
-		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-	      [AC_CHECK_LIB([dld], [dld_link],
-		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
-	      ])
-	    ])
-	  ])
-	])
-      ])
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    AC_CACHE_CHECK([whether a program can dlopen itself],
-	  lt_cv_dlopen_self, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
-	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
-    ])
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
-	  lt_cv_dlopen_self_static, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
-	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
-      ])
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-_LT_DECL([dlopen_support], [enable_dlopen], [0],
-	 [Whether dlopen is supported])
-_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
-	 [Whether dlopen of programs is supported])
-_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
-	 [Whether dlopen of statically linked programs is supported])
-])# LT_SYS_DLOPEN_SELF
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
-
-
-# _LT_COMPILER_C_O([TAGNAME])
-# ---------------------------
-# Check to see if options -c and -o are simultaneously supported by compiler.
-# This macro does not hard code the compiler like AC_PROG_CC_C_O.
-m4_defun([_LT_COMPILER_C_O],
-[m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-     fi
-   fi
-   chmod u+w . 2>&AS_MESSAGE_LOG_FD
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-])
-_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
-	[Does compiler simultaneously support -c and -o options?])
-])# _LT_COMPILER_C_O
-
-
-# _LT_COMPILER_FILE_LOCKS([TAGNAME])
-# ----------------------------------
-# Check to see if we can do hard links to lock some files if needed
-m4_defun([_LT_COMPILER_FILE_LOCKS],
-[m4_require([_LT_ENABLE_LOCK])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_COMPILER_C_O([$1])
-
-hard_links="nottested"
-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  AC_MSG_CHECKING([if we can lock with hard links])
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  AC_MSG_RESULT([$hard_links])
-  if test "$hard_links" = no; then
-    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
-])# _LT_COMPILER_FILE_LOCKS
-
-
-# _LT_CHECK_OBJDIR
-# ----------------
-m4_defun([_LT_CHECK_OBJDIR],
-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
-[rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null])
-objdir=$lt_cv_objdir
-_LT_DECL([], [objdir], [0],
-         [The name of the directory that contains temporary libtool files])dnl
-m4_pattern_allow([LT_OBJDIR])dnl
-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
-  [Define to the sub-directory in which libtool stores uninstalled libraries.])
-])# _LT_CHECK_OBJDIR
-
-
-# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
-# --------------------------------------
-# Check hardcoding attributes.
-m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
-[AC_MSG_CHECKING([how to hardcode library paths into programs])
-_LT_TAGVAR(hardcode_action, $1)=
-if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
-   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
-   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
-     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
-    # Linking always hardcodes the temporary library directory.
-    _LT_TAGVAR(hardcode_action, $1)=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    _LT_TAGVAR(hardcode_action, $1)=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  _LT_TAGVAR(hardcode_action, $1)=unsupported
-fi
-AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
-
-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
-   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-_LT_TAGDECL([], [hardcode_action], [0],
-    [How to hardcode a shared library path into an executable])
-])# _LT_LINKER_HARDCODE_LIBPATH
-
-
-# _LT_CMD_STRIPLIB
-# ----------------
-m4_defun([_LT_CMD_STRIPLIB],
-[m4_require([_LT_DECL_EGREP])
-striplib=
-old_striplib=
-AC_MSG_CHECKING([whether stripping libraries is possible])
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  AC_MSG_RESULT([yes])
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      AC_MSG_RESULT([yes])
-    else
-      AC_MSG_RESULT([no])
-    fi
-    ;;
-  *)
-    AC_MSG_RESULT([no])
-    ;;
-  esac
-fi
-_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
-_LT_DECL([], [striplib], [1])
-])# _LT_CMD_STRIPLIB
-
-
-# _LT_SYS_DYNAMIC_LINKER([TAG])
-# -----------------------------
-# PORTME Fill in your ld.so characteristics
-m4_defun([_LT_SYS_DYNAMIC_LINKER],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_OBJDUMP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-AC_MSG_CHECKING([dynamic linker characteristics])
-m4_if([$1],
-	[], [
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
-    *) lt_sed_strip_eq="s,=/,/,g" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-  case $lt_search_path_spec in
-  *\;*)
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-    ;;
-  *)
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-    ;;
-  esac
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
-  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
-}'`
-  # AWK program above erroneously prepends '/' to C:/dos/paths
-  # for these hosts.
-  case $host_os in
-    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
-  esac
-  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi])
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[[4-9]]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[[01]] | aix4.[[01]].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[[45]]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-m4_if([$1], [],[
-      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-m4_if([$1], [],[
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[[23]].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
-  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[[3-9]]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
-    [lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
-	 LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
-    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
-	 [lt_cv_shlibpath_overrides_runpath=yes])])
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-    ])
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[[89]] | openbsd2.[[89]].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-AC_MSG_RESULT([$dynamic_linker])
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-_LT_DECL([], [variables_saved_for_relink], [1],
-    [Variables whose values should be saved in libtool wrapper scripts and
-    restored at link time])
-_LT_DECL([], [need_lib_prefix], [0],
-    [Do we need the "lib" prefix for modules?])
-_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
-_LT_DECL([], [version_type], [0], [Library versioning type])
-_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
-_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
-_LT_DECL([], [shlibpath_overrides_runpath], [0],
-    [Is shlibpath searched before the hard-coded library search path?])
-_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
-_LT_DECL([], [library_names_spec], [1],
-    [[List of archive names.  First name is the real one, the rest are links.
-    The last name is the one that the linker finds with -lNAME]])
-_LT_DECL([], [soname_spec], [1],
-    [[The coded name of the library, if different from the real name]])
-_LT_DECL([], [install_override_mode], [1],
-    [Permission mode override for installation of shared libraries])
-_LT_DECL([], [postinstall_cmds], [2],
-    [Command to use after installation of a shared archive])
-_LT_DECL([], [postuninstall_cmds], [2],
-    [Command to use after uninstallation of a shared archive])
-_LT_DECL([], [finish_cmds], [2],
-    [Commands used to finish a libtool library installation in a directory])
-_LT_DECL([], [finish_eval], [1],
-    [[As "finish_cmds", except a single script fragment to be evaled but
-    not shown]])
-_LT_DECL([], [hardcode_into_libs], [0],
-    [Whether we should hardcode library paths into libraries])
-_LT_DECL([], [sys_lib_search_path_spec], [2],
-    [Compile-time system search path for libraries])
-_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
-    [Run-time system search path for libraries])
-])# _LT_SYS_DYNAMIC_LINKER
-
-
-# _LT_PATH_TOOL_PREFIX(TOOL)
-# --------------------------
-# find a file program which can recognize shared library
-AC_DEFUN([_LT_PATH_TOOL_PREFIX],
-[m4_require([_LT_DECL_EGREP])dnl
-AC_MSG_CHECKING([for $1])
-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-[case $MAGIC_CMD in
-[[\\/*] |  ?:[\\/]*])
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-dnl $ac_dummy forces splitting on constant user-supplied paths.
-dnl POSIX.2 word splitting is done only on the output of word expansions,
-dnl not every word.  This closes a longstanding sh security hole.
-  ac_dummy="m4_if([$2], , $PATH, [$2])"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$1; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  AC_MSG_RESULT($MAGIC_CMD)
-else
-  AC_MSG_RESULT(no)
-fi
-_LT_DECL([], [MAGIC_CMD], [0],
-	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
-])# _LT_PATH_TOOL_PREFIX
-
-# Old name:
-AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
-
-
-# _LT_PATH_MAGIC
-# --------------
-# find a file program which can recognize a shared library
-m4_defun([_LT_PATH_MAGIC],
-[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
-  else
-    MAGIC_CMD=:
-  fi
-fi
-])# _LT_PATH_MAGIC
-
-
-# LT_PATH_LD
-# ----------
-# find the pathname to the GNU or non-GNU linker
-AC_DEFUN([LT_PATH_LD],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
-
-AC_ARG_WITH([gnu-ld],
-    [AS_HELP_STRING([--with-gnu-ld],
-	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
-    [test "$withval" = no || with_gnu_ld=yes],
-    [with_gnu_ld=no])dnl
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  AC_MSG_CHECKING([for ld used by $CC])
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [[\\/]]* | ?:[[\\/]]*)
-      re_direlt='/[[^/]][[^/]]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  AC_MSG_CHECKING([for GNU ld])
-else
-  AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(lt_cv_path_LD,
-[if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  AC_MSG_RESULT($LD)
-else
-  AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-_LT_PATH_LD_GNU
-AC_SUBST([LD])
-
-_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
-])# LT_PATH_LD
-
-# Old names:
-AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
-AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_LD], [])
-dnl AC_DEFUN([AC_PROG_LD], [])
-
-
-# _LT_PATH_LD_GNU
-#- --------------
-m4_defun([_LT_PATH_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac])
-with_gnu_ld=$lt_cv_prog_gnu_ld
-])# _LT_PATH_LD_GNU
-
-
-# _LT_CMD_RELOAD
-# --------------
-# find reload flag for linker
-#   -- PORTME Some linkers may need a different reload flag.
-m4_defun([_LT_CMD_RELOAD],
-[AC_CACHE_CHECK([for $LD option to reload object files],
-  lt_cv_ld_reload_flag,
-  [lt_cv_ld_reload_flag='-r'])
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test "$GCC" != yes; then
-      reload_cmds=false
-    fi
-    ;;
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
-_LT_TAGDECL([], [reload_cmds], [2])dnl
-])# _LT_CMD_RELOAD
-
-
-# _LT_CHECK_MAGIC_METHOD
-# ----------------------
-# how to check for library dependencies
-#  -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_MAGIC_METHOD],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-AC_CACHE_CHECK([how to recognize dependent libraries],
-lt_cv_deplibs_check_method,
-[lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[[4-9]]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[[45]]*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[[3-9]]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-])
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
-    fi
-    ;;
-  esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-_LT_DECL([], [deplibs_check_method], [1],
-    [Method to check whether dependent libraries are shared objects])
-_LT_DECL([], [file_magic_cmd], [1],
-    [Command to use when deplibs_check_method = "file_magic"])
-_LT_DECL([], [file_magic_glob], [1],
-    [How to find potential files when deplibs_check_method = "file_magic"])
-_LT_DECL([], [want_nocaseglob], [1],
-    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
-])# _LT_CHECK_MAGIC_METHOD
-
-
-# LT_PATH_NM
-# ----------
-# find the pathname to a BSD- or MS-compatible name lister
-AC_DEFUN([LT_PATH_NM],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
-[if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi])
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-  AC_SUBST([DUMPBIN])
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-AC_SUBST([NM])
-_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
-
-AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
-  [lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
-  cat conftest.out >&AS_MESSAGE_LOG_FD
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*])
-])# LT_PATH_NM
-
-# Old names:
-AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
-AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_NM], [])
-dnl AC_DEFUN([AC_PROG_NM], [])
-
-# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-# --------------------------------
-# how to determine the name of the shared library
-# associated with a specific link library.
-#  -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-m4_require([_LT_DECL_DLLTOOL])
-AC_CACHE_CHECK([how to associate runtime and link libraries],
-lt_cv_sharedlib_from_linklib_cmd,
-[lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh
-  # decide which to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-    ;;
-  *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-    ;;
-  esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-  ;;
-esac
-])
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
-    [Command to associate shared and link libraries])
-])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-
-
-# _LT_PATH_MANIFEST_TOOL
-# ----------------------
-# locate the manifest tool
-m4_defun([_LT_PATH_MANIFEST_TOOL],
-[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
-  [lt_cv_path_mainfest_tool=no
-  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
-  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-    lt_cv_path_mainfest_tool=yes
-  fi
-  rm -f conftest*])
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
-  MANIFEST_TOOL=:
-fi
-_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
-])# _LT_PATH_MANIFEST_TOOL
-
-
-# LT_LIB_M
-# --------
-# check for math library
-AC_DEFUN([LT_LIB_M],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case $host in
-*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
-  # These system don't have libm, or don't need it
-  ;;
-*-ncr-sysv4.3*)
-  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
-  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
-  ;;
-*)
-  AC_CHECK_LIB(m, cos, LIBM="-lm")
-  ;;
-esac
-AC_SUBST([LIBM])
-])# LT_LIB_M
-
-# Old name:
-AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_CHECK_LIBM], [])
-
-
-# _LT_COMPILER_NO_RTTI([TAGNAME])
-# -------------------------------
-m4_defun([_LT_COMPILER_NO_RTTI],
-[m4_require([_LT_TAG_COMPILER])dnl
-
-_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-
-if test "$GCC" = yes; then
-  case $cc_basename in
-  nvcc*)
-    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
-  *)
-    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
-  esac
-
-  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
-    lt_cv_prog_compiler_rtti_exceptions,
-    [-fno-rtti -fno-exceptions], [],
-    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
-fi
-_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
-	[Compiler flag to turn off builtin functions])
-])# _LT_COMPILER_NO_RTTI
-
-
-# _LT_CMD_GLOBAL_SYMBOLS
-# ----------------------
-m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-AC_MSG_CHECKING([command to parse $NM output from $compiler object])
-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
-[
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[[BCDEGRST]]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[[BCDT]]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[[ABCDGISTW]]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[[ABCDEGRST]]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[[BCDEGRST]]'
-  ;;
-osf*)
-  symcode='[[BCDEGQRST]]'
-  ;;
-solaris*)
-  symcode='[[BDRT]]'
-  ;;
-sco3.2v5*)
-  symcode='[[DT]]'
-  ;;
-sysv4.2uw2*)
-  symcode='[[DT]]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[[ABDT]]'
-  ;;
-sysv4)
-  symcode='[[DFNSTU]]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[[ABCDGIRSTW]]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK ['"\
-"     {last_section=section; section=\$ 3};"\
-"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx]"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if AC_TRY_EVAL(ac_compile); then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT@&t at _DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT@&t at _DLSYM_CONST
-#else
-# define LT@&t at _DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-	  cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-LT@&t at _DLSYM_CONST struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[[]] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-	  cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_globsym_save_LIBS=$LIBS
-	  lt_globsym_save_CFLAGS=$CFLAGS
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
-	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS=$lt_globsym_save_LIBS
-	  CFLAGS=$lt_globsym_save_CFLAGS
-	else
-	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
-    fi
-  else
-    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-])
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  AC_MSG_RESULT(failed)
-else
-  AC_MSG_RESULT(ok)
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
-  nm_file_list_spec='@'
-fi
-
-_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
-    [Take the output of nm and produce a listing of raw symbols and C names])
-_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
-    [Transform the output of nm in a proper C declaration])
-_LT_DECL([global_symbol_to_c_name_address],
-    [lt_cv_sys_global_symbol_to_c_name_address], [1],
-    [Transform the output of nm in a C name address pair])
-_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
-    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
-    [Transform the output of nm in a C name address pair when lib prefix is needed])
-_LT_DECL([], [nm_file_list_spec], [1],
-    [Specify filename containing input files for $NM])
-]) # _LT_CMD_GLOBAL_SYMBOLS
-
-
-# _LT_COMPILER_PIC([TAGNAME])
-# ---------------------------
-m4_defun([_LT_COMPILER_PIC],
-[m4_require([_LT_TAG_COMPILER])dnl
-_LT_TAGVAR(lt_prog_compiler_wl, $1)=
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-_LT_TAGVAR(lt_prog_compiler_static, $1)=
-
-m4_if([$1], [CXX], [
-  # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-    mingw* | cygwin* | os2* | pw32* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-      ;;
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)=
-      ;;
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	;;
-      esac
-      ;;
-    *qnx* | *nto*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-  else
-    case $host_os in
-      aix[[4-9]]*)
-	# All AIX code is PIC.
-	if test "$host_cpu" = ia64; then
-	  # AIX 5 now supports IA64 processor
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	else
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-	fi
-	;;
-      chorus*)
-	case $cc_basename in
-	cxch68*)
-	  # Green Hills C++ Compiler
-	  # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-	  ;;
-	esac
-	;;
-      mingw* | cygwin* | os2* | pw32* | cegcc*)
-	# This hack is so that the source file can tell whether it is being
-	# built for inclusion in a dll (and should export symbols for example).
-	m4_if([$1], [GCJ], [],
-	  [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-	;;
-      dgux*)
-	case $cc_basename in
-	  ec++*)
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    ;;
-	  ghcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      freebsd* | dragonfly*)
-	# FreeBSD uses GNU C++
-	;;
-      hpux9* | hpux10* | hpux11*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	    fi
-	    ;;
-	  aCC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    case $host_cpu in
-	    hppa*64*|ia64*)
-	      # +Z the default
-	      ;;
-	    *)
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	      ;;
-	    esac
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      interix*)
-	# This is c89, which is MS Visual C++ (no shared libs)
-	# Anyone wants to do a port?
-	;;
-      irix5* | irix6* | nonstopux*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    # CC pic flag -KPIC is the default.
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
-	case $cc_basename in
-	  KCC*)
-	    # KAI C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	    ;;
-	  ecpc* )
-	    # old Intel C++ for x86_64 which still supported -KPIC.
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	    ;;
-	  icpc* )
-	    # Intel C++, used to be incompatible with GCC.
-	    # ICC 10 doesn't accept -KPIC any more.
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	    ;;
-	  pgCC* | pgcpp*)
-	    # Portland Group C++ compiler
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	  cxx*)
-	    # Compaq C++
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    ;;
-	  xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
-	    # IBM XL 8.0, 9.0 on PPC and BlueGene
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-      lynxos*)
-	;;
-      m88k*)
-	;;
-      mvs*)
-	case $cc_basename in
-	  cxx*)
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      netbsd*)
-	;;
-      *qnx* | *nto*)
-        # QNX uses GNU C++, but need to define -shared option too, otherwise
-        # it will coredump.
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-        ;;
-      osf3* | osf4* | osf5*)
-	case $cc_basename in
-	  KCC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-	    ;;
-	  RCC*)
-	    # Rational C++ 2.4.1
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  cxx*)
-	    # Digital/Compaq C++
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      psos*)
-	;;
-      solaris*)
-	case $cc_basename in
-	  CC* | sunCC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	    ;;
-	  gcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sunos4*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.x
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	  lcc*)
-	    # Lucid
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	esac
-	;;
-      tandem*)
-	case $cc_basename in
-	  NCC*)
-	    # NonStop-UX NCC 3.20
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      vxworks*)
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-	;;
-    esac
-  fi
-],
-[
-  if test "$GCC" = yes; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
-      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      else
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC (with -KPIC) is the default.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-        ;;
-      ccc*)
-        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-        # All Alpha code is PIC.
-        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
-	  ;;
-	*Sun\ F* | *Sun*Fortran*)
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	  ;;
-        *Intel*\ [[CF]]*Compiler*)
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	  ;;
-	*Portland\ Group*)
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # All OSF/1 code is PIC.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    rdos*)
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    unicos*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-    esac
-  fi
-])
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-    ;;
-  *)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
-    ;;
-esac
-
-AC_CACHE_CHECK([for $compiler option to produce PIC],
-  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
-  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
-  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
-    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
-    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
-    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
-     "" | " "*) ;;
-     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
-     esac],
-    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
-fi
-_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
-	[Additional compiler flags for building library objects])
-
-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
-	[How to pass a linker flag through the compiler])
-#
-# Check to make sure the static flag actually works.
-#
-wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
-_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
-  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
-  $lt_tmp_static_flag,
-  [],
-  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
-_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
-	[Compiler flag to prevent dynamic linking])
-])# _LT_COMPILER_PIC
-
-
-# _LT_LINKER_SHLIBS([TAGNAME])
-# ----------------------------
-# See if the linker supports building shared libraries.
-m4_defun([_LT_LINKER_SHLIBS],
-[AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-m4_if([$1], [CXX], [
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-  case $host_os in
-  aix[[4-9]]*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
-    # Also, AIX nm treats weak defined symbols like other global defined
-    # symbols, whereas GNU nm marks them as "W".
-    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    else
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
-    ;;
-  cygwin* | mingw* | cegcc*)
-    case $cc_basename in
-    cl*)
-      _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-      ;;
-    *)
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
-      ;;
-    esac
-    ;;
-  *)
-    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-    ;;
-  esac
-], [
-  runpath_var=
-  _LT_TAGVAR(allow_undefined_flag, $1)=
-  _LT_TAGVAR(always_export_symbols, $1)=no
-  _LT_TAGVAR(archive_cmds, $1)=
-  _LT_TAGVAR(archive_expsym_cmds, $1)=
-  _LT_TAGVAR(compiler_needs_object, $1)=no
-  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  _LT_TAGVAR(hardcode_automatic, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
-  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_TAGVAR(hardcode_libdir_separator, $1)=
-  _LT_TAGVAR(hardcode_minus_L, $1)=no
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  _LT_TAGVAR(inherit_rpath, $1)=no
-  _LT_TAGVAR(link_all_deplibs, $1)=unknown
-  _LT_TAGVAR(module_cmds, $1)=
-  _LT_TAGVAR(module_expsym_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
-  _LT_TAGVAR(thread_safe_flag_spec, $1)=
-  _LT_TAGVAR(whole_archive_flag_spec, $1)=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  _LT_TAGVAR(include_expsyms, $1)=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-dnl Note also adjust exclude_expsyms for C++ above.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  _LT_TAGVAR(ld_shlibs, $1)=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
-	  *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[[3-9]]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-      # as there is no search path for DLLs.
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=no
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    haiku*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    interix[[3-9]]*)
-      _LT_TAGVAR(hardcode_direct, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
-	  tmp_sharedflag='--shared' ;;
-	xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  _LT_TAGVAR(compiler_needs_object, $1)=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  _LT_TAGVAR(compiler_needs_object, $1)=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-    esac
-
-    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
-      runpath_var=
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	_LT_TAGVAR(hardcode_direct, $1)=unsupported
-      fi
-      ;;
-
-    aix[[4-9]]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      _LT_TAGVAR(archive_cmds, $1)=''
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[[012]]|aix4.[[012]].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  _LT_TAGVAR(hardcode_direct, $1)=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	  _LT_TAGVAR(hardcode_libdir_separator, $1)=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        _LT_SYS_MODULE_PATH_AIX([$1])
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 _LT_SYS_MODULE_PATH_AIX([$1])
-	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	  fi
-	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[[45]]*)
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	_LT_TAGVAR(always_export_symbols, $1)=yes
-	_LT_TAGVAR(file_list_spec, $1)='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-	_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-	_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
-	_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	_LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-	# FIXME: Should let the user specify the lib program.
-	_LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      _LT_DARWIN_LINKER_FEATURES($1)
-      ;;
-
-    dgux*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
-	_LT_TAGVAR(hardcode_direct, $1)=yes
-	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	_LT_TAGVAR(hardcode_minus_L, $1)=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	m4_if($1, [], [
-	  # Older versions of the 11.00 compiler do not understand -b yet
-	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-	  _LT_LINKER_OPTION([if $CC understands -b],
-	    _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
-	    [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
-	    [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
-	  [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  _LT_TAGVAR(hardcode_direct, $1)=no
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	  ;;
-	*)
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
-	  [lt_cv_irix_exported_symbol],
-	  [save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   AC_LINK_IFELSE(
-	     [AC_LANG_SOURCE(
-	        [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
-			      [C++], [[int foo (void) { return 0; }]],
-			      [Fortran 77], [[
-      subroutine foo
-      end]],
-			      [Fortran], [[
-      subroutine foo
-      end]])])],
-	      [lt_cv_irix_exported_symbol=yes],
-	      [lt_cv_irix_exported_symbol=no])
-           LDFLAGS="$save_LDFLAGS"])
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(inherit_rpath, $1)=yes
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	_LT_TAGVAR(hardcode_direct, $1)=yes
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	     ;;
-	   *)
-	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    os2*)
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      else
-	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      case $host_os in
-      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
-	  _LT_TAGVAR(hardcode_direct, $1)=no
-        ;;
-	motorola)
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4.3*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	_LT_TAGVAR(ld_shlibs, $1)=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-])
-AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
-
-_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
-_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
-_LT_DECL([], [extract_expsyms_cmds], [2],
-    [The commands to extract the exported symbol list from a shared archive])
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
-x|xyes)
-  # Assume -lc should be added
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $_LT_TAGVAR(archive_cmds, $1) in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
-	[lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
-	[$RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
-	  pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
-	  _LT_TAGVAR(allow_undefined_flag, $1)=
-	  if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
-	  then
-	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	  else
-	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	  fi
-	  _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-	])
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
-    [Whether or not to add -lc for building shared libraries])
-_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
-    [enable_shared_with_static_runtimes], [0],
-    [Whether or not to disallow shared libs when runtime libs are static])
-_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
-    [Compiler flag to allow reflexive dlopens])
-_LT_TAGDECL([], [whole_archive_flag_spec], [1],
-    [Compiler flag to generate shared objects directly from archives])
-_LT_TAGDECL([], [compiler_needs_object], [1],
-    [Whether the compiler copes with passing no objects directly])
-_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
-    [Create an old-style archive from a shared archive])
-_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
-    [Create a temporary old-style archive to link instead of a shared archive])
-_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
-_LT_TAGDECL([], [archive_expsym_cmds], [2])
-_LT_TAGDECL([], [module_cmds], [2],
-    [Commands used to build a loadable module if different from building
-    a shared archive.])
-_LT_TAGDECL([], [module_expsym_cmds], [2])
-_LT_TAGDECL([], [with_gnu_ld], [1],
-    [Whether we are building with GNU ld or not])
-_LT_TAGDECL([], [allow_undefined_flag], [1],
-    [Flag that allows shared libraries with undefined symbols to be built])
-_LT_TAGDECL([], [no_undefined_flag], [1],
-    [Flag that enforces no undefined symbols])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
-    [Flag to hardcode $libdir into a binary during linking.
-    This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_separator], [1],
-    [Whether we need a single "-rpath" flag with a separated argument])
-_LT_TAGDECL([], [hardcode_direct], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-    DIR into the resulting binary])
-_LT_TAGDECL([], [hardcode_direct_absolute], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-    DIR into the resulting binary and the resulting library dependency is
-    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
-    library is relocated])
-_LT_TAGDECL([], [hardcode_minus_L], [0],
-    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
-    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_automatic], [0],
-    [Set to "yes" if building a shared library automatically hardcodes DIR
-    into the library and all subsequent libraries and executables linked
-    against it])
-_LT_TAGDECL([], [inherit_rpath], [0],
-    [Set to yes if linker adds runtime paths of dependent libraries
-    to runtime path list])
-_LT_TAGDECL([], [link_all_deplibs], [0],
-    [Whether libtool must link a program against all its dependency libraries])
-_LT_TAGDECL([], [always_export_symbols], [0],
-    [Set to "yes" if exported symbols are required])
-_LT_TAGDECL([], [export_symbols_cmds], [2],
-    [The commands to list exported symbols])
-_LT_TAGDECL([], [exclude_expsyms], [1],
-    [Symbols that should not be listed in the preloaded symbols])
-_LT_TAGDECL([], [include_expsyms], [1],
-    [Symbols that must always be exported])
-_LT_TAGDECL([], [prelink_cmds], [2],
-    [Commands necessary for linking programs (against libraries) with templates])
-_LT_TAGDECL([], [postlink_cmds], [2],
-    [Commands necessary for finishing linking programs])
-_LT_TAGDECL([], [file_list_spec], [1],
-    [Specify filename containing input files])
-dnl FIXME: Not yet implemented
-dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
-dnl    [Compiler flag to generate thread safe objects])
-])# _LT_LINKER_SHLIBS
-
-
-# _LT_LANG_C_CONFIG([TAG])
-# ------------------------
-# Ensure that the configuration variables for a C compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_C_CONFIG],
-[m4_require([_LT_DECL_EGREP])dnl
-lt_save_CC="$CC"
-AC_LANG_PUSH(C)
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-_LT_TAG_COMPILER
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_SYS_DYNAMIC_LINKER($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-  LT_SYS_DLOPEN_SELF
-  _LT_CMD_STRIPLIB
-
-  # Report which library types will actually be built
-  AC_MSG_CHECKING([if libtool supports shared libraries])
-  AC_MSG_RESULT([$can_build_shared])
-
-  AC_MSG_CHECKING([whether to build shared libraries])
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[[4-9]]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  AC_MSG_RESULT([$enable_shared])
-
-  AC_MSG_CHECKING([whether to build static libraries])
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  AC_MSG_RESULT([$enable_static])
-
-  _LT_CONFIG($1)
-fi
-AC_LANG_POP
-CC="$lt_save_CC"
-])# _LT_LANG_C_CONFIG
-
-
-# _LT_LANG_CXX_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a C++ compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_CXX_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  AC_PROG_CXXCPP
-else
-  _lt_caught_CXX_error=yes
-fi
-
-AC_LANG_PUSH(C++)
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(compiler_needs_object, $1)=no
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the CXX compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="int some_variable = 0;"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
-  lt_save_CFLAGS=$CFLAGS
-  lt_save_LD=$LD
-  lt_save_GCC=$GCC
-  GCC=$GXX
-  lt_save_with_gnu_ld=$with_gnu_ld
-  lt_save_path_LD=$lt_cv_path_LD
-  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-  else
-    $as_unset lt_cv_prog_gnu_ld
-  fi
-  if test -n "${lt_cv_path_LDCXX+set}"; then
-    lt_cv_path_LD=$lt_cv_path_LDCXX
-  else
-    $as_unset lt_cv_path_LD
-  fi
-  test -z "${LDCXX+set}" || LD=$LDCXX
-  CC=${CXX-"c++"}
-  CFLAGS=$CXXFLAGS
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    # We don't want -fno-exception when compiling C++ code, so set the
-    # no_builtin_flag separately
-    if test "$GXX" = yes; then
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-    else
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-    fi
-
-    if test "$GXX" = yes; then
-      # Set up default GNU C++ configuration
-
-      LT_PATH_LD
-
-      # Check if GNU C++ uses GNU ld as the underlying linker, since the
-      # archiving commands below assume that GNU ld is being used.
-      if test "$with_gnu_ld" = yes; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-        # If archive_cmds runs LD, not CC, wlarc should be empty
-        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-        #     investigate it a little bit more. (MM)
-        wlarc='${wl}'
-
-        # ancient GNU ld didn't support --whole-archive et. al.
-        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
-	  $GREP 'no-whole-archive' > /dev/null; then
-          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-        else
-          _LT_TAGVAR(whole_archive_flag_spec, $1)=
-        fi
-      else
-        with_gnu_ld=no
-        wlarc=
-
-        # A generic and very simple default shared library creation
-        # command for GNU C++ for the case where it uses the native
-        # linker, instead of GNU ld.  If possible, this setting should
-        # overridden to take advantage of the native linker features on
-        # the platform it is being used on.
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      fi
-
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-    else
-      GXX=no
-      with_gnu_ld=no
-      wlarc=
-    fi
-
-    # PORTME: fill in a description of your system's C++ link characteristics
-    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-    _LT_TAGVAR(ld_shlibs, $1)=yes
-    case $host_os in
-      aix3*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-      aix[[4-9]]*)
-        if test "$host_cpu" = ia64; then
-          # On IA64, the linker does run time linking by default, so we don't
-          # have to do anything special.
-          aix_use_runtimelinking=no
-          exp_sym_flag='-Bexport'
-          no_entry_flag=""
-        else
-          aix_use_runtimelinking=no
-
-          # Test if we are trying to use run time linking or normal
-          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # need to do runtime linking.
-          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-	    for ld_flag in $LDFLAGS; do
-	      case $ld_flag in
-	      *-brtl*)
-	        aix_use_runtimelinking=yes
-	        break
-	        ;;
-	      esac
-	    done
-	    ;;
-          esac
-
-          exp_sym_flag='-bexport'
-          no_entry_flag='-bnoentry'
-        fi
-
-        # When large executables or shared objects are built, AIX ld can
-        # have problems creating the table of contents.  If linking a library
-        # or program results in "error TOC overflow" add -mminimal-toc to
-        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-        _LT_TAGVAR(archive_cmds, $1)=''
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-        _LT_TAGVAR(link_all_deplibs, $1)=yes
-        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
-        if test "$GXX" = yes; then
-          case $host_os in aix4.[[012]]|aix4.[[012]].*)
-          # We only want to do this on AIX 4.2 and lower, the check
-          # below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	    # We have reworked collect2
-	    :
-	  else
-	    # We have old collect2
-	    _LT_TAGVAR(hardcode_direct, $1)=unsupported
-	    # It fails to find uninstalled libraries when the uninstalled
-	    # path is not listed in the libpath.  Setting hardcode_minus_L
-	    # to unsupported forces relinking
-	    _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=
-	  fi
-          esac
-          shared_flag='-shared'
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag="$shared_flag "'${wl}-G'
-	  fi
-        else
-          # not using gcc
-          if test "$host_cpu" = ia64; then
-	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	  # chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-          else
-	    if test "$aix_use_runtimelinking" = yes; then
-	      shared_flag='${wl}-G'
-	    else
-	      shared_flag='${wl}-bM:SRE'
-	    fi
-          fi
-        fi
-
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
-        # It seems that -bexpall does not export symbols beginning with
-        # underscore (_), so it is better to generate a list of symbols to
-	# export.
-        _LT_TAGVAR(always_export_symbols, $1)=yes
-        if test "$aix_use_runtimelinking" = yes; then
-          # Warning - without using the other runtime loading flags (-brtl),
-          # -berok will link without error, but may produce a broken library.
-          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-          # Determine the default libpath from the value encoded in an empty
-          # executable.
-          _LT_SYS_MODULE_PATH_AIX([$1])
-          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-        else
-          if test "$host_cpu" = ia64; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-          else
-	    # Determine the default libpath from the value encoded in an
-	    # empty executable.
-	    _LT_SYS_MODULE_PATH_AIX([$1])
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	    # Warning - without using the other run time loading flags,
-	    # -berok will link without error, but may produce a broken library.
-	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	    if test "$with_gnu_ld" = yes; then
-	      # We only use this code for GNU lds that support --whole-archive.
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    else
-	      # Exported symbols can be pulled into shared objects from archives
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	    fi
-	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	    # This is similar to how AIX traditionally builds its shared
-	    # libraries.
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-          fi
-        fi
-        ;;
-
-      beos*)
-	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	  # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	  # support --undefined.  This deserves some investigation.  FIXME
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	else
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	fi
-	;;
-
-      chorus*)
-        case $cc_basename in
-          *)
-	  # FIXME: insert proper C++ library support
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	  ;;
-        esac
-        ;;
-
-      cygwin* | mingw* | pw32* | cegcc*)
-	case $GXX,$cc_basename in
-	,cl* | no,cl*)
-	  # Native MSVC
-	  # hardcode_libdir_flag_spec is actually meaningless, as there is
-	  # no search path for DLLs.
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	  _LT_TAGVAR(always_export_symbols, $1)=yes
-	  _LT_TAGVAR(file_list_spec, $1)='@'
-	  # Tell ltmain to make .lib files, not .a files.
-	  libext=lib
-	  # Tell ltmain to make .dll files, not .so files.
-	  shrext_cmds=".dll"
-	  # FIXME: Setting linknames here is a bad hack.
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	    else
-	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	    fi~
-	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	    linknames='
-	  # The linker will not automatically build a static lib if we build a DLL.
-	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-	  # Don't use ranlib
-	  _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
-	  _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-	    lt_tool_outputfile="@TOOL_OUTPUT@"~
-	    case $lt_outputfile in
-	      *.exe|*.EXE) ;;
-	      *)
-		lt_outputfile="$lt_outputfile.exe"
-		lt_tool_outputfile="$lt_tool_outputfile.exe"
-		;;
-	    esac~
-	    func_to_tool_file "$lt_outputfile"~
-	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	      $RM "$lt_outputfile.manifest";
-	    fi'
-	  ;;
-	*)
-	  # g++
-	  # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-	  # as there is no search path for DLLs.
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
-	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	  _LT_TAGVAR(always_export_symbols, $1)=no
-	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-
-	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	    # If the export-symbols file already is a .def file (1st line
-	    # is EXPORTS), use it as is; otherwise, prepend...
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      cp $export_symbols $output_objdir/$soname.def;
-	    else
-	      echo EXPORTS > $output_objdir/$soname.def;
-	      cat $export_symbols >> $output_objdir/$soname.def;
-	    fi~
-	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	  else
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	  fi
-	  ;;
-	esac
-	;;
-      darwin* | rhapsody*)
-        _LT_DARWIN_LINKER_FEATURES($1)
-	;;
-
-      dgux*)
-        case $cc_basename in
-          ec++*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          ghcx*)
-	    # Green Hills C++ Compiler
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      freebsd2.*)
-        # C++ shared libraries reported to be fairly broken before
-	# switch to ELF
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      freebsd-elf*)
-        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-        ;;
-
-      freebsd* | dragonfly*)
-        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-        # conventions
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-        ;;
-
-      gnu*)
-        ;;
-
-      haiku*)
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(link_all_deplibs, $1)=yes
-        ;;
-
-      hpux9*)
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-				             # but as the default
-				             # location of the library.
-
-        case $cc_basename in
-          CC*)
-            # FIXME: insert proper C++ library support
-            _LT_TAGVAR(ld_shlibs, $1)=no
-            ;;
-          aCC*)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            # Commands to make compiler produce verbose output that lists
-            # what "hidden" libraries, object files and flags are used when
-            # linking a shared library.
-            #
-            # There doesn't appear to be a way to prevent this compiler from
-            # explicitly linking system object files so we need to strip them
-            # from the output so that they don't get included in the library
-            # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-            ;;
-          *)
-            if test "$GXX" = yes; then
-              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            else
-              # FIXME: insert proper C++ library support
-              _LT_TAGVAR(ld_shlibs, $1)=no
-            fi
-            ;;
-        esac
-        ;;
-
-      hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-          case $host_cpu in
-            hppa*64*|ia64*)
-              ;;
-            *)
-	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-              ;;
-          esac
-        fi
-        case $host_cpu in
-          hppa*64*|ia64*)
-            _LT_TAGVAR(hardcode_direct, $1)=no
-            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-            ;;
-          *)
-            _LT_TAGVAR(hardcode_direct, $1)=yes
-            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-					         # but as the default
-					         # location of the library.
-            ;;
-        esac
-
-        case $cc_basename in
-          CC*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          aCC*)
-	    case $host_cpu in
-	      hppa*64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      ia64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      *)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	    esac
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test $with_gnu_ld = no; then
-	        case $host_cpu in
-	          hppa*64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          ia64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          *)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	        esac
-	      fi
-	    else
-	      # FIXME: insert proper C++ library support
-	      _LT_TAGVAR(ld_shlibs, $1)=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      interix[[3-9]]*)
-	_LT_TAGVAR(hardcode_direct, $1)=no
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-	# Instead, shared libraries are loaded at an image base (0x10000000 by
-	# default) and relocated if they conflict, which is a slow very memory
-	# consuming and fragmenting process.  To avoid this, we pick a random,
-	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	;;
-      irix5* | irix6*)
-        case $cc_basename in
-          CC*)
-	    # SGI C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test "$with_gnu_ld" = no; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	      else
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
-	      fi
-	    fi
-	    _LT_TAGVAR(link_all_deplibs, $1)=yes
-	    ;;
-        esac
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(inherit_rpath, $1)=yes
-        ;;
-
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
-	    ;;
-	  icpc* | ecpc* )
-	    # Intel C++
-	    with_gnu_ld=yes
-	    # version 8.0 and above of icpc choke on multiply defined symbols
-	    # if we add $predep_objects and $postdep_objects, however 7.1 and
-	    # earlier do not add the objects themselves.
-	    case `$CC -V 2>&1` in
-	      *"Version 7."*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	      *)  # Version 8.0 or newer
-	        tmp_idyn=
-	        case $host_cpu in
-		  ia64*) tmp_idyn=' -i_dynamic';;
-		esac
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	    esac
-	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    ;;
-          pgCC* | pgcpp*)
-            # Portland Group C++ compiler
-	    case `$CC -V` in
-	    *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
-	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
-	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
-		$RANLIB $oldlib'
-	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    *) # Version 6 and above use weak symbols
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    esac
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-            ;;
-	  cxx*)
-	    # Compaq C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
-	    runpath_var=LD_RUN_PATH
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
-	    ;;
-	  xl* | mpixl* | bgxl*)
-	    # IBM XL 8.0 on PPC, with GNU ld
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    if test "x$supports_anon_versioning" = xyes; then
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-		echo "local: *; };" >> $output_objdir/$libname.ver~
-		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-	    fi
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	      _LT_TAGVAR(compiler_needs_object, $1)=yes
-
-	      # Not sure whether something based on
-	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
-	      # would be better.
-	      output_verbose_link_cmd='func_echo_all'
-
-	      # Archives containing C++ object files must be created using
-	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	      # necessary to make sure instantiated templates are included
-	      # in the archive.
-	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-
-      lynxos*)
-        # FIXME: insert proper C++ library support
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      m88k*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      mvs*)
-        case $cc_basename in
-          cxx*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-	  *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-	esac
-	;;
-
-      netbsd*)
-        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-	  wlarc=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	fi
-	# Workaround some broken pre-1.5 toolchains
-	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-	;;
-
-      *nto* | *qnx*)
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-	;;
-
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      openbsd*)
-	if test -f /usr/libexec/ld.so; then
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-	  fi
-	  output_verbose_link_cmd=func_echo_all
-	else
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	fi
-	;;
-
-      osf3* | osf4* | osf5*)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Archives containing C++ object files must be created using
-	    # the KAI C++ compiler.
-	    case $host in
-	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
-	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
-	    esac
-	    ;;
-          RCC*)
-	    # Rational C++ 2.4.1
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          cxx*)
-	    case $host in
-	      osf3*)
-	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-		;;
-	      *)
-	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-	          echo "-hidden">> $lib.exp~
-	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
-	          $RM $lib.exp'
-	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-		;;
-	    esac
-
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-	    ;;
-	  *)
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	      case $host in
-	        osf3*)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	        *)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	      esac
-
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	      # Commands to make compiler produce verbose output that lists
-	      # what "hidden" libraries, object files and flags are used when
-	      # linking a shared library.
-	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-	    else
-	      # FIXME: insert proper C++ library support
-	      _LT_TAGVAR(ld_shlibs, $1)=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      psos*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      sunos4*)
-        case $cc_basename in
-          CC*)
-	    # Sun C++ 4.x
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          lcc*)
-	    # Lucid
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      solaris*)
-        case $cc_basename in
-          CC* | sunCC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
-	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	    case $host_os in
-	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-	      *)
-		# The compiler driver will combine and reorder linker options,
-		# but understands `-z linker_flag'.
-	        # Supported since Solaris 2.6 (maybe 2.5.1?)
-		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-	        ;;
-	    esac
-	    _LT_TAGVAR(link_all_deplibs, $1)=yes
-
-	    output_verbose_link_cmd='func_echo_all'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-	    ;;
-          gcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
-	    # The C++ compiler must be used to create the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    # GNU C++ compiler with Solaris linker
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
-	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-	      else
-	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
-	        # platform.
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-	      fi
-
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
-	      case $host_os in
-		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-		*)
-		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-		  ;;
-	      esac
-	    fi
-	    ;;
-        esac
-        ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      case $cc_basename in
-        CC*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-      esac
-      ;;
-
-      sysv5* | sco3.2v5* | sco5v6*)
-	# Note: We can NOT use -z defs as we might desire, because we do not
-	# link with -lc, and that would cause any symbols used from libc to
-	# always be unresolved, which means just about no library would
-	# ever link correctly.  If we're not using GNU ld we use -z text
-	# though, which does catch some bad symbols but isn't as heavy-handed
-	# as -z defs.
-	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-	_LT_TAGVAR(link_all_deplibs, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-	runpath_var='LD_RUN_PATH'
-
-	case $cc_basename in
-          CC*)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
-	      '"$_LT_TAGVAR(old_archive_cmds, $1)"
-	    _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
-	      '"$_LT_TAGVAR(reload_cmds, $1)"
-	    ;;
-	  *)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    ;;
-	esac
-      ;;
-
-      tandem*)
-        case $cc_basename in
-          NCC*)
-	    # NonStop-UX NCC 3.20
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      vxworks*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      *)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-    esac
-
-    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-    _LT_TAGVAR(GCC, $1)="$GXX"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-  LDCXX=$LD
-  LD=$lt_save_LD
-  GCC=$lt_save_GCC
-  with_gnu_ld=$lt_save_with_gnu_ld
-  lt_cv_path_LDCXX=$lt_cv_path_LD
-  lt_cv_path_LD=$lt_save_path_LD
-  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
-
-AC_LANG_POP
-])# _LT_LANG_CXX_CONFIG
-
-
-# _LT_FUNC_STRIPNAME_CNF
-# ----------------------
-# func_stripname_cnf prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-#
-# This function is identical to the (non-XSI) version of func_stripname,
-# except this one can be used by m4 code that may be executed by configure,
-# rather than the libtool script.
-m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
-AC_REQUIRE([_LT_DECL_SED])
-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
-func_stripname_cnf ()
-{
-  case ${2} in
-  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-  esac
-} # func_stripname_cnf
-])# _LT_FUNC_STRIPNAME_CNF
-
-# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
-# ---------------------------------
-# Figure out "hidden" library dependencies from verbose
-# compiler output when linking a shared library.
-# Parse the compiler output and extract the necessary
-# objects, libraries and library flags.
-m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
-# Dependencies to place before and after the object being linked:
-_LT_TAGVAR(predep_objects, $1)=
-_LT_TAGVAR(postdep_objects, $1)=
-_LT_TAGVAR(predeps, $1)=
-_LT_TAGVAR(postdeps, $1)=
-_LT_TAGVAR(compiler_lib_search_path, $1)=
-
-dnl we can't use the lt_simple_compile_test_code here,
-dnl because it contains code intended for an executable,
-dnl not a library.  It's possible we should let each
-dnl tag define a new lt_????_link_test_code variable,
-dnl but it's only used here...
-m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
-int a;
-void foo (void) { a = 0; }
-_LT_EOF
-], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-_LT_EOF
-], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer*4 a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
-public class foo {
-  private int a;
-  public void bar (void) {
-    a = 0;
-  }
-};
-_LT_EOF
-], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
-package foo
-func foo() {
-}
-_LT_EOF
-])
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
-esac
-
-dnl Parse the compiler output and extract the necessary
-dnl objects, libraries and library flags.
-if AC_TRY_EVAL(ac_compile); then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case ${prev}${p} in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
-	 prev=$p
-	 continue
-       fi
-
-       # Expand the sysroot to ease extracting the directories later.
-       if test -z "$prev"; then
-         case $p in
-         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-         esac
-       fi
-       case $p in
-       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-       esac
-       if test "$pre_test_object_deps_done" = no; then
-	 case ${prev} in
-	 -L | -R)
-	   # Internal compiler library paths should come after those
-	   # provided the user.  The postdeps already come after the
-	   # user supplied libs so there is no need to process them.
-	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
-	   else
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
-	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
-	 else
-	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
-	 fi
-       fi
-       prev=
-       ;;
-
-    *.lto.$objext) ;; # Ignore GCC LTO objects
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-	 pre_test_object_deps_done=yes
-	 continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
-	   _LT_TAGVAR(predep_objects, $1)="$p"
-	 else
-	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
-	 fi
-       else
-	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
-	   _LT_TAGVAR(postdep_objects, $1)="$p"
-	 else
-	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling $1 test program"
-fi
-
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-m4_if([$1], [CXX],
-[case $host_os in
-interix[[3-9]]*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  _LT_TAGVAR(predep_objects,$1)=
-  _LT_TAGVAR(postdep_objects,$1)=
-  _LT_TAGVAR(postdeps,$1)=
-  ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC* | sunCC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-esac
-])
-
-case " $_LT_TAGVAR(postdeps, $1) " in
-*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
-esac
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=
-if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
-    [The directories searched by this compiler when creating a shared library])
-_LT_TAGDECL([], [predep_objects], [1],
-    [Dependencies to place before and after the objects being linked to
-    create a shared library])
-_LT_TAGDECL([], [postdep_objects], [1])
-_LT_TAGDECL([], [predeps], [1])
-_LT_TAGDECL([], [postdeps], [1])
-_LT_TAGDECL([], [compiler_lib_search_path], [1],
-    [The library search path used internally by the compiler when linking
-    a shared library])
-])# _LT_SYS_HIDDEN_LIBDEPS
-
-
-# _LT_LANG_F77_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a Fortran 77 compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_F77_CONFIG],
-[AC_LANG_PUSH(Fortran 77)
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the F77 compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${F77-"f77"}
-  CFLAGS=$FFLAGS
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-  GCC=$G77
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)="$G77"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-  CFLAGS="$lt_save_CFLAGS"
-fi # test "$_lt_disable_F77" != yes
-
-AC_LANG_POP
-])# _LT_LANG_F77_CONFIG
-
-
-# _LT_LANG_FC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for a Fortran compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_FC_CONFIG],
-[AC_LANG_PUSH(Fortran)
-
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for fc test sources.
-ac_ext=${ac_fc_srcext-f}
-
-# Object file extension for compiled fc test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the FC compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${FC-"f95"}
-  CFLAGS=$FCFLAGS
-  compiler=$CC
-  GCC=$ac_cv_fc_compiler_gnu
-
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-fi # test "$_lt_disable_FC" != yes
-
-AC_LANG_POP
-])# _LT_LANG_FC_CONFIG
-
-
-# _LT_LANG_GCJ_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Java Compiler compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_GCJ_CONFIG],
-[AC_REQUIRE([LT_PROG_GCJ])dnl
-AC_LANG_SAVE
-
-# Source file extension for Java test sources.
-ac_ext=java
-
-# Object file extension for compiled Java test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC=$CC
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=yes
-CC=${GCJ-"gcj"}
-CFLAGS=$GCJFLAGS
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
-_LT_CC_BASENAME([$compiler])
-
-# GCJ did not exist at the time GCC didn't implicitly link libc in.
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-
-  _LT_CONFIG($1)
-fi
-
-AC_LANG_RESTORE
-
-GCC=$lt_save_GCC
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_GCJ_CONFIG
-
-
-# _LT_LANG_GO_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Go compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_GO_CONFIG],
-[AC_REQUIRE([LT_PROG_GO])dnl
-AC_LANG_SAVE
-
-# Source file extension for Go test sources.
-ac_ext=go
-
-# Object file extension for compiled Go test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="package main; func main() { }"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='package main; func main() { }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC=$CC
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=yes
-CC=${GOC-"gccgo"}
-CFLAGS=$GOFLAGS
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
-_LT_CC_BASENAME([$compiler])
-
-# Go did not exist at the time GCC didn't implicitly link libc in.
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-
-  _LT_CONFIG($1)
-fi
-
-AC_LANG_RESTORE
-
-GCC=$lt_save_GCC
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_GO_CONFIG
-
-
-# _LT_LANG_RC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for the Windows resource compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_RC_CONFIG],
-[AC_REQUIRE([LT_PROG_RC])dnl
-AC_LANG_SAVE
-
-# Source file extension for RC test sources.
-ac_ext=rc
-
-# Object file extension for compiled RC test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=
-CC=${RC-"windres"}
-CFLAGS=
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-
-if test -n "$compiler"; then
-  :
-  _LT_CONFIG($1)
-fi
-
-GCC=$lt_save_GCC
-AC_LANG_RESTORE
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_RC_CONFIG
-
-
-# LT_PROG_GCJ
-# -----------
-AC_DEFUN([LT_PROG_GCJ],
-[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
-  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
-    [AC_CHECK_TOOL(GCJ, gcj,)
-      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
-      AC_SUBST(GCJFLAGS)])])[]dnl
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
-
-
-# LT_PROG_GO
-# ----------
-AC_DEFUN([LT_PROG_GO],
-[AC_CHECK_TOOL(GOC, gccgo,)
-])
-
-
-# LT_PROG_RC
-# ----------
-AC_DEFUN([LT_PROG_RC],
-[AC_CHECK_TOOL(RC, windres,)
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_RC], [])
-
-
-# _LT_DECL_EGREP
-# --------------
-# If we don't have a new enough Autoconf to choose the best grep
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_EGREP],
-[AC_REQUIRE([AC_PROG_EGREP])dnl
-AC_REQUIRE([AC_PROG_FGREP])dnl
-test -z "$GREP" && GREP=grep
-_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
-_LT_DECL([], [EGREP], [1], [An ERE matcher])
-_LT_DECL([], [FGREP], [1], [A literal string matcher])
-dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
-AC_SUBST([GREP])
-])
-
-
-# _LT_DECL_OBJDUMP
-# --------------
-# If we don't have a new enough Autoconf to choose the best objdump
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_OBJDUMP],
-[AC_CHECK_TOOL(OBJDUMP, objdump, false)
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
-AC_SUBST([OBJDUMP])
-])
-
-# _LT_DECL_DLLTOOL
-# ----------------
-# Ensure DLLTOOL variable is set.
-m4_defun([_LT_DECL_DLLTOOL],
-[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
-AC_SUBST([DLLTOOL])
-])
-
-# _LT_DECL_SED
-# ------------
-# Check for a fully-functional sed program, that truncates
-# as few characters as possible.  Prefer GNU sed if found.
-m4_defun([_LT_DECL_SED],
-[AC_PROG_SED
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
-_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
-    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
-])# _LT_DECL_SED
-
-m4_ifndef([AC_PROG_SED], [
-############################################################
-# NOTE: This macro has been submitted for inclusion into   #
-#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
-#  a released version of Autoconf we should remove this    #
-#  macro and use it instead.                               #
-############################################################
-
-m4_defun([AC_PROG_SED],
-[AC_MSG_CHECKING([for a sed that does not truncate output])
-AC_CACHE_VAL(lt_cv_path_SED,
-[# Loop through the user's path and test for sed and gsed.
-# Then use that list of sed's as ones to test for truncation.
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for lt_ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
-        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
-      fi
-    done
-  done
-done
-IFS=$as_save_IFS
-lt_ac_max=0
-lt_ac_count=0
-# Add /usr/xpg4/bin/sed as it is typically found on Solaris
-# along with /bin/sed that truncates output.
-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-  test ! -f $lt_ac_sed && continue
-  cat /dev/null > conftest.in
-  lt_ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
-  # Check for GNU sed and select it if it is found.
-  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
-    lt_cv_path_SED=$lt_ac_sed
-    break
-  fi
-  while true; do
-    cat conftest.in conftest.in >conftest.tmp
-    mv conftest.tmp conftest.in
-    cp conftest.in conftest.nl
-    echo >>conftest.nl
-    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
-    cmp -s conftest.out conftest.nl || break
-    # 10000 chars as input seems more than enough
-    test $lt_ac_count -gt 10 && break
-    lt_ac_count=`expr $lt_ac_count + 1`
-    if test $lt_ac_count -gt $lt_ac_max; then
-      lt_ac_max=$lt_ac_count
-      lt_cv_path_SED=$lt_ac_sed
-    fi
-  done
-done
-])
-SED=$lt_cv_path_SED
-AC_SUBST([SED])
-AC_MSG_RESULT([$SED])
-])#AC_PROG_SED
-])#m4_ifndef
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_SED], [])
-
-
-# _LT_CHECK_SHELL_FEATURES
-# ------------------------
-# Find out whether the shell is Bourne or XSI compatible,
-# or has some other useful features.
-m4_defun([_LT_CHECK_SHELL_FEATURES],
-[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,b/c, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-AC_MSG_RESULT([$xsi_shell])
-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
-
-AC_MSG_CHECKING([whether the shell understands "+="])
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-AC_MSG_RESULT([$lt_shell_append])
-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
-_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
-])# _LT_CHECK_SHELL_FEATURES
-
-
-# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
-# ------------------------------------------------------
-# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
-# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
-m4_defun([_LT_PROG_FUNCTION_REPLACE],
-[dnl {
-sed -e '/^$1 ()$/,/^} # $1 /c\
-$1 ()\
-{\
-m4_bpatsubsts([$2], [$], [\\], [^\([	 ]\)], [\\\1])
-} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-])
-
-
-# _LT_PROG_REPLACE_SHELLFNS
-# -------------------------
-# Replace existing portable implementations of several shell functions with
-# equivalent extended shell implementations where those features are available..
-m4_defun([_LT_PROG_REPLACE_SHELLFNS],
-[if test x"$xsi_shell" = xyes; then
-  _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
-    case ${1} in
-      */*) func_dirname_result="${1%/*}${2}" ;;
-      *  ) func_dirname_result="${3}" ;;
-    esac])
-
-  _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
-    func_basename_result="${1##*/}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
-    case ${1} in
-      */*) func_dirname_result="${1%/*}${2}" ;;
-      *  ) func_dirname_result="${3}" ;;
-    esac
-    func_basename_result="${1##*/}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
-    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-    # positional parameters, so assign one to ordinary parameter first.
-    func_stripname_result=${3}
-    func_stripname_result=${func_stripname_result#"${1}"}
-    func_stripname_result=${func_stripname_result%"${2}"}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
-    func_split_long_opt_name=${1%%=*}
-    func_split_long_opt_arg=${1#*=}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
-    func_split_short_opt_arg=${1#??}
-    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
-    case ${1} in
-      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-      *)    func_lo2o_result=${1} ;;
-    esac])
-
-  _LT_PROG_FUNCTION_REPLACE([func_xform], [    func_xform_result=${1%.*}.lo])
-
-  _LT_PROG_FUNCTION_REPLACE([func_arith], [    func_arith_result=$(( $[*] ))])
-
-  _LT_PROG_FUNCTION_REPLACE([func_len], [    func_len_result=${#1}])
-fi
-
-if test x"$lt_shell_append" = xyes; then
-  _LT_PROG_FUNCTION_REPLACE([func_append], [    eval "${1}+=\\${2}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
-    func_quote_for_eval "${2}"
-dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
-    eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
-
-  # Save a `func_append' function call where possible by direct use of '+='
-  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-else
-  # Save a `func_append' function call even when '+=' is not available
-  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
-  AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
-fi
-])
-
-# _LT_PATH_CONVERSION_FUNCTIONS
-# -----------------------------
-# Determine which file name conversion functions should be used by
-# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
-# for certain cross-compile configurations and native mingw.
-m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_MSG_CHECKING([how to convert $build file names to $host format])
-AC_CACHE_VAL(lt_cv_to_host_file_cmd,
-[case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
-esac
-])
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
-_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
-         [0], [convert $build file names to $host format])dnl
-
-AC_MSG_CHECKING([how to convert $build file names to toolchain format])
-AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
-[#assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
-])
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
-_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
-         [0], [convert $build files to toolchain format])dnl
-])# _LT_PATH_CONVERSION_FUNCTIONS
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
deleted file mode 100644
index 5d9acd8..0000000
--- a/m4/ltoptions.m4
+++ /dev/null
@@ -1,384 +0,0 @@
-# Helper functions for option handling.                    -*- Autoconf -*-
-#
-#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
-#   Inc.
-#   Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 7 ltoptions.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
-
-
-# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
-# ------------------------------------------
-m4_define([_LT_MANGLE_OPTION],
-[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
-
-
-# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
-# ---------------------------------------
-# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
-# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
-# saved as a flag.
-m4_define([_LT_SET_OPTION],
-[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
-m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
-        _LT_MANGLE_DEFUN([$1], [$2]),
-    [m4_warning([Unknown $1 option `$2'])])[]dnl
-])
-
-
-# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
-# ------------------------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-m4_define([_LT_IF_OPTION],
-[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
-
-
-# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
-# -------------------------------------------------------
-# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
-# are set.
-m4_define([_LT_UNLESS_OPTIONS],
-[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-	    [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
-		      [m4_define([$0_found])])])[]dnl
-m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
-])[]dnl
-])
-
-
-# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
-# ----------------------------------------
-# OPTION-LIST is a space-separated list of Libtool options associated
-# with MACRO-NAME.  If any OPTION has a matching handler declared with
-# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
-# the unknown option and exit.
-m4_defun([_LT_SET_OPTIONS],
-[# Set options
-m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-    [_LT_SET_OPTION([$1], _LT_Option)])
-
-m4_if([$1],[LT_INIT],[
-  dnl
-  dnl Simply set some default values (i.e off) if boolean options were not
-  dnl specified:
-  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
-  ])
-  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
-  ])
-  dnl
-  dnl If no reference was made to various pairs of opposing options, then
-  dnl we run the default mode handler for the pair.  For example, if neither
-  dnl `shared' nor `disable-shared' was passed, we enable building of shared
-  dnl archives by default:
-  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
-  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
-  		   [_LT_ENABLE_FAST_INSTALL])
-  ])
-])# _LT_SET_OPTIONS
-
-
-## --------------------------------- ##
-## Macros to handle LT_INIT options. ##
-## --------------------------------- ##
-
-# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
-# -----------------------------------------
-m4_define([_LT_MANGLE_DEFUN],
-[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
-
-
-# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
-# -----------------------------------------------
-m4_define([LT_OPTION_DEFINE],
-[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
-])# LT_OPTION_DEFINE
-
-
-# dlopen
-# ------
-LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
-])
-
-AU_DEFUN([AC_LIBTOOL_DLOPEN],
-[_LT_SET_OPTION([LT_INIT], [dlopen])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
-
-
-# win32-dll
-# ---------
-# Declare package support for building win32 dll's.
-LT_OPTION_DEFINE([LT_INIT], [win32-dll],
-[enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
-  AC_CHECK_TOOL(AS, as, false)
-  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-  AC_CHECK_TOOL(OBJDUMP, objdump, false)
-  ;;
-esac
-
-test -z "$AS" && AS=as
-_LT_DECL([], [AS],      [1], [Assembler program])dnl
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
-])# win32-dll
-
-AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-_LT_SET_OPTION([LT_INIT], [win32-dll])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
-
-
-# _LT_ENABLE_SHARED([DEFAULT])
-# ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_SHARED],
-[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([shared],
-    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
-	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
-
-    _LT_DECL([build_libtool_libs], [enable_shared], [0],
-	[Whether or not to build shared libraries])
-])# _LT_ENABLE_SHARED
-
-LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
-])
-
-AC_DEFUN([AC_DISABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], [disable-shared])
-])
-
-AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
-AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_SHARED], [])
-dnl AC_DEFUN([AM_DISABLE_SHARED], [])
-
-
-
-# _LT_ENABLE_STATIC([DEFAULT])
-# ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_STATIC],
-[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([static],
-    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
-	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
-
-    _LT_DECL([build_old_libs], [enable_static], [0],
-	[Whether or not to build static libraries])
-])# _LT_ENABLE_STATIC
-
-LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
-])
-
-AC_DEFUN([AC_DISABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], [disable-static])
-])
-
-AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
-AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_STATIC], [])
-dnl AC_DEFUN([AM_DISABLE_STATIC], [])
-
-
-
-# _LT_ENABLE_FAST_INSTALL([DEFAULT])
-# ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_FAST_INSTALL],
-[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([fast-install],
-    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
-    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
-
-_LT_DECL([fast_install], [enable_fast_install], [0],
-	 [Whether or not to optimize for fast installation])dnl
-])# _LT_ENABLE_FAST_INSTALL
-
-LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
-
-# Old names:
-AU_DEFUN([AC_ENABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
-])
-
-AU_DEFUN([AC_DISABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
-dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
-
-
-# _LT_WITH_PIC([MODE])
-# --------------------
-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
-# LT_INIT options.
-# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
-m4_define([_LT_WITH_PIC],
-[AC_ARG_WITH([pic],
-    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
-	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [lt_p=${PACKAGE-default}
-    case $withval in
-    yes|no) pic_mode=$withval ;;
-    *)
-      pic_mode=default
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for lt_pkg in $withval; do
-	IFS="$lt_save_ifs"
-	if test "X$lt_pkg" = "X$lt_p"; then
-	  pic_mode=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [pic_mode=default])
-
-test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
-
-_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
-])# _LT_WITH_PIC
-
-LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
-
-# Old name:
-AU_DEFUN([AC_LIBTOOL_PICMODE],
-[_LT_SET_OPTION([LT_INIT], [pic-only])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
-
-## ----------------- ##
-## LTDL_INIT Options ##
-## ----------------- ##
-
-m4_define([_LTDL_MODE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
-		 [m4_define([_LTDL_MODE], [nonrecursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [recursive],
-		 [m4_define([_LTDL_MODE], [recursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [subproject],
-		 [m4_define([_LTDL_MODE], [subproject])])
-
-m4_define([_LTDL_TYPE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [installable],
-		 [m4_define([_LTDL_TYPE], [installable])])
-LT_OPTION_DEFINE([LTDL_INIT], [convenience],
-		 [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
deleted file mode 100644
index 9000a05..0000000
--- a/m4/ltsugar.m4
+++ /dev/null
@@ -1,123 +0,0 @@
-# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
-#
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltsugar.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
-
-
-# lt_join(SEP, ARG1, [ARG2...])
-# -----------------------------
-# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
-# associated separator.
-# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
-# versions in m4sugar had bugs.
-m4_define([lt_join],
-[m4_if([$#], [1], [],
-       [$#], [2], [[$2]],
-       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
-m4_define([_lt_join],
-[m4_if([$#$2], [2], [],
-       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
-
-
-# lt_car(LIST)
-# lt_cdr(LIST)
-# ------------
-# Manipulate m4 lists.
-# These macros are necessary as long as will still need to support
-# Autoconf-2.59 which quotes differently.
-m4_define([lt_car], [[$1]])
-m4_define([lt_cdr],
-[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
-       [$#], 1, [],
-       [m4_dquote(m4_shift($@))])])
-m4_define([lt_unquote], $1)
-
-
-# lt_append(MACRO-NAME, STRING, [SEPARATOR])
-# ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
-# Note that neither SEPARATOR nor STRING are expanded; they are appended
-# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
-# No SEPARATOR is output if MACRO-NAME was previously undefined (different
-# than defined and empty).
-#
-# This macro is needed until we can rely on Autoconf 2.62, since earlier
-# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
-m4_define([lt_append],
-[m4_define([$1],
-	   m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
-
-
-
-# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
-# ----------------------------------------------------------
-# Produce a SEP delimited list of all paired combinations of elements of
-# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
-# has the form PREFIXmINFIXSUFFIXn.
-# Needed until we can rely on m4_combine added in Autoconf 2.62.
-m4_define([lt_combine],
-[m4_if(m4_eval([$# > 3]), [1],
-       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
-[[m4_foreach([_Lt_prefix], [$2],
-	     [m4_foreach([_Lt_suffix],
-		]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
-	[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
-
-
-# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
-# -----------------------------------------------------------------------
-# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
-# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
-m4_define([lt_if_append_uniq],
-[m4_ifdef([$1],
-	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
-		 [lt_append([$1], [$2], [$3])$4],
-		 [$5])],
-	  [lt_append([$1], [$2], [$3])$4])])
-
-
-# lt_dict_add(DICT, KEY, VALUE)
-# -----------------------------
-m4_define([lt_dict_add],
-[m4_define([$1($2)], [$3])])
-
-
-# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
-# --------------------------------------------
-m4_define([lt_dict_add_subkey],
-[m4_define([$1($2:$3)], [$4])])
-
-
-# lt_dict_fetch(DICT, KEY, [SUBKEY])
-# ----------------------------------
-m4_define([lt_dict_fetch],
-[m4_ifval([$3],
-	m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
-    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
-
-
-# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
-# -----------------------------------------------------------------
-m4_define([lt_if_dict_fetch],
-[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
-	[$5],
-    [$6])])
-
-
-# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
-# --------------------------------------------------------------
-m4_define([lt_dict_filter],
-[m4_if([$5], [], [],
-  [lt_join(m4_quote(m4_default([$4], [[, ]])),
-           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
-		      [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
-])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
deleted file mode 100644
index 07a8602..0000000
--- a/m4/ltversion.m4
+++ /dev/null
@@ -1,23 +0,0 @@
-# ltversion.m4 -- version numbers			-*- Autoconf -*-
-#
-#   Copyright (C) 2004 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# @configure_input@
-
-# serial 3337 ltversion.m4
-# This file is part of GNU Libtool
-
-m4_define([LT_PACKAGE_VERSION], [2.4.2])
-m4_define([LT_PACKAGE_REVISION], [1.3337])
-
-AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4.2'
-macro_revision='1.3337'
-_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
-_LT_DECL(, macro_revision, 0)
-])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
deleted file mode 100644
index c573da9..0000000
--- a/m4/lt~obsolete.m4
+++ /dev/null
@@ -1,98 +0,0 @@
-# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
-#
-#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004.
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 5 lt~obsolete.m4
-
-# These exist entirely to fool aclocal when bootstrapping libtool.
-#
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
-# which have later been changed to m4_define as they aren't part of the
-# exported API, or moved to Autoconf or Automake where they belong.
-#
-# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
-# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
-# using a macro with the same name in our local m4/libtool.m4 it'll
-# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
-# and doesn't know about Autoconf macros at all.)
-#
-# So we provide this file, which has a silly filename so it's always
-# included after everything else.  This provides aclocal with the
-# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
-# because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
-#
-# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
-# Yes, that means every name once taken will need to remain here until
-# we give up compatibility with versions before 1.7, at which point
-# we need to keep only those names which we still refer to.
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
-
-m4_ifndef([AC_LIBTOOL_LINKER_OPTION],	[AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
-m4_ifndef([AC_PROG_EGREP],		[AC_DEFUN([AC_PROG_EGREP])])
-m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_AC_SHELL_INIT],		[AC_DEFUN([_LT_AC_SHELL_INIT])])
-m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],	[AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
-m4_ifndef([_LT_PROG_LTMAIN],		[AC_DEFUN([_LT_PROG_LTMAIN])])
-m4_ifndef([_LT_AC_TAGVAR],		[AC_DEFUN([_LT_AC_TAGVAR])])
-m4_ifndef([AC_LTDL_ENABLE_INSTALL],	[AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
-m4_ifndef([AC_LTDL_PREOPEN],		[AC_DEFUN([AC_LTDL_PREOPEN])])
-m4_ifndef([_LT_AC_SYS_COMPILER],	[AC_DEFUN([_LT_AC_SYS_COMPILER])])
-m4_ifndef([_LT_AC_LOCK],		[AC_DEFUN([_LT_AC_LOCK])])
-m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],	[AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
-m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],	[AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
-m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],	[AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
-m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
-m4_ifndef([AC_LIBTOOL_OBJDIR],		[AC_DEFUN([AC_LIBTOOL_OBJDIR])])
-m4_ifndef([AC_LTDL_OBJDIR],		[AC_DEFUN([AC_LTDL_OBJDIR])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
-m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],	[AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
-m4_ifndef([AC_PATH_MAGIC],		[AC_DEFUN([AC_PATH_MAGIC])])
-m4_ifndef([AC_PROG_LD_GNU],		[AC_DEFUN([AC_PROG_LD_GNU])])
-m4_ifndef([AC_PROG_LD_RELOAD_FLAG],	[AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
-m4_ifndef([AC_DEPLIBS_CHECK_METHOD],	[AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
-m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS],	[AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
-m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP],	[AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
-m4_ifndef([LT_AC_PROG_EGREP],		[AC_DEFUN([LT_AC_PROG_EGREP])])
-m4_ifndef([LT_AC_PROG_SED],		[AC_DEFUN([LT_AC_PROG_SED])])
-m4_ifndef([_LT_CC_BASENAME],		[AC_DEFUN([_LT_CC_BASENAME])])
-m4_ifndef([_LT_COMPILER_BOILERPLATE],	[AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
-m4_ifndef([_LT_LINKER_BOILERPLATE],	[AC_DEFUN([_LT_LINKER_BOILERPLATE])])
-m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN([_AC_PROG_LIBTOOL])])
-m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
-m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
-m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
-m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
-m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
-m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
-m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
-m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
-m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
-m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
-m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
-m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
-m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
-m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
-m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
-m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
-m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],	[AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
-m4_ifndef([_LT_AC_PROG_CXXCPP],		[AC_DEFUN([_LT_AC_PROG_CXXCPP])])
-m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],	[AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
-m4_ifndef([_LT_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_PROG_F77],		[AC_DEFUN([_LT_PROG_F77])])
-m4_ifndef([_LT_PROG_FC],		[AC_DEFUN([_LT_PROG_FC])])
-m4_ifndef([_LT_PROG_CXX],		[AC_DEFUN([_LT_PROG_CXX])])
diff --git a/perl/GRIB-API/Makefile.PL b/perl/GRIB-API/Makefile.PL
deleted file mode 100644
index 9301912..0000000
--- a/perl/GRIB-API/Makefile.PL
+++ /dev/null
@@ -1,23 +0,0 @@
-use 5.006001;
-use ExtUtils::MakeMaker;
-# See lib/ExtUtils/MakeMaker.pm for details of how to influence
-# the contents of the Makefile that is written.
-WriteMakefile(
-    NAME              => 'GRIB::API',
-   # Module version
-   'VERSION'   => '0.16.0',
-
-   # Preprocessor defines
-   'DEFINE' => '-DHAVE_CONFIG_H',     # e.g., '-DHAVE_SOMETHING'
-
-    VERSION_FROM      => 'lib/GRIB/API.pm', # finds $VERSION
-    PREREQ_PM         => {}, # e.g., Module::Name => 1.1
-    ($] >= 5.005 ?     ## Add these new keywords supported since 5.005
-      (ABSTRACT_FROM  => 'lib/GRIB/API.pm', # retrieve abstract from module
-       AUTHOR         => 'Baudouin Raoult <mab at suse.de>') : ()),
-    LIBS              => ['-L../../src -lgrib_api -lm @LIB_JP2@ '], # e.g., '-lm'
-    INC               => '-I/home/ma/masn/git/eccodes/src', # e.g., '-I. -I/usr/include/other'
-	# Un-comment this if you add C files to link with later:
-    # OBJECT            => '$(O_FILES)', # link all the C files too
-	depend           => { "API.o" => "../../src/libgrib_api.a" }
-);
diff --git a/perl/GRIB-API/lib/GRIB/API.pm b/perl/GRIB-API/lib/GRIB/API.pm
new file mode 100644
index 0000000..914738f
--- /dev/null
+++ b/perl/GRIB-API/lib/GRIB/API.pm
@@ -0,0 +1,97 @@
+package GRIB::API;
+
+use 5.006001;
+use strict;
+use warnings;
+use Carp;
+
+require Exporter;
+use AutoLoader qw(AUTOLOAD);
+
+our @ISA = qw(Exporter);
+
+# Items to export into callers namespace by default. Note: do not export
+# names by default without a very good reason. Use EXPORT_OK instead.
+# Do not simply export all your public functions/methods/constants.
+
+# This allows declaration	use GRIB::API ':all';
+# If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
+# will save memory.
+our %EXPORT_TAGS = ( 'all' => [ qw(
+	
+) ] );
+
+our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
+
+our @EXPORT = qw(
+	
+);
+
+our $VERSION = '0.01';
+
+require XSLoader;
+XSLoader::load('GRIB::API', $VERSION);
+
+# Preloaded methods go here.
+
+sub new {
+	my ($class,$arg) = @_;
+	return Read($arg)      if(ref($arg) =~ /GLOB/);
+	return create($arg)    if(substr($arg,0,4) =~ /(GRIB|BUDG|TIDE)/);
+	return template($arg);
+}
+
+# Autoload methods go after =cut, and are processed by the autosplit program.
+
+1;
+__END__
+# Below is stub documentation for your module. You'd better edit it!
+
+=head1 NAME
+
+GRIB::API - Perl extension for blah blah blah
+
+=head1 SYNOPSIS
+
+  use GRIB::API;
+  blah blah blah
+
+=head1 DESCRIPTION
+
+Stub documentation for GRIB::API, created by h2xs. It looks like the
+author of the extension was negligent enough to leave the stub
+unedited.
+
+Blah blah blah.
+
+=head2 EXPORT
+
+None by default.
+
+
+
+=head1 SEE ALSO
+
+Mention other useful documentation such as the documentation of
+related modules or operating system documentation (such as man pages
+in UNIX), or any relevant external documentation such as RFCs or
+standards.
+
+If you have a mailing list set up for your module, mention it here.
+
+If you have a web site set up for your module, mention it here.
+
+=head1 AUTHOR
+
+Baudouin Raoult
+
+=head1 COPYRIGHT AND LICENSE
+Copyright 2005-2016 ECMWF.
+
+This software is licensed under the terms of the Apache Licence Version 2.0
+which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+
+In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+
+=cut
diff --git a/perl/GRIB-API/lib/GRIB/API/Debug.pm b/perl/GRIB-API/lib/GRIB/API/Debug.pm
new file mode 100644
index 0000000..3cf02dd
--- /dev/null
+++ b/perl/GRIB-API/lib/GRIB/API/Debug.pm
@@ -0,0 +1,7 @@
+package GRIB::API::Debug;
+
+sub DESTROY {
+	print "GRIB::API::Debug DESTROY called\n";
+}
+
+1;
diff --git a/perl/GRIB-API/lib/GRIB/API/Tie.pm b/perl/GRIB-API/lib/GRIB/API/Tie.pm
new file mode 100644
index 0000000..6f05d58
--- /dev/null
+++ b/perl/GRIB-API/lib/GRIB/API/Tie.pm
@@ -0,0 +1,46 @@
+package GRIB::API::Tie;
+use Carp;
+
+sub TIEHASH {
+	my ($class,$handle) = @_;
+	bless({handle=>$handle},$class);
+}
+
+sub FETCH {
+	my ($self,$key) = @_;
+	return $self->{handle}->get($key);
+}
+
+sub STORE {
+	my ($self,$key,$value) = @_;
+	$self->{handle}->set($key,$value) or warn "Cannot set $key to $value";
+	delete $self->{keys};
+}
+
+sub EXISTS {
+	my ($self,$key) = @_;
+	die;
+	return $self->{handle}->get_size($key);
+}
+
+sub CLEAR {
+	my ($self) = @_;
+	warn "GRIB::API::Tie::CLEAR ignored";
+
+}
+
+sub FIRSTKEY {
+	my ($self) = @_;
+	$self->{keys} = $self->{handle}->get_keys();
+	$self->{n} = 0;
+	$self->{keys}->[$self->{n}++];
+}
+
+sub NEXTKEY {
+	my ($self,$last) = @_;
+	croak "Cannot iterate and modify GRIB at the same time"
+		unless(exists $self->{keys});
+	$self->{keys}->[$self->{n}++];
+}
+
+1;
diff --git a/perl/Makefile.in b/perl/Makefile.in
deleted file mode 100644
index 043d376..0000000
--- a/perl/Makefile.in
+++ /dev/null
@@ -1,532 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = perl
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AEC_DIR = @AEC_DIR@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CCSDS_TEST = @CCSDS_TEST@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEVEL_RULES = @DEVEL_RULES@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECCODES_AGE = @ECCODES_AGE@
-ECCODES_CURRENT = @ECCODES_CURRENT@
-ECCODES_DEFINITION_PATH = @ECCODES_DEFINITION_PATH@
-ECCODES_MAIN_VERSION = @ECCODES_MAIN_VERSION@
-ECCODES_MAJOR_VERSION = @ECCODES_MAJOR_VERSION@
-ECCODES_MINOR_VERSION = @ECCODES_MINOR_VERSION@
-ECCODES_PATCH_VERSION = @ECCODES_PATCH_VERSION@
-ECCODES_REVISION = @ECCODES_REVISION@
-ECCODES_SAMPLES_PATH = @ECCODES_SAMPLES_PATH@
-ECCODES_VERSION_STR = @ECCODES_VERSION_STR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB = @EMOS_LIB@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-F90_CHECK = @F90_CHECK@
-F90_MODULE_FLAG = @F90_MODULE_FLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FORTRAN_MOD = @FORTRAN_MOD@
-GREP = @GREP@
-GRIB_API_INC = @GRIB_API_INC@
-GRIB_API_LIB = @GRIB_API_LIB@
-GRIB_DEVEL = @GRIB_DEVEL@
-IFS_SAMPLES_DIR = @IFS_SAMPLES_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JASPER_DIR = @JASPER_DIR@
-JPEG_TEST = @JPEG_TEST@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_AEC = @LIB_AEC@
-LIB_JASPER = @LIB_JASPER@
-LIB_OPENJPEG = @LIB_OPENJPEG@
-LIB_PNG = @LIB_PNG@
-LINUX_DISTRIBUTION_NAME = @LINUX_DISTRIBUTION_NAME@
-LINUX_DISTRIBUTION_VERSION = @LINUX_DISTRIBUTION_VERSION@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENJPEG_DIR = @OPENJPEG_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PERLDIR = @PERLDIR@
-PERL_INSTALL_OPTIONS = @PERL_INSTALL_OPTIONS@
-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_CHECK = @PYTHON_CHECK@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_DATA_HANDLER = @PYTHON_DATA_HANDLER@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RM = @RM@
-RPM_CONFIGURE_ARGS = @RPM_CONFIGURE_ARGS@
-RPM_HOST_CPU = @RPM_HOST_CPU@
-RPM_HOST_OS = @RPM_HOST_OS@
-RPM_HOST_VENDOR = @RPM_HOST_VENDOR@
-RPM_RELEASE = @RPM_RELEASE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_PEDANTIC = @WARN_PEDANTIC@
-WERROR = @WERROR@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-API_DIR = GRIB-API
-PERLMAKEMAKER = $(API_DIR)/Makefile.PL
-PERLMAKEFILE = $(API_DIR)/Makefile
-PERLLIB = $(API_DIR)/blib/arch/auto/GRIB/API/API.so
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu perl/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu perl/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-	$(MAKE) $(AM_MAKEFLAGS) \
-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
-	  dist-hook
-check-am: all-am
-check: check-am
-all-am: Makefile all-local
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am all-local check check-am clean clean-generic \
-	clean-libtool cscopelist-am ctags-am dist-hook distclean \
-	distclean-generic distclean-libtool distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
-	uninstall-am
-
-
-dist-hook:
-	( cd $(API_DIR) &&  \
-	   cat MANIFEST \
-	       | cpio -pdum $(distdir)/$(API_DIR) 2> /dev/null ; )
-
-all-local: all-perl
-
-all-perl: $(PERLLIB)
-
-$(PERLMAKEFILE): $(PERLMAKEMAKER)
-	cd $(API_DIR) && @PERL@ Makefile.PL @PERL_INSTALL_OPTIONS@ @PERL_MAKE_OPTIONS@ @PERL_LD_OPTIONS@ 
-
-$(PERLLIB): $(PERLMAKEFILE) $(top_builddir)/src/libgrib_api.a
-	cd $(API_DIR) && $(MAKE)
-
-$(top_builddir)/src/libgrib_api.a: $(top_builddir)/src/Makefile
-	cd $(top_builddir)/src  && $(MAKE)
-
-install-exec-perl: $(PERLMAKEFILE)
-	cd $(API_DIR) && $(MAKE) install && $(MAKE) clean
-
-install-exec-am:install-exec-perl
-
-check-perl: $(PERLMAKEFILE)
-	cd $(API_DIR) && $(MAKE) test
-
-clean-perl: $(PERLMAKEFILE)
-	cd $(API_DIR) && \
-	$(MAKE) clean && \
-	rm -f Makefile.old
-
-distclean-perl: clean-perl
-clean: clean-perl
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index 48ab4d8..f8a0079 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -5,105 +5,54 @@ if( HAVE_PYTHON )
     #    include( ${SWIG_USE_FILE} )
     #endif()
 
-    # check for Numpy
-    find_package( NumPy )
-
-    ###############################################################################
-    # swig python interface
-
-    #if( SWIG_FOUND AND PYTHONLIBS_FOUND )
-    if( PYTHONLIBS_FOUND )
-
-        set(PYTHON_DEST_ECCODES "${INSTALL_LIB_DIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/eccodes" )
-        set(PYTHON_DEST_GRIBAPI "${INSTALL_LIB_DIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/gribapi" )
-
-        file( RELATIVE_PATH relative_rpath "${CMAKE_INSTALL_PREFIX}/${PYTHON_DEST_ECCODES}" "${${PNAME}_FULL_INSTALL_LIB_DIR}" )
-
-        # debug_var( relative_rpath )
-
-        ecbuild_append_to_rpath( ${relative_rpath} )
-        ecbuild_append_to_rpath( "../../lib" )        # for ctest to find the libs
-
-        # preparing for generating setup.py -- this may not be needed as cmake can do the swig + shared libs without libtool
-
-        if( NUMPY_FOUND )
-            set( DATA_HANDLER "numpy" )
-        else()
-            set( DATA_HANDLER "array" )
-        endif()
-        set( _swig_c_wrapper  swig_wrap_${DATA_HANDLER}.c )
-        set( _swig_py_wrapper swig_wrap_${DATA_HANDLER}.py )
-
-        set( BUILD_DIR "${PROJECT_SOURCE_DIR}" ) # setup.py assumes build_dir is same as source_dir -- not true for cmake builds
-
-        set( LIB_PNG "${HAVE_LIBPNG}" )
-
-        set( LIB_JASPER ${HAVE_LIBJASPER} )
-        if( HAVE_LIBJASPER )
-            get_filename_component(JASPER_DIR ${JASPER_INCLUDE_DIR} PATH )
-        endif()
-
-        set( LIB_OPENJPEG ${HAVE_LIBOPENJPEG} )
-        if( HAVE_LIBOPENJPEG )
-            get_filename_component(OPENJPEG_DIR ${OPENJPEG_INCLUDE_DIR} PATH )
-        endif()
-
-        include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${PYTHON_INCLUDE_DIRS} )
-
-        configure_file( setup.py.in setup.py )
-
-        # compile swig interface
-
-        set(CMAKE_SWIG_FLAGS "")
-
-        include_directories( ${PYTHON_INCLUDE_PATH} )
-
-        set_source_files_properties( gribapi_swig.i PROPERTIES C ON )
-
-        if( NUMPY_FOUND )
-            set( CMAKE_SWIG_FLAGS "-DNUMPY" )
-            include_directories( ${NUMPY_INCLUDE_DIRS} )
-        endif()
-
-        ####### Do not invoke swig. Use our own generated C wrapper file ######
-        set( _gribapi_swig "_gribapi_swig${CMAKE_SHARED_LIBRARY_SUFFIX}" )
-        # Build the extension module for use in build tree with RPATH pointing to the build tree
-        add_custom_command( OUTPUT ${_gribapi_swig}
-                            COMMAND ${PYTHON_EXECUTABLE} setup.py build_ext --inplace -R ${CMAKE_BINARY_DIR}/lib
-                            DEPENDS grib_interface.h grib_interface.c ${_swig_c_wrapper} setup.py.in eccodes )
-        # Build the extension module as target for installation with RPATH pointing to the install prefix
-        add_custom_command( OUTPUT build/${_gribapi_swig}
-                            COMMAND ${PYTHON_EXECUTABLE} setup.py build_ext -b build -R ${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR}
-                            DEPENDS grib_interface.h grib_interface.c ${_swig_c_wrapper} setup.py.in eccodes )
-
-        #ecbuild_add_library(TARGET    _gribapi_swig
-        #                    TYPE SHARED
-        #                    NOINSTALL
-        #                    SOURCES   grib_interface.h grib_interface.c ${_swig_c_wrapper}
-        #                    LIBS      eccodes ${PYTHON_LIBRARIES} )
-        # Don't use the lib prefix.  This is needed for the python case where a _modulename.so is generated
-        #set_target_properties(_gribapi_swig PROPERTIES PREFIX "")
-
-        # Copy the wrapper python file to build area
-        set( _swig_py  gribapi_swig.py )
-        add_custom_command(
-           OUTPUT ${_swig_py}
-           COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${_swig_py_wrapper} ${CMAKE_CURRENT_BINARY_DIR}/${_swig_py}
-           DEPENDS ${_gribapi_swig} build/${_gribapi_swig}
-        )
-        add_custom_target(copy_swig_py ALL DEPENDS ${_swig_py})
-        #######################
-
-        #install(TARGETS _gribapi_swig DESTINATION ${PYTHON_DEST_GRIBAPI} )
+    # preparing for generating setup.py
+    if( HAVE_LIBJASPER )
+        get_filename_component(JASPER_DIR ${JASPER_INCLUDE_DIR} PATH )
+    endif()
 
-        #install(FILES ${CMAKE_CURRENT_BINARY_DIR}/gribapi_swig.py  DESTINATION ${PYTHON_DEST_GRIBAPI})
-        install(FILES ${CMAKE_CURRENT_BINARY_DIR}/build/${_gribapi_swig} ${CMAKE_CURRENT_BINARY_DIR}/gribapi_swig.py  DESTINATION ${PYTHON_DEST_GRIBAPI})
-        install(FILES gribapi.py DESTINATION ${PYTHON_DEST_GRIBAPI})
-        install(FILES eccodes.py DESTINATION ${PYTHON_DEST_ECCODES})
-        
-        install(FILES init_gribapi.py DESTINATION ${PYTHON_DEST_GRIBAPI} RENAME __init__.py)
-        install(FILES init_eccodes.py DESTINATION ${PYTHON_DEST_ECCODES} RENAME __init__.py)
+    if( HAVE_LIBOPENJPEG )
+        get_filename_component(OPENJPEG_LIB_DIR ${OPENJPEG_LIBRARY} PATH )
+    endif()
 
+    if( HAVE_AEC )
+      get_filename_component(AEC_DIR ${AEC_INCLUDE_DIR} PATH )
     endif()
 
+    configure_file( setup.py.in setup.py )
+
+    # compile swig interface
+    # set(CMAKE_SWIG_FLAGS "")
+    # set_source_files_properties( gribapi_swig.i PROPERTIES C ON )
+
+    # if( NUMPY_FOUND )
+    #     set( CMAKE_SWIG_FLAGS "-DNUMPY" )
+    #     include_directories( ${NUMPY_INCLUDE_DIRS} )
+    # endif()
+
+    ####### Do not invoke swig. Use our own generated C wrapper file ######
+    set( _gribapi_swig "gribapi/_gribapi_swig${CMAKE_SHARED_LIBRARY_SUFFIX}" )
+    # Build the extension module for use in build tree with RPATH pointing to the build tree
+    add_custom_command( OUTPUT ${_gribapi_swig}
+                        COMMAND ${PYTHON_EXECUTABLE} setup.py build_ext --inplace --rpath ${CMAKE_BINARY_DIR}/lib
+                        DEPENDS grib_interface.h grib_interface.c swig_wrap_numpy.c setup.py.in eccodes )
+    add_custom_target(eccodes_build_swig_wrapper ALL DEPENDS ${_gribapi_swig})
+
+    #ecbuild_add_library(TARGET    _gribapi_swig
+    #                    TYPE SHARED
+    #                    NOINSTALL
+    #                    SOURCES   grib_interface.h grib_interface.c swig_wrap_numpy.c
+    #                    INCLUDES  ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${PYTHON_INCLUDE_DIRS}
+    #                    LIBS      eccodes ${PYTHON_LIBRARIES} )
+    # Don't use the lib prefix.  This is needed for the python case where a _modulename.so is generated
+    #set_target_properties(_gribapi_swig PROPERTIES PREFIX "")
+
+    # Copy gribapi and eccodes python modules to build area
+    file( COPY eccodes gribapi DESTINATION . )
+    configure_file( swig_wrap_numpy.py gribapi/gribapi_swig.py COPYONLY )
+
+    # Build the extension module for use in install tree with RPATH pointing to install tree
+    install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} setup.py build_ext --rpath ${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})")
+    # Call distutils for installation
+    install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} setup.py install --prefix $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})")
+
 endif()
diff --git a/python/Makefile.am b/python/Makefile.am
index 069fc8e..c6f3d3d 100644
--- a/python/Makefile.am
+++ b/python/Makefile.am
@@ -13,6 +13,8 @@ _gribapi_swig_la_LDFLAGS = -module -avoid-version $(PYTHON_LDFLAGS)
 INCLUDES = $(PYTHON_INCLUDES) -I$(NUMPY_INCLUDE)
 
 gribapi_swig_wrap.c: swig_wrap_$(PYTHON_DATA_HANDLER).c
+	ln -s gribapi/gribapi.py
+	ln -s eccodes/eccodes.py
 	cp -f swig_wrap_$(PYTHON_DATA_HANDLER).c gribapi_swig_wrap.c
 
 gribapi_swig.py: swig_wrap_$(PYTHON_DATA_HANDLER).py
@@ -101,6 +103,8 @@ setup.py: setup.py.autotools.in
 	$(do_subst) < setup.py.autotools.in > setup.py
 
 gribapi_swig_wrap.c: swig_wrap_$(PYTHON_DATA_HANDLER).c
+	ln -s gribapi/gribapi.py
+	ln -s eccodes/eccodes.py
 	cp -f swig_wrap_$(PYTHON_DATA_HANDLER).c gribapi_swig_wrap.c
 
 gribapi_swig.py: swig_wrap_$(PYTHON_DATA_HANDLER).py
diff --git a/python/Makefile.in b/python/Makefile.in
deleted file mode 100644
index 8988e81..0000000
--- a/python/Makefile.in
+++ /dev/null
@@ -1,879 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = python
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/config/depcomp README
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(pdir)" \
-	"$(DESTDIR)$(pkgpyexecdir)"
-LTLIBRARIES = $(pkgpyexec_LTLIBRARIES)
-am__DEPENDENCIES_1 =
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE at _gribapi_swig_la_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@	$(am__DEPENDENCIES_1)
-am___gribapi_swig_la_SOURCES_DIST = gribapi_swig_wrap.c \
-	grib_interface.c grib_interface.h
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE at am__gribapi_swig_la_OBJECTS = gribapi_swig_wrap.lo \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@	grib_interface.lo
-_gribapi_swig_la_OBJECTS = $(am__gribapi_swig_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-_gribapi_swig_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-	$(AM_CFLAGS) $(CFLAGS) $(_gribapi_swig_la_LDFLAGS) $(LDFLAGS) \
-	-o $@
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE at am__gribapi_swig_la_rpath =  \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@	-rpath \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@	$(pkgpyexecdir)
-SCRIPTS = $(noinst_SCRIPTS)
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(_gribapi_swig_la_SOURCES)
-DIST_SOURCES = $(am___gribapi_swig_la_SOURCES_DIST)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-DATA = $(p_DATA) $(pkgpyexec_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AEC_DIR = @AEC_DIR@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CCSDS_TEST = @CCSDS_TEST@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEVEL_RULES = @DEVEL_RULES@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECCODES_AGE = @ECCODES_AGE@
-ECCODES_CURRENT = @ECCODES_CURRENT@
-ECCODES_DEFINITION_PATH = @ECCODES_DEFINITION_PATH@
-ECCODES_MAIN_VERSION = @ECCODES_MAIN_VERSION@
-ECCODES_MAJOR_VERSION = @ECCODES_MAJOR_VERSION@
-ECCODES_MINOR_VERSION = @ECCODES_MINOR_VERSION@
-ECCODES_PATCH_VERSION = @ECCODES_PATCH_VERSION@
-ECCODES_REVISION = @ECCODES_REVISION@
-ECCODES_SAMPLES_PATH = @ECCODES_SAMPLES_PATH@
-ECCODES_VERSION_STR = @ECCODES_VERSION_STR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB = @EMOS_LIB@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-F90_CHECK = @F90_CHECK@
-F90_MODULE_FLAG = @F90_MODULE_FLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FORTRAN_MOD = @FORTRAN_MOD@
-GREP = @GREP@
-GRIB_API_INC = @GRIB_API_INC@
-GRIB_API_LIB = @GRIB_API_LIB@
-GRIB_DEVEL = @GRIB_DEVEL@
-IFS_SAMPLES_DIR = @IFS_SAMPLES_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JASPER_DIR = @JASPER_DIR@
-JPEG_TEST = @JPEG_TEST@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_AEC = @LIB_AEC@
-LIB_JASPER = @LIB_JASPER@
-LIB_OPENJPEG = @LIB_OPENJPEG@
-LIB_PNG = @LIB_PNG@
-LINUX_DISTRIBUTION_NAME = @LINUX_DISTRIBUTION_NAME@
-LINUX_DISTRIBUTION_VERSION = @LINUX_DISTRIBUTION_VERSION@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENJPEG_DIR = @OPENJPEG_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PERLDIR = @PERLDIR@
-PERL_INSTALL_OPTIONS = @PERL_INSTALL_OPTIONS@
-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_CHECK = @PYTHON_CHECK@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_DATA_HANDLER = @PYTHON_DATA_HANDLER@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RM = @RM@
-RPM_CONFIGURE_ARGS = @RPM_CONFIGURE_ARGS@
-RPM_HOST_CPU = @RPM_HOST_CPU@
-RPM_HOST_OS = @RPM_HOST_OS@
-RPM_HOST_VENDOR = @RPM_HOST_VENDOR@
-RPM_RELEASE = @RPM_RELEASE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_PEDANTIC = @WARN_PEDANTIC@
-WERROR = @WERROR@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-
-###############################################################################
-# Case when shared libraries are enabled
-###############################################################################
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE at pkgpyexec_LTLIBRARIES = _gribapi_swig.la
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE at _gribapi_swig_la_SOURCES = gribapi_swig_wrap.c grib_interface.c grib_interface.h
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE at _gribapi_swig_la_LIBADD = $(top_builddir)/src/libeccodes.la $(PYTHON_LIBS)
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE at _gribapi_swig_la_LDFLAGS = -module -avoid-version $(PYTHON_LDFLAGS)
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE at INCLUDES = $(PYTHON_INCLUDES) -I$(NUMPY_INCLUDE)
-
-# Extra stuff to go into the distribution
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE at EXTRA_DIST = setup.py.autotools.in \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			grib_interface.h \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			grib_interface.c \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			gribapi_swig.i \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			gribapi.py \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			eccodes.py \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			numpy.i \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			grib_errors.h \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			extrules.am \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			dummy.am \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			swig_wrap_array.c \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			swig_wrap_numpy.c \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			swig_wrap_array.py \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			swig_wrap_numpy.py \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			CMakeLists.txt
-
-
-# Extra stuff to go into the distribution
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE at EXTRA_DIST = grib_interface.h \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@			grib_interface.c \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@			gribapi_swig.i \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@			gribapi.py \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@			eccodes.py \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@			numpy.i \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@			grib_errors.h \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@			extrules.am \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@			dummy.am \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@			swig_wrap_array.c \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@			swig_wrap_numpy.c \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@			swig_wrap_array.py \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@			swig_wrap_numpy.py \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@			CMakeLists.txt
-
-
-# What else I want installed
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE at pkgpyexec_DATA = \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@	gribapi.py \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@	eccodes.py \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@	gribapi_swig.py
-
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE at CLEANFILES = $(noinst_SCRIPTS) \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			gribapi_swig_wrap.c \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			gribapi_swig.py \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			_gribapi_swig.so
-
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE at CLEANFILES = \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@			gribapi_swig_wrap.c \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@			gribapi_swig.py \
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@			_gribapi_swig.la
-
-
-###############################################################################
-# When shared libraries are disabled.
-# Uses the static library so must have --with-pic
-###############################################################################
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE at noinst_SCRIPTS = setup.py
-
-# What I want installed
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE at pdir = $(libdir)/python$(PYTHON_VERSION)/site-packages/eccodes
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE at p_DATA = \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@	_gribapi_swig.so \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@	gribapi.py \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@	eccodes.py \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@	gribapi_swig.py
-
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE at do_subst = sed -e 's,[@]LIB_JASPER[@],$(LIB_JASPER),g' \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			-e 's,[@]JASPER_DIR[@],$(JASPER_DIR),g' \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			-e 's,[@]LIB_OPENJPEG[@],$(LIB_OPENJPEG),g' \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			-e 's,[@]OPENJPEG_DIR[@],$(OPENJPEG_DIR),g' \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			-e   's,[@]LIB_AEC[@],$(LIB_AEC),g' \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			-e   's,[@]AEC_DIR[@],$(AEC_DIR),g' \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			-e 's,[@]LIB_PNG[@],$(LIB_PNG),g' \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			-e 's,[@]BUILD_DIR[@],$(top_builddir),g' \
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@			-e 's,[@]DATA_HANDLER[@],$(PYTHON_DATA_HANDLER),g'
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu python/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu python/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-pkgpyexecLTLIBRARIES: $(pkgpyexec_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(pkgpyexec_LTLIBRARIES)'; test -n "$(pkgpyexecdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgpyexecdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(pkgpyexecdir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkgpyexecdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkgpyexecdir)"; \
-	}
-
-uninstall-pkgpyexecLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(pkgpyexec_LTLIBRARIES)'; test -n "$(pkgpyexecdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkgpyexecdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkgpyexecdir)/$$f"; \
-	done
-
-clean-pkgpyexecLTLIBRARIES:
-	-test -z "$(pkgpyexec_LTLIBRARIES)" || rm -f $(pkgpyexec_LTLIBRARIES)
-	@list='$(pkgpyexec_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-_gribapi_swig.la: $(_gribapi_swig_la_OBJECTS) $(_gribapi_swig_la_DEPENDENCIES) $(EXTRA__gribapi_swig_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(_gribapi_swig_la_LINK) $(am__gribapi_swig_la_rpath) $(_gribapi_swig_la_OBJECTS) $(_gribapi_swig_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_interface.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gribapi_swig_wrap.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-pDATA: $(p_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(p_DATA)'; test -n "$(pdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(pdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(pdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pdir)" || exit $$?; \
-	done
-
-uninstall-pDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(p_DATA)'; test -n "$(pdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(pdir)'; $(am__uninstall_files_from_dir)
-install-pkgpyexecDATA: $(pkgpyexec_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(pkgpyexec_DATA)'; test -n "$(pkgpyexecdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgpyexecdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(pkgpyexecdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgpyexecdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgpyexecdir)" || exit $$?; \
-	done
-
-uninstall-pkgpyexecDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(pkgpyexec_DATA)'; test -n "$(pkgpyexecdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(pkgpyexecdir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(SCRIPTS) $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(pdir)" "$(DESTDIR)$(pkgpyexecdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
- at CREATING_SHARED_LIBS_TRUE@clean-local:
- at WITH_PYTHON_FALSE@clean-local:
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-local \
-	clean-pkgpyexecLTLIBRARIES mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pDATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-pkgpyexecDATA install-pkgpyexecLTLIBRARIES
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pDATA uninstall-pkgpyexecDATA \
-	uninstall-pkgpyexecLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-local clean-pkgpyexecLTLIBRARIES \
-	cscopelist-am ctags ctags-am distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pDATA \
-	install-pdf install-pdf-am install-pkgpyexecDATA \
-	install-pkgpyexecLTLIBRARIES install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
-	uninstall-pDATA uninstall-pkgpyexecDATA \
-	uninstall-pkgpyexecLTLIBRARIES
-
-
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE at gribapi_swig_wrap.c: swig_wrap_$(PYTHON_DATA_HANDLER).c
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@	cp -f swig_wrap_$(PYTHON_DATA_HANDLER).c gribapi_swig_wrap.c
-
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE at gribapi_swig.py: swig_wrap_$(PYTHON_DATA_HANDLER).py
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE@	cp -f swig_wrap_$(PYTHON_DATA_HANDLER).py gribapi_swig.py
-
- at CREATING_SHARED_LIBS_TRUE@@WITH_PYTHON_TRUE at include $(DEVEL_RULES)
-
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE at clean-local:
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@	-rm -rf build
-
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE at setup.py: setup.py.autotools.in
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@	$(do_subst) < setup.py.autotools.in > setup.py
-
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE at gribapi_swig_wrap.c: swig_wrap_$(PYTHON_DATA_HANDLER).c
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@	cp -f swig_wrap_$(PYTHON_DATA_HANDLER).c gribapi_swig_wrap.c
-
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE at gribapi_swig.py: swig_wrap_$(PYTHON_DATA_HANDLER).py
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@	cp -f swig_wrap_$(PYTHON_DATA_HANDLER).py gribapi_swig.py
-
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE at _gribapi_swig.so: setup.py gribapi_swig_wrap.c gribapi_swig.py
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE@	$(PYTHON) setup.py build_ext --inplace
-
- at CREATING_SHARED_LIBS_FALSE@@WITH_PYTHON_TRUE at include $(DEVEL_RULES)
-
-# Case when WITH_PYTHON is not defined. Must add this rule otherwise
-# make dist will fail
- at WITH_PYTHON_FALSE@gribapi_swig_wrap.c: swig_wrap_array.c
- at WITH_PYTHON_FALSE@	cp -f swig_wrap_array.c gribapi_swig_wrap.c
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/python/eccode.i b/python/eccode.i
deleted file mode 100644
index e625a1d..0000000
--- a/python/eccode.i
+++ /dev/null
@@ -1,8 +0,0 @@
-%module grib
-
-%{
-#include "grib_api.h";
-%}
-
-%include typemaps.i
-%include "grib_api_typemaps.h"
diff --git a/python/eccode_swig.i b/python/eccode_swig.i
deleted file mode 100644
index c575181..0000000
--- a/python/eccode_swig.i
+++ /dev/null
@@ -1,212 +0,0 @@
-%module eccode_swig
-
-%include "cpointer.i"
-%include "cstring.i"
-%include "typemaps.i"
-%include "cdata.i"
-%include "carrays.i"
-%include "grib_errors.h"
-
-%{
-#define SWIG_FILE_WITH_INIT
-#include "grib_interface.h"
-%}
-
-#if defined(NUMPY)
-
-%include "numpy.i"
-%init %{
-import_array();
-%}
-
-#endif
-
-/* Converts a PyFile instance to a stdio FILE* */
-%typemap(in) FILE* {
-    if ( PyFile_Check($input) ){
-        $1 = PyFile_AsFile($input);
-    } else {
-        PyErr_SetString(PyExc_TypeError, "$1_name must be a file type.");
-        return NULL;
-    }
-}
-
-%pointer_class(int, intp);
-%pointer_class(size_t, sizetp);
-%pointer_class(long, longp);
-%pointer_class(double, doublep);
-%array_functions(double, doubleArray);
-%array_functions(long, longArray);
-%array_functions(int, intArray);
-
-// creation
-int grib_c_new_from_file(FILE* f, int* INOUT, int headers_only);
-int grib_c_new_any_from_file(FILE* f, int headers_only, int* INOUT);
-int grib_c_new_bufr_from_file(FILE* f, int headers_only, int* INOUT);
-int grib_c_new_gts_from_file(FILE* f, int headers_only, int* INOUT);
-int grib_c_new_metar_from_file(FILE* f, int headers_only, int* INOUT);
-int grib_c_iterator_new(int* INPUT, int* OUTPUT, int* INPUT);
-int grib_c_keys_iterator_new(int* INPUT, int* OUTPUT, char* name_space);
-int grib_c_new_from_samples(int* INOUT, char* name);
-int grib_c_index_new_from_file(char* file, char* keys, int* OUTPUT);
-int grib_c_index_add_file(int* INPUT, char* file);
-int grib_c_new_from_index(int *INPUT, int *INOUT);
-int grib_c_index_write(int* INPUT, char* file);
-int grib_c_index_read(char* file, int* OUTPUT);
-int grib_c_new_from_message(int *INOUT, char *binmsg, size_t *INPUT);
-// ---
-
-%apply int* INPUT { int* fid };
-%apply int* INPUT { int* gid };
-%apply int* INPUT { int* iterid };
-%apply int* INPUT { int* iid };
-
-// file operations
-int grib_c_count_in_file(FILE* f,int* OUTPUT);
-// ---
-
-// grib handle operations
-int grib_c_release(int* gid);
-int grib_c_write(int* gid, FILE* f);
-int grib_c_get_size_long(int* gid, char* key, long* OUTPUT);
-int grib_c_get_string_length(int* gid, char* key, size_t* OUTPUT);
-int grib_c_clone(int* gid,int* INOUT);
-int grib_c_copy_namespace(int* gid, char* name, int* INPUT);
-int grib_c_get_message_size(int* gid, size_t* OUTPUT);
-int grib_c_get_message_offset(int* gid, size_t* OUTPUT);
-int grib_c_get_native_type(int* gid, char* key, int* OUTPUT);
-// ---
-
-// multi support
-int grib_c_multi_new(int* OUTPUT);
-int grib_c_multi_support_on(void);
-int grib_c_multi_write(int* gid, FILE* f);
-int grib_c_multi_support_off(void);
-int grib_c_multi_release(int* gid);
-int grib_c_multi_append(int* INPUT, int* INPUT,int* INPUT);
-// ---
-
-// gribex support
-int grib_c_gribex_mode_on(void);
-int grib_c_gribex_mode_off(void);
-// ---
-
-// keys iterator
-int grib_c_keys_iterator_next(int* iterid);
-int grib_c_keys_iterator_delete(int* iterid);
-int grib_c_skip_computed(int* iterid);
-int grib_c_skip_coded(int* iterid);
-int grib_c_skip_edition_specific(int* iterid);
-int grib_c_skip_duplicates(int* iterid);
-int grib_c_skip_read_only(int* iterid);
-int grib_c_skip_function(int* iterid);
-int grib_c_keys_iterator_rewind(int* iterid);
-
-%cstring_bounded_output(char* name, 1024);
-int grib_c_keys_iterator_get_name(int* iterid, char* name, int len);
-// ---
-
-// indexing routines
-int grib_c_index_get_size_long(int* iid, char* key, long* OUTPUT);
-int grib_c_index_get_long(int* iid, char* key, long* val, int* size);
-int grib_c_index_get_real8(int* iid, char* key, double* val, int* size);
-%cstring_bounded_output(char* index_string_output, 1024*1024);
-int grib_c_index_get_string(int* iid, char* key, char* index_string_output, int* INPUT, int* INOUT);
-int grib_c_index_select_long(int *iid, char *key, long *INPUT);
-int grib_c_index_select_real8(int *iid, char *key, double *INPUT);
-int grib_c_index_select_string(int *iid, char *key, char *val);
-int grib_c_index_release(int* iid);
-// ---
-
-// values iterator
-int grib_c_iterator_delete(int* iterid);
-int grib_c_iterator_next(int* iterid, double* OUTPUT, double* OUTPUT, double* OUTPUT);
-// ---
-
-// getting/setting key values
-%cstring_output_withsize(char* string_val, size_t* string_size)
-int grib_c_get_string(int* gid, char* key, char* string_val, size_t* string_size);
-int grib_c_set_string(int* gid, char* key, char* sval, int len2);
-int grib_c_get_long(int* gid, char* key, long* OUTPUT);
-int grib_c_set_long(int* gid, char* key, long* INPUT);
-int grib_c_get_double(int* gid, char* key, double* OUTPUT);
-int grib_c_set_double(int* gid, char* key, double* INPUT);
-int grib_c_set_real8_array(int* gid, char* key, double* val, int* size);
-int grib_c_get_real8_array(int* gid, char* key, double* val, int* size);
-int grib_c_get_long_array(int* gid, char* key, long* val, int* size);
-int grib_c_set_long_array(int* gid, char* key, long* val, int* size);
-int grib_c_get_real8_element(int* gid, char* key, int* INPUT, double* OUTPUT);
-int grib_c_get_real8_elements(int* gid, char* key, int* index, double* val, int* size);
-int grib_c_set_missing(int* gid, char* key);
-int grib_c_set_key_vals(int* gid, char* keyvals);
-int grib_c_is_missing(int* gid, char* key, int* OUTPUT);
-int grib_c_is_defined(int* gid, char* key, int* OUTPUT);
-
-#if defined(NUMPY)
-
-%apply (double* IN_ARRAY1, int DIM1) {(double* dpin_val, int dpin_val_dim1)};
-%apply (long* IN_ARRAY1, int DIM1) {(long* lpin_val, int lpin_val_dim1)};
-%apply (int* IN_ARRAY1, int DIM1) {(int* ipin_index, int ipin_index_dim1)};
-%apply (double* ARGOUT_ARRAY1, int DIM1) {(double* dpout_val, int dpout_val_dim1)};
-%apply (long* ARGOUT_ARRAY1, int DIM1) {(long* lpout_val, int lpout_val_dim1)};
-
-%inline %{
-void with_numpy() {
-    return;
-}
-int grib_set_double_ndarray(int* gid, char* key, double* dpin_val, int dpin_val_dim1) {
-    return grib_c_set_real8_array(gid,key,dpin_val,&dpin_val_dim1);
-}
-int grib_set_long_ndarray(int* gid, char* key, long* lpin_val, int lpin_val_dim1) {
-    return grib_c_set_long_array(gid,key,lpin_val,&lpin_val_dim1);
-}
-int grib_get_double_ndarray(int* gid, char* key, double* dpout_val, int dpout_val_dim1) {
-    return grib_c_get_real8_array(gid,key,dpout_val,&dpout_val_dim1);
-}
-int grib_get_long_ndarray(int* gid, char* key, long* lpout_val, int lpout_val_dim1) {
-    return grib_c_get_long_array(gid,key,lpout_val,&lpout_val_dim1);
-}
-int grib_get_double_ndelements(int* gid, char* key, int* ipin_index, int ipin_index_dim1, double* dpout_val, int dpout_val_dim1) {
-    return grib_c_get_real8_elements(gid,key,ipin_index,dpout_val,&dpout_val_dim1);
-}
-%}
-%clear double* dpin_val, int dpin_val_dim1;
-%clear long* lpin_val, int lpin_val_dim1;
-%clear int* ipout_val, int ipout_val_dim1;
-%clear double* dpout_val, int dpout_val_dim1;
-%clear long* lpout_val, int lpout_val_dim1;
-
-#endif
-// ---
-
-// nearest
-int grib_c_find_nearest_single(int* gid, int* INPUT, double* INPUT, double* INPUT, double* OUTPUT, double* OUTPUT, double* OUTPUT, double* OUTPUT, int* OUTPUT);
-int grib_c_find_nearest_four_single(int* gid, int* INPUT, double* INPUT, double* INPUT, double* outlats, double* outlons, double* values, double* distances, int* indexes);
-// ---
-
-/*
-* Get the binary string message for a grib.
-*
-* Set the 3rd argument to nothing in 'cstring_output_allocate_size'.
-* This is kind of difficult to explain, but, *msg will point directly to 
-* the binary message data of the current grib (which is stored in 
-* handle->buffer->data if I remember correctly) so freeing it will cause
-* the binary message data in the grib_handle structure to be freed. This
-* is a problem as grib_api does not know that, so it tries to free it
-* itself (grib_release does that) resulting in a 'Segmentation fault'.
-*/
-%cstring_output_allocate_size(const void **binmsg, size_t *binmsglen,);
-int grib_c_get_message(int *gid, const void **binmsg, size_t *binmsglen);
-%clear const void **binmsg, size_t *binmsglen;
-
-%clear int* fid;
-%clear int* gid;
-%clear int* iterid;
-
-%cstring_bounded_output(char* error_message, 1024);
-int grib_c_get_error_string(int* INPUT, char* error_message,  int len);
-
-void no_fail_on_wrong_length(int flag);
-long grib_c_get_api_version();
-void grib_c_gts_header_on();
-void grib_c_gts_header_off();
diff --git a/python/init_eccodes.py b/python/eccodes/__init__.py
similarity index 100%
rename from python/init_eccodes.py
rename to python/eccodes/__init__.py
diff --git a/python/eccodes.py b/python/eccodes/eccodes.py
similarity index 93%
rename from python/eccodes.py
rename to python/eccodes/eccodes.py
index 44c5755..cfa22e6 100644
--- a/python/eccodes.py
+++ b/python/eccodes/eccodes.py
@@ -1,19 +1,19 @@
 from gribapi import __version__
 
 from gribapi import GRIB_CHECK as CODES_CHECK
+
 from gribapi import CODES_PRODUCT_GRIB
 from gribapi import CODES_PRODUCT_BUFR
 from gribapi import CODES_PRODUCT_ANY
-
 from gribapi import GRIB_MISSING_DOUBLE as CODES_MISSING_DOUBLE
 from gribapi import GRIB_MISSING_LONG as CODES_MISSING_LONG
 
-from gribapi import grib_new_from_file as codes_grib_new_from_file
-from gribapi import bufr_new_from_file as codes_bufr_new_from_file
-from gribapi import metar_new_from_file as codes_metar_new_from_file
 from gribapi import gts_new_from_file as codes_gts_new_from_file
-from gribapi import any_new_from_file as codes_any_new_from_file
+from gribapi import metar_new_from_file as codes_metar_new_from_file
 from gribapi import codes_new_from_file
+from gribapi import any_new_from_file as codes_any_new_from_file
+from gribapi import bufr_new_from_file as codes_bufr_new_from_file
+from gribapi import grib_new_from_file as codes_grib_new_from_file
 
 from gribapi import grib_count_in_file as codes_count_in_file
 from gribapi import grib_multi_support_on as codes_grib_multi_support_on
@@ -46,10 +46,13 @@ from gribapi import grib_get_long as codes_get_long
 from gribapi import grib_get_double as codes_get_double
 from gribapi import grib_set_long as codes_set_long
 from gribapi import grib_set_double as codes_set_double
-from gribapi import grib_new_from_samples as codes_new_from_samples
+from gribapi import grib_new_from_samples as codes_grib_new_from_samples
+from gribapi import codes_bufr_new_from_samples
 from gribapi import grib_clone as codes_clone
 from gribapi import grib_set_double_array as codes_set_double_array
 from gribapi import grib_get_double_array as codes_get_double_array
+from gribapi import grib_get_string_array as codes_get_string_array
+from gribapi import grib_set_string_array as codes_set_string_array
 from gribapi import grib_set_long_array as codes_set_long_array
 from gribapi import grib_get_long_array as codes_get_long_array
 from gribapi import grib_multi_new as codes_grib_multi_new
@@ -92,5 +95,7 @@ from gribapi import grib_gts_header as codes_gts_header
 from gribapi import grib_get_api_version as codes_get_api_version
 from gribapi import grib_get_message as codes_get_message
 from gribapi import grib_new_from_message as codes_new_from_message
+from gribapi import grib_set_definitions_path as codes_set_definitions_path
+from gribapi import grib_set_samples_path as codes_set_samples_path
 
 from gribapi import GribInternalError as CodesInternalError
diff --git a/python/extrules.am b/python/extrules.am
index 18a7a94..a62a96f 100644
--- a/python/extrules.am
+++ b/python/extrules.am
@@ -1,6 +1,6 @@
 swig : gribapi_swig.i
-	swig -python -module gribapi_swig -DNUMPY -o swig_wrap_numpy.c gribapi_swig.i
+	swig -python -module gribapi_swig -o swig_wrap_numpy.c gribapi_swig.i
 	cp gribapi_swig.py swig_wrap_numpy.py
 
-	swig -python -module gribapi_swig -o swig_wrap_array.c gribapi_swig.i
-	cp gribapi_swig.py swig_wrap_array.py
+#	swig -python -module gribapi_swig -o swig_wrap_array.c gribapi_swig.i
+#	cp gribapi_swig.py swig_wrap_array.py
diff --git a/python/grib_errors.h b/python/grib_errors.h
index 5f8c726..03cdcca 100644
--- a/python/grib_errors.h
+++ b/python/grib_errors.h
@@ -137,5 +137,7 @@ Error codes returned by the grib_api functions.
 #define GRIB_UNSUPPORTED_EDITION		-64
 /** Value out of coding range */
 #define GRIB_OUT_OF_RANGE		-65
+/** Size of bitmap is incorrect */
+#define GRIB_WRONG_BITMAP_SIZE		-66
 /*! @}*/
 #endif
diff --git a/python/grib_interface.c b/python/grib_interface.c
index a29a00a..5c5c4fd 100644
--- a/python/grib_interface.c
+++ b/python/grib_interface.c
@@ -24,6 +24,7 @@
 #endif
 
 #include <ctype.h>
+#include <errno.h>
 
 #if GRIB_PTHREADS
  static pthread_once_t once  = PTHREAD_ONCE_INIT;
@@ -73,7 +74,6 @@
 
 int GRIB_NULL=-1;
 int GRIB_NULL_NEAREST=-1;
-extern int errno;
 
 typedef struct l_grib_file l_grib_file;
 
@@ -1003,7 +1003,7 @@ int grib_c_new_from_message_copy(int* gid, void* buffer , size_t* bufsize)
     return  GRIB_INTERNAL_ERROR;
 }
 
-int grib_c_new_from_samples(int* gid, char* name)
+int grib_c_grib_new_from_samples(int* gid, char* name)
 {
     grib_handle *h = NULL;
 
@@ -1019,6 +1019,22 @@ int grib_c_new_from_samples(int* gid, char* name)
     return  GRIB_FILE_NOT_FOUND;
 }
 
+int grib_c_bufr_new_from_samples(int* gid, char* name)
+{
+    grib_handle *h = NULL;
+
+    h = codes_bufr_handle_new_from_samples(NULL,name);
+    /*   grib_context_set_debug(h->context,1);*/
+
+    if(h){
+        push_handle(h,gid);
+        return GRIB_SUCCESS;
+    }
+
+    *gid = -1;
+    return  GRIB_FILE_NOT_FOUND;
+}
+
 int grib_c_clone(int* gidsrc,int* giddest)
 {
     grib_handle *src  = get_handle(*gidsrc);
@@ -1924,9 +1940,26 @@ int grib_c_set_string(int* gid, char* key, char* val, int len2)
     return grib_set_string(h, key, val, &lsize);
 }
 
-int grib_c_get_data_real4(int* gid,float* lats, float* lons,float* values,size_t* size)
+int grib_c_set_string_array(int *gid, char *key, const char **val)
 {
+    grib_handle *h = get_handle(*gid);
+    int err = GRIB_SUCCESS;
+    size_t lsize = 0;
+
+    if(!h) return GRIB_INVALID_GRIB;
 
+    /* Note: The array passed in will have its final entry as NULL */
+    /* so to find its size we just iterate thru it. */
+    /* See typemap for char** in swig interface file */
+    while(val[lsize]) {
+        ++lsize;
+    }
+    err = grib_set_string_array(h, key, val, lsize);
+    return err;
+}
+
+int grib_c_get_data_real4(int* gid,float* lats, float* lons,float* values,size_t* size)
+{
     grib_handle *h = get_handle(*gid);
     int err = GRIB_SUCCESS;
     double *lat8=NULL,*lon8=NULL,*val8 = NULL;
@@ -1941,7 +1974,7 @@ int grib_c_get_data_real4(int* gid,float* lats, float* lons,float* values,size_t
     lat8 = grib_context_malloc(h->context,(*size)*(sizeof(double)));
     if(!lat8) return GRIB_OUT_OF_MEMORY;
 
-    err=grib_get_data(h,lat8,lon8,val8,size);
+    err=grib_get_data(h,lat8,lon8,val8);
 
     for(i=0;i<*size;i++) {
         values[i] = val8[i];
@@ -1954,15 +1987,14 @@ int grib_c_get_data_real4(int* gid,float* lats, float* lons,float* values,size_t
     grib_context_free(h->context,lon8);
 
     return err;
-
 }
-
+/*
 int grib_c_get_data_real8(int* gid,double* lats, double* lons,double* values,size_t* size)
 {
     grib_handle *h = get_handle(*gid);
-    return grib_get_data(h,lats,lons,values,size);
+    return grib_get_data(h,lats,lons,values);
 }
-
+*/
 int grib_c_copy_message(int* gid, void* mess,size_t* len)
 {
     grib_handle *h = get_handle(*gid);
@@ -2114,3 +2146,15 @@ int grib_c_get_message(int *gid, const void **msg, size_t *size)
     grib_handle *h = get_handle(*gid);
     return grib_get_message(h,msg,size);
 }
+
+void grib_c_set_definitions_path(const char* path)
+{
+    grib_context *c = grib_context_get_default();
+    grib_context_set_definitions_path(c, path);
+}
+
+void grib_c_set_samples_path(const char* path)
+{
+    grib_context *c = grib_context_get_default();
+    grib_context_set_samples_path(c, path);
+}
diff --git a/python/grib_interface.h b/python/grib_interface.h
index a5e9d84..db35b4e 100644
--- a/python/grib_interface.h
+++ b/python/grib_interface.h
@@ -26,7 +26,8 @@ int grib_c_keys_iterator_get_name(int *iterid, char *name, int len);
 int grib_c_keys_iterator_rewind(int *kiter);
 int grib_c_new_from_message(int *gid, void *buffer, size_t *bufsize);
 int grib_c_new_from_message_copy(int *gid, void *buffer, size_t *bufsize);
-int grib_c_new_from_samples(int *gid, char *name);
+int grib_c_grib_new_from_samples(int *gid, char *name);
+int grib_c_bufr_new_from_samples(int *gid, char *name);
 int grib_c_clone(int *gidsrc, int *giddest);
 int grib_c_copy_namespace(int *gidsrc, char *name, int *giddest);
 int grib_c_count_in_file(FILE *f, int *n);
@@ -87,10 +88,11 @@ int grib_c_set_real8_array(int *gid, char *key, double *val, int *size);
 int grib_c_get_string(int *gid, char *key, char *val, size_t *lsize);
 int grib_c_get_string_array(int* gid, char* key, char** val, size_t *lsize);
 int grib_c_set_string(int *gid, char *key, char *val, int len2);
+int grib_c_set_string_array(int *gid, char *key, const char **val);
 int grib_c_get_data_real4(int *gid, float *lats, float *lons, float *values, size_t *size);
-int grib_c_get_data_real8(int *gid, double *lats, double *lons, double *values, size_t *size);
+/*int grib_c_get_data_real8(int *gid, double *lats, double *lons, double *values, size_t *size);*/
 int grib_c_get_message_size(int *gid, size_t *len);
-int grib_c_get_message_offset(int *gid, off_t *len);
+int grib_c_get_message_offset(int *gid, size_t *len);
 int grib_c_copy_message(int *gid, void *mess, size_t *len);
 void grib_c_check(int *err, char *call, char *str);
 int grib_c_write(int *gid, FILE *f);
@@ -108,5 +110,7 @@ void grib_c_gts_header_on(void);
 void grib_c_gts_header_off(void);
 int grib_c_get_message(int *gid, const void **msg, size_t *size);
 int grib_c_get_string_length(int* gid, char* key, size_t* val);
+void grib_c_set_definitions_path(const char* path);
+void grib_c_set_samples_path(const char* path);
 
 #endif
diff --git a/python/init_gribapi.py b/python/gribapi/__init__.py
similarity index 100%
rename from python/init_gribapi.py
rename to python/gribapi/__init__.py
diff --git a/python/gribapi.py b/python/gribapi/gribapi.py
similarity index 71%
rename from python/gribapi.py
rename to python/gribapi/gribapi.py
index fe30dd8..45e42fd 100644
--- a/python/gribapi.py
+++ b/python/gribapi/gribapi.py
@@ -1,22 +1,20 @@
 """
 @package gribapi
- at brief This package is a low level Python interface to ecCodes. It offers almost one to one bindings to the C API functions.
+ at brief This package is the \b Python interface to ecCodes. It offers almost one to one bindings to the C API functions.
 
-The Python interface to GRIB API uses the <a href="http://numpy.scipy.org/"><b>NumPy</b></a> package
+The Python interface to ecCodes uses the <a href="http://numpy.scipy.org/"><b>NumPy</b></a> package
 as the container of choice for the possible arrays of values that can be encoded/decoded in and from a grib message.
 Numpy is a package used for scientific computing in Python and an efficient container for generic data.
 
-The Python interface and its support for NumPy can be enabled/disabled from the configure by using the following configure flags:\n
-
- at code
---enable-python
---disable-numpy
+The Python interface can be enabled/disabled from CMake by using the following flag:\n
 
+ at code{.unparsed}
+    -DENABLE_PYTHON=ON
+or
+    -DENABLE_PYTHON=OFF
 @endcode
 
-When the '--enable-python' flag is used, then the system Python will be used to build the interface.
-
-NumPy support can be disabled by using the '--disable-numpy' flag.
+When this is enabed, then the system Python will be used to build the interface.
 
 @em Requirements:
 
@@ -25,11 +23,10 @@ NumPy support can be disabled by using the '--disable-numpy' flag.
 
 """
 import gribapi_swig as _internal
-#from gribapi import gribapi_swig as _internal
+# from gribapi import gribapi_swig as _internal
 import types
 import sys
 import os
-from array import array
 from functools import wraps
 # import inspect
 
@@ -39,17 +36,17 @@ KEYTYPES = {
     3: str,
 }
 
-CODES_PRODUCT_ANY=0
+CODES_PRODUCT_ANY = 0
 """ Generic product kind """
-CODES_PRODUCT_GRIB=1
+CODES_PRODUCT_GRIB = 1
 """ GRIB product kind """
-CODES_PRODUCT_BUFR=2
+CODES_PRODUCT_BUFR = 2
 """ BUFR product kind """
-CODES_PRODUCT_METAR=3
+CODES_PRODUCT_METAR = 3
 """ METAR product kind """
-CODES_PRODUCT_GTS=4
+CODES_PRODUCT_GTS = 4
 """ GTS product kind """
-CODES_PRODUCT_TAF=5
+CODES_PRODUCT_TAF = 5
 """ TAF product kind """
 
 # Constants for 'missing'
@@ -106,6 +103,7 @@ class GribInternalError(Exception):
         return self.msg
 
 
+# @cond
 class Bunch(dict):
     """
     The collector of a bunch of named stuff :).
@@ -135,23 +133,10 @@ class Bunch(dict):
                  for (attribute, value)
                  in self.__dict__.items()]
         return '\n'.join(state)
+# @endcond
 
 
-def with_numpy():
-    """
-    @brief Is numpy enabled?
-    @return 0->disabled, 1->enabled
-    """
-    numpy = 0
-    try:
-        _internal.with_numpy()
-        numpy = 1
-    except AttributeError:
-        pass
-
-    return numpy
-
-
+# @cond
 @require(errid=int)
 def GRIB_CHECK(errid):
     """
@@ -163,6 +148,7 @@ def GRIB_CHECK(errid):
     """
     if errid:
         raise GribInternalError(errid)
+# @endcond
 
 
 @require(fileobj=file)
@@ -170,18 +156,9 @@ def gts_new_from_file(fileobj, headers_only=False):
     """
     @brief Load in memory a GTS message from a file.
 
-    The message can be accessed through its id and it will be available\n
+    The message can be accessed through its id and will be available\n
     until @ref grib_release is called.\n
 
-    The message can be loaded headers only by using the headers_only argument.
-    Default is to have the headers only option grib_set to off (False). If set to on (True),
-    data values will be skipped. This will result in a significant performance gain
-    if one is only interested in browsing through messages to retrieve metadata.
-    Any attempt to retrieve data values keys when in the headers only mode will
-    result in a key not found error.
-
-    \b Examples: \ref grib_get_keys.py "grib_get_keys.py"
-
     @param fileobj        python file object
     @param headers_only   whether or not to load the message with the headers only
     @return id of the GTS loaded in memory
@@ -196,23 +173,15 @@ def gts_new_from_file(fileobj, headers_only=False):
     else:
         return gribid
 
+
 @require(fileobj=file)
-def metar_new_from_file(fileobj, headers_only = False):
+def metar_new_from_file(fileobj, headers_only=False):
     """
     @brief Load in memory a METAR message from a file.
 
-    The message can be accessed through its id and it will be available\n
+    The message can be accessed through its id and will be available\n
     until @ref grib_release is called.\n
 
-    The message can be loaded headers only by using the headers_only argument.
-    Default is to have the headers only option grib_set to off (False). If set to on (True),
-    data values will be skipped. This will result in a significant performance gain
-    if one is only interested in browsing through messages to retrieve metadata.
-    Any attempt to retrieve data values keys when in the headers only mode will
-    result in a key not found error.
-
-    \b Examples: \ref grib_get_keys.py "grib_get_keys.py"
-
     @param fileobj        python file object
     @param headers_only   whether or not to load the message with the headers only
     @return id of the METAR loaded in memory
@@ -227,8 +196,23 @@ def metar_new_from_file(fileobj, headers_only = False):
     else:
         return gribid
 
- at require(fileobj=file,product_kind=int)
-def codes_new_from_file(fileobj, product_kind, headers_only = False):
+
+ at require(fileobj=file, product_kind=int)
+def codes_new_from_file(fileobj, product_kind, headers_only=False):
+    """
+    @brief Load in memory a message from a file for a given product.
+
+    The message can be accessed through its id and will be available\n
+    until @ref grib_release is called.\n
+
+    \b Examples: \ref get_product_kind.py "get_product_kind.py"
+
+    @param fileobj        python file object
+    @param product_kind   one of CODES_PRODUCT_GRIB, CODES_PRODUCT_BUFR, CODES_PRODUCT_METAR or CODES_PRODUCT_GTS
+    @param headers_only   whether or not to load the message with the headers only
+    @return               id of the message loaded in memory
+    @exception GribInternalError
+    """
     if product_kind == CODES_PRODUCT_GRIB:
         return grib_new_from_file(fileobj, headers_only)
     if product_kind == CODES_PRODUCT_BUFR:
@@ -241,13 +225,14 @@ def codes_new_from_file(fileobj, product_kind, headers_only = False):
         return any_new_from_file(fileobj, headers_only)
     raise Exception("Invalid product kind: " + product_kind)
 
+
 @require(fileobj=file)
-def any_new_from_file(fileobj, headers_only = False):
+def any_new_from_file(fileobj, headers_only=False):
     """
     @brief Load in memory a message from a file.
 
-    The message can be accessed through its id and it will be available\n
-    until @ref codes_release is called.\n
+    The message can be accessed through its id and will be available\n
+    until @ref grib_release is called.\n
 
     \b Examples: \ref grib_get_keys.py "grib_get_keys.py"
 
@@ -265,22 +250,16 @@ def any_new_from_file(fileobj, headers_only = False):
     else:
         return gribid
 
+
 @require(fileobj=file)
 def bufr_new_from_file(fileobj, headers_only=False):
     """
     @brief Load in memory a BUFR message from a file.
 
-    The message can be accessed through its id and it will be available\n
+    The message can be accessed through its id and will be available\n
     until @ref grib_release is called.\n
 
-    The message can be loaded headers only by using the headers_only argument.
-    Default is to have the headers only option grib_set to off (False). If set to on (True),
-    data values will be skipped. This will result in a significant performance gain
-    if one is only interested in browsing through messages to retrieve metadata.
-    Any attempt to retrieve data values keys when in the headers only mode will
-    result in a key not found error.
-
-    \b Examples: \ref grib_get_keys.py "grib_get_keys.py"
+    \b Examples: \ref bufr_get_keys.py "bufr_get_keys.py"
 
     @param fileobj        python file object
     @param headers_only   whether or not to load the message with the headers only
@@ -302,7 +281,7 @@ def grib_new_from_file(fileobj, headers_only=False):
     """
     @brief Load in memory a grib message from a file.
 
-    The message can be accessed through its gribid and it will be available\n
+    The message can be accessed through its gribid and will be available\n
     until @ref grib_release is called.\n
 
     The message can be loaded headers only by using the headers_only argument.
@@ -363,31 +342,31 @@ def grib_multi_support_off():
     _internal.grib_c_multi_support_off()
 
 
- at require(gribid=int)
-def grib_release(gribid):
+ at require(msgid=int)
+def grib_release(msgid):
     """
-    @brief Free the memory for the message referred as gribid.
+    @brief Free the memory for the message referred as msgid.
 
     \b Examples: \ref grib_get_keys.py "grib_get_keys.py"
 
-    @param gribid      id of the grib loaded in memory
+    @param msgid      id of the message loaded in memory
     @exception GribInternalError
     """
-    GRIB_CHECK(_internal.grib_c_release(gribid))
+    GRIB_CHECK(_internal.grib_c_release(msgid))
 
 
- at require(gribid=int, key=str)
-def grib_get_string(gribid, key):
+ at require(msgid=int, key=str)
+def grib_get_string(msgid, key):
     """
-    @brief Get the string value of a key from a grib message.
+    @brief Get the string value of a key from a message.
 
-    @param gribid      id of the grib loaded in memory
+    @param msgid       id of the message loaded in memory
     @param key         key name
     @return string value of key
     @exception GribInternalError
     """
-    length = grib_get_string_length(gribid, key)
-    err, value = _internal.grib_c_get_string(gribid, key, length)
+    length = grib_get_string_length(msgid, key)
+    err, value = _internal.grib_c_get_string(msgid, key, length)
     GRIB_CHECK(err)
 
     stpos = value.find('\0')
@@ -397,17 +376,17 @@ def grib_get_string(gribid, key):
     return value
 
 
- at require(gribid=int, key=str, value=str)
-def grib_set_string(gribid, key, value):
+ at require(msgid=int, key=str, value=str)
+def grib_set_string(msgid, key, value):
     """
     @brief Set the value for a string key in a grib message.
 
-    @param gribid      id of the grib loaded in memory
+    @param msgid      id of the message loaded in memory
     @param key         key name
     @param value       string value
     @exception GribInternalError
     """
-    GRIB_CHECK(_internal.grib_c_set_string(gribid, key, value, len(value)))
+    GRIB_CHECK(_internal.grib_c_set_string(msgid, key, value, len(value)))
 
 
 def grib_gribex_mode_on():
@@ -428,18 +407,18 @@ def grib_gribex_mode_off():
     _internal.grib_c_gribex_mode_off()
 
 
- at require(gribid=int, fileobj=file)
-def grib_write(gribid, fileobj):
+ at require(msgid=int, fileobj=file)
+def grib_write(msgid, fileobj):
     """
     @brief Write a message to a file.
 
     \b Examples: \ref grib_set_keys.py "grib_set_keys.py"
 
-    @param gribid     id of the grib loaded in memory
+    @param msgid      id of the message loaded in memory
     @param fileobj    python file object
     @exception GribInternalError
     """
-    GRIB_CHECK(_internal.grib_c_write(gribid, fileobj))
+    GRIB_CHECK(_internal.grib_c_write(msgid, fileobj))
 
 
 @require(multigribid=int, fileobj=file)
@@ -475,32 +454,32 @@ def grib_multi_append(ingribid, startsection, multigribid):
     GRIB_CHECK(_internal.grib_c_multi_append(ingribid, startsection, multigribid))
 
 
- at require(gribid=int, key=str)
-def grib_get_size(gribid, key):
+ at require(msgid=int, key=str)
+def grib_get_size(msgid, key):
     """
     @brief Get the size of an array key.
 
     \b Examples: \ref grib_get_keys.py "grib_get_keys.py",\ref count_messages.py "count_messages.py"
 
-    @param gribid      id of the grib loaded in memory
-    @param key         name of the key
+    @param msgid      id of the message loaded in memory
+    @param key        name of the key
     @exception GribInternalError
     """
-    err, result = _internal.grib_c_get_size_long(gribid, key)
+    err, result = _internal.grib_c_get_size_long(msgid, key)
     GRIB_CHECK(err)
     return result
 
 
- at require(gribid=int, key=str)
-def grib_get_string_length(gribid, key):
+ at require(msgid=int, key=str)
+def grib_get_string_length(msgid, key):
     """
     @brief Get the length of the string version of a key.
 
-    @param gribid      id of the grib loaded in memory
+    @param msgid      id of the message loaded in memory
     @param key         name of the key
     @exception GribInternalError
     """
-    err, result = _internal.grib_c_get_string_length(gribid, key)
+    err, result = _internal.grib_c_get_string_length(msgid, key)
     GRIB_CHECK(err)
     return result
 
@@ -642,8 +621,8 @@ def grib_iterator_next(iterid):
         return (lat, lon, value)
 
 
- at require(gribid=int)
-def grib_keys_iterator_new(gribid, namespace=None):
+ at require(msgid=int)
+def grib_keys_iterator_new(msgid, namespace=None):
     """
     @brief Create a new iterator on the keys.
 
@@ -660,12 +639,12 @@ def grib_keys_iterator_new(gribid, namespace=None):
 
     \b Examples: \ref grib_iterator.py "grib_iterator.py"
 
-    @param gribid      id of the grib loaded in memory
+    @param msgid      id of the message loaded in memory
     @param namespace   the namespace of the keys to search for (all the keys if None)
     @return keys iterator id to be used in the keys iterator functions
     @exception GribInternalError
     """
-    err, iterid = _internal.grib_c_keys_iterator_new(gribid, namespace)
+    err, iterid = _internal.grib_c_keys_iterator_new(msgid, namespace)
     GRIB_CHECK(err)
     return iterid
 
@@ -726,45 +705,45 @@ def grib_keys_iterator_rewind(iterid):
     GRIB_CHECK(_internal.grib_c_keys_iterator_rewind(iterid))
 
 
- at require(gribid=int, key=str)
-def grib_get_long(gribid, key):
+ at require(msgid=int, key=str)
+def grib_get_long(msgid, key):
     """
     @brief Get the value of a key in a grib message as an int.
 
-    @param gribid      id of the grib loaded in memory
+    @param msgid       id of the message loaded in memory
     @param key         key name
     @return value of key as int
     @exception GribInternalError
     """
-    err, value = _internal.grib_c_get_long(gribid, key)
+    err, value = _internal.grib_c_get_long(msgid, key)
     GRIB_CHECK(err)
     return value
 
 
- at require(gribid=int, key=str)
-def grib_get_double(gribid, key):
+ at require(msgid=int, key=str)
+def grib_get_double(msgid, key):
     """
     @brief Get the value of a key in a grib message as a float.
 
-    @param gribid      id of the grib loaded in memory
+    @param msgid      id of the message loaded in memory
     @param key         key name
     @return value of key as float
     @exception GribInternalError
     """
-    err, value = _internal.grib_c_get_double(gribid, key)
+    err, value = _internal.grib_c_get_double(msgid, key)
     GRIB_CHECK(err)
     return value
 
 
- at require(gribid=int, key=str, value=(int, long, float, str))
-def grib_set_long(gribid, key, value):
+ at require(msgid=int, key=str, value=(int, long, float, str))
+def grib_set_long(msgid, key, value):
     """
     @brief Set the integer value for a key in a grib message.
 
     A TypeError exception will be thrown if value cannot be represented
     as an integer.
 
-    @param gribid      id of the grib loaded in memory
+    @param msgid      id of the message loaded in memory
     @param key         key name
     @param value       value to set
     @exception GribInternalError,TypeError
@@ -777,18 +756,18 @@ def grib_set_long(gribid, key, value):
     if value > sys.maxint:
         raise TypeError("Invalid type")
 
-    GRIB_CHECK(_internal.grib_c_set_long(gribid, key, value))
+    GRIB_CHECK(_internal.grib_c_set_long(msgid, key, value))
 
 
- at require(gribid=int, key=str, value=(int, long, float, str))
-def grib_set_double(gribid, key, value):
+ at require(msgid=int, key=str, value=(int, long, float, str))
+def grib_set_double(msgid, key, value):
     """
     @brief Set the double value for a key in a grib message.
 
     A TypeError exception will be thrown if value cannot be represented
     as a float.
 
-    @param gribid      id of the grib loaded in memory
+    @param msgid       id of the message loaded in memory
     @param key         key name
     @param value       float value to set
     @exception GribInternalError,TypeError
@@ -798,206 +777,187 @@ def grib_set_double(gribid, key, value):
     except (ValueError, TypeError):
         raise TypeError("Invalid type")
 
-    GRIB_CHECK(_internal.grib_c_set_double(gribid, key, value))
+    GRIB_CHECK(_internal.grib_c_set_double(msgid, key, value))
 
 
 @require(samplename=str)
 def grib_new_from_samples(samplename):
     """
-    @brief Create a new valid gribid from a sample.
+    @brief Create a new valid GRIB message from a sample.
 
     The available samples are picked up from the directory pointed to
     by the environment variable ECCODES_SAMPLES_PATH.
     To know where the samples directory is run the codes_info tool.\n
 
-    \b Examples: \ref samples.py "samples.py"
+    \b Examples: \ref grib_samples.py "grib_samples.py"
 
     @param samplename   name of the sample to be used
-    @return id of the grib loaded in memory
+    @return id of the message loaded in memory
+    @exception GribInternalError
+    """
+    err, msgid = _internal.grib_c_grib_new_from_samples(0, samplename)
+    GRIB_CHECK(err)
+    return msgid
+
+
+ at require(samplename=str)
+def codes_bufr_new_from_samples(samplename):
+    """
+    @brief Create a new valid BUFR message from a sample.
+
+    The available samples are picked up from the directory pointed to
+    by the environment variable ECCODES_SAMPLES_PATH.
+    To know where the samples directory is run the codes_info tool.\n
+
+    \b Examples: \ref grib_samples.py "grib_samples.py"
+
+    @param samplename   name of the BUFR sample to be used
+    @return             id of the message loaded in memory
     @exception GribInternalError
     """
-    err, gribid = _internal.grib_c_new_from_samples(0, samplename)
+    err, msgid = _internal.grib_c_bufr_new_from_samples(0, samplename)
     GRIB_CHECK(err)
-    return gribid
+    return msgid
 
 
- at require(gribid_src=int)
-def grib_clone(gribid_src):
+ at require(msgid_src=int)
+def grib_clone(msgid_src):
     """
     @brief Create a copy of a message.
 
-    Create a copy of a given message (\em gribid_src) resulting in a new
-    message in memory (\em gribid_dest) identical to the original one.
+    Create a copy of a given message (\em msgid_src) resulting in a new
+    message in memory (\em msgid_dest) identical to the original one.
 
     \b Examples: \ref grib_clone.py "grib_clone.py"
 
-    @param gribid_src     id of grib to be cloned
+    @param msgid_src     id of message to be cloned
     @return id of clone
     @exception GribInternalError
     """
-    err, newgribid_src = _internal.grib_c_clone(gribid_src, 0)
+    err, newmsgid_src = _internal.grib_c_clone(msgid_src, 0)
     GRIB_CHECK(err)
-    return newgribid_src
+    return newmsgid_src
 
 
- at require(gribid=int, key=str)
-def grib_set_double_array(gribid, key, inarray):
+ at require(msgid=int, key=str)
+def grib_set_double_array(msgid, key, inarray):
     """
     @brief Set the value of the key to a double array.
 
     The input array can be a numpy.ndarray or a python sequence like tuple, list, array, ...
 
-    If NumPy is enabled, the wrapper will internally try to convert the input to a NumPy array
+    The wrapper will internally try to convert the input to a NumPy array
     before extracting its data and length. This is possible as NumPy
     allows the construction of arrays from arbitrary python sequences.
 
     The elements of the input sequence need to be convertible to a double.
 
-    @param gribid   id of the grib loaded in memory
-    @param key      key name
-    @param inarray  tuple,list,array,numpy.ndarray
+    @param msgid   id of the message loaded in memory
+    @param key     key name
+    @param inarray tuple,list,array,numpy.ndarray
     @exception GribInternalError
     """
-    if with_numpy():
-        GRIB_CHECK(_internal.grib_set_double_ndarray(gribid, key, inarray))
-    else:
-        nval = len(inarray)
-        a = _internal.new_doubleArray(nval)
-        s = _internal.intp()
-        s.assign(nval)
-
-        for i in range(nval):
-            _internal.doubleArray_setitem(a, i, inarray[i])
+    GRIB_CHECK(_internal.grib_set_double_ndarray(msgid, key, inarray))
 
-        GRIB_CHECK(_internal.grib_c_set_real8_array(gribid, key, a, s))
 
-        _internal.delete_doubleArray(a)
-
-
- at require(gribid=int, key=str)
-def grib_get_double_array(gribid, key):
+ at require(msgid=int, key=str)
+def grib_get_double_array(msgid, key):
     """
-    @brief Get the value of the key as a double array.
+    @brief Get the value of the key as a NumPy array of doubles.
 
-    If NumPy is enabled, the double array will be stored in a NumPy ndarray.
-    Otherwise, Python's native array type will be used.
-
-    @param gribid   id of the grib loaded in memory
-    @param key      key name
-    @return numpy.ndarray or array
+    @param msgid   id of the message loaded in memory
+    @param key     key name
+    @return        numpy.ndarray
     @exception GribInternalError
     """
-    if with_numpy():
-        nval = grib_get_size(gribid, key)
-        err, result = _internal.grib_get_double_ndarray(gribid, key, nval)
-        GRIB_CHECK(err)
-        return result
-    else:
-        nval = grib_get_size(gribid, key)
-        a = _internal.new_doubleArray(nval)
-        s = _internal.intp()
-        s.assign(nval)
-
-        GRIB_CHECK(_internal.grib_c_get_real8_array(gribid, key, a, s))
-
-        result = array("d")
-        for i in range(nval):
-            result.append(_internal.doubleArray_getitem(a, i))
-
-        _internal.delete_doubleArray(a)
+    nval = grib_get_size(msgid, key)
+    err, result = _internal.grib_get_double_ndarray(msgid, key, nval)
+    GRIB_CHECK(err)
+    return result
 
-        return result
 
- at require(gribid=int, key=str)
-def grib_get_string_array(gribid, key):
+ at require(msgid=int, key=str)
+def grib_get_string_array(msgid, key):
     """
-    @brief Get the value of the key as an array of strings.
+    @brief Get the value of the key as a list of strings.
 
-    @param gribid   id of the grib loaded in memory
-    @param key      key name
-    @return numpy.ndarray or array
+    @param msgid   id of the message loaded in memory
+    @param key     key name
+    @return        list
     @exception GribInternalError
     """
-    nval = grib_get_size(gribid,key)
+    nval = grib_get_size(msgid, key)
     a = _internal.new_stringArray(nval)
     s = _internal.sizetp()
     s.assign(nval)
 
-    GRIB_CHECK(_internal.grib_c_get_string_array(gribid,key,a,s))
+    GRIB_CHECK(_internal.grib_c_get_string_array(msgid, key, a, s))
 
     result = list()
     for i in range(nval):
-        result.append(_internal.stringArray_getitem(a,i))
+        result.append(_internal.stringArray_getitem(a, i))
 
     _internal.delete_stringArray(a)
 
     return result
 
- at require(gribid=int,key=str)
-def grib_set_long_array(gribid, key, inarray):
+
+ at require(msgid=int, key=str)
+def grib_set_string_array(msgid, key, inarray):
     """
-    @brief Set the value of the key to an integer array.
+    @brief Set the value of the key to a string array.
+
+    The input array can be a python sequence like tuple, list, array, ...
 
-    If NumPy is enabled, the wrapper will internally try to convert the input to a NumPy array
+    The wrapper will internally try to convert the input to a NumPy array
     before extracting its data and length. This is possible as NumPy
     allows the construction of arrays from arbitrary python sequences.
 
-    The elements of the input sequence need to be convertible to an int.
+    The elements of the input sequence need to be convertible to a double.
 
-    @param gribid      id of the grib loaded in memory
-    @param key         key name
-    @param inarray     tuple,list,python array,numpy array
+    @param msgid   id of the message loaded in memory
+    @param key     key name
+    @param inarray tuple,list,array
     @exception GribInternalError
     """
-    if with_numpy():
-        GRIB_CHECK(_internal.grib_set_long_ndarray(gribid, key, inarray))
-    else:
-        nval = len(inarray)
-        a = _internal.new_longArray(nval)
-        s = _internal.intp()
-        s.assign(nval)
-
-        for i in range(nval):
-            _internal.longArray_setitem(a, i, inarray[i])
+    GRIB_CHECK( _internal.grib_c_set_string_array(msgid, key, list(inarray)) )
 
-        GRIB_CHECK(_internal.grib_c_set_long_array(gribid, key, a, s))
 
-        _internal.delete_longArray(a)
+ at require(msgid=int, key=str)
+def grib_set_long_array(msgid, key, inarray):
+    """
+    @brief Set the value of the key to an integer array.
 
+    The input array can be a numpy.ndarray or a python sequence like tuple, list, array, ...
 
- at require(gribid=int, key=str)
-def grib_get_long_array(gribid, key):
-    """
-    @brief Get the integer array of values for a key from a grib message.
+    The wrapper will internally try to convert the input to a NumPy array
+    before extracting its data and length. This is possible as NumPy
+    allows the construction of arrays from arbitrary python sequences.
 
-    If NumPy is enabled, the integer array will be stored in a NumPy ndarray.
-    Otherwise, Python's native array type will be used.
+    The elements of the input sequence need to be convertible to an int.
 
-    @param gribid      id of the grib loaded in memory
+    @param msgid       id of the message loaded in memory
     @param key         key name
-    @return numpy.ndarray or array
+    @param inarray     tuple,list,python array,numpy.ndarray
     @exception GribInternalError
     """
-    if with_numpy():
-        nval = grib_get_size(gribid, key)
-        err, result = _internal.grib_get_long_ndarray(gribid, key, nval)
-        GRIB_CHECK(err)
-        return result
-    else:
-        nval = grib_get_size(gribid, key)
-        a = _internal.new_longArray(nval)
-        s = _internal.intp()
-        s.assign(nval)
-
-        GRIB_CHECK(_internal.grib_c_get_long_array(gribid, key, a, s))
+    GRIB_CHECK(_internal.grib_set_long_ndarray(msgid, key, inarray))
 
-        result = array("l")
-        for i in range(nval):
-            result.append(_internal.longArray_getitem(a, i))
 
-        _internal.delete_longArray(a)
+ at require(msgid=int, key=str)
+def grib_get_long_array(msgid, key):
+    """
+    @brief Get the integer array of values for a key from a grib message.
 
-        return result
+    @param msgid      id of the message loaded in memory
+    @param key        key name
+    @return           numpy.ndarray
+    @exception GribInternalError
+    """
+    nval = grib_get_size(msgid, key)
+    err, result = _internal.grib_get_long_ndarray(msgid, key, nval)
+    GRIB_CHECK(err)
+    return result
 
 
 def grib_multi_new():
@@ -1049,7 +1009,8 @@ def grib_index_new_from_file(filename, keys):
     \b Examples: \ref grib_index.py "grib_index.py"
 
     @param filename   path of the file to index on
-    @param keys       sequence of keys to index on
+    @param keys       sequence of keys to index on.
+                      The type of the key can be explicitly declared appending :l for long (or alternatively :i), :d for double, :s for string to the key name.
     @return index id
     @exception GribInternalError
     """
@@ -1090,13 +1051,14 @@ def grib_index_release(indexid):
 @require(indexid=int, key=str)
 def grib_index_get_size(indexid, key):
     """
-    @brief Get the number of distinct values for the index key. The key must belong to the index.
+    @brief Get the number of distinct values for the index key.
+    The key must belong to the index.
 
     \b Examples: \ref grib_index.py "grib_index.py"
 
     @param indexid    id of an index created from a file. The index must have been created on the given key.
     @param key        key for which the number of values is computed
-    @return number of distinct values for key in index
+    @return           number of distinct values for key in index
     @exception GribInternalError
     """
     err, value = _internal.grib_c_index_get_size_long(indexid, key)
@@ -1107,7 +1069,8 @@ def grib_index_get_size(indexid, key):
 @require(indexid=int, key=str)
 def grib_index_get_long(indexid, key):
     """
-    @brief Get the distinct values of the key in argument contained in the index. The key must belong to the index.
+    @brief Get the distinct values of the key in argument contained in the index.
+    The key must belong to the index.
 
     This function is used when the type of the key was explicitly defined as long or when the native type of the key is long.
 
@@ -1115,7 +1078,7 @@ def grib_index_get_long(indexid, key):
 
     @param indexid   id of an index created from a file. The index must have been created with the key in argument.
     @param key       key for wich the values are returned
-    @return tuple with values of key in index
+    @return          tuple with values of key in index
     @exception GribInternalError
     """
     nval = grib_index_get_size(indexid, key)
@@ -1137,7 +1100,8 @@ def grib_index_get_long(indexid, key):
 
 def grib_index_get_string(indexid, key):
     """
-    @brief Get the distinct values of the key in argument contained in the index. The key must belong to the index.
+    @brief Get the distinct values of the key in argument contained in the index.
+    The key must belong to the index.
 
     This function is used when the type of the key was explicitly defined as string or when the native type of the key is string.
 
@@ -1145,7 +1109,7 @@ def grib_index_get_string(indexid, key):
 
     @param indexid   id of an index created from a file. The index must have been created with the key in argument.
     @param key       key for wich the values are returned
-    @param return tuple with values of key in index
+    @return          tuple with values of key in index
     @exception GribInternalError
     """
     nval = grib_index_get_size(indexid, key)
@@ -1166,27 +1130,28 @@ def grib_index_get_string(indexid, key):
     return tuple(result)
 
 
- at require(iid=int, key=str)
-def grib_index_get_double(iid, key):
+ at require(indexid=int, key=str)
+def grib_index_get_double(indexid, key):
     """
-    @brief Get the distinct values of the key in argument contained in the index. The key must belong to the index.
+    @brief Get the distinct values of the key in argument contained in the index.
+    The key must belong to the index.
 
     This function is used when the type of the key was explicitly defined as double or when the native type of the key is double.
 
     \b Examples: \ref grib_index.py "grib_index.py"
 
-    @param indexid   id of an index created from a file. The index must have been created with the key in argument.
-    @param key       key for wich the values are returned
-    @return tuple with values of key in index
+    @param indexid  id of an index created from a file. The index must have been created with the key in argument.
+    @param key      key for wich the values are returned
+    @return         tuple with values of key in index
     @exception GribInternalError
     """
-    nval = grib_index_get_size(iid, key)
+    nval = grib_index_get_size(indexid, key)
 
     a = _internal.new_doubleArray(nval)
     s = _internal.intp()
     s.assign(nval)
 
-    GRIB_CHECK(_internal.grib_c_index_get_real8(iid, key, a, s))
+    GRIB_CHECK(_internal.grib_c_index_get_real8(indexid, key, a, s))
 
     result = []
     for i in range(nval):
@@ -1197,10 +1162,11 @@ def grib_index_get_double(iid, key):
     return tuple(result)
 
 
- at require(indexid=int, key=str, val=int)
-def grib_index_select_long(indexid, key, val):
+ at require(indexid=int, key=str, value=int)
+def grib_index_select_long(indexid, key, value):
     """
-    @brief Select the message subset with key==value. The value is an integer.
+    @brief Select the message subset with key==value.
+    The value is an integer.
 
     The key must have been created with integer type or have integer as native type if the type was not explicitly defined in the index creation.
 
@@ -1211,13 +1177,14 @@ def grib_index_select_long(indexid, key, val):
     @param value     value of the key to select
     @exception GribInternalError
     """
-    GRIB_CHECK(_internal.grib_c_index_select_long(indexid, key, val))
+    GRIB_CHECK(_internal.grib_c_index_select_long(indexid, key, value))
 
 
- at require(iid=int, key=str, val=float)
-def grib_index_select_double(iid, key, val):
+ at require(indexid=int, key=str, value=float)
+def grib_index_select_double(indexid, key, value):
     """
-    @brief Select the message subset with key==value. The value is a double.
+    @brief Select the message subset with key==value.
+    The value is a double.
 
     The key must have been created with integer type or have integer as native type if the type was not explicitly defined in the index creation.
 
@@ -1228,20 +1195,17 @@ def grib_index_select_double(iid, key, val):
     @param value     value of the key to select
     @exception GribInternalError
     """
-    GRIB_CHECK(_internal.grib_c_index_select_real8(iid, key, val))
+    GRIB_CHECK(_internal.grib_c_index_select_real8(indexid, key, value))
 
 
- at require(indexid=int, key=str, val=str)
-def grib_index_select_string(indexid, key, val):
+ at require(indexid=int, key=str, value=str)
+def grib_index_select_string(indexid, key, value):
     """
-    @brief Select the message subset with key==value. The value is a integer.
+    @brief Select the message subset with key==value.
+    The value is an integer.
 
     The key must have been created with string type or have string as native type if the type was not explicitly defined in the index creation.
 
-    In case of error, if the status parameter (optional) is not given, the program will
-    exit with an error message.\n Otherwise the error message can be
-    gathered with @ref grib_get_error_string.
-
     \b Examples: \ref grib_index.py "grib_index.py"
 
     @param indexid   id of an index created from a file. The index must have been created with the key in argument.
@@ -1249,7 +1213,7 @@ def grib_index_select_string(indexid, key, val):
     @param value     value of the key to select
     @exception GribInternalError
     """
-    GRIB_CHECK(_internal.grib_c_index_select_string(indexid, key, val))
+    GRIB_CHECK(_internal.grib_c_index_select_string(indexid, key, value))
 
 
 def grib_new_from_index(indexid):
@@ -1259,12 +1223,12 @@ def grib_new_from_index(indexid):
     All the keys belonging to the index must be selected before calling this function.
     Successive calls to this function will return all the handles compatible with the constraints defined selecting the values of the index keys.
 
-    The message can be accessed through its gribid and it will be available until @ref grib_release is called.
+    The message can be accessed through its gribid and will be available until @ref grib_release is called.
 
     \b Examples: \ref grib_index.py "grib_index.py"
 
     @param indexid   id of an index created from a file.
-    @return id of the grib loaded in memory or None if end of index
+    @return          id of the message loaded in memory or None if end of index
     @exception GribInternalError
     """
     err, gribid = _internal.grib_c_new_from_index(indexid, 0)
@@ -1278,30 +1242,30 @@ def grib_new_from_index(indexid):
         return gribid
 
 
- at require(gribid=int)
-def grib_get_message_size(gribid):
+ at require(msgid=int)
+def grib_get_message_size(msgid):
     """
     @brief Get the size of a coded message.
 
-    @param gribid      id of the grib loaded in memory
-    @return size in bytes of the message
+    @param msgid     id of the message loaded in memory
+    @return          size in bytes of the message
     @exception GribInternalError
     """
-    err, value = _internal.grib_c_get_message_size(gribid)
+    err, value = _internal.grib_c_get_message_size(msgid)
     GRIB_CHECK(err)
     return value
 
 
- at require(gribid=int)
-def grib_get_message_offset(gribid):
+ at require(msgid=int)
+def grib_get_message_offset(msgid):
     """
     @brief Get the offset of a coded message.
 
-    @param gribid      id of the grib loaded in memory
-    @return offset in bytes of the message
+    @param msgid    id of the message loaded in memory
+    @return         offset in bytes of the message
     @exception GribInternalError
     """
-    err, value = _internal.grib_c_get_message_offset(gribid)
+    err, value = _internal.grib_c_get_message_offset(msgid)
     GRIB_CHECK(err)
     return value
 
@@ -1314,7 +1278,7 @@ def grib_get_double_element(gribid, key, index):
     @param gribid      id of the grib loaded in memory
     @param key         the key to be searched
     @param index       zero based index of value to retrieve
-    @return value
+    @return            value
     @exception GribInternalError
 
     """
@@ -1331,47 +1295,24 @@ def grib_get_double_elements(gribid, key, indexes):
     @param gribid      id of the grib loaded in memory
     @param key         the key to be searched
     @param indexes     list or tuple of indexes
-    @return numpy.ndarray or array
+    @return            numpy.ndarray
     @exception GribInternalError
 
     """
-    if with_numpy():
-        nidx = len(indexes)
-        err, result = _internal.grib_get_double_ndelements(gribid, key, indexes, nidx)
-        GRIB_CHECK(err)
-        return result
-    else:
-        nidx = len(indexes)
-
-        pidx = _internal.new_intArray(nidx)
-        pval = _internal.new_doubleArray(nidx)
-        psize = _internal.intp()
-        psize.assign(nidx)
-
-        for i in range(len(indexes)):
-            _internal.intArray_setitem(pidx, i, indexes[i])
-
-        err = _internal.grib_c_get_real8_elements(gribid, key, pidx, pval, psize)
-        GRIB_CHECK(err)
-
-        result = array("d")
-        for i in range(psize.value()):
-            result.append(_internal.doubleArray_getitem(pval, i))
-
-        _internal.delete_intArray(pidx)
-        _internal.delete_doubleArray(pval)
-
-        return result
+    nidx = len(indexes)
+    err, result = _internal.grib_get_double_ndelements(gribid, key, indexes, nidx)
+    GRIB_CHECK(err)
+    return result
 
 
 def grib_get_elements(gribid, key, indexes):
     """
     @brief Retrieve the elements of the key array for the indexes specified in the input.
 
-    @param gribid      id of the grib loaded in memory
-    @param key         the key to be searched
-    @param indexes     single index or a list of indexes
-    @return numpy.ndarray or array containing the values of key for the given indexes
+    @param gribid     id of the grib loaded in memory
+    @param key        the key to be searched
+    @param indexes    single index or a list of indexes
+    @return           numpy.ndarray containing the values of key for the given indexes
     @exception GribInternalError
     """
     try:
@@ -1385,21 +1326,21 @@ def grib_get_elements(gribid, key, indexes):
     return result
 
 
- at require(gribid=int, key=str)
-def grib_set_missing(gribid, key):
+ at require(msgid=int, key=str)
+def grib_set_missing(msgid, key):
     """
     @brief Set as missing the value for a key in a grib message.
 
     It can be used to set a missing value in the grib header but not in
     the data values.
 
-    \b Examples: \ref set_missing.py "set_missing.py"
+    \b Examples: \ref grib_set_missing.py "grib_set_missing.py"
 
-    @param  gribid     id of the grib loaded in memory
-    @param  key        key name
+    @param  msgid     id of the message loaded in memory
+    @param  key       key name
     @exception GribInternalError
     """
-    GRIB_CHECK(_internal.grib_c_set_missing(gribid, key))
+    GRIB_CHECK(_internal.grib_c_set_missing(msgid, key))
 
 
 @require(gribid=int)
@@ -1441,8 +1382,8 @@ def grib_set_key_vals(gribid, key_vals):
     GRIB_CHECK(_internal.grib_c_set_key_vals(gribid, key_vals_str))
 
 
- at require(gribid=int, key=str)
-def grib_is_missing(gribid, key):
+ at require(msgid=int, key=str)
+def grib_is_missing(msgid, key):
     """
     @brief Check if the value of a key is MISSING.
 
@@ -1451,26 +1392,26 @@ def grib_is_missing(gribid, key):
     The value of a key MISSING has a special significance and that can be read about
     in the WMO documentation.
 
-    @param gribid      id of the grib loaded in memory
+    @param msgid      id of the message loaded in memory
     @param key         key name
     @return 0->not missing, 1->missing
     @exception GribInternalError
     """
-    err, value = _internal.grib_c_is_missing(gribid, key)
+    err, value = _internal.grib_c_is_missing(msgid, key)
     GRIB_CHECK(err)
     return value
 
 
- at require(gribid=int, key=str)
-def grib_is_defined(gribid, key):
+ at require(msgid=int, key=str)
+def grib_is_defined(msgid, key):
     """
     @brief Check if a key is defined (exists)
-    @param gribid      id of the grib loaded in memory
-    @param key         key name
-    @return            0->not defined, 1->defined
-    @exception         GribInternalError
+    @param msgid      id of the message loaded in memory
+    @param key        key name
+    @return           0->not defined, 1->defined
+    @exception        GribInternalError
     """
-    err, value = _internal.grib_c_is_defined(gribid, key)
+    err, value = _internal.grib_c_is_defined(msgid, key)
     GRIB_CHECK(err)
     return value
 
@@ -1544,8 +1485,8 @@ def grib_get_native_type(gribid, key):
         return None
 
 
- at require(gribid=int, key=str)
-def grib_get(gribid, key, ktype=None):
+ at require(msgid=int, key=str)
+def grib_get(msgid, key, ktype=None):
     """
     @brief Get the value of a key in a grib message.
 
@@ -1553,58 +1494,58 @@ def grib_get(gribid, key, ktype=None):
     The type of value returned can be forced by using the type argument of the
     function. The type argument can be int, float or str.
 
-    The \em gribid references a grib message loaded in memory.
+    The \em msgid references a grib message loaded in memory.
 
-    \b Examples: \ref grib_get_keys.py "grib_get_keys.py", \ref print_data.py "print_data.py"
+    \b Examples: \ref grib_get_keys.py "grib_get_keys.py", \ref grib_print_data.py "grib_print_data.py"
 
     @see grib_new_from_file, grib_release, grib_set
 
-    @param gribid      id of the grib loaded in memory
+    @param msgid      id of the grib loaded in memory
     @param key         key name
     @param ktype       the type we want the output in (int, float or str), native type if not specified
     @return scalar value of key as int, float or str
     @exception GribInternalError
     """
     if ktype is None:
-        ktype = grib_get_native_type(gribid, key)
+        ktype = grib_get_native_type(msgid, key)
 
     result = None
     if ktype is int:
-        result = grib_get_long(gribid, key)
+        result = grib_get_long(msgid, key)
     elif ktype is float:
-        result = grib_get_double(gribid, key)
+        result = grib_get_double(msgid, key)
     elif ktype is str:
-        result = grib_get_string(gribid, key)
+        result = grib_get_string(msgid, key)
 
     return result
 
 
- at require(gribid=int, key=str)
-def grib_get_array(gribid, key, ktype=None):
+ at require(msgid=int, key=str)
+def grib_get_array(msgid, key, ktype=None):
     """
     @brief Get the contents of an array key.
 
-    The output array will be stored in a NumPy ndarray or array.
+    The output array will be stored in a NumPy ndarray.
     The type of the array returned depends on the native type of the requested key.
     The type of value returned can be forced by using the type argument of the function.
-    The type argument can be int or float.
+    The type argument can be int, float or string.
 
-    @param gribid      id of the grib loaded in memory
-    @param key         the key to get the value for
-    @param ktype       the type we want the output in (can be int or float), native type if not specified
-    @return numpy.ndarray or array
+    @param msgid      id of the message loaded in memory
+    @param key        the key to get the value for
+    @param ktype      the type we want the output in (can be int, float or string), native type if not specified
+    @return           numpy.ndarray
     @exception GribInternalError
     """
     if ktype is None:
-        ktype = grib_get_native_type(gribid, key)
+        ktype = grib_get_native_type(msgid, key)
 
     result = None
     if ktype is int:
-        result = grib_get_long_array(gribid, key)
+        result = grib_get_long_array(msgid, key)
     elif ktype is float:
-        result = grib_get_double_array(gribid, key)
+        result = grib_get_double_array(msgid, key)
     elif ktype is str:
-        result = grib_get_string_array(gribid, key)
+        result = grib_get_string_array(msgid, key)
 
     return result
 
@@ -1614,12 +1555,12 @@ def grib_get_values(gribid):
     """
     @brief Retrieve the contents of the 'values' key.
 
-    A NumPy ndarray or Python array containing the values in the message is returned.
+    A NumPy ndarray containing the values in the message is returned.
 
-    \b Examples: \ref print_data.py "print_data.py", \ref samples.py "samples.py"
+    \b Examples: \ref grib_print_data.py "grib_print_data.py", \ref grib_samples.py "grib_samples.py"
 
     @param gribid   id of the grib loaded in memory
-    @return numpy.ndarray or array
+    @return         numpy.ndarray
     @exception GribInternalError
     """
     return grib_get_double_array(gribid, "values")
@@ -1632,13 +1573,13 @@ def grib_set_values(gribid, values):
 
     The input array can be a numpy.ndarray or a python sequence like tuple, list, array, ...
 
-    If NumPy is enabled, the wrapper will internally try to convert the input to a NumPy array
+    The wrapper will internally try to convert the input to a NumPy array
     before extracting its data and length. This is possible as NumPy
     allows the construction of arrays from arbitrary python sequences.
 
     The elements of the input sequence need to be convertible to a double.
 
-    \b Examples: \ref grib_clone.py "grib_clone.py", \ref samples.py "samples.py"
+    \b Examples: \ref grib_clone.py "grib_clone.py", \ref grib_samples.py "grib_samples.py"
 
     @param gribid   id of the grib loaded in memory
     @param values   array of values to set as tuple, list, array or numpy.ndarray
@@ -1646,8 +1587,8 @@ def grib_set_values(gribid, values):
     grib_set_double_array(gribid, "values", values)
 
 
- at require(gribid=int, key=str)
-def grib_set(gribid, key, value):
+ at require(msgid=int, key=str)
+def grib_set(msgid, key, value):
     """
     @brief Set the value for a scalar key in a grib message.
 
@@ -1657,41 +1598,41 @@ def grib_set(gribid, key, value):
 
     @see grib_new_from_file, grib_release, grib_get
 
-    @param gribid      id of the grib loaded in memory
+    @param msgid      id of the grib loaded in memory
     @param key         key name
     @param value       scalar value to set for key
     @exception GribInternalError
     """
     if isinstance(value, int):
-        grib_set_long(gribid, key, value)
+        grib_set_long(msgid, key, value)
     elif isinstance(value, float):
-        grib_set_double(gribid, key, value)
+        grib_set_double(msgid, key, value)
     elif isinstance(value, str):
-        grib_set_string(gribid, key, value)
+        grib_set_string(msgid, key, value)
     else:
         raise GribInternalError("Invalid type of value when setting key '%s'." % key)
 
 
- at require(gribid=int, key=str)
-def grib_set_array(gribid, key, value):
+ at require(msgid=int, key=str)
+def grib_set_array(msgid, key, value):
     """
-    @brief Set the value for an array key in a grib message.
+    @brief Set the value for an array key in a message.
 
-    Some array keys can be "values","pl", "pv" respectively the data values,
-    the list of number of points for each latitude in a reduced grid and the list of
-    vertical levels.
+    Examples of array keys:
+    "values" - data values
+    "pl" - list of number of points for each latitude in a reduced grid
+    "pv" - list of vertical levels
 
     The input array can be a numpy.ndarray or a python sequence like tuple, list, array, ...
 
-    If NumPy is enabled, the wrapper will internally try to convert the input to a NumPy array
+    The wrapper will internally try to convert the input to a NumPy array
     before extracting its data and length. This is possible as NumPy
     allows the construction of arrays from arbitrary python sequences.
 
-    @param gribid      id of the grib loaded in memory
+    @param msgid       id of the message loaded in memory
     @param key         key name
-    @param value       array value to set for key
+    @param value       array to set for key
     @exception GribInternalError
-
     """
     val0 = None
     try:
@@ -1700,9 +1641,11 @@ def grib_set_array(gribid, key, value):
         pass
 
     if isinstance(val0, float):
-        grib_set_double_array(gribid, key, value)
+        grib_set_double_array(msgid, key, value)
     elif isinstance(val0, int):
-        grib_set_long_array(gribid, key, value)
+        grib_set_long_array(msgid, key, value)
+    elif isinstance(val0, str):
+        grib_set_string_array(msgid, key, value)
     else:
         raise GribInternalError("Invalid type of value when setting key '%s'." % key)
 
@@ -1710,12 +1653,14 @@ def grib_set_array(gribid, key, value):
 @require(indexid=int, key=str)
 def grib_index_get(indexid, key, ktype=str):
     """
-    @brief Get the distinct values of an index key. The key must belong to the index.
+    @brief Get the distinct values of an index key.
+    The key must belong to the index.
 
     \b Examples: \ref grib_index.py "grib_index.py"
 
     @param indexid   id of an index created from a file. The index must have been created on the given key.
     @param key       key for which the values are returned
+    @param ktype     the type we want the output in (int, float or str), str if not specified
     @return array of values
     @exception GribInternalError
     """
@@ -1834,20 +1779,20 @@ def grib_get_api_version():
 __version__ = grib_get_api_version()
 
 
- at require(gribid=int)
-def grib_get_message(gribid):
+ at require(msgid=int)
+def grib_get_message(msgid):
     """
     @brief Get the binary message.
 
-    Returns the binary string message associated with the grib identified by gribid.
+    Returns the binary string message associated with the grib identified by msgid.
 
     @see grib_new_from_message
 
-    @param gribid      id of the grib loaded in memory
-    @return binary string message associated with gribid
+    @param msgid      id of the grib loaded in memory
+    @return binary string message associated with msgid
     @exception GribInternalError
     """
-    error, message = _internal.grib_c_get_message(gribid)
+    error, message = _internal.grib_c_get_message(msgid)
     GRIB_CHECK(error)
     return message
 
@@ -1862,9 +1807,29 @@ def grib_new_from_message(message):
     @see grib_get_message
 
     @param message binary string message
-    @return gribid of the newly created grib message
+    @return msgid of the newly created grib message
     @exception GribInternalError
     """
-    error, gribid = _internal.grib_c_new_from_message(0, message, len(message))
+    error, msgid = _internal.grib_c_new_from_message(0, message, len(message))
     GRIB_CHECK(error)
-    return gribid
+    return msgid
+
+
+ at require(defs_path=str)
+def grib_set_definitions_path(defs_path):
+    """
+    @brief Set the definitions path
+
+    @param defs_path   definitions path
+    """
+    _internal.grib_c_set_definitions_path(defs_path)
+
+
+ at require(samples_path=str)
+def grib_set_samples_path(samples_path):
+    """
+    @brief Set the samples path
+
+    @param samples_path   samples path
+    """
+    _internal.grib_c_set_samples_path(samples_path)
diff --git a/python/gribapi_swig.i b/python/gribapi_swig.i
index 80e9613..f553b08 100644
--- a/python/gribapi_swig.i
+++ b/python/gribapi_swig.i
@@ -12,15 +12,11 @@
 #include "grib_interface.h"
 %}
 
-#if defined(NUMPY)
-
 %include "numpy.i"
 %init %{
 import_array();
 %}
 
-#endif
-
 /* Converts a PyFile instance to a stdio FILE* */
 %typemap(in) FILE* {
     if ( PyFile_Check($input) ){
@@ -48,7 +44,8 @@ int grib_c_new_gts_from_file(FILE* f, int headers_only, int* INOUT);
 int grib_c_new_metar_from_file(FILE* f, int headers_only, int* INOUT);
 int grib_c_iterator_new(int* INPUT, int* OUTPUT, int* INPUT);
 int grib_c_keys_iterator_new(int* INPUT, int* OUTPUT, char* name_space);
-int grib_c_new_from_samples(int* INOUT, char* name);
+int grib_c_grib_new_from_samples(int* INOUT, char* name);
+int grib_c_bufr_new_from_samples(int* INOUT, char* name);
 int grib_c_index_new_from_file(char* file, char* keys, int* OUTPUT);
 int grib_c_index_add_file(int* INPUT, char* file);
 int grib_c_new_from_index(int *INPUT, int *INOUT);
@@ -144,8 +141,37 @@ int grib_c_set_key_vals(int* gid, char* keyvals);
 int grib_c_is_missing(int* gid, char* key, int* OUTPUT);
 int grib_c_is_defined(int* gid, char* key, int* OUTPUT);
 
-#if defined(NUMPY)
+// http://www.swig.org/Doc1.3/Python.html
+// This tells SWIG to treat char ** as a special case
+%typemap(in) char ** {
+  /* Check if is a list */
+  if (PyList_Check($input)) {
+    int size = PyList_Size($input);
+    int i = 0;
+    $1 = (char **) malloc((size+1)*sizeof(char *));
+    for (i = 0; i < size; i++) {
+      PyObject *o = PyList_GetItem($input,i);
+      if (PyString_Check(o))
+        $1[i] = PyString_AsString(PyList_GetItem($input,i));
+      else {
+        PyErr_SetString(PyExc_TypeError,"list must contain strings");
+        free($1);
+        return NULL;
+      }
+    }
+    $1[i] = 0;  /* Last entry set to NULL */
+  } else {
+    PyErr_SetString(PyExc_TypeError,"not a list");
+    return NULL;
+  }
+}
+// This cleans up the char ** array we malloc'd before the function call
+%typemap(freearg) char ** {
+  free((char *) $1);
+}
+int grib_c_set_string_array(int *gid, char *key, const char** val);
 
+// Numpy Support
 %apply (double* IN_ARRAY1, int DIM1) {(double* dpin_val, int dpin_val_dim1)};
 %apply (long* IN_ARRAY1, int DIM1) {(long* lpin_val, int lpin_val_dim1)};
 %apply (int* IN_ARRAY1, int DIM1) {(int* ipin_index, int ipin_index_dim1)};
@@ -153,9 +179,9 @@ int grib_c_is_defined(int* gid, char* key, int* OUTPUT);
 %apply (long* ARGOUT_ARRAY1, int DIM1) {(long* lpout_val, int lpout_val_dim1)};
 
 %inline %{
-void with_numpy() {
-    return;
-}
+//void with_numpy() {
+//    return;
+//}
 int grib_set_double_ndarray(int* gid, char* key, double* dpin_val, int dpin_val_dim1) {
     return grib_c_set_real8_array(gid,key,dpin_val,&dpin_val_dim1);
 }
@@ -178,7 +204,6 @@ int grib_get_double_ndelements(int* gid, char* key, int* ipin_index, int ipin_in
 %clear double* dpout_val, int dpout_val_dim1;
 %clear long* lpout_val, int lpout_val_dim1;
 
-#endif
 // ---
 
 // nearest
@@ -212,3 +237,8 @@ void no_fail_on_wrong_length(int flag);
 long grib_c_get_api_version();
 void grib_c_gts_header_on();
 void grib_c_gts_header_off();
+void grib_c_set_definitions_path(const char* path);
+void grib_c_set_samples_path(const char* path);
+
+
+
diff --git a/python/setup.py.in b/python/setup.py.in
index 84d10ca..990897c 100644
--- a/python/setup.py.in
+++ b/python/setup.py.in
@@ -1,86 +1,67 @@
 #!/usr/bin/env python
 
 from distutils.core import setup, Extension
-import os,sys
+import os
+import sys
 
-attdict = dict(
-   sources = ['@CMAKE_CURRENT_SOURCE_DIR@/@_swig_c_wrapper@',
-              '@CMAKE_CURRENT_SOURCE_DIR@/grib_interface.c'],
-   swig_opts = [],
-   include_dirs = ['.', '@CMAKE_CURRENT_BINARY_DIR@/../src', '@CMAKE_CURRENT_SOURCE_DIR@/../src'],
-   library_dirs = ['@CMAKE_BINARY_DIR@/lib'],
-   libraries = ['eccodes'],
-   extra_objects = [],
-   extra_link_args = []
-)
+import numpy
+# Obtain the numpy include directory.  This logic works across numpy versions.
+try:
+    numpy_include = numpy.get_include()
+except AttributeError:
+    numpy_include = numpy.get_numpy_include()
 
-add_attribute = lambda **args: [list.append(attdict[key],value) for key,value in args.items()]
 
-# assumes build_dir is same as source_dir -- not true for cmake builds
-#build_dir = '@BUILD_DIR@'
-#add_attribute(
-#    include_dirs = os.path.join(build_dir,'src'),
-#    extra_objects = os.path.join(build_dir, 'src', '.libs', 'libeccodes.a')
-#)
+attdict = dict(sources=['@CMAKE_CURRENT_SOURCE_DIR@/swig_wrap_numpy.c',
+                        '@CMAKE_CURRENT_SOURCE_DIR@/grib_interface.c'],
+               swig_opts=[],
+               include_dirs=['.', '@CMAKE_CURRENT_BINARY_DIR@/../src',
+                             '@CMAKE_CURRENT_SOURCE_DIR@/../src',
+                             numpy_include],
+               library_dirs=['@CMAKE_BINARY_DIR@/lib'],
+               runtime_library_dirs=[],
+               libraries=['eccodes'],
+               extra_objects=[])
 
-with_jasper = @HAVE_LIBJASPER@
-if with_jasper:
-    jasper_dir = '@JASPER_DIR@'
-    if jasper_dir and jasper_dir != 'system':
-        add_attribute(
-            include_dirs = os.path.join(jasper_dir,'include'),
-            library_dirs = os.path.join(jasper_dir,'lib'),
-            extra_link_args = '-Wl,-rpath,' + os.path.join(jasper_dir,'lib')
-        )
-    add_attribute(libraries = 'jasper')
+shared_libs='@BUILD_SHARED_LIBS@'
+if shared_libs == 'OFF':
 
-with_openjpeg = @HAVE_LIBOPENJPEG@
-if with_openjpeg:
-    openjpeg_dir = '@OPENJPEG_DIR@'
-    if openjpeg_dir and openjpeg_dir != 'system':
-        add_attribute(
-            include_dirs = os.path.join(openjpeg_dir,'include'),
-            library_dirs = os.path.join(openjpeg_dir,'lib'),
-            extra_link_args = '-Wl,-rpath,' + os.path.join(openjpeg_dir,'lib')
-        )
-    add_attribute(libraries = 'openjpeg')
+    add_attribute = lambda **args: [list.append(attdict[key], value)
+                                    for key, value in args.items()]
 
-# assumes png is supplied by system paths -- may not be true
-png = @HAVE_PNG@
-if png:
-    add_attribute(libraries = 'png')
+    if @HAVE_LIBJASPER@:
+        jasper_dir = '@JASPER_DIR@'
+        if jasper_dir and jasper_dir != 'system':
+            add_attribute(library_dirs=os.path.join(jasper_dir, 'lib'),
+                          runtime_library_dirs=os.path.join(jasper_dir, 'lib'))
+        add_attribute(libraries='jasper')
 
+    if @HAVE_LIBOPENJPEG@:
+        openjpeg_lib_dir = '@OPENJPEG_LIB_DIR@'
+        if openjpeg_lib_dir:
+            add_attribute(library_dirs=openjpeg_lib_dir,
+                          runtime_library_dirs=openjpeg_lib_dir)
+        add_attribute(libraries='openjp2')
 
-with_aec = @HAVE_AEC@
-if with_aec:
-    aec_dir = '@AEC_DIR@'
-    if aec_dir and aec_dir != 'system':
-        add_attribute(
-            include_dirs = os.path.join(aec_dir,'include'),
-            library_dirs = os.path.join(aec_dir,'lib'),
-            extra_link_args = '-Wl,-rpath,' + os.path.join(aec_dir,'lib')
-        )
-    add_attribute(libraries = 'aec')
+    # assumes png is supplied by system paths -- may not be true
+    if @HAVE_LIBPNG@:
+        add_attribute(libraries='png')
 
+    if @HAVE_AEC@:
+        aec_dir = '@AEC_DIR@'
+        if aec_dir and aec_dir != 'system':
+            add_attribute(library_dirs=os.path.join(aec_dir, 'lib'),
+                          runtime_library_dirs=os.path.join(aec_dir, 'lib'))
+        add_attribute(libraries='aec')
 
-data_handler = '@DATA_HANDLER@'
-if data_handler == "numpy":
-    import numpy
-    # Obtain the numpy include directory.  This logic works across numpy versions.
-    try:
-        numpy_include = numpy.get_include()
-    except AttributeError:
-        numpy_include = numpy.get_numpy_include()
 
-    add_attribute(
-        include_dirs = numpy_include,
-    )
-#gribapi_module = Extension('_gribapi_swig',**attdict)
-
-setup (name = 'gribapi',
-       version = '@ECCODES_VERSION_STR@',
-       author      = 'ECMWF',
-       description = """Grib API SWIG module""",
-       ext_modules = [Extension('_gribapi_swig',**attdict)],
-       py_modules = ['gribapi_swig','gribapi'],
-      )
+setup(name='eccodes',
+      version='@ECCODES_VERSION_STR@',
+      author='ECMWF',
+      author_email='Software.Support at ecmwf.int',
+      description="""Python interface for ecCodes""",
+      license='Apache License, Version 2.0',
+      url='https://software.ecmwf.int/wiki/display/ECC/ecCodes+Home',
+      download_url='https://software.ecmwf.int/wiki/display/ECC/Releases',
+      ext_modules=[Extension('gribapi._gribapi_swig', **attdict)],
+      packages=['eccodes', 'gribapi'])
diff --git a/python/swig_wrap_array.c b/python/swig_wrap_array.c
deleted file mode 100644
index 484d261..0000000
--- a/python/swig_wrap_array.c
+++ /dev/null
@@ -1,8671 +0,0 @@
-/* ----------------------------------------------------------------------------
- * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 1.3.40
- * 
- * This file is not intended to be easily readable and contains a number of 
- * coding conventions designed to improve portability and efficiency. Do not make
- * changes to this file unless you know what you are doing--modify the SWIG 
- * interface file instead. 
- * ----------------------------------------------------------------------------- */
-
-#define SWIGPYTHON
-#define SWIG_PYTHON_DIRECTOR_NO_VTABLE
-
-/* -----------------------------------------------------------------------------
- *  This section contains generic SWIG labels for method/variable
- *  declarations/attributes, and other compiler dependent labels.
- * ----------------------------------------------------------------------------- */
-
-/* template workaround for compilers that cannot correctly implement the C++ standard */
-#ifndef SWIGTEMPLATEDISAMBIGUATOR
-# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
-#  define SWIGTEMPLATEDISAMBIGUATOR template
-# elif defined(__HP_aCC)
-/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
-/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
-#  define SWIGTEMPLATEDISAMBIGUATOR template
-# else
-#  define SWIGTEMPLATEDISAMBIGUATOR
-# endif
-#endif
-
-/* inline attribute */
-#ifndef SWIGINLINE
-# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
-#   define SWIGINLINE inline
-# else
-#   define SWIGINLINE
-# endif
-#endif
-
-/* attribute recognised by some compilers to avoid 'unused' warnings */
-#ifndef SWIGUNUSED
-# if defined(__GNUC__)
-#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
-#     define SWIGUNUSED __attribute__ ((__unused__)) 
-#   else
-#     define SWIGUNUSED
-#   endif
-# elif defined(__ICC)
-#   define SWIGUNUSED __attribute__ ((__unused__)) 
-# else
-#   define SWIGUNUSED 
-# endif
-#endif
-
-#ifndef SWIG_MSC_UNSUPPRESS_4505
-# if defined(_MSC_VER)
-#   pragma warning(disable : 4505) /* unreferenced local function has been removed */
-# endif 
-#endif
-
-#ifndef SWIGUNUSEDPARM
-# ifdef __cplusplus
-#   define SWIGUNUSEDPARM(p)
-# else
-#   define SWIGUNUSEDPARM(p) p SWIGUNUSED 
-# endif
-#endif
-
-/* internal SWIG method */
-#ifndef SWIGINTERN
-# define SWIGINTERN static SWIGUNUSED
-#endif
-
-/* internal inline SWIG method */
-#ifndef SWIGINTERNINLINE
-# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
-#endif
-
-/* exporting methods */
-#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
-#  ifndef GCC_HASCLASSVISIBILITY
-#    define GCC_HASCLASSVISIBILITY
-#  endif
-#endif
-
-#ifndef SWIGEXPORT
-# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
-#   if defined(STATIC_LINKED)
-#     define SWIGEXPORT
-#   else
-#     define SWIGEXPORT __declspec(dllexport)
-#   endif
-# else
-#   if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
-#     define SWIGEXPORT __attribute__ ((visibility("default")))
-#   else
-#     define SWIGEXPORT
-#   endif
-# endif
-#endif
-
-/* calling conventions for Windows */
-#ifndef SWIGSTDCALL
-# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
-#   define SWIGSTDCALL __stdcall
-# else
-#   define SWIGSTDCALL
-# endif 
-#endif
-
-/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
-#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
-# define _CRT_SECURE_NO_DEPRECATE
-#endif
-
-/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
-#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
-# define _SCL_SECURE_NO_DEPRECATE
-#endif
-
-
-
-/* Python.h has to appear first */
-#include <Python.h>
-
-/* -----------------------------------------------------------------------------
- * swigrun.swg
- *
- * This file contains generic C API SWIG runtime support for pointer
- * type checking.
- * ----------------------------------------------------------------------------- */
-
-/* This should only be incremented when either the layout of swig_type_info changes,
-   or for whatever reason, the runtime changes incompatibly */
-#define SWIG_RUNTIME_VERSION "4"
-
-/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
-#ifdef SWIG_TYPE_TABLE
-# define SWIG_QUOTE_STRING(x) #x
-# define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
-# define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
-#else
-# define SWIG_TYPE_TABLE_NAME
-#endif
-
-/*
-  You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
-  creating a static or dynamic library from the SWIG runtime code.
-  In 99.9% of the cases, SWIG just needs to declare them as 'static'.
-  
-  But only do this if strictly necessary, ie, if you have problems
-  with your compiler or suchlike.
-*/
-
-#ifndef SWIGRUNTIME
-# define SWIGRUNTIME SWIGINTERN
-#endif
-
-#ifndef SWIGRUNTIMEINLINE
-# define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
-#endif
-
-/*  Generic buffer size */
-#ifndef SWIG_BUFFER_SIZE
-# define SWIG_BUFFER_SIZE 1024
-#endif
-
-/* Flags for pointer conversions */
-#define SWIG_POINTER_DISOWN        0x1
-#define SWIG_CAST_NEW_MEMORY       0x2
-
-/* Flags for new pointer objects */
-#define SWIG_POINTER_OWN           0x1
-
-
-/* 
-   Flags/methods for returning states.
-   
-   The SWIG conversion methods, as ConvertPtr, return and integer 
-   that tells if the conversion was successful or not. And if not,
-   an error code can be returned (see swigerrors.swg for the codes).
-   
-   Use the following macros/flags to set or process the returning
-   states.
-   
-   In old versions of SWIG, code such as the following was usually written:
-
-     if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
-       // success code
-     } else {
-       //fail code
-     }
-
-   Now you can be more explicit:
-
-    int res = SWIG_ConvertPtr(obj,vptr,ty.flags);
-    if (SWIG_IsOK(res)) {
-      // success code
-    } else {
-      // fail code
-    }
-
-   which is the same really, but now you can also do
-
-    Type *ptr;
-    int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags);
-    if (SWIG_IsOK(res)) {
-      // success code
-      if (SWIG_IsNewObj(res) {
-        ...
-	delete *ptr;
-      } else {
-        ...
-      }
-    } else {
-      // fail code
-    }
-    
-   I.e., now SWIG_ConvertPtr can return new objects and you can
-   identify the case and take care of the deallocation. Of course that
-   also requires SWIG_ConvertPtr to return new result values, such as
-
-      int SWIG_ConvertPtr(obj, ptr,...) {         
-        if (<obj is ok>) {			       
-          if (<need new object>) {		       
-            *ptr = <ptr to new allocated object>; 
-            return SWIG_NEWOBJ;		       
-          } else {				       
-            *ptr = <ptr to old object>;	       
-            return SWIG_OLDOBJ;		       
-          } 				       
-        } else {				       
-          return SWIG_BADOBJ;		       
-        }					       
-      }
-
-   Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
-   more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the
-   SWIG errors code.
-
-   Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
-   allows to return the 'cast rank', for example, if you have this
-
-       int food(double)
-       int fooi(int);
-
-   and you call
- 
-      food(1)   // cast rank '1'  (1 -> 1.0)
-      fooi(1)   // cast rank '0'
-
-   just use the SWIG_AddCast()/SWIG_CheckState()
-*/
-
-#define SWIG_OK                    (0) 
-#define SWIG_ERROR                 (-1)
-#define SWIG_IsOK(r)               (r >= 0)
-#define SWIG_ArgError(r)           ((r != SWIG_ERROR) ? r : SWIG_TypeError)  
-
-/* The CastRankLimit says how many bits are used for the cast rank */
-#define SWIG_CASTRANKLIMIT         (1 << 8)
-/* The NewMask denotes the object was created (using new/malloc) */
-#define SWIG_NEWOBJMASK            (SWIG_CASTRANKLIMIT  << 1)
-/* The TmpMask is for in/out typemaps that use temporal objects */
-#define SWIG_TMPOBJMASK            (SWIG_NEWOBJMASK << 1)
-/* Simple returning values */
-#define SWIG_BADOBJ                (SWIG_ERROR)
-#define SWIG_OLDOBJ                (SWIG_OK)
-#define SWIG_NEWOBJ                (SWIG_OK | SWIG_NEWOBJMASK)
-#define SWIG_TMPOBJ                (SWIG_OK | SWIG_TMPOBJMASK)
-/* Check, add and del mask methods */
-#define SWIG_AddNewMask(r)         (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r)
-#define SWIG_DelNewMask(r)         (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r)
-#define SWIG_IsNewObj(r)           (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK))
-#define SWIG_AddTmpMask(r)         (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r)
-#define SWIG_DelTmpMask(r)         (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r)
-#define SWIG_IsTmpObj(r)           (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK))
-
-/* Cast-Rank Mode */
-#if defined(SWIG_CASTRANK_MODE)
-#  ifndef SWIG_TypeRank
-#    define SWIG_TypeRank             unsigned long
-#  endif
-#  ifndef SWIG_MAXCASTRANK            /* Default cast allowed */
-#    define SWIG_MAXCASTRANK          (2)
-#  endif
-#  define SWIG_CASTRANKMASK          ((SWIG_CASTRANKLIMIT) -1)
-#  define SWIG_CastRank(r)           (r & SWIG_CASTRANKMASK)
-SWIGINTERNINLINE int SWIG_AddCast(int r) { 
-  return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r;
-}
-SWIGINTERNINLINE int SWIG_CheckState(int r) { 
-  return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0; 
-}
-#else /* no cast-rank mode */
-#  define SWIG_AddCast
-#  define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0)
-#endif
-
-
-#include <string.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void *(*swig_converter_func)(void *, int *);
-typedef struct swig_type_info *(*swig_dycast_func)(void **);
-
-/* Structure to store information on one type */
-typedef struct swig_type_info {
-  const char             *name;			/* mangled name of this type */
-  const char             *str;			/* human readable name of this type */
-  swig_dycast_func        dcast;		/* dynamic cast function down a hierarchy */
-  struct swig_cast_info  *cast;			/* linked list of types that can cast into this type */
-  void                   *clientdata;		/* language specific type data */
-  int                    owndata;		/* flag if the structure owns the clientdata */
-} swig_type_info;
-
-/* Structure to store a type and conversion function used for casting */
-typedef struct swig_cast_info {
-  swig_type_info         *type;			/* pointer to type that is equivalent to this type */
-  swig_converter_func     converter;		/* function to cast the void pointers */
-  struct swig_cast_info  *next;			/* pointer to next cast in linked list */
-  struct swig_cast_info  *prev;			/* pointer to the previous cast */
-} swig_cast_info;
-
-/* Structure used to store module information
- * Each module generates one structure like this, and the runtime collects
- * all of these structures and stores them in a circularly linked list.*/
-typedef struct swig_module_info {
-  swig_type_info         **types;		/* Array of pointers to swig_type_info structures that are in this module */
-  size_t                 size;		        /* Number of types in this module */
-  struct swig_module_info *next;		/* Pointer to next element in circularly linked list */
-  swig_type_info         **type_initial;	/* Array of initially generated type structures */
-  swig_cast_info         **cast_initial;	/* Array of initially generated casting structures */
-  void                    *clientdata;		/* Language specific module data */
-} swig_module_info;
-
-/* 
-  Compare two type names skipping the space characters, therefore
-  "char*" == "char *" and "Class<int>" == "Class<int >", etc.
-
-  Return 0 when the two name types are equivalent, as in
-  strncmp, but skipping ' '.
-*/
-SWIGRUNTIME int
-SWIG_TypeNameComp(const char *f1, const char *l1,
-		  const char *f2, const char *l2) {
-  for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
-    while ((*f1 == ' ') && (f1 != l1)) ++f1;
-    while ((*f2 == ' ') && (f2 != l2)) ++f2;
-    if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
-  }
-  return (int)((l1 - f1) - (l2 - f2));
-}
-
-/*
-  Check type equivalence in a name list like <name1>|<name2>|...
-  Return 0 if not equal, 1 if equal
-*/
-SWIGRUNTIME int
-SWIG_TypeEquiv(const char *nb, const char *tb) {
-  int equiv = 0;
-  const char* te = tb + strlen(tb);
-  const char* ne = nb;
-  while (!equiv && *ne) {
-    for (nb = ne; *ne; ++ne) {
-      if (*ne == '|') break;
-    }
-    equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0;
-    if (*ne) ++ne;
-  }
-  return equiv;
-}
-
-/*
-  Check type equivalence in a name list like <name1>|<name2>|...
-  Return 0 if equal, -1 if nb < tb, 1 if nb > tb
-*/
-SWIGRUNTIME int
-SWIG_TypeCompare(const char *nb, const char *tb) {
-  int equiv = 0;
-  const char* te = tb + strlen(tb);
-  const char* ne = nb;
-  while (!equiv && *ne) {
-    for (nb = ne; *ne; ++ne) {
-      if (*ne == '|') break;
-    }
-    equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0;
-    if (*ne) ++ne;
-  }
-  return equiv;
-}
-
-
-/*
-  Check the typename
-*/
-SWIGRUNTIME swig_cast_info *
-SWIG_TypeCheck(const char *c, swig_type_info *ty) {
-  if (ty) {
-    swig_cast_info *iter = ty->cast;
-    while (iter) {
-      if (strcmp(iter->type->name, c) == 0) {
-        if (iter == ty->cast)
-          return iter;
-        /* Move iter to the top of the linked list */
-        iter->prev->next = iter->next;
-        if (iter->next)
-          iter->next->prev = iter->prev;
-        iter->next = ty->cast;
-        iter->prev = 0;
-        if (ty->cast) ty->cast->prev = iter;
-        ty->cast = iter;
-        return iter;
-      }
-      iter = iter->next;
-    }
-  }
-  return 0;
-}
-
-/* 
-  Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison
-*/
-SWIGRUNTIME swig_cast_info *
-SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) {
-  if (ty) {
-    swig_cast_info *iter = ty->cast;
-    while (iter) {
-      if (iter->type == from) {
-        if (iter == ty->cast)
-          return iter;
-        /* Move iter to the top of the linked list */
-        iter->prev->next = iter->next;
-        if (iter->next)
-          iter->next->prev = iter->prev;
-        iter->next = ty->cast;
-        iter->prev = 0;
-        if (ty->cast) ty->cast->prev = iter;
-        ty->cast = iter;
-        return iter;
-      }
-      iter = iter->next;
-    }
-  }
-  return 0;
-}
-
-/*
-  Cast a pointer up an inheritance hierarchy
-*/
-SWIGRUNTIMEINLINE void *
-SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) {
-  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
-}
-
-/* 
-   Dynamic pointer casting. Down an inheritance hierarchy
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
-  swig_type_info *lastty = ty;
-  if (!ty || !ty->dcast) return ty;
-  while (ty && (ty->dcast)) {
-    ty = (*ty->dcast)(ptr);
-    if (ty) lastty = ty;
-  }
-  return lastty;
-}
-
-/*
-  Return the name associated with this type
-*/
-SWIGRUNTIMEINLINE const char *
-SWIG_TypeName(const swig_type_info *ty) {
-  return ty->name;
-}
-
-/*
-  Return the pretty name associated with this type,
-  that is an unmangled type name in a form presentable to the user.
-*/
-SWIGRUNTIME const char *
-SWIG_TypePrettyName(const swig_type_info *type) {
-  /* The "str" field contains the equivalent pretty names of the
-     type, separated by vertical-bar characters.  We choose
-     to print the last name, as it is often (?) the most
-     specific. */
-  if (!type) return NULL;
-  if (type->str != NULL) {
-    const char *last_name = type->str;
-    const char *s;
-    for (s = type->str; *s; s++)
-      if (*s == '|') last_name = s+1;
-    return last_name;
-  }
-  else
-    return type->name;
-}
-
-/* 
-   Set the clientdata field for a type
-*/
-SWIGRUNTIME void
-SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
-  swig_cast_info *cast = ti->cast;
-  /* if (ti->clientdata == clientdata) return; */
-  ti->clientdata = clientdata;
-  
-  while (cast) {
-    if (!cast->converter) {
-      swig_type_info *tc = cast->type;
-      if (!tc->clientdata) {
-	SWIG_TypeClientData(tc, clientdata);
-      }
-    }    
-    cast = cast->next;
-  }
-}
-SWIGRUNTIME void
-SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) {
-  SWIG_TypeClientData(ti, clientdata);
-  ti->owndata = 1;
-}
-  
-/*
-  Search for a swig_type_info structure only by mangled name
-  Search is a O(log #types)
-  
-  We start searching at module start, and finish searching when start == end.  
-  Note: if start == end at the beginning of the function, we go all the way around
-  the circular list.
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_MangledTypeQueryModule(swig_module_info *start, 
-                            swig_module_info *end, 
-		            const char *name) {
-  swig_module_info *iter = start;
-  do {
-    if (iter->size) {
-      register size_t l = 0;
-      register size_t r = iter->size - 1;
-      do {
-	/* since l+r >= 0, we can (>> 1) instead (/ 2) */
-	register size_t i = (l + r) >> 1; 
-	const char *iname = iter->types[i]->name;
-	if (iname) {
-	  register int compare = strcmp(name, iname);
-	  if (compare == 0) {	    
-	    return iter->types[i];
-	  } else if (compare < 0) {
-	    if (i) {
-	      r = i - 1;
-	    } else {
-	      break;
-	    }
-	  } else if (compare > 0) {
-	    l = i + 1;
-	  }
-	} else {
-	  break; /* should never happen */
-	}
-      } while (l <= r);
-    }
-    iter = iter->next;
-  } while (iter != end);
-  return 0;
-}
-
-/*
-  Search for a swig_type_info structure for either a mangled name or a human readable name.
-  It first searches the mangled names of the types, which is a O(log #types)
-  If a type is not found it then searches the human readable names, which is O(#types).
-  
-  We start searching at module start, and finish searching when start == end.  
-  Note: if start == end at the beginning of the function, we go all the way around
-  the circular list.
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_TypeQueryModule(swig_module_info *start, 
-                     swig_module_info *end, 
-		     const char *name) {
-  /* STEP 1: Search the name field using binary search */
-  swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name);
-  if (ret) {
-    return ret;
-  } else {
-    /* STEP 2: If the type hasn't been found, do a complete search
-       of the str field (the human readable name) */
-    swig_module_info *iter = start;
-    do {
-      register size_t i = 0;
-      for (; i < iter->size; ++i) {
-	if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
-	  return iter->types[i];
-      }
-      iter = iter->next;
-    } while (iter != end);
-  }
-  
-  /* neither found a match */
-  return 0;
-}
-
-/* 
-   Pack binary data into a string
-*/
-SWIGRUNTIME char *
-SWIG_PackData(char *c, void *ptr, size_t sz) {
-  static const char hex[17] = "0123456789abcdef";
-  register const unsigned char *u = (unsigned char *) ptr;
-  register const unsigned char *eu =  u + sz;
-  for (; u != eu; ++u) {
-    register unsigned char uu = *u;
-    *(c++) = hex[(uu & 0xf0) >> 4];
-    *(c++) = hex[uu & 0xf];
-  }
-  return c;
-}
-
-/* 
-   Unpack binary data from a string
-*/
-SWIGRUNTIME const char *
-SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
-  register unsigned char *u = (unsigned char *) ptr;
-  register const unsigned char *eu = u + sz;
-  for (; u != eu; ++u) {
-    register char d = *(c++);
-    register unsigned char uu;
-    if ((d >= '0') && (d <= '9'))
-      uu = ((d - '0') << 4);
-    else if ((d >= 'a') && (d <= 'f'))
-      uu = ((d - ('a'-10)) << 4);
-    else 
-      return (char *) 0;
-    d = *(c++);
-    if ((d >= '0') && (d <= '9'))
-      uu |= (d - '0');
-    else if ((d >= 'a') && (d <= 'f'))
-      uu |= (d - ('a'-10));
-    else 
-      return (char *) 0;
-    *u = uu;
-  }
-  return c;
-}
-
-/* 
-   Pack 'void *' into a string buffer.
-*/
-SWIGRUNTIME char *
-SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
-  char *r = buff;
-  if ((2*sizeof(void *) + 2) > bsz) return 0;
-  *(r++) = '_';
-  r = SWIG_PackData(r,&ptr,sizeof(void *));
-  if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
-  strcpy(r,name);
-  return buff;
-}
-
-SWIGRUNTIME const char *
-SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
-  if (*c != '_') {
-    if (strcmp(c,"NULL") == 0) {
-      *ptr = (void *) 0;
-      return name;
-    } else {
-      return 0;
-    }
-  }
-  return SWIG_UnpackData(++c,ptr,sizeof(void *));
-}
-
-SWIGRUNTIME char *
-SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
-  char *r = buff;
-  size_t lname = (name ? strlen(name) : 0);
-  if ((2*sz + 2 + lname) > bsz) return 0;
-  *(r++) = '_';
-  r = SWIG_PackData(r,ptr,sz);
-  if (lname) {
-    strncpy(r,name,lname+1);
-  } else {
-    *r = 0;
-  }
-  return buff;
-}
-
-SWIGRUNTIME const char *
-SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
-  if (*c != '_') {
-    if (strcmp(c,"NULL") == 0) {
-      memset(ptr,0,sz);
-      return name;
-    } else {
-      return 0;
-    }
-  }
-  return SWIG_UnpackData(++c,ptr,sz);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-/*  Errors in SWIG */
-#define  SWIG_UnknownError    	   -1 
-#define  SWIG_IOError        	   -2 
-#define  SWIG_RuntimeError   	   -3 
-#define  SWIG_IndexError     	   -4 
-#define  SWIG_TypeError      	   -5 
-#define  SWIG_DivisionByZero 	   -6 
-#define  SWIG_OverflowError  	   -7 
-#define  SWIG_SyntaxError    	   -8 
-#define  SWIG_ValueError     	   -9 
-#define  SWIG_SystemError    	   -10
-#define  SWIG_AttributeError 	   -11
-#define  SWIG_MemoryError    	   -12 
-#define  SWIG_NullReferenceError   -13
-
-
-
-/* Compatibility macros for Python 3 */
-#if PY_VERSION_HEX >= 0x03000000
-
-#define PyClass_Check(obj) PyObject_IsInstance(obj, (PyObject *)&PyType_Type)
-#define PyInt_Check(x) PyLong_Check(x)
-#define PyInt_AsLong(x) PyLong_AsLong(x)
-#define PyInt_FromLong(x) PyLong_FromLong(x)
-#define PyString_Format(fmt, args)  PyUnicode_Format(fmt, args)
-
-#endif
-
-#ifndef Py_TYPE
-#  define Py_TYPE(op) ((op)->ob_type)
-#endif
-
-/* SWIG APIs for compatibility of both Python 2 & 3 */
-
-#if PY_VERSION_HEX >= 0x03000000
-#  define SWIG_Python_str_FromFormat PyUnicode_FromFormat
-#else
-#  define SWIG_Python_str_FromFormat PyString_FromFormat
-#endif
-
-
-/* Warning: This function will allocate a new string in Python 3,
- * so please call SWIG_Python_str_DelForPy3(x) to free the space.
- */
-SWIGINTERN char*
-SWIG_Python_str_AsChar(PyObject *str)
-{
-#if PY_VERSION_HEX >= 0x03000000
-  char *cstr;
-  char *newstr;
-  Py_ssize_t len;
-  str = PyUnicode_AsUTF8String(str);
-  PyBytes_AsStringAndSize(str, &cstr, &len);
-  newstr = (char *) malloc(len+1);
-  memcpy(newstr, cstr, len+1);
-  Py_XDECREF(str);
-  return newstr;
-#else
-  return PyString_AsString(str);
-#endif
-}
-
-#if PY_VERSION_HEX >= 0x03000000
-#  define SWIG_Python_str_DelForPy3(x) free( (void*) (x) )
-#else
-#  define SWIG_Python_str_DelForPy3(x) 
-#endif
-
-
-SWIGINTERN PyObject*
-SWIG_Python_str_FromChar(const char *c)
-{
-#if PY_VERSION_HEX >= 0x03000000
-  return PyUnicode_FromString(c); 
-#else
-  return PyString_FromString(c);
-#endif
-}
-
-/* Add PyOS_snprintf for old Pythons */
-#if PY_VERSION_HEX < 0x02020000
-# if defined(_MSC_VER) || defined(__BORLANDC__) || defined(_WATCOM)
-#  define PyOS_snprintf _snprintf
-# else
-#  define PyOS_snprintf snprintf
-# endif
-#endif
-
-/* A crude PyString_FromFormat implementation for old Pythons */
-#if PY_VERSION_HEX < 0x02020000
-
-#ifndef SWIG_PYBUFFER_SIZE
-# define SWIG_PYBUFFER_SIZE 1024
-#endif
-
-static PyObject *
-PyString_FromFormat(const char *fmt, ...) {
-  va_list ap;
-  char buf[SWIG_PYBUFFER_SIZE * 2];
-  int res;
-  va_start(ap, fmt);
-  res = vsnprintf(buf, sizeof(buf), fmt, ap);
-  va_end(ap);
-  return (res < 0 || res >= (int)sizeof(buf)) ? 0 : PyString_FromString(buf);
-}
-#endif
-
-/* Add PyObject_Del for old Pythons */
-#if PY_VERSION_HEX < 0x01060000
-# define PyObject_Del(op) PyMem_DEL((op))
-#endif
-#ifndef PyObject_DEL
-# define PyObject_DEL PyObject_Del
-#endif
-
-/* A crude PyExc_StopIteration exception for old Pythons */
-#if PY_VERSION_HEX < 0x02020000
-# ifndef PyExc_StopIteration
-#  define PyExc_StopIteration PyExc_RuntimeError
-# endif
-# ifndef PyObject_GenericGetAttr
-#  define PyObject_GenericGetAttr 0
-# endif
-#endif
-
-/* Py_NotImplemented is defined in 2.1 and up. */
-#if PY_VERSION_HEX < 0x02010000
-# ifndef Py_NotImplemented
-#  define Py_NotImplemented PyExc_RuntimeError
-# endif
-#endif
-
-/* A crude PyString_AsStringAndSize implementation for old Pythons */
-#if PY_VERSION_HEX < 0x02010000
-# ifndef PyString_AsStringAndSize
-#  define PyString_AsStringAndSize(obj, s, len) {*s = PyString_AsString(obj); *len = *s ? strlen(*s) : 0;}
-# endif
-#endif
-
-/* PySequence_Size for old Pythons */
-#if PY_VERSION_HEX < 0x02000000
-# ifndef PySequence_Size
-#  define PySequence_Size PySequence_Length
-# endif
-#endif
-
-/* PyBool_FromLong for old Pythons */
-#if PY_VERSION_HEX < 0x02030000
-static
-PyObject *PyBool_FromLong(long ok)
-{
-  PyObject *result = ok ? Py_True : Py_False;
-  Py_INCREF(result);
-  return result;
-}
-#endif
-
-/* Py_ssize_t for old Pythons */
-/* This code is as recommended by: */
-/* http://www.python.org/dev/peps/pep-0353/#conversion-guidelines */
-#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
-typedef int Py_ssize_t;
-# define PY_SSIZE_T_MAX INT_MAX
-# define PY_SSIZE_T_MIN INT_MIN
-#endif
-
-/* -----------------------------------------------------------------------------
- * error manipulation
- * ----------------------------------------------------------------------------- */
-
-SWIGRUNTIME PyObject*
-SWIG_Python_ErrorType(int code) {
-  PyObject* type = 0;
-  switch(code) {
-  case SWIG_MemoryError:
-    type = PyExc_MemoryError;
-    break;
-  case SWIG_IOError:
-    type = PyExc_IOError;
-    break;
-  case SWIG_RuntimeError:
-    type = PyExc_RuntimeError;
-    break;
-  case SWIG_IndexError:
-    type = PyExc_IndexError;
-    break;
-  case SWIG_TypeError:
-    type = PyExc_TypeError;
-    break;
-  case SWIG_DivisionByZero:
-    type = PyExc_ZeroDivisionError;
-    break;
-  case SWIG_OverflowError:
-    type = PyExc_OverflowError;
-    break;
-  case SWIG_SyntaxError:
-    type = PyExc_SyntaxError;
-    break;
-  case SWIG_ValueError:
-    type = PyExc_ValueError;
-    break;
-  case SWIG_SystemError:
-    type = PyExc_SystemError;
-    break;
-  case SWIG_AttributeError:
-    type = PyExc_AttributeError;
-    break;
-  default:
-    type = PyExc_RuntimeError;
-  }
-  return type;
-}
-
-
-SWIGRUNTIME void
-SWIG_Python_AddErrorMsg(const char* mesg)
-{
-  PyObject *type = 0;
-  PyObject *value = 0;
-  PyObject *traceback = 0;
-
-  if (PyErr_Occurred()) PyErr_Fetch(&type, &value, &traceback);
-  if (value) {
-    char *tmp;
-    PyObject *old_str = PyObject_Str(value);
-    PyErr_Clear();
-    Py_XINCREF(type);
-
-    PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg);
-    SWIG_Python_str_DelForPy3(tmp);
-    Py_DECREF(old_str);
-    Py_DECREF(value);
-  } else {
-    PyErr_SetString(PyExc_RuntimeError, mesg);
-  }
-}
-
-#if defined(SWIG_PYTHON_NO_THREADS)
-#  if defined(SWIG_PYTHON_THREADS)
-#    undef SWIG_PYTHON_THREADS
-#  endif
-#endif
-#if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */
-#  if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL)
-#    if (PY_VERSION_HEX >= 0x02030000) /* For 2.3 or later, use the PyGILState calls */
-#      define SWIG_PYTHON_USE_GIL
-#    endif
-#  endif
-#  if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */
-#    ifndef SWIG_PYTHON_INITIALIZE_THREADS
-#     define SWIG_PYTHON_INITIALIZE_THREADS  PyEval_InitThreads() 
-#    endif
-#    ifdef __cplusplus /* C++ code */
-       class SWIG_Python_Thread_Block {
-         bool status;
-         PyGILState_STATE state;
-       public:
-         void end() { if (status) { PyGILState_Release(state); status = false;} }
-         SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {}
-         ~SWIG_Python_Thread_Block() { end(); }
-       };
-       class SWIG_Python_Thread_Allow {
-         bool status;
-         PyThreadState *save;
-       public:
-         void end() { if (status) { PyEval_RestoreThread(save); status = false; }}
-         SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {}
-         ~SWIG_Python_Thread_Allow() { end(); }
-       };
-#      define SWIG_PYTHON_THREAD_BEGIN_BLOCK   SWIG_Python_Thread_Block _swig_thread_block
-#      define SWIG_PYTHON_THREAD_END_BLOCK     _swig_thread_block.end()
-#      define SWIG_PYTHON_THREAD_BEGIN_ALLOW   SWIG_Python_Thread_Allow _swig_thread_allow
-#      define SWIG_PYTHON_THREAD_END_ALLOW     _swig_thread_allow.end()
-#    else /* C code */
-#      define SWIG_PYTHON_THREAD_BEGIN_BLOCK   PyGILState_STATE _swig_thread_block = PyGILState_Ensure()
-#      define SWIG_PYTHON_THREAD_END_BLOCK     PyGILState_Release(_swig_thread_block)
-#      define SWIG_PYTHON_THREAD_BEGIN_ALLOW   PyThreadState *_swig_thread_allow = PyEval_SaveThread()
-#      define SWIG_PYTHON_THREAD_END_ALLOW     PyEval_RestoreThread(_swig_thread_allow)
-#    endif
-#  else /* Old thread way, not implemented, user must provide it */
-#    if !defined(SWIG_PYTHON_INITIALIZE_THREADS)
-#      define SWIG_PYTHON_INITIALIZE_THREADS
-#    endif
-#    if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK)
-#      define SWIG_PYTHON_THREAD_BEGIN_BLOCK
-#    endif
-#    if !defined(SWIG_PYTHON_THREAD_END_BLOCK)
-#      define SWIG_PYTHON_THREAD_END_BLOCK
-#    endif
-#    if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW)
-#      define SWIG_PYTHON_THREAD_BEGIN_ALLOW
-#    endif
-#    if !defined(SWIG_PYTHON_THREAD_END_ALLOW)
-#      define SWIG_PYTHON_THREAD_END_ALLOW
-#    endif
-#  endif
-#else /* No thread support */
-#  define SWIG_PYTHON_INITIALIZE_THREADS
-#  define SWIG_PYTHON_THREAD_BEGIN_BLOCK
-#  define SWIG_PYTHON_THREAD_END_BLOCK
-#  define SWIG_PYTHON_THREAD_BEGIN_ALLOW
-#  define SWIG_PYTHON_THREAD_END_ALLOW
-#endif
-
-/* -----------------------------------------------------------------------------
- * Python API portion that goes into the runtime
- * ----------------------------------------------------------------------------- */
-
-#ifdef __cplusplus
-extern "C" {
-#if 0
-} /* cc-mode */
-#endif
-#endif
-
-/* -----------------------------------------------------------------------------
- * Constant declarations
- * ----------------------------------------------------------------------------- */
-
-/* Constant Types */
-#define SWIG_PY_POINTER 4
-#define SWIG_PY_BINARY  5
-
-/* Constant information structure */
-typedef struct swig_const_info {
-  int type;
-  char *name;
-  long lvalue;
-  double dvalue;
-  void   *pvalue;
-  swig_type_info **ptype;
-} swig_const_info;
-
-
-/* -----------------------------------------------------------------------------
- * Wrapper of PyInstanceMethod_New() used in Python 3
- * It is exported to the generated module, used for -fastproxy
- * ----------------------------------------------------------------------------- */
-SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *self, PyObject *func)
-{
-#if PY_VERSION_HEX >= 0x03000000
-  return PyInstanceMethod_New(func);
-#else
-  return NULL;
-#endif
-}
-
-#ifdef __cplusplus
-#if 0
-{ /* cc-mode */
-#endif
-}
-#endif
-
-
-/* -----------------------------------------------------------------------------
- * See the LICENSE file for information on copyright, usage and redistribution
- * of SWIG, and the README file for authors - http://www.swig.org/release.html.
- *
- * pyrun.swg
- *
- * This file contains the runtime support for Python modules
- * and includes code for managing global variables and pointer
- * type checking.
- *
- * ----------------------------------------------------------------------------- */
-
-/* Common SWIG API */
-
-/* for raw pointers */
-#define SWIG_Python_ConvertPtr(obj, pptr, type, flags)  SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, 0)
-#define SWIG_ConvertPtr(obj, pptr, type, flags)         SWIG_Python_ConvertPtr(obj, pptr, type, flags)
-#define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own)  SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, own)
-#define SWIG_NewPointerObj(ptr, type, flags)            SWIG_Python_NewPointerObj(ptr, type, flags)
-#define SWIG_CheckImplicit(ty)                          SWIG_Python_CheckImplicit(ty) 
-#define SWIG_AcquirePtr(ptr, src)                       SWIG_Python_AcquirePtr(ptr, src)
-#define swig_owntype                                    int
-
-/* for raw packed data */
-#define SWIG_ConvertPacked(obj, ptr, sz, ty)            SWIG_Python_ConvertPacked(obj, ptr, sz, ty)
-#define SWIG_NewPackedObj(ptr, sz, type)                SWIG_Python_NewPackedObj(ptr, sz, type)
-
-/* for class or struct pointers */
-#define SWIG_ConvertInstance(obj, pptr, type, flags)    SWIG_ConvertPtr(obj, pptr, type, flags)
-#define SWIG_NewInstanceObj(ptr, type, flags)           SWIG_NewPointerObj(ptr, type, flags)
-
-/* for C or C++ function pointers */
-#define SWIG_ConvertFunctionPtr(obj, pptr, type)        SWIG_Python_ConvertFunctionPtr(obj, pptr, type)
-#define SWIG_NewFunctionPtrObj(ptr, type)               SWIG_Python_NewPointerObj(ptr, type, 0)
-
-/* for C++ member pointers, ie, member methods */
-#define SWIG_ConvertMember(obj, ptr, sz, ty)            SWIG_Python_ConvertPacked(obj, ptr, sz, ty)
-#define SWIG_NewMemberObj(ptr, sz, type)                SWIG_Python_NewPackedObj(ptr, sz, type)
-
-
-/* Runtime API */
-
-#define SWIG_GetModule(clientdata)                      SWIG_Python_GetModule()
-#define SWIG_SetModule(clientdata, pointer)             SWIG_Python_SetModule(pointer)
-#define SWIG_NewClientData(obj)                         SwigPyClientData_New(obj)
-
-#define SWIG_SetErrorObj                                SWIG_Python_SetErrorObj                            
-#define SWIG_SetErrorMsg                        	SWIG_Python_SetErrorMsg				   
-#define SWIG_ErrorType(code)                    	SWIG_Python_ErrorType(code)                        
-#define SWIG_Error(code, msg)            		SWIG_Python_SetErrorMsg(SWIG_ErrorType(code), msg) 
-#define SWIG_fail                        		goto fail					   
-
-
-/* Runtime API implementation */
-
-/* Error manipulation */
-
-SWIGINTERN void 
-SWIG_Python_SetErrorObj(PyObject *errtype, PyObject *obj) {
-  SWIG_PYTHON_THREAD_BEGIN_BLOCK; 
-  PyErr_SetObject(errtype, obj);
-  Py_DECREF(obj);
-  SWIG_PYTHON_THREAD_END_BLOCK;
-}
-
-SWIGINTERN void 
-SWIG_Python_SetErrorMsg(PyObject *errtype, const char *msg) {
-  SWIG_PYTHON_THREAD_BEGIN_BLOCK;
-  PyErr_SetString(errtype, (char *) msg);
-  SWIG_PYTHON_THREAD_END_BLOCK;
-}
-
-#define SWIG_Python_Raise(obj, type, desc)  SWIG_Python_SetErrorObj(SWIG_Python_ExceptionType(desc), obj)
-
-/* Set a constant value */
-
-SWIGINTERN void
-SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) {   
-  PyDict_SetItemString(d, (char*) name, obj);
-  Py_DECREF(obj);                            
-}
-
-/* Append a value to the result obj */
-
-SWIGINTERN PyObject*
-SWIG_Python_AppendOutput(PyObject* result, PyObject* obj) {
-#if !defined(SWIG_PYTHON_OUTPUT_TUPLE)
-  if (!result) {
-    result = obj;
-  } else if (result == Py_None) {
-    Py_DECREF(result);
-    result = obj;
-  } else {
-    if (!PyList_Check(result)) {
-      PyObject *o2 = result;
-      result = PyList_New(1);
-      PyList_SetItem(result, 0, o2);
-    }
-    PyList_Append(result,obj);
-    Py_DECREF(obj);
-  }
-  return result;
-#else
-  PyObject*   o2;
-  PyObject*   o3;
-  if (!result) {
-    result = obj;
-  } else if (result == Py_None) {
-    Py_DECREF(result);
-    result = obj;
-  } else {
-    if (!PyTuple_Check(result)) {
-      o2 = result;
-      result = PyTuple_New(1);
-      PyTuple_SET_ITEM(result, 0, o2);
-    }
-    o3 = PyTuple_New(1);
-    PyTuple_SET_ITEM(o3, 0, obj);
-    o2 = result;
-    result = PySequence_Concat(o2, o3);
-    Py_DECREF(o2);
-    Py_DECREF(o3);
-  }
-  return result;
-#endif
-}
-
-/* Unpack the argument tuple */
-
-SWIGINTERN int
-SWIG_Python_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, PyObject **objs)
-{
-  if (!args) {
-    if (!min && !max) {
-      return 1;
-    } else {
-      PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got none", 
-		   name, (min == max ? "" : "at least "), (int)min);
-      return 0;
-    }
-  }  
-  if (!PyTuple_Check(args)) {
-    PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple");
-    return 0;
-  } else {
-    register Py_ssize_t l = PyTuple_GET_SIZE(args);
-    if (l < min) {
-      PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", 
-		   name, (min == max ? "" : "at least "), (int)min, (int)l);
-      return 0;
-    } else if (l > max) {
-      PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", 
-		   name, (min == max ? "" : "at most "), (int)max, (int)l);
-      return 0;
-    } else {
-      register int i;
-      for (i = 0; i < l; ++i) {
-	objs[i] = PyTuple_GET_ITEM(args, i);
-      }
-      for (; l < max; ++l) {
-	objs[l] = 0;
-      }
-      return i + 1;
-    }    
-  }
-}
-
-/* A functor is a function object with one single object argument */
-#if PY_VERSION_HEX >= 0x02020000
-#define SWIG_Python_CallFunctor(functor, obj)	        PyObject_CallFunctionObjArgs(functor, obj, NULL);
-#else
-#define SWIG_Python_CallFunctor(functor, obj)	        PyObject_CallFunction(functor, "O", obj);
-#endif
-
-/*
-  Helper for static pointer initialization for both C and C++ code, for example
-  static PyObject *SWIG_STATIC_POINTER(MyVar) = NewSomething(...);
-*/
-#ifdef __cplusplus
-#define SWIG_STATIC_POINTER(var)  var
-#else
-#define SWIG_STATIC_POINTER(var)  var = 0; if (!var) var
-#endif
-
-/* -----------------------------------------------------------------------------
- * Pointer declarations
- * ----------------------------------------------------------------------------- */
-
-/* Flags for new pointer objects */
-#define SWIG_POINTER_NOSHADOW       (SWIG_POINTER_OWN      << 1)
-#define SWIG_POINTER_NEW            (SWIG_POINTER_NOSHADOW | SWIG_POINTER_OWN)
-
-#define SWIG_POINTER_IMPLICIT_CONV  (SWIG_POINTER_DISOWN   << 1)
-
-#ifdef __cplusplus
-extern "C" {
-#if 0
-} /* cc-mode */
-#endif
-#endif
-
-/*  How to access Py_None */
-#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
-#  ifndef SWIG_PYTHON_NO_BUILD_NONE
-#    ifndef SWIG_PYTHON_BUILD_NONE
-#      define SWIG_PYTHON_BUILD_NONE
-#    endif
-#  endif
-#endif
-
-#ifdef SWIG_PYTHON_BUILD_NONE
-#  ifdef Py_None
-#   undef Py_None
-#   define Py_None SWIG_Py_None()
-#  endif
-SWIGRUNTIMEINLINE PyObject * 
-_SWIG_Py_None(void)
-{
-  PyObject *none = Py_BuildValue((char*)"");
-  Py_DECREF(none);
-  return none;
-}
-SWIGRUNTIME PyObject * 
-SWIG_Py_None(void)
-{
-  static PyObject *SWIG_STATIC_POINTER(none) = _SWIG_Py_None();
-  return none;
-}
-#endif
-
-/* The python void return value */
-
-SWIGRUNTIMEINLINE PyObject * 
-SWIG_Py_Void(void)
-{
-  PyObject *none = Py_None;
-  Py_INCREF(none);
-  return none;
-}
-
-/* SwigPyClientData */
-
-typedef struct {
-  PyObject *klass;
-  PyObject *newraw;
-  PyObject *newargs;
-  PyObject *destroy;
-  int delargs;
-  int implicitconv;
-} SwigPyClientData;
-
-SWIGRUNTIMEINLINE int 
-SWIG_Python_CheckImplicit(swig_type_info *ty)
-{
-  SwigPyClientData *data = (SwigPyClientData *)ty->clientdata;
-  return data ? data->implicitconv : 0;
-}
-
-SWIGRUNTIMEINLINE PyObject *
-SWIG_Python_ExceptionType(swig_type_info *desc) {
-  SwigPyClientData *data = desc ? (SwigPyClientData *) desc->clientdata : 0;
-  PyObject *klass = data ? data->klass : 0;
-  return (klass ? klass : PyExc_RuntimeError);
-}
-
-
-SWIGRUNTIME SwigPyClientData * 
-SwigPyClientData_New(PyObject* obj)
-{
-  if (!obj) {
-    return 0;
-  } else {
-    SwigPyClientData *data = (SwigPyClientData *)malloc(sizeof(SwigPyClientData));
-    /* the klass element */
-    data->klass = obj;
-    Py_INCREF(data->klass);
-    /* the newraw method and newargs arguments used to create a new raw instance */
-    if (PyClass_Check(obj)) {
-      data->newraw = 0;
-      data->newargs = obj;
-      Py_INCREF(obj);
-    } else {
-#if (PY_VERSION_HEX < 0x02020000)
-      data->newraw = 0;
-#else
-      data->newraw = PyObject_GetAttrString(data->klass, (char *)"__new__");
-#endif
-      if (data->newraw) {
-	Py_INCREF(data->newraw);
-	data->newargs = PyTuple_New(1);
-	PyTuple_SetItem(data->newargs, 0, obj);
-      } else {
-	data->newargs = obj;
-      }
-      Py_INCREF(data->newargs);
-    }
-    /* the destroy method, aka as the C++ delete method */
-    data->destroy = PyObject_GetAttrString(data->klass, (char *)"__swig_destroy__");
-    if (PyErr_Occurred()) {
-      PyErr_Clear();
-      data->destroy = 0;
-    }
-    if (data->destroy) {
-      int flags;
-      Py_INCREF(data->destroy);
-      flags = PyCFunction_GET_FLAGS(data->destroy);
-#ifdef METH_O
-      data->delargs = !(flags & (METH_O));
-#else
-      data->delargs = 0;
-#endif
-    } else {
-      data->delargs = 0;
-    }
-    data->implicitconv = 0;
-    return data;
-  }
-}
-
-SWIGRUNTIME void 
-SwigPyClientData_Del(SwigPyClientData* data)
-{
-  Py_XDECREF(data->newraw);
-  Py_XDECREF(data->newargs);
-  Py_XDECREF(data->destroy);
-}
-
-/* =============== SwigPyObject =====================*/
-
-typedef struct {
-  PyObject_HEAD
-  void *ptr;
-  swig_type_info *ty;
-  int own;
-  PyObject *next;
-} SwigPyObject;
-
-SWIGRUNTIME PyObject *
-SwigPyObject_long(SwigPyObject *v)
-{
-  return PyLong_FromVoidPtr(v->ptr);
-}
-
-SWIGRUNTIME PyObject *
-SwigPyObject_format(const char* fmt, SwigPyObject *v)
-{
-  PyObject *res = NULL;
-  PyObject *args = PyTuple_New(1);
-  if (args) {
-    if (PyTuple_SetItem(args, 0, SwigPyObject_long(v)) == 0) {
-      PyObject *ofmt = SWIG_Python_str_FromChar(fmt);
-      if (ofmt) {
-#if PY_VERSION_HEX >= 0x03000000
-	res = PyUnicode_Format(ofmt,args);
-#else
-	res = PyString_Format(ofmt,args);
-#endif
-	Py_DECREF(ofmt);
-      }
-      Py_DECREF(args);
-    }
-  }
-  return res;
-}
-
-SWIGRUNTIME PyObject *
-SwigPyObject_oct(SwigPyObject *v)
-{
-  return SwigPyObject_format("%o",v);
-}
-
-SWIGRUNTIME PyObject *
-SwigPyObject_hex(SwigPyObject *v)
-{
-  return SwigPyObject_format("%x",v);
-}
-
-SWIGRUNTIME PyObject *
-#ifdef METH_NOARGS
-SwigPyObject_repr(SwigPyObject *v)
-#else
-SwigPyObject_repr(SwigPyObject *v, PyObject *args)
-#endif
-{
-  const char *name = SWIG_TypePrettyName(v->ty);
-  PyObject *repr = SWIG_Python_str_FromFormat("<Swig Object of type '%s' at %p>", name, v);
-  if (v->next) {
-#ifdef METH_NOARGS
-    PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next);
-#else
-    PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next, args);
-#endif
-#if PY_VERSION_HEX >= 0x03000000
-    PyObject *joined = PyUnicode_Concat(repr, nrep);
-    Py_DecRef(repr);
-    Py_DecRef(nrep);
-    repr = joined;
-#else
-    PyString_ConcatAndDel(&repr,nrep);
-#endif
-  }
-  return repr;  
-}
-
-SWIGRUNTIME int
-SwigPyObject_print(SwigPyObject *v, FILE *fp, int SWIGUNUSEDPARM(flags))
-{
-  char *str;
-#ifdef METH_NOARGS
-  PyObject *repr = SwigPyObject_repr(v);
-#else
-  PyObject *repr = SwigPyObject_repr(v, NULL);
-#endif
-  if (repr) {
-    str = SWIG_Python_str_AsChar(repr); 
-    fputs(str, fp);
-    SWIG_Python_str_DelForPy3(str);
-    Py_DECREF(repr);
-    return 0; 
-  } else {
-    return 1; 
-  }
-}
-
-SWIGRUNTIME PyObject *
-SwigPyObject_str(SwigPyObject *v)
-{
-  char result[SWIG_BUFFER_SIZE];
-  return SWIG_PackVoidPtr(result, v->ptr, v->ty->name, sizeof(result)) ?
-    SWIG_Python_str_FromChar(result) : 0;
-}
-
-SWIGRUNTIME int
-SwigPyObject_compare(SwigPyObject *v, SwigPyObject *w)
-{
-  void *i = v->ptr;
-  void *j = w->ptr;
-  return (i < j) ? -1 : ((i > j) ? 1 : 0);
-}
-
-/* Added for Python 3.x, would it also be useful for Python 2.x? */
-SWIGRUNTIME PyObject*
-SwigPyObject_richcompare(SwigPyObject *v, SwigPyObject *w, int op)
-{
-  PyObject* res;
-  if( op != Py_EQ && op != Py_NE ) {
-    Py_INCREF(Py_NotImplemented);
-    return Py_NotImplemented;
-  }
-  if( (SwigPyObject_compare(v, w)==0) == (op == Py_EQ) )
-    res = Py_True;
-  else
-    res = Py_False;
-  Py_INCREF(res);
-  return res;  
-}
-
-
-SWIGRUNTIME PyTypeObject* _PySwigObject_type(void);
-
-SWIGRUNTIME PyTypeObject*
-SwigPyObject_type(void) {
-  static PyTypeObject *SWIG_STATIC_POINTER(type) = _PySwigObject_type();
-  return type;
-}
-
-SWIGRUNTIMEINLINE int
-SwigPyObject_Check(PyObject *op) {
-  return (Py_TYPE(op) == SwigPyObject_type())
-    || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0);
-}
-
-SWIGRUNTIME PyObject *
-SwigPyObject_New(void *ptr, swig_type_info *ty, int own);
-
-SWIGRUNTIME void
-SwigPyObject_dealloc(PyObject *v)
-{
-  SwigPyObject *sobj = (SwigPyObject *) v;
-  PyObject *next = sobj->next;
-  if (sobj->own == SWIG_POINTER_OWN) {
-    swig_type_info *ty = sobj->ty;
-    SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
-    PyObject *destroy = data ? data->destroy : 0;
-    if (destroy) {
-      /* destroy is always a VARARGS method */
-      PyObject *res;
-      if (data->delargs) {
-	/* we need to create a temporary object to carry the destroy operation */
-	PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0);
-	res = SWIG_Python_CallFunctor(destroy, tmp);
-	Py_DECREF(tmp);
-      } else {
-	PyCFunction meth = PyCFunction_GET_FUNCTION(destroy);
-	PyObject *mself = PyCFunction_GET_SELF(destroy);
-	res = ((*meth)(mself, v));
-      }
-      Py_XDECREF(res);
-    } 
-#if !defined(SWIG_PYTHON_SILENT_MEMLEAK)
-    else {
-      const char *name = SWIG_TypePrettyName(ty);
-      printf("swig/python detected a memory leak of type '%s', no destructor found.\n", (name ? name : "unknown"));
-    }
-#endif
-  } 
-  Py_XDECREF(next);
-  PyObject_DEL(v);
-}
-
-SWIGRUNTIME PyObject* 
-SwigPyObject_append(PyObject* v, PyObject* next)
-{
-  SwigPyObject *sobj = (SwigPyObject *) v;
-#ifndef METH_O
-  PyObject *tmp = 0;
-  if (!PyArg_ParseTuple(next,(char *)"O:append", &tmp)) return NULL;
-  next = tmp;
-#endif
-  if (!SwigPyObject_Check(next)) {
-    return NULL;
-  }
-  sobj->next = next;
-  Py_INCREF(next);
-  return SWIG_Py_Void();
-}
-
-SWIGRUNTIME PyObject* 
-#ifdef METH_NOARGS
-SwigPyObject_next(PyObject* v)
-#else
-SwigPyObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
-#endif
-{
-  SwigPyObject *sobj = (SwigPyObject *) v;
-  if (sobj->next) {    
-    Py_INCREF(sobj->next);
-    return sobj->next;
-  } else {
-    return SWIG_Py_Void();
-  }
-}
-
-SWIGINTERN PyObject*
-#ifdef METH_NOARGS
-SwigPyObject_disown(PyObject *v)
-#else
-SwigPyObject_disown(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
-#endif
-{
-  SwigPyObject *sobj = (SwigPyObject *)v;
-  sobj->own = 0;
-  return SWIG_Py_Void();
-}
-
-SWIGINTERN PyObject*
-#ifdef METH_NOARGS
-SwigPyObject_acquire(PyObject *v)
-#else
-SwigPyObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
-#endif
-{
-  SwigPyObject *sobj = (SwigPyObject *)v;
-  sobj->own = SWIG_POINTER_OWN;
-  return SWIG_Py_Void();
-}
-
-SWIGINTERN PyObject*
-SwigPyObject_own(PyObject *v, PyObject *args)
-{
-  PyObject *val = 0;
-#if (PY_VERSION_HEX < 0x02020000)
-  if (!PyArg_ParseTuple(args,(char *)"|O:own",&val))
-#else
-  if (!PyArg_UnpackTuple(args, (char *)"own", 0, 1, &val)) 
-#endif
-    {
-      return NULL;
-    } 
-  else
-    {
-      SwigPyObject *sobj = (SwigPyObject *)v;
-      PyObject *obj = PyBool_FromLong(sobj->own);
-      if (val) {
-#ifdef METH_NOARGS
-	if (PyObject_IsTrue(val)) {
-	  SwigPyObject_acquire(v);
-	} else {
-	  SwigPyObject_disown(v);
-	}
-#else
-	if (PyObject_IsTrue(val)) {
-	  SwigPyObject_acquire(v,args);
-	} else {
-	  SwigPyObject_disown(v,args);
-	}
-#endif
-      } 
-      return obj;
-    }
-}
-
-#ifdef METH_O
-static PyMethodDef
-swigobject_methods[] = {
-  {(char *)"disown",  (PyCFunction)SwigPyObject_disown,  METH_NOARGS,  (char *)"releases ownership of the pointer"},
-  {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_NOARGS,  (char *)"aquires ownership of the pointer"},
-  {(char *)"own",     (PyCFunction)SwigPyObject_own,     METH_VARARGS, (char *)"returns/sets ownership of the pointer"},
-  {(char *)"append",  (PyCFunction)SwigPyObject_append,  METH_O,       (char *)"appends another 'this' object"},
-  {(char *)"next",    (PyCFunction)SwigPyObject_next,    METH_NOARGS,  (char *)"returns the next 'this' object"},
-  {(char *)"__repr__",(PyCFunction)SwigPyObject_repr,    METH_NOARGS,  (char *)"returns object representation"},
-  {0, 0, 0, 0}  
-};
-#else
-static PyMethodDef
-swigobject_methods[] = {
-  {(char *)"disown",  (PyCFunction)SwigPyObject_disown,  METH_VARARGS,  (char *)"releases ownership of the pointer"},
-  {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_VARARGS,  (char *)"aquires ownership of the pointer"},
-  {(char *)"own",     (PyCFunction)SwigPyObject_own,     METH_VARARGS,  (char *)"returns/sets ownership of the pointer"},
-  {(char *)"append",  (PyCFunction)SwigPyObject_append,  METH_VARARGS,  (char *)"appends another 'this' object"},
-  {(char *)"next",    (PyCFunction)SwigPyObject_next,    METH_VARARGS,  (char *)"returns the next 'this' object"},
-  {(char *)"__repr__",(PyCFunction)SwigPyObject_repr,   METH_VARARGS,  (char *)"returns object representation"},
-  {0, 0, 0, 0}  
-};
-#endif
-
-#if PY_VERSION_HEX < 0x02020000
-SWIGINTERN PyObject *
-SwigPyObject_getattr(SwigPyObject *sobj,char *name)
-{
-  return Py_FindMethod(swigobject_methods, (PyObject *)sobj, name);
-}
-#endif
-
-SWIGRUNTIME PyTypeObject*
-_PySwigObject_type(void) {
-  static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer";
-  
-  static PyNumberMethods SwigPyObject_as_number = {
-    (binaryfunc)0, /*nb_add*/
-    (binaryfunc)0, /*nb_subtract*/
-    (binaryfunc)0, /*nb_multiply*/
-    /* nb_divide removed in Python 3 */
-#if PY_VERSION_HEX < 0x03000000
-    (binaryfunc)0, /*nb_divide*/
-#endif
-    (binaryfunc)0, /*nb_remainder*/
-    (binaryfunc)0, /*nb_divmod*/
-    (ternaryfunc)0,/*nb_power*/
-    (unaryfunc)0,  /*nb_negative*/
-    (unaryfunc)0,  /*nb_positive*/
-    (unaryfunc)0,  /*nb_absolute*/
-    (inquiry)0,    /*nb_nonzero*/
-    0,		   /*nb_invert*/
-    0,		   /*nb_lshift*/
-    0,		   /*nb_rshift*/
-    0,		   /*nb_and*/
-    0,		   /*nb_xor*/
-    0,		   /*nb_or*/
-#if PY_VERSION_HEX < 0x03000000
-    0,   /*nb_coerce*/
-#endif
-    (unaryfunc)SwigPyObject_long, /*nb_int*/
-#if PY_VERSION_HEX < 0x03000000
-    (unaryfunc)SwigPyObject_long, /*nb_long*/
-#else
-    0, /*nb_reserved*/
-#endif
-    (unaryfunc)0,                 /*nb_float*/
-#if PY_VERSION_HEX < 0x03000000
-    (unaryfunc)SwigPyObject_oct,  /*nb_oct*/
-    (unaryfunc)SwigPyObject_hex,  /*nb_hex*/
-#endif
-#if PY_VERSION_HEX >= 0x03000000 /* 3.0 */
-    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index, nb_inplace_divide removed */
-#elif PY_VERSION_HEX >= 0x02050000 /* 2.5.0 */
-    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */
-#elif PY_VERSION_HEX >= 0x02020000 /* 2.2.0 */
-    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */
-#elif PY_VERSION_HEX >= 0x02000000 /* 2.0.0 */
-    0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */
-#endif
-  };
-
-  static PyTypeObject swigpyobject_type;  
-  static int type_init = 0;
-  if (!type_init) {
-    const PyTypeObject tmp
-      = {
-	/* PyObject header changed in Python 3 */
-#if PY_VERSION_HEX >= 0x03000000
-	PyVarObject_HEAD_INIT(&PyType_Type, 0)
-#else    
-	PyObject_HEAD_INIT(NULL)
-	0,				    /* ob_size */
-#endif
-	(char *)"SwigPyObject",		    /* tp_name */
-	sizeof(SwigPyObject),		    /* tp_basicsize */
-	0,			            /* tp_itemsize */
-	(destructor)SwigPyObject_dealloc,   /* tp_dealloc */
-	(printfunc)SwigPyObject_print,	    /* tp_print */
-#if PY_VERSION_HEX < 0x02020000
-	(getattrfunc)SwigPyObject_getattr,  /* tp_getattr */ 
-#else
-	(getattrfunc)0,			    /* tp_getattr */ 
-#endif
-	(setattrfunc)0,			    /* tp_setattr */ 
-#if PY_VERSION_HEX >= 0x03000000
-    0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
-#else
-	(cmpfunc)SwigPyObject_compare,	    /* tp_compare */
-#endif
-	(reprfunc)SwigPyObject_repr,	    /* tp_repr */    
-	&SwigPyObject_as_number,	    /* tp_as_number */
-	0,				    /* tp_as_sequence */
-	0,				    /* tp_as_mapping */
-	(hashfunc)0,			    /* tp_hash */
-	(ternaryfunc)0,			    /* tp_call */
-	(reprfunc)SwigPyObject_str,	    /* tp_str */
-	PyObject_GenericGetAttr,            /* tp_getattro */
-	0,				    /* tp_setattro */
-	0,		                    /* tp_as_buffer */
-	Py_TPFLAGS_DEFAULT,	            /* tp_flags */
-	swigobject_doc, 	            /* tp_doc */        
-	0,                                  /* tp_traverse */
-	0,                                  /* tp_clear */
-	(richcmpfunc)SwigPyObject_richcompare,           /* tp_richcompare */
-	0,                                  /* tp_weaklistoffset */
-#if PY_VERSION_HEX >= 0x02020000
-	0,                                  /* tp_iter */
-	0,                                  /* tp_iternext */
-	swigobject_methods,		    /* tp_methods */ 
-	0,			            /* tp_members */
-	0,				    /* tp_getset */	    	
-	0,			            /* tp_base */	        
-	0,				    /* tp_dict */	    	
-	0,				    /* tp_descr_get */  	
-	0,				    /* tp_descr_set */  	
-	0,				    /* tp_dictoffset */ 	
-	0,				    /* tp_init */	    	
-	0,				    /* tp_alloc */	    	
-	0,			            /* tp_new */	    	
-	0,	                            /* tp_free */	   
-	0,                                  /* tp_is_gc */  
-	0,				    /* tp_bases */   
-	0,				    /* tp_mro */
-	0,				    /* tp_cache */   
-	0,				    /* tp_subclasses */
-	0,				    /* tp_weaklist */
-#endif
-#if PY_VERSION_HEX >= 0x02030000
-	0,                                  /* tp_del */
-#endif
-#ifdef COUNT_ALLOCS
-	0,0,0,0                             /* tp_alloc -> tp_next */
-#endif
-      };
-    swigpyobject_type = tmp;
-    /* for Python 3 we already assigned ob_type in PyVarObject_HEAD_INIT() */
-#if PY_VERSION_HEX < 0x03000000
-    swigpyobject_type.ob_type = &PyType_Type;
-#endif
-    type_init = 1;
-  }
-  return &swigpyobject_type;
-}
-
-SWIGRUNTIME PyObject *
-SwigPyObject_New(void *ptr, swig_type_info *ty, int own)
-{
-  SwigPyObject *sobj = PyObject_NEW(SwigPyObject, SwigPyObject_type());
-  if (sobj) {
-    sobj->ptr  = ptr;
-    sobj->ty   = ty;
-    sobj->own  = own;
-    sobj->next = 0;
-  }
-  return (PyObject *)sobj;
-}
-
-/* -----------------------------------------------------------------------------
- * Implements a simple Swig Packed type, and use it instead of string
- * ----------------------------------------------------------------------------- */
-
-typedef struct {
-  PyObject_HEAD
-  void *pack;
-  swig_type_info *ty;
-  size_t size;
-} SwigPyPacked;
-
-SWIGRUNTIME int
-SwigPyPacked_print(SwigPyPacked *v, FILE *fp, int SWIGUNUSEDPARM(flags))
-{
-  char result[SWIG_BUFFER_SIZE];
-  fputs("<Swig Packed ", fp); 
-  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
-    fputs("at ", fp); 
-    fputs(result, fp); 
-  }
-  fputs(v->ty->name,fp); 
-  fputs(">", fp);
-  return 0; 
-}
-  
-SWIGRUNTIME PyObject *
-SwigPyPacked_repr(SwigPyPacked *v)
-{
-  char result[SWIG_BUFFER_SIZE];
-  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
-    return SWIG_Python_str_FromFormat("<Swig Packed at %s%s>", result, v->ty->name);
-  } else {
-    return SWIG_Python_str_FromFormat("<Swig Packed %s>", v->ty->name);
-  }  
-}
-
-SWIGRUNTIME PyObject *
-SwigPyPacked_str(SwigPyPacked *v)
-{
-  char result[SWIG_BUFFER_SIZE];
-  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){
-    return SWIG_Python_str_FromFormat("%s%s", result, v->ty->name);
-  } else {
-    return SWIG_Python_str_FromChar(v->ty->name);
-  }  
-}
-
-SWIGRUNTIME int
-SwigPyPacked_compare(SwigPyPacked *v, SwigPyPacked *w)
-{
-  size_t i = v->size;
-  size_t j = w->size;
-  int s = (i < j) ? -1 : ((i > j) ? 1 : 0);
-  return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size);
-}
-
-SWIGRUNTIME PyTypeObject* _PySwigPacked_type(void);
-
-SWIGRUNTIME PyTypeObject*
-SwigPyPacked_type(void) {
-  static PyTypeObject *SWIG_STATIC_POINTER(type) = _PySwigPacked_type();
-  return type;
-}
-
-SWIGRUNTIMEINLINE int
-SwigPyPacked_Check(PyObject *op) {
-  return ((op)->ob_type == _PySwigPacked_type()) 
-    || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0);
-}
-
-SWIGRUNTIME void
-SwigPyPacked_dealloc(PyObject *v)
-{
-  if (SwigPyPacked_Check(v)) {
-    SwigPyPacked *sobj = (SwigPyPacked *) v;
-    free(sobj->pack);
-  }
-  PyObject_DEL(v);
-}
-
-SWIGRUNTIME PyTypeObject*
-_PySwigPacked_type(void) {
-  static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer";
-  static PyTypeObject swigpypacked_type;
-  static int type_init = 0;  
-  if (!type_init) {
-    const PyTypeObject tmp
-      = {
-    /* PyObject header changed in Python 3 */
-#if PY_VERSION_HEX>=0x03000000
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-#else
-	PyObject_HEAD_INIT(NULL)
-    0,				    /* ob_size */	
-#endif
-	(char *)"SwigPyPacked",		    /* tp_name */	
-	sizeof(SwigPyPacked),		    /* tp_basicsize */	
-	0,				    /* tp_itemsize */	
-	(destructor)SwigPyPacked_dealloc,   /* tp_dealloc */	
-	(printfunc)SwigPyPacked_print,	    /* tp_print */   	
-	(getattrfunc)0,			    /* tp_getattr */ 	
-	(setattrfunc)0,			    /* tp_setattr */ 	
-#if PY_VERSION_HEX>=0x03000000
-    0, /* tp_reserved in 3.0.1 */
-#else
-    (cmpfunc)SwigPyPacked_compare,	    /* tp_compare */
-#endif
-	(reprfunc)SwigPyPacked_repr,	    /* tp_repr */
-	0,	                            /* tp_as_number */
-	0,				    /* tp_as_sequence */
-	0,				    /* tp_as_mapping */
-	(hashfunc)0,			    /* tp_hash */
-	(ternaryfunc)0,			    /* tp_call */
-	(reprfunc)SwigPyPacked_str,	    /* tp_str */
-	PyObject_GenericGetAttr,            /* tp_getattro */
-	0,				    /* tp_setattro */
-	0,		                    /* tp_as_buffer */
-	Py_TPFLAGS_DEFAULT,	            /* tp_flags */
-	swigpacked_doc, 	            /* tp_doc */
-	0,                                  /* tp_traverse */
-	0,                                  /* tp_clear */
-	0,                                  /* tp_richcompare */
-	0,                                  /* tp_weaklistoffset */
-#if PY_VERSION_HEX >= 0x02020000
-	0,                                  /* tp_iter */
-	0,                                  /* tp_iternext */
-	0,		                    /* tp_methods */ 
-	0,			            /* tp_members */
-	0,				    /* tp_getset */	    	
-	0,			            /* tp_base */	        
-	0,				    /* tp_dict */	    	
-	0,				    /* tp_descr_get */  	
-	0,				    /* tp_descr_set */  	
-	0,				    /* tp_dictoffset */ 	
-	0,				    /* tp_init */	    	
-	0,				    /* tp_alloc */	    	
-	0,			            /* tp_new */	    	
-	0, 	                            /* tp_free */	   
-        0,                                  /* tp_is_gc */  
-	0,				    /* tp_bases */   
-	0,				    /* tp_mro */
-	0,				    /* tp_cache */   
- 	0,				    /* tp_subclasses */
-	0,				    /* tp_weaklist */
-#endif
-#if PY_VERSION_HEX >= 0x02030000
-	0,                                  /* tp_del */
-#endif
-#ifdef COUNT_ALLOCS
-	0,0,0,0                             /* tp_alloc -> tp_next */
-#endif
-      };
-    swigpypacked_type = tmp;
-    /* for Python 3 the ob_type already assigned in PyVarObject_HEAD_INIT() */
-#if PY_VERSION_HEX < 0x03000000
-    swigpypacked_type.ob_type = &PyType_Type;
-#endif
-    type_init = 1;
-  }
-  return &swigpypacked_type;
-}
-
-SWIGRUNTIME PyObject *
-SwigPyPacked_New(void *ptr, size_t size, swig_type_info *ty)
-{
-  SwigPyPacked *sobj = PyObject_NEW(SwigPyPacked, SwigPyPacked_type());
-  if (sobj) {
-    void *pack = malloc(size);
-    if (pack) {
-      memcpy(pack, ptr, size);
-      sobj->pack = pack;
-      sobj->ty   = ty;
-      sobj->size = size;
-    } else {
-      PyObject_DEL((PyObject *) sobj);
-      sobj = 0;
-    }
-  }
-  return (PyObject *) sobj;
-}
-
-SWIGRUNTIME swig_type_info *
-SwigPyPacked_UnpackData(PyObject *obj, void *ptr, size_t size)
-{
-  if (SwigPyPacked_Check(obj)) {
-    SwigPyPacked *sobj = (SwigPyPacked *)obj;
-    if (sobj->size != size) return 0;
-    memcpy(ptr, sobj->pack, size);
-    return sobj->ty;
-  } else {
-    return 0;
-  }
-}
-
-/* -----------------------------------------------------------------------------
- * pointers/data manipulation
- * ----------------------------------------------------------------------------- */
-
-SWIGRUNTIMEINLINE PyObject *
-_SWIG_This(void)
-{
-    return SWIG_Python_str_FromChar("this");
-}
-
-SWIGRUNTIME PyObject *
-SWIG_This(void)
-{
-  static PyObject *SWIG_STATIC_POINTER(swig_this) = _SWIG_This();
-  return swig_this;
-}
-
-/* #define SWIG_PYTHON_SLOW_GETSET_THIS */
-
-/* TODO: I don't know how to implement the fast getset in Python 3 right now */
-#if PY_VERSION_HEX>=0x03000000
-#define SWIG_PYTHON_SLOW_GETSET_THIS 
-#endif
-
-SWIGRUNTIME SwigPyObject *
-SWIG_Python_GetSwigThis(PyObject *pyobj) 
-{
-  if (SwigPyObject_Check(pyobj)) {
-    return (SwigPyObject *) pyobj;
-  } else {
-    PyObject *obj = 0;
-#if (!defined(SWIG_PYTHON_SLOW_GETSET_THIS) && (PY_VERSION_HEX >= 0x02030000))
-    if (PyInstance_Check(pyobj)) {
-      obj = _PyInstance_Lookup(pyobj, SWIG_This());      
-    } else {
-      PyObject **dictptr = _PyObject_GetDictPtr(pyobj);
-      if (dictptr != NULL) {
-	PyObject *dict = *dictptr;
-	obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0;
-      } else {
-#ifdef PyWeakref_CheckProxy
-	if (PyWeakref_CheckProxy(pyobj)) {
-	  PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);
-	  return wobj ? SWIG_Python_GetSwigThis(wobj) : 0;
-	}
-#endif
-	obj = PyObject_GetAttr(pyobj,SWIG_This());
-	if (obj) {
-	  Py_DECREF(obj);
-	} else {
-	  if (PyErr_Occurred()) PyErr_Clear();
-	  return 0;
-	}
-      }
-    }
-#else
-    obj = PyObject_GetAttr(pyobj,SWIG_This());
-    if (obj) {
-      Py_DECREF(obj);
-    } else {
-      if (PyErr_Occurred()) PyErr_Clear();
-      return 0;
-    }
-#endif
-    if (obj && !SwigPyObject_Check(obj)) {
-      /* a PyObject is called 'this', try to get the 'real this'
-	 SwigPyObject from it */ 
-      return SWIG_Python_GetSwigThis(obj);
-    }
-    return (SwigPyObject *)obj;
-  }
-}
-
-/* Acquire a pointer value */
-
-SWIGRUNTIME int
-SWIG_Python_AcquirePtr(PyObject *obj, int own) {
-  if (own == SWIG_POINTER_OWN) {
-    SwigPyObject *sobj = SWIG_Python_GetSwigThis(obj);
-    if (sobj) {
-      int oldown = sobj->own;
-      sobj->own = own;
-      return oldown;
-    }
-  }
-  return 0;
-}
-
-/* Convert a pointer value */
-
-SWIGRUNTIME int
-SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own) {
-  if (!obj) return SWIG_ERROR;
-  if (obj == Py_None) {
-    if (ptr) *ptr = 0;
-    return SWIG_OK;
-  } else {
-    SwigPyObject *sobj = SWIG_Python_GetSwigThis(obj);
-    if (own)
-      *own = 0;
-    while (sobj) {
-      void *vptr = sobj->ptr;
-      if (ty) {
-	swig_type_info *to = sobj->ty;
-	if (to == ty) {
-	  /* no type cast needed */
-	  if (ptr) *ptr = vptr;
-	  break;
-	} else {
-	  swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
-	  if (!tc) {
-	    sobj = (SwigPyObject *)sobj->next;
-	  } else {
-	    if (ptr) {
-              int newmemory = 0;
-              *ptr = SWIG_TypeCast(tc,vptr,&newmemory);
-              if (newmemory == SWIG_CAST_NEW_MEMORY) {
-                assert(own);
-                if (own)
-                  *own = *own | SWIG_CAST_NEW_MEMORY;
-              }
-            }
-	    break;
-	  }
-	}
-      } else {
-	if (ptr) *ptr = vptr;
-	break;
-      }
-    }
-    if (sobj) {
-      if (own)
-        *own = *own | sobj->own;
-      if (flags & SWIG_POINTER_DISOWN) {
-	sobj->own = 0;
-      }
-      return SWIG_OK;
-    } else {
-      int res = SWIG_ERROR;
-      if (flags & SWIG_POINTER_IMPLICIT_CONV) {
-	SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
-	if (data && !data->implicitconv) {
-	  PyObject *klass = data->klass;
-	  if (klass) {
-	    PyObject *impconv;
-	    data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/
-	    impconv = SWIG_Python_CallFunctor(klass, obj);
-	    data->implicitconv = 0;
-	    if (PyErr_Occurred()) {
-	      PyErr_Clear();
-	      impconv = 0;
-	    }
-	    if (impconv) {
-	      SwigPyObject *iobj = SWIG_Python_GetSwigThis(impconv);
-	      if (iobj) {
-		void *vptr;
-		res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0);
-		if (SWIG_IsOK(res)) {
-		  if (ptr) {
-		    *ptr = vptr;
-		    /* transfer the ownership to 'ptr' */
-		    iobj->own = 0;
-		    res = SWIG_AddCast(res);
-		    res = SWIG_AddNewMask(res);
-		  } else {
-		    res = SWIG_AddCast(res);		    
-		  }
-		}
-	      }
-	      Py_DECREF(impconv);
-	    }
-	  }
-	}
-      }
-      return res;
-    }
-  }
-}
-
-/* Convert a function ptr value */
-
-SWIGRUNTIME int
-SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty) {
-  if (!PyCFunction_Check(obj)) {
-    return SWIG_ConvertPtr(obj, ptr, ty, 0);
-  } else {
-    void *vptr = 0;
-    
-    /* here we get the method pointer for callbacks */
-    const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
-    const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0;
-    if (desc)
-      desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0;
-    if (!desc) 
-      return SWIG_ERROR;
-    if (ty) {
-      swig_cast_info *tc = SWIG_TypeCheck(desc,ty);
-      if (tc) {
-        int newmemory = 0;
-        *ptr = SWIG_TypeCast(tc,vptr,&newmemory);
-        assert(!newmemory); /* newmemory handling not yet implemented */
-      } else {
-        return SWIG_ERROR;
-      }
-    } else {
-      *ptr = vptr;
-    }
-    return SWIG_OK;
-  }
-}
-
-/* Convert a packed value value */
-
-SWIGRUNTIME int
-SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty) {
-  swig_type_info *to = SwigPyPacked_UnpackData(obj, ptr, sz);
-  if (!to) return SWIG_ERROR;
-  if (ty) {
-    if (to != ty) {
-      /* check type cast? */
-      swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
-      if (!tc) return SWIG_ERROR;
-    }
-  }
-  return SWIG_OK;
-}  
-
-/* -----------------------------------------------------------------------------
- * Create a new pointer object
- * ----------------------------------------------------------------------------- */
-
-/*
-  Create a new instance object, without calling __init__, and set the
-  'this' attribute.
-*/
-
-SWIGRUNTIME PyObject* 
-SWIG_Python_NewShadowInstance(SwigPyClientData *data, PyObject *swig_this)
-{
-#if (PY_VERSION_HEX >= 0x02020000)
-  PyObject *inst = 0;
-  PyObject *newraw = data->newraw;
-  if (newraw) {
-    inst = PyObject_Call(newraw, data->newargs, NULL);
-    if (inst) {
-#if !defined(SWIG_PYTHON_SLOW_GETSET_THIS)
-      PyObject **dictptr = _PyObject_GetDictPtr(inst);
-      if (dictptr != NULL) {
-	PyObject *dict = *dictptr;
-	if (dict == NULL) {
-	  dict = PyDict_New();
-	  *dictptr = dict;
-	  PyDict_SetItem(dict, SWIG_This(), swig_this);
-	}
-      }
-#else
-      PyObject *key = SWIG_This();
-      PyObject_SetAttr(inst, key, swig_this);
-#endif
-    }
-  } else {
-#if PY_VERSION_HEX >= 0x03000000
-    inst = PyBaseObject_Type.tp_new((PyTypeObject*) data->newargs, Py_None, Py_None);
-    PyObject_SetAttr(inst, SWIG_This(), swig_this);
-    Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG;
-#else
-    PyObject *dict = PyDict_New();
-    PyDict_SetItem(dict, SWIG_This(), swig_this);
-    inst = PyInstance_NewRaw(data->newargs, dict);
-    Py_DECREF(dict);
-#endif
-  }
-  return inst;
-#else
-#if (PY_VERSION_HEX >= 0x02010000)
-  PyObject *inst;
-  PyObject *dict = PyDict_New();
-  PyDict_SetItem(dict, SWIG_This(), swig_this);
-  inst = PyInstance_NewRaw(data->newargs, dict);
-  Py_DECREF(dict);
-  return (PyObject *) inst;
-#else
-  PyInstanceObject *inst = PyObject_NEW(PyInstanceObject, &PyInstance_Type);
-  if (inst == NULL) {
-    return NULL;
-  }
-  inst->in_class = (PyClassObject *)data->newargs;
-  Py_INCREF(inst->in_class);
-  inst->in_dict = PyDict_New();
-  if (inst->in_dict == NULL) {
-    Py_DECREF(inst);
-    return NULL;
-  }
-#ifdef Py_TPFLAGS_HAVE_WEAKREFS
-  inst->in_weakreflist = NULL;
-#endif
-#ifdef Py_TPFLAGS_GC
-  PyObject_GC_Init(inst);
-#endif
-  PyDict_SetItem(inst->in_dict, SWIG_This(), swig_this);
-  return (PyObject *) inst;
-#endif
-#endif
-}
-
-SWIGRUNTIME void
-SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this)
-{
- PyObject *dict;
-#if (PY_VERSION_HEX >= 0x02020000) && !defined(SWIG_PYTHON_SLOW_GETSET_THIS)
- PyObject **dictptr = _PyObject_GetDictPtr(inst);
- if (dictptr != NULL) {
-   dict = *dictptr;
-   if (dict == NULL) {
-     dict = PyDict_New();
-     *dictptr = dict;
-   }
-   PyDict_SetItem(dict, SWIG_This(), swig_this);
-   return;
- }
-#endif
- dict = PyObject_GetAttrString(inst, (char*)"__dict__");
- PyDict_SetItem(dict, SWIG_This(), swig_this);
- Py_DECREF(dict);
-} 
-
-
-SWIGINTERN PyObject *
-SWIG_Python_InitShadowInstance(PyObject *args) {
-  PyObject *obj[2];
-  if (!SWIG_Python_UnpackTuple(args,(char*)"swiginit", 2, 2, obj)) {
-    return NULL;
-  } else {
-    SwigPyObject *sthis = SWIG_Python_GetSwigThis(obj[0]);
-    if (sthis) {
-      SwigPyObject_append((PyObject*) sthis, obj[1]);
-    } else {
-      SWIG_Python_SetSwigThis(obj[0], obj[1]);
-    }
-    return SWIG_Py_Void();
-  }
-}
-
-/* Create a new pointer object */
-
-SWIGRUNTIME PyObject *
-SWIG_Python_NewPointerObj(void *ptr, swig_type_info *type, int flags) {
-  if (!ptr) {
-    return SWIG_Py_Void();
-  } else {
-    int own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0;
-    PyObject *robj = SwigPyObject_New(ptr, type, own);
-    SwigPyClientData *clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0;
-    if (clientdata && !(flags & SWIG_POINTER_NOSHADOW)) {
-      PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj);
-      if (inst) {
-	Py_DECREF(robj);
-	robj = inst;
-      }
-    }
-    return robj;
-  }
-}
-
-/* Create a new packed object */
-
-SWIGRUNTIMEINLINE PyObject *
-SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) {
-  return ptr ? SwigPyPacked_New((void *) ptr, sz, type) : SWIG_Py_Void();
-}
-
-/* -----------------------------------------------------------------------------*
- *  Get type list 
- * -----------------------------------------------------------------------------*/
-
-#ifdef SWIG_LINK_RUNTIME
-void *SWIG_ReturnGlobalTypeList(void *);
-#endif
-
-SWIGRUNTIME swig_module_info *
-SWIG_Python_GetModule(void) {
-  static void *type_pointer = (void *)0;
-  /* first check if module already created */
-  if (!type_pointer) {
-#ifdef SWIG_LINK_RUNTIME
-    type_pointer = SWIG_ReturnGlobalTypeList((void *)0);
-#else
-    type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
-				    (char*)"type_pointer" SWIG_TYPE_TABLE_NAME);
-    if (PyErr_Occurred()) {
-      PyErr_Clear();
-      type_pointer = (void *)0;
-    }
-#endif
-  }
-  return (swig_module_info *) type_pointer;
-}
-
-#if PY_MAJOR_VERSION < 2
-/* PyModule_AddObject function was introduced in Python 2.0.  The following function
-   is copied out of Python/modsupport.c in python version 2.3.4 */
-SWIGINTERN int
-PyModule_AddObject(PyObject *m, char *name, PyObject *o)
-{
-  PyObject *dict;
-  if (!PyModule_Check(m)) {
-    PyErr_SetString(PyExc_TypeError,
-		    "PyModule_AddObject() needs module as first arg");
-    return SWIG_ERROR;
-  }
-  if (!o) {
-    PyErr_SetString(PyExc_TypeError,
-		    "PyModule_AddObject() needs non-NULL value");
-    return SWIG_ERROR;
-  }
-  
-  dict = PyModule_GetDict(m);
-  if (dict == NULL) {
-    /* Internal error -- modules must have a dict! */
-    PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__",
-		 PyModule_GetName(m));
-    return SWIG_ERROR;
-  }
-  if (PyDict_SetItemString(dict, name, o))
-    return SWIG_ERROR;
-  Py_DECREF(o);
-  return SWIG_OK;
-}
-#endif
-
-SWIGRUNTIME void
-SWIG_Python_DestroyModule(void *vptr)
-{
-  swig_module_info *swig_module = (swig_module_info *) vptr;
-  swig_type_info **types = swig_module->types;
-  size_t i;
-  for (i =0; i < swig_module->size; ++i) {
-    swig_type_info *ty = types[i];
-    if (ty->owndata) {
-      SwigPyClientData *data = (SwigPyClientData *) ty->clientdata;
-      if (data) SwigPyClientData_Del(data);
-    }
-  }
-  Py_DECREF(SWIG_This());
-}
-
-SWIGRUNTIME void
-SWIG_Python_SetModule(swig_module_info *swig_module) {
-  static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} };/* Sentinel */
-
-#if PY_VERSION_HEX >= 0x03000000
- /* Add a dummy module object into sys.modules */
-  PyObject *module = PyImport_AddModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION);
-#else
-  PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
-				   swig_empty_runtime_method_table);
-#endif
-  PyObject *pointer = PyCObject_FromVoidPtr((void *) swig_module, SWIG_Python_DestroyModule);
-  if (pointer && module) {
-    PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer);
-  } else {
-    Py_XDECREF(pointer);
-  }
-}
-
-/* The python cached type query */
-SWIGRUNTIME PyObject *
-SWIG_Python_TypeCache(void) {
-  static PyObject *SWIG_STATIC_POINTER(cache) = PyDict_New();
-  return cache;
-}
-
-SWIGRUNTIME swig_type_info *
-SWIG_Python_TypeQuery(const char *type)
-{
-  PyObject *cache = SWIG_Python_TypeCache();
-  PyObject *key = SWIG_Python_str_FromChar(type); 
-  PyObject *obj = PyDict_GetItem(cache, key);
-  swig_type_info *descriptor;
-  if (obj) {
-    descriptor = (swig_type_info *) PyCObject_AsVoidPtr(obj);
-  } else {
-    swig_module_info *swig_module = SWIG_Python_GetModule();
-    descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type);
-    if (descriptor) {
-      obj = PyCObject_FromVoidPtr(descriptor, NULL);
-      PyDict_SetItem(cache, key, obj);
-      Py_DECREF(obj);
-    }
-  }
-  Py_DECREF(key);
-  return descriptor;
-}
-
-/* 
-   For backward compatibility only
-*/
-#define SWIG_POINTER_EXCEPTION  0
-#define SWIG_arg_fail(arg)      SWIG_Python_ArgFail(arg)
-#define SWIG_MustGetPtr(p, type, argnum, flags)  SWIG_Python_MustGetPtr(p, type, argnum, flags)
-
-SWIGRUNTIME int
-SWIG_Python_AddErrMesg(const char* mesg, int infront)
-{  
-  if (PyErr_Occurred()) {
-    PyObject *type = 0;
-    PyObject *value = 0;
-    PyObject *traceback = 0;
-    PyErr_Fetch(&type, &value, &traceback);
-    if (value) {
-      char *tmp;
-      PyObject *old_str = PyObject_Str(value);
-      Py_XINCREF(type);
-      PyErr_Clear();
-      if (infront) {
-	PyErr_Format(type, "%s %s", mesg, tmp = SWIG_Python_str_AsChar(old_str));
-      } else {
-	PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg);
-      }
-      SWIG_Python_str_DelForPy3(tmp);
-      Py_DECREF(old_str);
-    }
-    return 1;
-  } else {
-    return 0;
-  }
-}
-  
-SWIGRUNTIME int
-SWIG_Python_ArgFail(int argnum)
-{
-  if (PyErr_Occurred()) {
-    /* add information about failing argument */
-    char mesg[256];
-    PyOS_snprintf(mesg, sizeof(mesg), "argument number %d:", argnum);
-    return SWIG_Python_AddErrMesg(mesg, 1);
-  } else {
-    return 0;
-  }
-}
-
-SWIGRUNTIMEINLINE const char *
-SwigPyObject_GetDesc(PyObject *self)
-{
-  SwigPyObject *v = (SwigPyObject *)self;
-  swig_type_info *ty = v ? v->ty : 0;
-  return ty ? ty->str : (char*)"";
-}
-
-SWIGRUNTIME void
-SWIG_Python_TypeError(const char *type, PyObject *obj)
-{
-  if (type) {
-#if defined(SWIG_COBJECT_TYPES)
-    if (obj && SwigPyObject_Check(obj)) {
-      const char *otype = (const char *) SwigPyObject_GetDesc(obj);
-      if (otype) {
-	PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'SwigPyObject(%s)' is received",
-		     type, otype);
-	return;
-      }
-    } else 
-#endif      
-    {
-      const char *otype = (obj ? obj->ob_type->tp_name : 0); 
-      if (otype) {
-	PyObject *str = PyObject_Str(obj);
-	const char *cstr = str ? SWIG_Python_str_AsChar(str) : 0;
-	if (cstr) {
-	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received",
-		       type, otype, cstr);
-          SWIG_Python_str_DelForPy3(cstr);
-	} else {
-	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received",
-		       type, otype);
-	}
-	Py_XDECREF(str);
-	return;
-      }
-    }   
-    PyErr_Format(PyExc_TypeError, "a '%s' is expected", type);
-  } else {
-    PyErr_Format(PyExc_TypeError, "unexpected type is received");
-  }
-}
-
-
-/* Convert a pointer value, signal an exception on a type mismatch */
-SWIGRUNTIME void *
-SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags) {
-  void *result;
-  if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) {
-    PyErr_Clear();
-#if SWIG_POINTER_EXCEPTION
-    if (flags) {
-      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
-      SWIG_Python_ArgFail(argnum);
-    }
-#endif
-  }
-  return result;
-}
-
-
-#ifdef __cplusplus
-#if 0
-{ /* cc-mode */
-#endif
-}
-#endif
-
-
-
-#define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) 
-
-#define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else 
-
-
-
-/* -------- TYPES TABLE (BEGIN) -------- */
-
-#define SWIGTYPE_p_FILE swig_types[0]
-#define SWIGTYPE_p_char swig_types[1]
-#define SWIGTYPE_p_double swig_types[2]
-#define SWIGTYPE_p_doublep swig_types[3]
-#define SWIGTYPE_p_int swig_types[4]
-#define SWIGTYPE_p_intp swig_types[5]
-#define SWIGTYPE_p_long swig_types[6]
-#define SWIGTYPE_p_longp swig_types[7]
-#define SWIGTYPE_p_p_char swig_types[8]
-#define SWIGTYPE_p_p_void swig_types[9]
-#define SWIGTYPE_p_size_t swig_types[10]
-#define SWIGTYPE_p_sizetp swig_types[11]
-static swig_type_info *swig_types[13];
-static swig_module_info swig_module = {swig_types, 12, 0, 0, 0, 0};
-#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
-#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
-
-/* -------- TYPES TABLE (END) -------- */
-
-#if (PY_VERSION_HEX <= 0x02000000)
-# if !defined(SWIG_PYTHON_CLASSIC)
-#  error "This python version requires swig to be run with the '-classic' option"
-# endif
-#endif
-
-/*-----------------------------------------------
-              @(target):= _gribapi_swig.so
-  ------------------------------------------------*/
-#if PY_VERSION_HEX >= 0x03000000
-#  define SWIG_init    PyInit__gribapi_swig
-
-#else
-#  define SWIG_init    init_gribapi_swig
-
-#endif
-#define SWIG_name    "_gribapi_swig"
-
-#define SWIGVERSION 0x010340 
-#define SWIG_VERSION SWIGVERSION
-
-
-#define SWIG_as_voidptr(a) (void *)((const void *)(a)) 
-#define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),(void**)(a)) 
-
-
-typedef struct SWIGCDATA {
-    char *data;
-    size_t   len;
-} SWIGCDATA;
-
-
-
-
-
-
-static SWIGCDATA cdata_void(void *ptr, size_t nelements)
-
-
-
-{
-  SWIGCDATA d;
-  d.data = (char *) ptr;
-
-
-
-  d.len  = nelements;
-
-   return d;
-}
-
-
-
-
-
-SWIGINTERN int
-SWIG_AsVal_double (PyObject *obj, double *val)
-{
-  int res = SWIG_TypeError;
-  if (PyFloat_Check(obj)) {
-    if (val) *val = PyFloat_AsDouble(obj);
-    return SWIG_OK;
-  } else if (PyInt_Check(obj)) {
-    if (val) *val = PyInt_AsLong(obj);
-    return SWIG_OK;
-  } else if (PyLong_Check(obj)) {
-    double v = PyLong_AsDouble(obj);
-    if (!PyErr_Occurred()) {
-      if (val) *val = v;
-      return SWIG_OK;
-    } else {
-      PyErr_Clear();
-    }
-  }
-#ifdef SWIG_PYTHON_CAST_MODE
-  {
-    int dispatch = 0;
-    double d = PyFloat_AsDouble(obj);
-    if (!PyErr_Occurred()) {
-      if (val) *val = d;
-      return SWIG_AddCast(SWIG_OK);
-    } else {
-      PyErr_Clear();
-    }
-    if (!dispatch) {
-      long v = PyLong_AsLong(obj);
-      if (!PyErr_Occurred()) {
-	if (val) *val = v;
-	return SWIG_AddCast(SWIG_AddCast(SWIG_OK));
-      } else {
-	PyErr_Clear();
-      }
-    }
-  }
-#endif
-  return res;
-}
-
-
-#include <float.h>
-
-
-#include <math.h>
-
-
-SWIGINTERNINLINE int
-SWIG_CanCastAsInteger(double *d, double min, double max) {
-  double x = *d;
-  if ((min <= x && x <= max)) {
-   double fx = floor(x);
-   double cx = ceil(x);
-   double rd =  ((x - fx) < 0.5) ? fx : cx; /* simple rint */
-   if ((errno == EDOM) || (errno == ERANGE)) {
-     errno = 0;
-   } else {
-     double summ, reps, diff;
-     if (rd < x) {
-       diff = x - rd;
-     } else if (rd > x) {
-       diff = rd - x;
-     } else {
-       return 1;
-     }
-     summ = rd + x;
-     reps = diff/summ;
-     if (reps < 8*DBL_EPSILON) {
-       *d = rd;
-       return 1;
-     }
-   }
-  }
-  return 0;
-}
-
-
-SWIGINTERN int
-SWIG_AsVal_unsigned_SS_long (PyObject *obj, unsigned long *val) 
-{
-  if (PyInt_Check(obj)) {
-    long v = PyInt_AsLong(obj);
-    if (v >= 0) {
-      if (val) *val = v;
-      return SWIG_OK;
-    } else {
-      return SWIG_OverflowError;
-    }
-  } else if (PyLong_Check(obj)) {
-    unsigned long v = PyLong_AsUnsignedLong(obj);
-    if (!PyErr_Occurred()) {
-      if (val) *val = v;
-      return SWIG_OK;
-    } else {
-      PyErr_Clear();
-    }
-  }
-#ifdef SWIG_PYTHON_CAST_MODE
-  {
-    int dispatch = 0;
-    unsigned long v = PyLong_AsUnsignedLong(obj);
-    if (!PyErr_Occurred()) {
-      if (val) *val = v;
-      return SWIG_AddCast(SWIG_OK);
-    } else {
-      PyErr_Clear();
-    }
-    if (!dispatch) {
-      double d;
-      int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d));
-      if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) {
-	if (val) *val = (unsigned long)(d);
-	return res;
-      }
-    }
-  }
-#endif
-  return SWIG_TypeError;
-}
-
-
-SWIGINTERNINLINE int
-SWIG_AsVal_size_t (PyObject * obj, size_t *val)
-{
-  unsigned long v;
-  int res = SWIG_AsVal_unsigned_SS_long (obj, val ? &v : 0);
-  if (SWIG_IsOK(res) && val) *val = (size_t)(v);
-  return res;
-}
-
-
-SWIGINTERN swig_type_info*
-SWIG_pchar_descriptor(void)
-{
-  static int init = 0;
-  static swig_type_info* info = 0;
-  if (!init) {
-    info = SWIG_TypeQuery("_p_char");
-    init = 1;
-  }
-  return info;
-}
-
-
-SWIGINTERNINLINE PyObject *
-SWIG_FromCharPtrAndSize(const char* carray, size_t size)
-{
-  if (carray) {
-    if (size > INT_MAX) {
-      swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
-      return pchar_descriptor ? 
-	SWIG_NewPointerObj((char *)(carray), pchar_descriptor, 0) : SWIG_Py_Void();
-    } else {
-#if PY_VERSION_HEX >= 0x03000000
-      return PyUnicode_FromStringAndSize(carray, (int)(size));
-#else
-      return PyString_FromStringAndSize(carray, (int)(size));
-#endif
-    }
-  } else {
-    return SWIG_Py_Void();
-  }
-}
-
-
-  #define SWIG_From_long   PyInt_FromLong 
-
-
-SWIGINTERNINLINE PyObject *
-SWIG_From_int  (int value)
-{    
-  return SWIG_From_long  (value);
-}
-
-
-#define SWIG_FILE_WITH_INIT
-#include "grib_interface.h"
-
-
-typedef int intp;
-
-SWIGINTERN intp *new_intp(){
-    return (int *)malloc(sizeof(int));
-  }
-SWIGINTERN void delete_intp(intp *self){
-    if (self) free((char*)self);
-  }
-
-#include <limits.h>
-#if !defined(SWIG_NO_LLONG_MAX)
-# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
-#   define LLONG_MAX __LONG_LONG_MAX__
-#   define LLONG_MIN (-LLONG_MAX - 1LL)
-#   define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
-# endif
-#endif
-
-
-SWIGINTERN int
-SWIG_AsVal_long (PyObject *obj, long* val)
-{
-  if (PyInt_Check(obj)) {
-    if (val) *val = PyInt_AsLong(obj);
-    return SWIG_OK;
-  } else if (PyLong_Check(obj)) {
-    long v = PyLong_AsLong(obj);
-    if (!PyErr_Occurred()) {
-      if (val) *val = v;
-      return SWIG_OK;
-    } else {
-      PyErr_Clear();
-    }
-  }
-#ifdef SWIG_PYTHON_CAST_MODE
-  {
-    int dispatch = 0;
-    long v = PyInt_AsLong(obj);
-    if (!PyErr_Occurred()) {
-      if (val) *val = v;
-      return SWIG_AddCast(SWIG_OK);
-    } else {
-      PyErr_Clear();
-    }
-    if (!dispatch) {
-      double d;
-      int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d));
-      if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) {
-	if (val) *val = (long)(d);
-	return res;
-      }
-    }
-  }
-#endif
-  return SWIG_TypeError;
-}
-
-
-SWIGINTERN int
-SWIG_AsVal_int (PyObject * obj, int *val)
-{
-  long v;
-  int res = SWIG_AsVal_long (obj, &v);
-  if (SWIG_IsOK(res)) {
-    if ((v < INT_MIN || v > INT_MAX)) {
-      return SWIG_OverflowError;
-    } else {
-      if (val) *val = (int)(v);
-    }
-  }  
-  return res;
-}
-
-SWIGINTERN void intp_assign(intp *self,int value){
-    *self = value;
-  }
-SWIGINTERN int intp_value(intp *self){
-    return *self;
-  }
-SWIGINTERN int *intp_cast(intp *self){
-    return self;
-  }
-SWIGINTERN intp *intp_frompointer(int *t){
-    return (intp *) t;
-  }
-
-typedef size_t sizetp;
-
-SWIGINTERN sizetp *new_sizetp(){
-    return (size_t *)malloc(sizeof(size_t));
-  }
-SWIGINTERN void delete_sizetp(sizetp *self){
-    if (self) free((char*)self);
-  }
-SWIGINTERN void sizetp_assign(sizetp *self,size_t value){
-    *self = value;
-  }
-SWIGINTERN size_t sizetp_value(sizetp *self){
-    return *self;
-  }
-
-SWIGINTERNINLINE PyObject* 
-SWIG_From_unsigned_SS_long  (unsigned long value)
-{
-  return (value > LONG_MAX) ?
-    PyLong_FromUnsignedLong(value) : PyInt_FromLong((long)(value)); 
-}
-
-
-SWIGINTERNINLINE PyObject *
-SWIG_From_size_t  (size_t value)
-{    
-  return SWIG_From_unsigned_SS_long  ((unsigned long)(value));
-}
-
-SWIGINTERN size_t *sizetp_cast(sizetp *self){
-    return self;
-  }
-SWIGINTERN sizetp *sizetp_frompointer(size_t *t){
-    return (sizetp *) t;
-  }
-
-typedef long longp;
-
-SWIGINTERN longp *new_longp(){
-    return (long *)malloc(sizeof(long));
-  }
-SWIGINTERN void delete_longp(longp *self){
-    if (self) free((char*)self);
-  }
-SWIGINTERN void longp_assign(longp *self,long value){
-    *self = value;
-  }
-SWIGINTERN long longp_value(longp *self){
-    return *self;
-  }
-SWIGINTERN long *longp_cast(longp *self){
-    return self;
-  }
-SWIGINTERN longp *longp_frompointer(long *t){
-    return (longp *) t;
-  }
-
-typedef double doublep;
-
-SWIGINTERN doublep *new_doublep(){
-    return (double *)malloc(sizeof(double));
-  }
-SWIGINTERN void delete_doublep(doublep *self){
-    if (self) free((char*)self);
-  }
-SWIGINTERN void doublep_assign(doublep *self,double value){
-    *self = value;
-  }
-SWIGINTERN double doublep_value(doublep *self){
-    return *self;
-  }
-
-  #define SWIG_From_double   PyFloat_FromDouble 
-
-SWIGINTERN double *doublep_cast(doublep *self){
-    return self;
-  }
-SWIGINTERN doublep *doublep_frompointer(double *t){
-    return (doublep *) t;
-  }
-
-  static double *new_doubleArray(size_t nelements) { 
-    return (double *)malloc((nelements)*sizeof(double));
-  }
-
-  static void delete_doubleArray(double *ary) {
-    free((char*)ary);
-  }
-
-  static double doubleArray_getitem(double *ary, size_t index) {
-    return ary[index];
-  }
-  static void doubleArray_setitem(double *ary, size_t index, double value) {
-    ary[index] = value;
-  }
-
-
-  static long *new_longArray(size_t nelements) { 
-    return (long *)malloc((nelements)*sizeof(long));
-  }
-
-  static void delete_longArray(long *ary) {
-    free((char*)ary);
-  }
-
-  static long longArray_getitem(long *ary, size_t index) {
-    return ary[index];
-  }
-  static void longArray_setitem(long *ary, size_t index, long value) {
-    ary[index] = value;
-  }
-
-
-  static int *new_intArray(size_t nelements) { 
-    return (int *)malloc((nelements)*sizeof(int));
-  }
-
-  static void delete_intArray(int *ary) {
-    free((char*)ary);
-  }
-
-  static int intArray_getitem(int *ary, size_t index) {
-    return ary[index];
-  }
-  static void intArray_setitem(int *ary, size_t index, int value) {
-    ary[index] = value;
-  }
-
-
-  static char* *new_stringArray(size_t nelements) { 
-    return (char* *)malloc((nelements)*sizeof(char*));
-  }
-
-  static void delete_stringArray(char* *ary) {
-    free((char*)ary);
-  }
-
-  static char* stringArray_getitem(char* *ary, size_t index) {
-    return ary[index];
-  }
-  static void stringArray_setitem(char* *ary, size_t index, char* value) {
-    ary[index] = value;
-  }
-
-
-SWIGINTERNINLINE PyObject * 
-SWIG_FromCharPtr(const char *cptr)
-{ 
-  return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0));
-}
-
-
-SWIGINTERN int
-SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
-{
-#if PY_VERSION_HEX>=0x03000000
-  if (PyUnicode_Check(obj))
-#else  
-  if (PyString_Check(obj))
-#endif
-  {
-    char *cstr; Py_ssize_t len;
-#if PY_VERSION_HEX>=0x03000000
-    if (!alloc && cptr) {
-        /* We can't allow converting without allocation, since the internal
-           representation of string in Python 3 is UCS-2/UCS-4 but we require
-           a UTF-8 representation.
-           TODO(bhy) More detailed explanation */
-        return SWIG_RuntimeError;
-    }
-    obj = PyUnicode_AsUTF8String(obj);
-    PyBytes_AsStringAndSize(obj, &cstr, &len);
-    if(alloc) *alloc = SWIG_NEWOBJ;
-#else
-    PyString_AsStringAndSize(obj, &cstr, &len);
-#endif
-    if (cptr) {
-      if (alloc) {
-	/* 
-	   In python the user should not be able to modify the inner
-	   string representation. To warranty that, if you define
-	   SWIG_PYTHON_SAFE_CSTRINGS, a new/copy of the python string
-	   buffer is always returned.
-
-	   The default behavior is just to return the pointer value,
-	   so, be careful.
-	*/ 
-#if defined(SWIG_PYTHON_SAFE_CSTRINGS)
-	if (*alloc != SWIG_OLDOBJ) 
-#else
-	if (*alloc == SWIG_NEWOBJ) 
-#endif
-	  {
-	    *cptr = (char *)memcpy((char *)malloc((len + 1)*sizeof(char)), cstr, sizeof(char)*(len + 1));
-	    *alloc = SWIG_NEWOBJ;
-	  }
-	else {
-	  *cptr = cstr;
-	  *alloc = SWIG_OLDOBJ;
-	}
-      } else {
-        #if PY_VERSION_HEX>=0x03000000
-        assert(0); /* Should never reach here in Python 3 */
-        #endif
-	*cptr = SWIG_Python_str_AsChar(obj);
-      }
-    }
-    if (psize) *psize = len + 1;
-#if PY_VERSION_HEX>=0x03000000
-    Py_XDECREF(obj);
-#endif
-    return SWIG_OK;
-  } else {
-    swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
-    if (pchar_descriptor) {
-      void* vptr = 0;
-      if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) {
-	if (cptr) *cptr = (char *) vptr;
-	if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0;
-	if (alloc) *alloc = SWIG_OLDOBJ;
-	return SWIG_OK;
-      }
-    }
-  }
-  return SWIG_TypeError;
-}
-
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-SWIGINTERN PyObject *_wrap_cdata(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  void *arg1 = (void *) 0 ;
-  size_t arg2 = (size_t) 1 ;
-  int res1 ;
-  size_t val2 ;
-  int ecode2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  SWIGCDATA result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O|O:cdata",&obj0,&obj1)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0);
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "cdata" "', argument " "1"" of type '" "void *""'"); 
-  }
-  if (obj1) {
-    ecode2 = SWIG_AsVal_size_t(obj1, &val2);
-    if (!SWIG_IsOK(ecode2)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "cdata" "', argument " "2"" of type '" "size_t""'");
-    } 
-    arg2 = (size_t)(val2);
-  }
-  result = cdata_void(arg1,arg2);
-  resultobj = SWIG_FromCharPtrAndSize((&result)->data,(&result)->len);
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_memmove(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  void *arg1 = (void *) 0 ;
-  void *arg2 = (void *) 0 ;
-  size_t arg3 ;
-  int res1 ;
-  int res2 ;
-  size_t val3 ;
-  int ecode3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:memmove",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0);
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "memmove" "', argument " "1"" of type '" "void *""'"); 
-  }
-  res2 = SWIG_ConvertPtr(obj1,SWIG_as_voidptrptr(&arg2), 0, 0);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "memmove" "', argument " "2"" of type '" "void const *""'"); 
-  }
-  ecode3 = SWIG_AsVal_size_t(obj2, &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "memmove" "', argument " "3"" of type '" "size_t""'");
-  } 
-  arg3 = (size_t)(val3);
-  memmove(arg1,(void const *)arg2,arg3);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_new_intp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  intp *result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)":new_intp")) SWIG_fail;
-  result = (intp *)new_intp();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_intp, SWIG_POINTER_NEW |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_delete_intp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  intp *arg1 = (intp *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:delete_intp",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_intp, SWIG_POINTER_DISOWN |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_intp" "', argument " "1"" of type '" "intp *""'"); 
-  }
-  arg1 = (intp *)(argp1);
-  delete_intp(arg1);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_intp_assign(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  intp *arg1 = (intp *) 0 ;
-  int arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  int val2 ;
-  int ecode2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:intp_assign",&obj0,&obj1)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_intp, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "intp_assign" "', argument " "1"" of type '" "intp *""'"); 
-  }
-  arg1 = (intp *)(argp1);
-  ecode2 = SWIG_AsVal_int(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "intp_assign" "', argument " "2"" of type '" "int""'");
-  } 
-  arg2 = (int)(val2);
-  intp_assign(arg1,arg2);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_intp_value(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  intp *arg1 = (intp *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:intp_value",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_intp, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "intp_value" "', argument " "1"" of type '" "intp *""'"); 
-  }
-  arg1 = (intp *)(argp1);
-  result = (int)intp_value(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_intp_cast(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  intp *arg1 = (intp *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  int *result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:intp_cast",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_intp, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "intp_cast" "', argument " "1"" of type '" "intp *""'"); 
-  }
-  arg1 = (intp *)(argp1);
-  result = (int *)intp_cast(arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_int, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_intp_frompointer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  intp *result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:intp_frompointer",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_int, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "intp_frompointer" "', argument " "1"" of type '" "int *""'"); 
-  }
-  arg1 = (int *)(argp1);
-  result = (intp *)intp_frompointer(arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_intp, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *intp_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_intp, SWIG_NewClientData(obj));
-  return SWIG_Py_Void();
-}
-
-SWIGINTERN PyObject *_wrap_new_sizetp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  sizetp *result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)":new_sizetp")) SWIG_fail;
-  result = (sizetp *)new_sizetp();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_sizetp, SWIG_POINTER_NEW |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_delete_sizetp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  sizetp *arg1 = (sizetp *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:delete_sizetp",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_sizetp, SWIG_POINTER_DISOWN |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_sizetp" "', argument " "1"" of type '" "sizetp *""'"); 
-  }
-  arg1 = (sizetp *)(argp1);
-  delete_sizetp(arg1);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_sizetp_assign(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  sizetp *arg1 = (sizetp *) 0 ;
-  size_t arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  size_t val2 ;
-  int ecode2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:sizetp_assign",&obj0,&obj1)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_sizetp, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sizetp_assign" "', argument " "1"" of type '" "sizetp *""'"); 
-  }
-  arg1 = (sizetp *)(argp1);
-  ecode2 = SWIG_AsVal_size_t(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sizetp_assign" "', argument " "2"" of type '" "size_t""'");
-  } 
-  arg2 = (size_t)(val2);
-  sizetp_assign(arg1,arg2);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_sizetp_value(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  sizetp *arg1 = (sizetp *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  size_t result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:sizetp_value",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_sizetp, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sizetp_value" "', argument " "1"" of type '" "sizetp *""'"); 
-  }
-  arg1 = (sizetp *)(argp1);
-  result = sizetp_value(arg1);
-  resultobj = SWIG_From_size_t((size_t)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_sizetp_cast(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  sizetp *arg1 = (sizetp *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  size_t *result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:sizetp_cast",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_sizetp, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sizetp_cast" "', argument " "1"" of type '" "sizetp *""'"); 
-  }
-  arg1 = (sizetp *)(argp1);
-  result = (size_t *)sizetp_cast(arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_size_t, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_sizetp_frompointer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  size_t *arg1 = (size_t *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  sizetp *result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:sizetp_frompointer",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_size_t, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sizetp_frompointer" "', argument " "1"" of type '" "size_t *""'"); 
-  }
-  arg1 = (size_t *)(argp1);
-  result = (sizetp *)sizetp_frompointer(arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_sizetp, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *sizetp_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_sizetp, SWIG_NewClientData(obj));
-  return SWIG_Py_Void();
-}
-
-SWIGINTERN PyObject *_wrap_new_longp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  longp *result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)":new_longp")) SWIG_fail;
-  result = (longp *)new_longp();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_longp, SWIG_POINTER_NEW |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_delete_longp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  longp *arg1 = (longp *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:delete_longp",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_longp, SWIG_POINTER_DISOWN |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_longp" "', argument " "1"" of type '" "longp *""'"); 
-  }
-  arg1 = (longp *)(argp1);
-  delete_longp(arg1);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_longp_assign(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  longp *arg1 = (longp *) 0 ;
-  long arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  long val2 ;
-  int ecode2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:longp_assign",&obj0,&obj1)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_longp, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "longp_assign" "', argument " "1"" of type '" "longp *""'"); 
-  }
-  arg1 = (longp *)(argp1);
-  ecode2 = SWIG_AsVal_long(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "longp_assign" "', argument " "2"" of type '" "long""'");
-  } 
-  arg2 = (long)(val2);
-  longp_assign(arg1,arg2);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_longp_value(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  longp *arg1 = (longp *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  long result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:longp_value",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_longp, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "longp_value" "', argument " "1"" of type '" "longp *""'"); 
-  }
-  arg1 = (longp *)(argp1);
-  result = (long)longp_value(arg1);
-  resultobj = SWIG_From_long((long)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_longp_cast(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  longp *arg1 = (longp *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  long *result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:longp_cast",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_longp, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "longp_cast" "', argument " "1"" of type '" "longp *""'"); 
-  }
-  arg1 = (longp *)(argp1);
-  result = (long *)longp_cast(arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_long, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_longp_frompointer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  long *arg1 = (long *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  longp *result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:longp_frompointer",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_long, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "longp_frompointer" "', argument " "1"" of type '" "long *""'"); 
-  }
-  arg1 = (long *)(argp1);
-  result = (longp *)longp_frompointer(arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_longp, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *longp_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_longp, SWIG_NewClientData(obj));
-  return SWIG_Py_Void();
-}
-
-SWIGINTERN PyObject *_wrap_new_doublep(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  doublep *result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)":new_doublep")) SWIG_fail;
-  result = (doublep *)new_doublep();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_doublep, SWIG_POINTER_NEW |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_delete_doublep(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  doublep *arg1 = (doublep *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:delete_doublep",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_doublep, SWIG_POINTER_DISOWN |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_doublep" "', argument " "1"" of type '" "doublep *""'"); 
-  }
-  arg1 = (doublep *)(argp1);
-  delete_doublep(arg1);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_doublep_assign(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  doublep *arg1 = (doublep *) 0 ;
-  double arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  double val2 ;
-  int ecode2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:doublep_assign",&obj0,&obj1)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_doublep, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "doublep_assign" "', argument " "1"" of type '" "doublep *""'"); 
-  }
-  arg1 = (doublep *)(argp1);
-  ecode2 = SWIG_AsVal_double(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "doublep_assign" "', argument " "2"" of type '" "double""'");
-  } 
-  arg2 = (double)(val2);
-  doublep_assign(arg1,arg2);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_doublep_value(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  doublep *arg1 = (doublep *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  double result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:doublep_value",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_doublep, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "doublep_value" "', argument " "1"" of type '" "doublep *""'"); 
-  }
-  arg1 = (doublep *)(argp1);
-  result = (double)doublep_value(arg1);
-  resultobj = SWIG_From_double((double)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_doublep_cast(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  doublep *arg1 = (doublep *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  double *result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:doublep_cast",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_doublep, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "doublep_cast" "', argument " "1"" of type '" "doublep *""'"); 
-  }
-  arg1 = (doublep *)(argp1);
-  result = (double *)doublep_cast(arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_double, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_doublep_frompointer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  double *arg1 = (double *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  doublep *result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:doublep_frompointer",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_double, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "doublep_frompointer" "', argument " "1"" of type '" "double *""'"); 
-  }
-  arg1 = (double *)(argp1);
-  result = (doublep *)doublep_frompointer(arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_doublep, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *doublep_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_doublep, SWIG_NewClientData(obj));
-  return SWIG_Py_Void();
-}
-
-SWIGINTERN PyObject *_wrap_new_doubleArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  size_t arg1 ;
-  size_t val1 ;
-  int ecode1 = 0 ;
-  PyObject * obj0 = 0 ;
-  double *result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:new_doubleArray",&obj0)) SWIG_fail;
-  ecode1 = SWIG_AsVal_size_t(obj0, &val1);
-  if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_doubleArray" "', argument " "1"" of type '" "size_t""'");
-  } 
-  arg1 = (size_t)(val1);
-  result = (double *)new_doubleArray(arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_double, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_delete_doubleArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  double *arg1 = (double *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:delete_doubleArray",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_double, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_doubleArray" "', argument " "1"" of type '" "double *""'"); 
-  }
-  arg1 = (double *)(argp1);
-  delete_doubleArray(arg1);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_doubleArray_getitem(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  double *arg1 = (double *) 0 ;
-  size_t arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  size_t val2 ;
-  int ecode2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  double result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:doubleArray_getitem",&obj0,&obj1)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_double, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "doubleArray_getitem" "', argument " "1"" of type '" "double *""'"); 
-  }
-  arg1 = (double *)(argp1);
-  ecode2 = SWIG_AsVal_size_t(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "doubleArray_getitem" "', argument " "2"" of type '" "size_t""'");
-  } 
-  arg2 = (size_t)(val2);
-  result = (double)doubleArray_getitem(arg1,arg2);
-  resultobj = SWIG_From_double((double)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_doubleArray_setitem(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  double *arg1 = (double *) 0 ;
-  size_t arg2 ;
-  double arg3 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  size_t val2 ;
-  int ecode2 = 0 ;
-  double val3 ;
-  int ecode3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:doubleArray_setitem",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_double, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "doubleArray_setitem" "', argument " "1"" of type '" "double *""'"); 
-  }
-  arg1 = (double *)(argp1);
-  ecode2 = SWIG_AsVal_size_t(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "doubleArray_setitem" "', argument " "2"" of type '" "size_t""'");
-  } 
-  arg2 = (size_t)(val2);
-  ecode3 = SWIG_AsVal_double(obj2, &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "doubleArray_setitem" "', argument " "3"" of type '" "double""'");
-  } 
-  arg3 = (double)(val3);
-  doubleArray_setitem(arg1,arg2,arg3);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_new_longArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  size_t arg1 ;
-  size_t val1 ;
-  int ecode1 = 0 ;
-  PyObject * obj0 = 0 ;
-  long *result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:new_longArray",&obj0)) SWIG_fail;
-  ecode1 = SWIG_AsVal_size_t(obj0, &val1);
-  if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_longArray" "', argument " "1"" of type '" "size_t""'");
-  } 
-  arg1 = (size_t)(val1);
-  result = (long *)new_longArray(arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_long, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_delete_longArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  long *arg1 = (long *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:delete_longArray",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_long, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_longArray" "', argument " "1"" of type '" "long *""'"); 
-  }
-  arg1 = (long *)(argp1);
-  delete_longArray(arg1);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_longArray_getitem(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  long *arg1 = (long *) 0 ;
-  size_t arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  size_t val2 ;
-  int ecode2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  long result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:longArray_getitem",&obj0,&obj1)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_long, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "longArray_getitem" "', argument " "1"" of type '" "long *""'"); 
-  }
-  arg1 = (long *)(argp1);
-  ecode2 = SWIG_AsVal_size_t(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "longArray_getitem" "', argument " "2"" of type '" "size_t""'");
-  } 
-  arg2 = (size_t)(val2);
-  result = (long)longArray_getitem(arg1,arg2);
-  resultobj = SWIG_From_long((long)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_longArray_setitem(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  long *arg1 = (long *) 0 ;
-  size_t arg2 ;
-  long arg3 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  size_t val2 ;
-  int ecode2 = 0 ;
-  long val3 ;
-  int ecode3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:longArray_setitem",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_long, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "longArray_setitem" "', argument " "1"" of type '" "long *""'"); 
-  }
-  arg1 = (long *)(argp1);
-  ecode2 = SWIG_AsVal_size_t(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "longArray_setitem" "', argument " "2"" of type '" "size_t""'");
-  } 
-  arg2 = (size_t)(val2);
-  ecode3 = SWIG_AsVal_long(obj2, &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "longArray_setitem" "', argument " "3"" of type '" "long""'");
-  } 
-  arg3 = (long)(val3);
-  longArray_setitem(arg1,arg2,arg3);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_new_intArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  size_t arg1 ;
-  size_t val1 ;
-  int ecode1 = 0 ;
-  PyObject * obj0 = 0 ;
-  int *result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:new_intArray",&obj0)) SWIG_fail;
-  ecode1 = SWIG_AsVal_size_t(obj0, &val1);
-  if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_intArray" "', argument " "1"" of type '" "size_t""'");
-  } 
-  arg1 = (size_t)(val1);
-  result = (int *)new_intArray(arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_int, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_delete_intArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:delete_intArray",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_int, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_intArray" "', argument " "1"" of type '" "int *""'"); 
-  }
-  arg1 = (int *)(argp1);
-  delete_intArray(arg1);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_intArray_getitem(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  size_t arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  size_t val2 ;
-  int ecode2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:intArray_getitem",&obj0,&obj1)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_int, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "intArray_getitem" "', argument " "1"" of type '" "int *""'"); 
-  }
-  arg1 = (int *)(argp1);
-  ecode2 = SWIG_AsVal_size_t(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "intArray_getitem" "', argument " "2"" of type '" "size_t""'");
-  } 
-  arg2 = (size_t)(val2);
-  result = (int)intArray_getitem(arg1,arg2);
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_intArray_setitem(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  size_t arg2 ;
-  int arg3 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  size_t val2 ;
-  int ecode2 = 0 ;
-  int val3 ;
-  int ecode3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:intArray_setitem",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_int, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "intArray_setitem" "', argument " "1"" of type '" "int *""'"); 
-  }
-  arg1 = (int *)(argp1);
-  ecode2 = SWIG_AsVal_size_t(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "intArray_setitem" "', argument " "2"" of type '" "size_t""'");
-  } 
-  arg2 = (size_t)(val2);
-  ecode3 = SWIG_AsVal_int(obj2, &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "intArray_setitem" "', argument " "3"" of type '" "int""'");
-  } 
-  arg3 = (int)(val3);
-  intArray_setitem(arg1,arg2,arg3);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_new_stringArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  size_t arg1 ;
-  size_t val1 ;
-  int ecode1 = 0 ;
-  PyObject * obj0 = 0 ;
-  char **result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:new_stringArray",&obj0)) SWIG_fail;
-  ecode1 = SWIG_AsVal_size_t(obj0, &val1);
-  if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_stringArray" "', argument " "1"" of type '" "size_t""'");
-  } 
-  arg1 = (size_t)(val1);
-  result = (char **)new_stringArray(arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_p_char, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_delete_stringArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  char **arg1 = (char **) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:delete_stringArray",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_p_char, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_stringArray" "', argument " "1"" of type '" "char **""'"); 
-  }
-  arg1 = (char **)(argp1);
-  delete_stringArray(arg1);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_stringArray_getitem(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  char **arg1 = (char **) 0 ;
-  size_t arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  size_t val2 ;
-  int ecode2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  char *result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:stringArray_getitem",&obj0,&obj1)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_p_char, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "stringArray_getitem" "', argument " "1"" of type '" "char **""'"); 
-  }
-  arg1 = (char **)(argp1);
-  ecode2 = SWIG_AsVal_size_t(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "stringArray_getitem" "', argument " "2"" of type '" "size_t""'");
-  } 
-  arg2 = (size_t)(val2);
-  result = (char *)stringArray_getitem(arg1,arg2);
-  resultobj = SWIG_FromCharPtr((const char *)result);
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_stringArray_setitem(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  char **arg1 = (char **) 0 ;
-  size_t arg2 ;
-  char *arg3 = (char *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  size_t val2 ;
-  int ecode2 = 0 ;
-  int res3 ;
-  char *buf3 = 0 ;
-  int alloc3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:stringArray_setitem",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_p_char, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "stringArray_setitem" "', argument " "1"" of type '" "char **""'"); 
-  }
-  arg1 = (char **)(argp1);
-  ecode2 = SWIG_AsVal_size_t(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "stringArray_setitem" "', argument " "2"" of type '" "size_t""'");
-  } 
-  arg2 = (size_t)(val2);
-  res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3);
-  if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "stringArray_setitem" "', argument " "3"" of type '" "char *""'");
-  }
-  arg3 = (char *)(buf3);
-  stringArray_setitem(arg1,arg2,arg3);
-  resultobj = SWIG_Py_Void();
-  if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
-  return resultobj;
-fail:
-  if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_new_from_file(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FILE *arg1 = (FILE *) 0 ;
-  int *arg2 = (int *) 0 ;
-  int arg3 ;
-  int temp2 ;
-  int res2 = 0 ;
-  int val3 ;
-  int ecode3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_new_from_file",&obj0,&obj1,&obj2)) SWIG_fail;
-  {
-    if ( PyFile_Check(obj0) ){
-      arg1 = PyFile_AsFile(obj0);
-    } else {
-      PyErr_SetString(PyExc_TypeError, "f must be a file type.");
-      return NULL;
-    }
-  }
-  if (!(SWIG_IsOK((res2 = SWIG_ConvertPtr(obj1,SWIG_as_voidptrptr(&arg2),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj1, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_new_from_file" "', argument " "2"" of type '" "int""'");
-    }
-    temp2 = (int)(val);
-    arg2 = &temp2;
-    res2 = SWIG_AddTmpMask(ecode);
-  }
-  ecode3 = SWIG_AsVal_int(obj2, &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "grib_c_new_from_file" "', argument " "3"" of type '" "int""'");
-  } 
-  arg3 = (int)(val3);
-  result = (int)grib_c_new_from_file(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res2)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg2)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res2) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg2), SWIGTYPE_p_int, new_flags));
-  }
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_new_any_from_file(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FILE *arg1 = (FILE *) 0 ;
-  int arg2 ;
-  int *arg3 = (int *) 0 ;
-  int val2 ;
-  int ecode2 = 0 ;
-  int temp3 ;
-  int res3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_new_any_from_file",&obj0,&obj1,&obj2)) SWIG_fail;
-  {
-    if ( PyFile_Check(obj0) ){
-      arg1 = PyFile_AsFile(obj0);
-    } else {
-      PyErr_SetString(PyExc_TypeError, "f must be a file type.");
-      return NULL;
-    }
-  }
-  ecode2 = SWIG_AsVal_int(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "grib_c_new_any_from_file" "', argument " "2"" of type '" "int""'");
-  } 
-  arg2 = (int)(val2);
-  if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj2, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_new_any_from_file" "', argument " "3"" of type '" "int""'");
-    }
-    temp3 = (int)(val);
-    arg3 = &temp3;
-    res3 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_new_any_from_file(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res3)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg3)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_int, new_flags));
-  }
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_new_bufr_from_file(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FILE *arg1 = (FILE *) 0 ;
-  int arg2 ;
-  int *arg3 = (int *) 0 ;
-  int val2 ;
-  int ecode2 = 0 ;
-  int temp3 ;
-  int res3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_new_bufr_from_file",&obj0,&obj1,&obj2)) SWIG_fail;
-  {
-    if ( PyFile_Check(obj0) ){
-      arg1 = PyFile_AsFile(obj0);
-    } else {
-      PyErr_SetString(PyExc_TypeError, "f must be a file type.");
-      return NULL;
-    }
-  }
-  ecode2 = SWIG_AsVal_int(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "grib_c_new_bufr_from_file" "', argument " "2"" of type '" "int""'");
-  } 
-  arg2 = (int)(val2);
-  if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj2, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_new_bufr_from_file" "', argument " "3"" of type '" "int""'");
-    }
-    temp3 = (int)(val);
-    arg3 = &temp3;
-    res3 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_new_bufr_from_file(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res3)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg3)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_int, new_flags));
-  }
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_new_gts_from_file(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FILE *arg1 = (FILE *) 0 ;
-  int arg2 ;
-  int *arg3 = (int *) 0 ;
-  int val2 ;
-  int ecode2 = 0 ;
-  int temp3 ;
-  int res3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_new_gts_from_file",&obj0,&obj1,&obj2)) SWIG_fail;
-  {
-    if ( PyFile_Check(obj0) ){
-      arg1 = PyFile_AsFile(obj0);
-    } else {
-      PyErr_SetString(PyExc_TypeError, "f must be a file type.");
-      return NULL;
-    }
-  }
-  ecode2 = SWIG_AsVal_int(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "grib_c_new_gts_from_file" "', argument " "2"" of type '" "int""'");
-  } 
-  arg2 = (int)(val2);
-  if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj2, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_new_gts_from_file" "', argument " "3"" of type '" "int""'");
-    }
-    temp3 = (int)(val);
-    arg3 = &temp3;
-    res3 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_new_gts_from_file(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res3)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg3)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_int, new_flags));
-  }
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_new_metar_from_file(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FILE *arg1 = (FILE *) 0 ;
-  int arg2 ;
-  int *arg3 = (int *) 0 ;
-  int val2 ;
-  int ecode2 = 0 ;
-  int temp3 ;
-  int res3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_new_metar_from_file",&obj0,&obj1,&obj2)) SWIG_fail;
-  {
-    if ( PyFile_Check(obj0) ){
-      arg1 = PyFile_AsFile(obj0);
-    } else {
-      PyErr_SetString(PyExc_TypeError, "f must be a file type.");
-      return NULL;
-    }
-  }
-  ecode2 = SWIG_AsVal_int(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "grib_c_new_metar_from_file" "', argument " "2"" of type '" "int""'");
-  } 
-  arg2 = (int)(val2);
-  if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj2, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_new_metar_from_file" "', argument " "3"" of type '" "int""'");
-    }
-    temp3 = (int)(val);
-    arg3 = &temp3;
-    res3 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_new_metar_from_file(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res3)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg3)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_int, new_flags));
-  }
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_iterator_new(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int *arg2 = (int *) 0 ;
-  int *arg3 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int temp2 ;
-  int res2 = SWIG_TMPOBJ ;
-  int temp3 ;
-  int res3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  arg2 = &temp2;
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_iterator_new",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_iterator_new" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(obj1,SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj1, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_iterator_new" "', argument " "3"" of type '" "int""'");
-    }
-    temp3 = (int)(val);
-    arg3 = &temp3;
-    res3 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_iterator_new(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res2)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg2)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res2) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg2), SWIGTYPE_p_int, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_keys_iterator_new(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int *arg2 = (int *) 0 ;
-  char *arg3 = (char *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int temp2 ;
-  int res2 = SWIG_TMPOBJ ;
-  int res3 ;
-  char *buf3 = 0 ;
-  int alloc3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  arg2 = &temp2;
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_keys_iterator_new",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_keys_iterator_new" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res3 = SWIG_AsCharPtrAndSize(obj1, &buf3, NULL, &alloc3);
-  if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "grib_c_keys_iterator_new" "', argument " "3"" of type '" "char *""'");
-  }
-  arg3 = (char *)(buf3);
-  result = (int)grib_c_keys_iterator_new(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res2)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg2)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res2) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg2), SWIGTYPE_p_int, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_new_from_samples(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_new_from_samples",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_new_from_samples" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_new_from_samples" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  result = (int)grib_c_new_from_samples(arg1,arg2);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res1)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg1)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res1) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg1), SWIGTYPE_p_int, new_flags));
-  }
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_index_new_from_file(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  char *arg1 = (char *) 0 ;
-  char *arg2 = (char *) 0 ;
-  int *arg3 = (int *) 0 ;
-  int res1 ;
-  char *buf1 = 0 ;
-  int alloc1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  int temp3 ;
-  int res3 = SWIG_TMPOBJ ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  arg3 = &temp3;
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_index_new_from_file",&obj0,&obj1)) SWIG_fail;
-  res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1);
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "grib_c_index_new_from_file" "', argument " "1"" of type '" "char *""'");
-  }
-  arg1 = (char *)(buf1);
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_index_new_from_file" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  result = (int)grib_c_index_new_from_file(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res3)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg3)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_int, new_flags));
-  }
-  if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_index_add_file(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_index_add_file",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_index_add_file" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_index_add_file" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  result = (int)grib_c_index_add_file(arg1,arg2);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_new_from_index(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int *arg2 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int temp2 ;
-  int res2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_new_from_index",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_new_from_index" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  if (!(SWIG_IsOK((res2 = SWIG_ConvertPtr(obj1,SWIG_as_voidptrptr(&arg2),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj1, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_new_from_index" "', argument " "2"" of type '" "int""'");
-    }
-    temp2 = (int)(val);
-    arg2 = &temp2;
-    res2 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_new_from_index(arg1,arg2);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res2)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg2)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res2) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg2), SWIGTYPE_p_int, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_index_write(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_index_write",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_index_write" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_index_write" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  result = (int)grib_c_index_write(arg1,arg2);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_index_read(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  char *arg1 = (char *) 0 ;
-  int *arg2 = (int *) 0 ;
-  int res1 ;
-  char *buf1 = 0 ;
-  int alloc1 = 0 ;
-  int temp2 ;
-  int res2 = SWIG_TMPOBJ ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  arg2 = &temp2;
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_index_read",&obj0)) SWIG_fail;
-  res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1);
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "grib_c_index_read" "', argument " "1"" of type '" "char *""'");
-  }
-  arg1 = (char *)(buf1);
-  result = (int)grib_c_index_read(arg1,arg2);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res2)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg2)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res2) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg2), SWIGTYPE_p_int, new_flags));
-  }
-  if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
-  return resultobj;
-fail:
-  if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_new_from_message(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  size_t *arg3 = (size_t *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  size_t temp3 ;
-  int res3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_new_from_message",&obj0,&obj1,&obj2)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_new_from_message" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_new_from_message" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_size_t,0))))) {
-    size_t val; 
-    int ecode = SWIG_AsVal_size_t(obj2, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_new_from_message" "', argument " "3"" of type '" "size_t""'");
-    }
-    temp3 = (size_t)(val);
-    arg3 = &temp3;
-    res3 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_new_from_message(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res1)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg1)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res1) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg1), SWIGTYPE_p_int, new_flags));
-  }
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return resultobj;
-fail:
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_count_in_file(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FILE *arg1 = (FILE *) 0 ;
-  int *arg2 = (int *) 0 ;
-  int temp2 ;
-  int res2 = SWIG_TMPOBJ ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  arg2 = &temp2;
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_count_in_file",&obj0)) SWIG_fail;
-  {
-    if ( PyFile_Check(obj0) ){
-      arg1 = PyFile_AsFile(obj0);
-    } else {
-      PyErr_SetString(PyExc_TypeError, "f must be a file type.");
-      return NULL;
-    }
-  }
-  result = (int)grib_c_count_in_file(arg1,arg2);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res2)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg2)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res2) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg2), SWIGTYPE_p_int, new_flags));
-  }
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_release(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_release",&obj0)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_release" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_release(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_write(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  FILE *arg2 = (FILE *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_write",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_write" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  {
-    if ( PyFile_Check(obj1) ){
-      arg2 = PyFile_AsFile(obj1);
-    } else {
-      PyErr_SetString(PyExc_TypeError, "f must be a file type.");
-      return NULL;
-    }
-  }
-  result = (int)grib_c_write(arg1,arg2);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_get_size_long(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  long *arg3 = (long *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  long temp3 ;
-  int res3 = SWIG_TMPOBJ ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  arg3 = &temp3;
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_get_size_long",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_size_long" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_get_size_long" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  result = (int)grib_c_get_size_long(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res3)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_long((*arg3)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_long, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_get_string_length(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  size_t *arg3 = (size_t *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  size_t temp3 ;
-  int res3 = SWIG_TMPOBJ ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  arg3 = &temp3;
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_get_string_length",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_string_length" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_get_string_length" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  result = (int)grib_c_get_string_length(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res3)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_size_t((*arg3)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_size_t, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int *arg2 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int temp2 ;
-  int res2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_clone",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_clone" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  if (!(SWIG_IsOK((res2 = SWIG_ConvertPtr(obj1,SWIG_as_voidptrptr(&arg2),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj1, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_clone" "', argument " "2"" of type '" "int""'");
-    }
-    temp2 = (int)(val);
-    arg2 = &temp2;
-    res2 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_clone(arg1,arg2);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res2)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg2)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res2) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg2), SWIGTYPE_p_int, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_copy_namespace(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  int *arg3 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  int temp3 ;
-  int res3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_copy_namespace",&obj0,&obj1,&obj2)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_copy_namespace" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_copy_namespace" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj2, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_copy_namespace" "', argument " "3"" of type '" "int""'");
-    }
-    temp3 = (int)(val);
-    arg3 = &temp3;
-    res3 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_copy_namespace(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_get_message_size(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  size_t *arg2 = (size_t *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  size_t temp2 ;
-  int res2 = SWIG_TMPOBJ ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  arg2 = &temp2;
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_get_message_size",&obj0)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_message_size" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_get_message_size(arg1,arg2);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res2)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_size_t((*arg2)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res2) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg2), SWIGTYPE_p_size_t, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_get_message_offset(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  size_t *arg2 = (size_t *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  size_t temp2 ;
-  int res2 = SWIG_TMPOBJ ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  arg2 = &temp2;
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_get_message_offset",&obj0)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_message_offset" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_get_message_offset(arg1,arg2);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res2)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_size_t((*arg2)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res2) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg2), SWIGTYPE_p_size_t, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_get_native_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  int *arg3 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  int temp3 ;
-  int res3 = SWIG_TMPOBJ ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  arg3 = &temp3;
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_get_native_type",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_native_type" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_get_native_type" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  result = (int)grib_c_get_native_type(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res3)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg3)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_int, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_multi_new(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int temp1 ;
-  int res1 = SWIG_TMPOBJ ;
-  int result;
-  
-  arg1 = &temp1;
-  if (!PyArg_ParseTuple(args,(char *)":grib_c_multi_new")) SWIG_fail;
-  result = (int)grib_c_multi_new(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res1)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg1)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res1) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg1), SWIGTYPE_p_int, new_flags));
-  }
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_multi_support_on(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)":grib_c_multi_support_on")) SWIG_fail;
-  result = (int)grib_c_multi_support_on();
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_multi_write(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  FILE *arg2 = (FILE *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_multi_write",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_multi_write" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  {
-    if ( PyFile_Check(obj1) ){
-      arg2 = PyFile_AsFile(obj1);
-    } else {
-      PyErr_SetString(PyExc_TypeError, "f must be a file type.");
-      return NULL;
-    }
-  }
-  result = (int)grib_c_multi_write(arg1,arg2);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_multi_support_off(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)":grib_c_multi_support_off")) SWIG_fail;
-  result = (int)grib_c_multi_support_off();
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_multi_release(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_multi_release",&obj0)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_multi_release" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_multi_release(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_multi_append(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int *arg2 = (int *) 0 ;
-  int *arg3 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int temp2 ;
-  int res2 = 0 ;
-  int temp3 ;
-  int res3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_multi_append",&obj0,&obj1,&obj2)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_multi_append" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  if (!(SWIG_IsOK((res2 = SWIG_ConvertPtr(obj1,SWIG_as_voidptrptr(&arg2),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj1, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_multi_append" "', argument " "2"" of type '" "int""'");
-    }
-    temp2 = (int)(val);
-    arg2 = &temp2;
-    res2 = SWIG_AddTmpMask(ecode);
-  }
-  if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj2, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_multi_append" "', argument " "3"" of type '" "int""'");
-    }
-    temp3 = (int)(val);
-    arg3 = &temp3;
-    res3 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_multi_append(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (SWIG_IsNewObj(res2)) free((char*)arg2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (SWIG_IsNewObj(res2)) free((char*)arg2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_gribex_mode_on(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)":grib_c_gribex_mode_on")) SWIG_fail;
-  result = (int)grib_c_gribex_mode_on();
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_gribex_mode_off(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)":grib_c_gribex_mode_off")) SWIG_fail;
-  result = (int)grib_c_gribex_mode_off();
-  resultobj = SWIG_From_int((int)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_keys_iterator_next(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_keys_iterator_next",&obj0)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_keys_iterator_next" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_keys_iterator_next(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_keys_iterator_delete(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_keys_iterator_delete",&obj0)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_keys_iterator_delete" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_keys_iterator_delete(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_skip_computed(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_skip_computed",&obj0)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_skip_computed" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_skip_computed(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_skip_coded(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_skip_coded",&obj0)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_skip_coded" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_skip_coded(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_skip_edition_specific(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_skip_edition_specific",&obj0)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_skip_edition_specific" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_skip_edition_specific(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_skip_duplicates(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_skip_duplicates",&obj0)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_skip_duplicates" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_skip_duplicates(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_skip_read_only(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_skip_read_only",&obj0)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_skip_read_only" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_skip_read_only(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_skip_function(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_skip_function",&obj0)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_skip_function" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_skip_function(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_keys_iterator_rewind(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_keys_iterator_rewind",&obj0)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_keys_iterator_rewind" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_keys_iterator_rewind(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_keys_iterator_get_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  int arg3 ;
-  int temp1 ;
-  int res1 = 0 ;
-  char temp2[1024+1] ;
-  int val3 ;
-  int ecode3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  arg2 = (char *) temp2;
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_keys_iterator_get_name",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_keys_iterator_get_name" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  ecode3 = SWIG_AsVal_int(obj1, &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "grib_c_keys_iterator_get_name" "', argument " "3"" of type '" "int""'");
-  } 
-  arg3 = (int)(val3);
-  result = (int)grib_c_keys_iterator_get_name(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  arg2[1024] = 0;  
-  resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_FromCharPtr(arg2));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_index_get_size_long(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  long *arg3 = (long *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  long temp3 ;
-  int res3 = SWIG_TMPOBJ ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  arg3 = &temp3;
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_index_get_size_long",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_index_get_size_long" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_index_get_size_long" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  result = (int)grib_c_index_get_size_long(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res3)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_long((*arg3)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_long, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_index_get_long(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  long *arg3 = (long *) 0 ;
-  int *arg4 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  void *argp3 = 0 ;
-  int res3 = 0 ;
-  void *argp4 = 0 ;
-  int res4 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  PyObject * obj3 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOOO:grib_c_index_get_long",&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_index_get_long" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_index_get_long" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_long, 0 |  0 );
-  if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "grib_c_index_get_long" "', argument " "3"" of type '" "long *""'"); 
-  }
-  arg3 = (long *)(argp3);
-  res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_int, 0 |  0 );
-  if (!SWIG_IsOK(res4)) {
-    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "grib_c_index_get_long" "', argument " "4"" of type '" "int *""'"); 
-  }
-  arg4 = (int *)(argp4);
-  result = (int)grib_c_index_get_long(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_index_get_real8(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  double *arg3 = (double *) 0 ;
-  int *arg4 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  void *argp3 = 0 ;
-  int res3 = 0 ;
-  void *argp4 = 0 ;
-  int res4 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  PyObject * obj3 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOOO:grib_c_index_get_real8",&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_index_get_real8" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_index_get_real8" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_double, 0 |  0 );
-  if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "grib_c_index_get_real8" "', argument " "3"" of type '" "double *""'"); 
-  }
-  arg3 = (double *)(argp3);
-  res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_int, 0 |  0 );
-  if (!SWIG_IsOK(res4)) {
-    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "grib_c_index_get_real8" "', argument " "4"" of type '" "int *""'"); 
-  }
-  arg4 = (int *)(argp4);
-  result = (int)grib_c_index_get_real8(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_index_get_string(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  char *arg3 = (char *) 0 ;
-  int *arg4 = (int *) 0 ;
-  int *arg5 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  char temp3[1024*1024+1] ;
-  int temp4 ;
-  int res4 = 0 ;
-  int temp5 ;
-  int res5 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  PyObject * obj3 = 0 ;
-  int result;
-  
-  arg3 = (char *) temp3;
-  if (!PyArg_ParseTuple(args,(char *)"OOOO:grib_c_index_get_string",&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_index_get_string" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_index_get_string" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  if (!(SWIG_IsOK((res4 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg4),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj2, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_index_get_string" "', argument " "4"" of type '" "int""'");
-    }
-    temp4 = (int)(val);
-    arg4 = &temp4;
-    res4 = SWIG_AddTmpMask(ecode);
-  }
-  if (!(SWIG_IsOK((res5 = SWIG_ConvertPtr(obj3,SWIG_as_voidptrptr(&arg5),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj3, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_index_get_string" "', argument " "5"" of type '" "int""'");
-    }
-    temp5 = (int)(val);
-    arg5 = &temp5;
-    res5 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_index_get_string(arg1,arg2,arg3,arg4,arg5);
-  resultobj = SWIG_From_int((int)(result));
-  arg3[1024*1024] = 0;  
-  resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_FromCharPtr(arg3));
-  if (SWIG_IsTmpObj(res5)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg5)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res5) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg5), SWIGTYPE_p_int, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (SWIG_IsNewObj(res4)) free((char*)arg4);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (SWIG_IsNewObj(res4)) free((char*)arg4);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_index_select_long(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  long *arg3 = (long *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  long temp3 ;
-  int res3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_index_select_long",&obj0,&obj1,&obj2)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_index_select_long" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_index_select_long" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_long,0))))) {
-    long val; 
-    int ecode = SWIG_AsVal_long(obj2, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_index_select_long" "', argument " "3"" of type '" "long""'");
-    }
-    temp3 = (long)(val);
-    arg3 = &temp3;
-    res3 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_index_select_long(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_index_select_real8(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  double *arg3 = (double *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  double temp3 ;
-  int res3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_index_select_real8",&obj0,&obj1,&obj2)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_index_select_real8" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_index_select_real8" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_double,0))))) {
-    double val; 
-    int ecode = SWIG_AsVal_double(obj2, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_index_select_real8" "', argument " "3"" of type '" "double""'");
-    }
-    temp3 = (double)(val);
-    arg3 = &temp3;
-    res3 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_index_select_real8(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_index_select_string(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  char *arg3 = (char *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  int res3 ;
-  char *buf3 = 0 ;
-  int alloc3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_index_select_string",&obj0,&obj1,&obj2)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_index_select_string" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_index_select_string" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3);
-  if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "grib_c_index_select_string" "', argument " "3"" of type '" "char *""'");
-  }
-  arg3 = (char *)(buf3);
-  result = (int)grib_c_index_select_string(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_index_release(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_index_release",&obj0)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_index_release" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_index_release(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_iterator_delete(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_iterator_delete",&obj0)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_iterator_delete" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_iterator_delete(arg1);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_iterator_next(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  double *arg2 = (double *) 0 ;
-  double *arg3 = (double *) 0 ;
-  double *arg4 = (double *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  double temp2 ;
-  int res2 = SWIG_TMPOBJ ;
-  double temp3 ;
-  int res3 = SWIG_TMPOBJ ;
-  double temp4 ;
-  int res4 = SWIG_TMPOBJ ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  arg2 = &temp2;
-  arg3 = &temp3;
-  arg4 = &temp4;
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_iterator_next",&obj0)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_iterator_next" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_iterator_next(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res2)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg2)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res2) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg2), SWIGTYPE_p_double, new_flags));
-  }
-  if (SWIG_IsTmpObj(res3)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg3)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_double, new_flags));
-  }
-  if (SWIG_IsTmpObj(res4)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg4)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res4) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg4), SWIGTYPE_p_double, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_get_string(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  char *arg3 = (char *) 0 ;
-  size_t *arg4 = (size_t *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  int res3 ;
-  size_t n3 ;
-  char *buff3 = 0 ;
-  size_t size3 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_get_string",&obj0,&obj1,&obj2)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_string" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_get_string" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  res3 = SWIG_AsVal_size_t (obj2, &n3);
-  if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "grib_c_get_string" "', argument " "3"" of type '" "(char* string_val, size_t* string_size)""'");
-  }
-  buff3= (char *)malloc((n3+1)*sizeof(char));
-  arg3 = (char *)(buff3);
-  size3 = (size_t)(n3);
-  arg4 = &size3;
-  result = (int)grib_c_get_string(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_From_int((int)(result));
-  resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_FromCharPtrAndSize(arg3,*arg4));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (buff3) free((char*)buff3);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (buff3) free((char*)buff3);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_get_string_array(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  char **arg3 = (char **) 0 ;
-  size_t *arg4 = (size_t *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  void *argp3 = 0 ;
-  int res3 = 0 ;
-  void *argp4 = 0 ;
-  int res4 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  PyObject * obj3 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOOO:grib_c_get_string_array",&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_string_array" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_get_string_array" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_p_char, 0 |  0 );
-  if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "grib_c_get_string_array" "', argument " "3"" of type '" "char **""'"); 
-  }
-  arg3 = (char **)(argp3);
-  res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_size_t, 0 |  0 );
-  if (!SWIG_IsOK(res4)) {
-    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "grib_c_get_string_array" "', argument " "4"" of type '" "size_t *""'"); 
-  }
-  arg4 = (size_t *)(argp4);
-  result = (int)grib_c_get_string_array(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_set_string(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  char *arg3 = (char *) 0 ;
-  int arg4 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  int res3 ;
-  char *buf3 = 0 ;
-  int alloc3 = 0 ;
-  int val4 ;
-  int ecode4 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  PyObject * obj3 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOOO:grib_c_set_string",&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_set_string" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_set_string" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3);
-  if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "grib_c_set_string" "', argument " "3"" of type '" "char *""'");
-  }
-  arg3 = (char *)(buf3);
-  ecode4 = SWIG_AsVal_int(obj3, &val4);
-  if (!SWIG_IsOK(ecode4)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "grib_c_set_string" "', argument " "4"" of type '" "int""'");
-  } 
-  arg4 = (int)(val4);
-  result = (int)grib_c_set_string(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (alloc3 == SWIG_NEWOBJ) free((char*)buf3);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_get_long(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  long *arg3 = (long *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  long temp3 ;
-  int res3 = SWIG_TMPOBJ ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  arg3 = &temp3;
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_get_long",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_long" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_get_long" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  result = (int)grib_c_get_long(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res3)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_long((*arg3)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_long, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_set_long(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  long *arg3 = (long *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  long temp3 ;
-  int res3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_set_long",&obj0,&obj1,&obj2)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_set_long" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_set_long" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_long,0))))) {
-    long val; 
-    int ecode = SWIG_AsVal_long(obj2, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_set_long" "', argument " "3"" of type '" "long""'");
-    }
-    temp3 = (long)(val);
-    arg3 = &temp3;
-    res3 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_set_long(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_get_double(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  double *arg3 = (double *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  double temp3 ;
-  int res3 = SWIG_TMPOBJ ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  arg3 = &temp3;
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_get_double",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_double" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_get_double" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  result = (int)grib_c_get_double(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res3)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg3)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_double, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_set_double(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  double *arg3 = (double *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  double temp3 ;
-  int res3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_set_double",&obj0,&obj1,&obj2)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_set_double" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_set_double" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_double,0))))) {
-    double val; 
-    int ecode = SWIG_AsVal_double(obj2, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_set_double" "', argument " "3"" of type '" "double""'");
-    }
-    temp3 = (double)(val);
-    arg3 = &temp3;
-    res3 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_set_double(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_set_real8_array(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  double *arg3 = (double *) 0 ;
-  int *arg4 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  void *argp3 = 0 ;
-  int res3 = 0 ;
-  void *argp4 = 0 ;
-  int res4 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  PyObject * obj3 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOOO:grib_c_set_real8_array",&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_set_real8_array" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_set_real8_array" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_double, 0 |  0 );
-  if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "grib_c_set_real8_array" "', argument " "3"" of type '" "double *""'"); 
-  }
-  arg3 = (double *)(argp3);
-  res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_int, 0 |  0 );
-  if (!SWIG_IsOK(res4)) {
-    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "grib_c_set_real8_array" "', argument " "4"" of type '" "int *""'"); 
-  }
-  arg4 = (int *)(argp4);
-  result = (int)grib_c_set_real8_array(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_get_real8_array(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  double *arg3 = (double *) 0 ;
-  int *arg4 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  void *argp3 = 0 ;
-  int res3 = 0 ;
-  void *argp4 = 0 ;
-  int res4 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  PyObject * obj3 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOOO:grib_c_get_real8_array",&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_real8_array" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_get_real8_array" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_double, 0 |  0 );
-  if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "grib_c_get_real8_array" "', argument " "3"" of type '" "double *""'"); 
-  }
-  arg3 = (double *)(argp3);
-  res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_int, 0 |  0 );
-  if (!SWIG_IsOK(res4)) {
-    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "grib_c_get_real8_array" "', argument " "4"" of type '" "int *""'"); 
-  }
-  arg4 = (int *)(argp4);
-  result = (int)grib_c_get_real8_array(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_get_long_array(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  long *arg3 = (long *) 0 ;
-  int *arg4 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  void *argp3 = 0 ;
-  int res3 = 0 ;
-  void *argp4 = 0 ;
-  int res4 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  PyObject * obj3 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOOO:grib_c_get_long_array",&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_long_array" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_get_long_array" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_long, 0 |  0 );
-  if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "grib_c_get_long_array" "', argument " "3"" of type '" "long *""'"); 
-  }
-  arg3 = (long *)(argp3);
-  res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_int, 0 |  0 );
-  if (!SWIG_IsOK(res4)) {
-    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "grib_c_get_long_array" "', argument " "4"" of type '" "int *""'"); 
-  }
-  arg4 = (int *)(argp4);
-  result = (int)grib_c_get_long_array(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_set_long_array(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  long *arg3 = (long *) 0 ;
-  int *arg4 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  void *argp3 = 0 ;
-  int res3 = 0 ;
-  void *argp4 = 0 ;
-  int res4 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  PyObject * obj3 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOOO:grib_c_set_long_array",&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_set_long_array" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_set_long_array" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_long, 0 |  0 );
-  if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "grib_c_set_long_array" "', argument " "3"" of type '" "long *""'"); 
-  }
-  arg3 = (long *)(argp3);
-  res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_int, 0 |  0 );
-  if (!SWIG_IsOK(res4)) {
-    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "grib_c_set_long_array" "', argument " "4"" of type '" "int *""'"); 
-  }
-  arg4 = (int *)(argp4);
-  result = (int)grib_c_set_long_array(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_get_real8_element(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  int *arg3 = (int *) 0 ;
-  double *arg4 = (double *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  int temp3 ;
-  int res3 = 0 ;
-  double temp4 ;
-  int res4 = SWIG_TMPOBJ ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  int result;
-  
-  arg4 = &temp4;
-  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_get_real8_element",&obj0,&obj1,&obj2)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_real8_element" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_get_real8_element" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj2, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_real8_element" "', argument " "3"" of type '" "int""'");
-    }
-    temp3 = (int)(val);
-    arg3 = &temp3;
-    res3 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_get_real8_element(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res4)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg4)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res4) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg4), SWIGTYPE_p_double, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_get_real8_elements(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  int *arg3 = (int *) 0 ;
-  double *arg4 = (double *) 0 ;
-  int *arg5 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  void *argp3 = 0 ;
-  int res3 = 0 ;
-  void *argp4 = 0 ;
-  int res4 = 0 ;
-  void *argp5 = 0 ;
-  int res5 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  PyObject * obj3 = 0 ;
-  PyObject * obj4 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOOOO:grib_c_get_real8_elements",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_real8_elements" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_get_real8_elements" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_int, 0 |  0 );
-  if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "grib_c_get_real8_elements" "', argument " "3"" of type '" "int *""'"); 
-  }
-  arg3 = (int *)(argp3);
-  res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_double, 0 |  0 );
-  if (!SWIG_IsOK(res4)) {
-    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "grib_c_get_real8_elements" "', argument " "4"" of type '" "double *""'"); 
-  }
-  arg4 = (double *)(argp4);
-  res5 = SWIG_ConvertPtr(obj4, &argp5,SWIGTYPE_p_int, 0 |  0 );
-  if (!SWIG_IsOK(res5)) {
-    SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "grib_c_get_real8_elements" "', argument " "5"" of type '" "int *""'"); 
-  }
-  arg5 = (int *)(argp5);
-  result = (int)grib_c_get_real8_elements(arg1,arg2,arg3,arg4,arg5);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_set_missing(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_set_missing",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_set_missing" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_set_missing" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  result = (int)grib_c_set_missing(arg1,arg2);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_set_key_vals(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_set_key_vals",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_set_key_vals" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_set_key_vals" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  result = (int)grib_c_set_key_vals(arg1,arg2);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_is_missing(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  int *arg3 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  int temp3 ;
-  int res3 = SWIG_TMPOBJ ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  arg3 = &temp3;
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_is_missing",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_is_missing" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_is_missing" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  result = (int)grib_c_is_missing(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res3)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg3)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_int, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_is_defined(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  int *arg3 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int res2 ;
-  char *buf2 = 0 ;
-  int alloc2 = 0 ;
-  int temp3 ;
-  int res3 = SWIG_TMPOBJ ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  arg3 = &temp3;
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_is_defined",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_is_defined" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_is_defined" "', argument " "2"" of type '" "char *""'");
-  }
-  arg2 = (char *)(buf2);
-  result = (int)grib_c_is_defined(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res3)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg3)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_int, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_find_nearest_single(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int *arg2 = (int *) 0 ;
-  double *arg3 = (double *) 0 ;
-  double *arg4 = (double *) 0 ;
-  double *arg5 = (double *) 0 ;
-  double *arg6 = (double *) 0 ;
-  double *arg7 = (double *) 0 ;
-  double *arg8 = (double *) 0 ;
-  int *arg9 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int temp2 ;
-  int res2 = 0 ;
-  double temp3 ;
-  int res3 = 0 ;
-  double temp4 ;
-  int res4 = 0 ;
-  double temp5 ;
-  int res5 = SWIG_TMPOBJ ;
-  double temp6 ;
-  int res6 = SWIG_TMPOBJ ;
-  double temp7 ;
-  int res7 = SWIG_TMPOBJ ;
-  double temp8 ;
-  int res8 = SWIG_TMPOBJ ;
-  int temp9 ;
-  int res9 = SWIG_TMPOBJ ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  PyObject * obj3 = 0 ;
-  int result;
-  
-  arg5 = &temp5;
-  arg6 = &temp6;
-  arg7 = &temp7;
-  arg8 = &temp8;
-  arg9 = &temp9;
-  if (!PyArg_ParseTuple(args,(char *)"OOOO:grib_c_find_nearest_single",&obj0,&obj1,&obj2,&obj3)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_find_nearest_single" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  if (!(SWIG_IsOK((res2 = SWIG_ConvertPtr(obj1,SWIG_as_voidptrptr(&arg2),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj1, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_find_nearest_single" "', argument " "2"" of type '" "int""'");
-    }
-    temp2 = (int)(val);
-    arg2 = &temp2;
-    res2 = SWIG_AddTmpMask(ecode);
-  }
-  if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_double,0))))) {
-    double val; 
-    int ecode = SWIG_AsVal_double(obj2, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_find_nearest_single" "', argument " "3"" of type '" "double""'");
-    }
-    temp3 = (double)(val);
-    arg3 = &temp3;
-    res3 = SWIG_AddTmpMask(ecode);
-  }
-  if (!(SWIG_IsOK((res4 = SWIG_ConvertPtr(obj3,SWIG_as_voidptrptr(&arg4),SWIGTYPE_p_double,0))))) {
-    double val; 
-    int ecode = SWIG_AsVal_double(obj3, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_find_nearest_single" "', argument " "4"" of type '" "double""'");
-    }
-    temp4 = (double)(val);
-    arg4 = &temp4;
-    res4 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_find_nearest_single(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsTmpObj(res5)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg5)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res5) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg5), SWIGTYPE_p_double, new_flags));
-  }
-  if (SWIG_IsTmpObj(res6)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg6)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res6) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg6), SWIGTYPE_p_double, new_flags));
-  }
-  if (SWIG_IsTmpObj(res7)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg7)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res7) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg7), SWIGTYPE_p_double, new_flags));
-  }
-  if (SWIG_IsTmpObj(res8)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg8)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res8) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg8), SWIGTYPE_p_double, new_flags));
-  }
-  if (SWIG_IsTmpObj(res9)) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg9)));
-  } else {
-    int new_flags = SWIG_IsNewObj(res9) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg9), SWIGTYPE_p_int, new_flags));
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (SWIG_IsNewObj(res2)) free((char*)arg2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  if (SWIG_IsNewObj(res4)) free((char*)arg4);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (SWIG_IsNewObj(res2)) free((char*)arg2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  if (SWIG_IsNewObj(res4)) free((char*)arg4);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_find_nearest_four_single(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  int *arg2 = (int *) 0 ;
-  double *arg3 = (double *) 0 ;
-  double *arg4 = (double *) 0 ;
-  double *arg5 = (double *) 0 ;
-  double *arg6 = (double *) 0 ;
-  double *arg7 = (double *) 0 ;
-  double *arg8 = (double *) 0 ;
-  int *arg9 = (int *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  int temp2 ;
-  int res2 = 0 ;
-  double temp3 ;
-  int res3 = 0 ;
-  double temp4 ;
-  int res4 = 0 ;
-  void *argp5 = 0 ;
-  int res5 = 0 ;
-  void *argp6 = 0 ;
-  int res6 = 0 ;
-  void *argp7 = 0 ;
-  int res7 = 0 ;
-  void *argp8 = 0 ;
-  int res8 = 0 ;
-  void *argp9 = 0 ;
-  int res9 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  PyObject * obj3 = 0 ;
-  PyObject * obj4 = 0 ;
-  PyObject * obj5 = 0 ;
-  PyObject * obj6 = 0 ;
-  PyObject * obj7 = 0 ;
-  PyObject * obj8 = 0 ;
-  int result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOO:grib_c_find_nearest_four_single",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_find_nearest_four_single" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  if (!(SWIG_IsOK((res2 = SWIG_ConvertPtr(obj1,SWIG_as_voidptrptr(&arg2),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj1, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_find_nearest_four_single" "', argument " "2"" of type '" "int""'");
-    }
-    temp2 = (int)(val);
-    arg2 = &temp2;
-    res2 = SWIG_AddTmpMask(ecode);
-  }
-  if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_double,0))))) {
-    double val; 
-    int ecode = SWIG_AsVal_double(obj2, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_find_nearest_four_single" "', argument " "3"" of type '" "double""'");
-    }
-    temp3 = (double)(val);
-    arg3 = &temp3;
-    res3 = SWIG_AddTmpMask(ecode);
-  }
-  if (!(SWIG_IsOK((res4 = SWIG_ConvertPtr(obj3,SWIG_as_voidptrptr(&arg4),SWIGTYPE_p_double,0))))) {
-    double val; 
-    int ecode = SWIG_AsVal_double(obj3, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_find_nearest_four_single" "', argument " "4"" of type '" "double""'");
-    }
-    temp4 = (double)(val);
-    arg4 = &temp4;
-    res4 = SWIG_AddTmpMask(ecode);
-  }
-  res5 = SWIG_ConvertPtr(obj4, &argp5,SWIGTYPE_p_double, 0 |  0 );
-  if (!SWIG_IsOK(res5)) {
-    SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "grib_c_find_nearest_four_single" "', argument " "5"" of type '" "double *""'"); 
-  }
-  arg5 = (double *)(argp5);
-  res6 = SWIG_ConvertPtr(obj5, &argp6,SWIGTYPE_p_double, 0 |  0 );
-  if (!SWIG_IsOK(res6)) {
-    SWIG_exception_fail(SWIG_ArgError(res6), "in method '" "grib_c_find_nearest_four_single" "', argument " "6"" of type '" "double *""'"); 
-  }
-  arg6 = (double *)(argp6);
-  res7 = SWIG_ConvertPtr(obj6, &argp7,SWIGTYPE_p_double, 0 |  0 );
-  if (!SWIG_IsOK(res7)) {
-    SWIG_exception_fail(SWIG_ArgError(res7), "in method '" "grib_c_find_nearest_four_single" "', argument " "7"" of type '" "double *""'"); 
-  }
-  arg7 = (double *)(argp7);
-  res8 = SWIG_ConvertPtr(obj7, &argp8,SWIGTYPE_p_double, 0 |  0 );
-  if (!SWIG_IsOK(res8)) {
-    SWIG_exception_fail(SWIG_ArgError(res8), "in method '" "grib_c_find_nearest_four_single" "', argument " "8"" of type '" "double *""'"); 
-  }
-  arg8 = (double *)(argp8);
-  res9 = SWIG_ConvertPtr(obj8, &argp9,SWIGTYPE_p_int, 0 |  0 );
-  if (!SWIG_IsOK(res9)) {
-    SWIG_exception_fail(SWIG_ArgError(res9), "in method '" "grib_c_find_nearest_four_single" "', argument " "9"" of type '" "int *""'"); 
-  }
-  arg9 = (int *)(argp9);
-  result = (int)grib_c_find_nearest_four_single(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9);
-  resultobj = SWIG_From_int((int)(result));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (SWIG_IsNewObj(res2)) free((char*)arg2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  if (SWIG_IsNewObj(res4)) free((char*)arg4);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  if (SWIG_IsNewObj(res2)) free((char*)arg2);
-  if (SWIG_IsNewObj(res3)) free((char*)arg3);
-  if (SWIG_IsNewObj(res4)) free((char*)arg4);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_get_message(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  void **arg2 = (void **) 0 ;
-  size_t *arg3 = (size_t *) 0 ;
-  int temp1 ;
-  int res1 = 0 ;
-  void *temp2 = 0 ;
-  size_t tempn2 ;
-  PyObject * obj0 = 0 ;
-  int result;
-  
-  arg2 = &temp2; arg3 = &tempn2;
-  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_get_message",&obj0)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_message" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  result = (int)grib_c_get_message(arg1,(void const **)arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  if (*arg2) {
-    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_FromCharPtrAndSize(*arg2,*arg3));
-    ;
-  }
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_get_error_string(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int *arg1 = (int *) 0 ;
-  char *arg2 = (char *) 0 ;
-  int arg3 ;
-  int temp1 ;
-  int res1 = 0 ;
-  char temp2[1024+1] ;
-  int val3 ;
-  int ecode3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  int result;
-  
-  arg2 = (char *) temp2;
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_get_error_string",&obj0,&obj1)) SWIG_fail;
-  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
-    int val; 
-    int ecode = SWIG_AsVal_int(obj0, &val);
-    if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_get_error_string" "', argument " "1"" of type '" "int""'");
-    }
-    temp1 = (int)(val);
-    arg1 = &temp1;
-    res1 = SWIG_AddTmpMask(ecode);
-  }
-  ecode3 = SWIG_AsVal_int(obj1, &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "grib_c_get_error_string" "', argument " "3"" of type '" "int""'");
-  } 
-  arg3 = (int)(val3);
-  result = (int)grib_c_get_error_string(arg1,arg2,arg3);
-  resultobj = SWIG_From_int((int)(result));
-  arg2[1024] = 0;  
-  resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_FromCharPtr(arg2));
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res1)) free((char*)arg1);
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_no_fail_on_wrong_length(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  int arg1 ;
-  int val1 ;
-  int ecode1 = 0 ;
-  PyObject * obj0 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:no_fail_on_wrong_length",&obj0)) SWIG_fail;
-  ecode1 = SWIG_AsVal_int(obj0, &val1);
-  if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "no_fail_on_wrong_length" "', argument " "1"" of type '" "int""'");
-  } 
-  arg1 = (int)(val1);
-  no_fail_on_wrong_length(arg1);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_get_api_version(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  long result;
-  
-  if (!PyArg_ParseTuple(args,(char *)":grib_c_get_api_version")) SWIG_fail;
-  result = (long)grib_c_get_api_version();
-  resultobj = SWIG_From_long((long)(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_gts_header_on(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  
-  if (!PyArg_ParseTuple(args,(char *)":grib_c_gts_header_on")) SWIG_fail;
-  grib_c_gts_header_on();
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_grib_c_gts_header_off(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  
-  if (!PyArg_ParseTuple(args,(char *)":grib_c_gts_header_off")) SWIG_fail;
-  grib_c_gts_header_off();
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-static PyMethodDef SwigMethods[] = {
-	 { (char *)"SWIG_PyInstanceMethod_New", (PyCFunction)SWIG_PyInstanceMethod_New, METH_O, NULL},
-	 { (char *)"cdata", _wrap_cdata, METH_VARARGS, NULL},
-	 { (char *)"memmove", _wrap_memmove, METH_VARARGS, NULL},
-	 { (char *)"new_intp", _wrap_new_intp, METH_VARARGS, NULL},
-	 { (char *)"delete_intp", _wrap_delete_intp, METH_VARARGS, NULL},
-	 { (char *)"intp_assign", _wrap_intp_assign, METH_VARARGS, NULL},
-	 { (char *)"intp_value", _wrap_intp_value, METH_VARARGS, NULL},
-	 { (char *)"intp_cast", _wrap_intp_cast, METH_VARARGS, NULL},
-	 { (char *)"intp_frompointer", _wrap_intp_frompointer, METH_VARARGS, NULL},
-	 { (char *)"intp_swigregister", intp_swigregister, METH_VARARGS, NULL},
-	 { (char *)"new_sizetp", _wrap_new_sizetp, METH_VARARGS, NULL},
-	 { (char *)"delete_sizetp", _wrap_delete_sizetp, METH_VARARGS, NULL},
-	 { (char *)"sizetp_assign", _wrap_sizetp_assign, METH_VARARGS, NULL},
-	 { (char *)"sizetp_value", _wrap_sizetp_value, METH_VARARGS, NULL},
-	 { (char *)"sizetp_cast", _wrap_sizetp_cast, METH_VARARGS, NULL},
-	 { (char *)"sizetp_frompointer", _wrap_sizetp_frompointer, METH_VARARGS, NULL},
-	 { (char *)"sizetp_swigregister", sizetp_swigregister, METH_VARARGS, NULL},
-	 { (char *)"new_longp", _wrap_new_longp, METH_VARARGS, NULL},
-	 { (char *)"delete_longp", _wrap_delete_longp, METH_VARARGS, NULL},
-	 { (char *)"longp_assign", _wrap_longp_assign, METH_VARARGS, NULL},
-	 { (char *)"longp_value", _wrap_longp_value, METH_VARARGS, NULL},
-	 { (char *)"longp_cast", _wrap_longp_cast, METH_VARARGS, NULL},
-	 { (char *)"longp_frompointer", _wrap_longp_frompointer, METH_VARARGS, NULL},
-	 { (char *)"longp_swigregister", longp_swigregister, METH_VARARGS, NULL},
-	 { (char *)"new_doublep", _wrap_new_doublep, METH_VARARGS, NULL},
-	 { (char *)"delete_doublep", _wrap_delete_doublep, METH_VARARGS, NULL},
-	 { (char *)"doublep_assign", _wrap_doublep_assign, METH_VARARGS, NULL},
-	 { (char *)"doublep_value", _wrap_doublep_value, METH_VARARGS, NULL},
-	 { (char *)"doublep_cast", _wrap_doublep_cast, METH_VARARGS, NULL},
-	 { (char *)"doublep_frompointer", _wrap_doublep_frompointer, METH_VARARGS, NULL},
-	 { (char *)"doublep_swigregister", doublep_swigregister, METH_VARARGS, NULL},
-	 { (char *)"new_doubleArray", _wrap_new_doubleArray, METH_VARARGS, NULL},
-	 { (char *)"delete_doubleArray", _wrap_delete_doubleArray, METH_VARARGS, NULL},
-	 { (char *)"doubleArray_getitem", _wrap_doubleArray_getitem, METH_VARARGS, NULL},
-	 { (char *)"doubleArray_setitem", _wrap_doubleArray_setitem, METH_VARARGS, NULL},
-	 { (char *)"new_longArray", _wrap_new_longArray, METH_VARARGS, NULL},
-	 { (char *)"delete_longArray", _wrap_delete_longArray, METH_VARARGS, NULL},
-	 { (char *)"longArray_getitem", _wrap_longArray_getitem, METH_VARARGS, NULL},
-	 { (char *)"longArray_setitem", _wrap_longArray_setitem, METH_VARARGS, NULL},
-	 { (char *)"new_intArray", _wrap_new_intArray, METH_VARARGS, NULL},
-	 { (char *)"delete_intArray", _wrap_delete_intArray, METH_VARARGS, NULL},
-	 { (char *)"intArray_getitem", _wrap_intArray_getitem, METH_VARARGS, NULL},
-	 { (char *)"intArray_setitem", _wrap_intArray_setitem, METH_VARARGS, NULL},
-	 { (char *)"new_stringArray", _wrap_new_stringArray, METH_VARARGS, NULL},
-	 { (char *)"delete_stringArray", _wrap_delete_stringArray, METH_VARARGS, NULL},
-	 { (char *)"stringArray_getitem", _wrap_stringArray_getitem, METH_VARARGS, NULL},
-	 { (char *)"stringArray_setitem", _wrap_stringArray_setitem, METH_VARARGS, NULL},
-	 { (char *)"grib_c_new_from_file", _wrap_grib_c_new_from_file, METH_VARARGS, NULL},
-	 { (char *)"grib_c_new_any_from_file", _wrap_grib_c_new_any_from_file, METH_VARARGS, NULL},
-	 { (char *)"grib_c_new_bufr_from_file", _wrap_grib_c_new_bufr_from_file, METH_VARARGS, NULL},
-	 { (char *)"grib_c_new_gts_from_file", _wrap_grib_c_new_gts_from_file, METH_VARARGS, NULL},
-	 { (char *)"grib_c_new_metar_from_file", _wrap_grib_c_new_metar_from_file, METH_VARARGS, NULL},
-	 { (char *)"grib_c_iterator_new", _wrap_grib_c_iterator_new, METH_VARARGS, NULL},
-	 { (char *)"grib_c_keys_iterator_new", _wrap_grib_c_keys_iterator_new, METH_VARARGS, NULL},
-	 { (char *)"grib_c_new_from_samples", _wrap_grib_c_new_from_samples, METH_VARARGS, NULL},
-	 { (char *)"grib_c_index_new_from_file", _wrap_grib_c_index_new_from_file, METH_VARARGS, NULL},
-	 { (char *)"grib_c_index_add_file", _wrap_grib_c_index_add_file, METH_VARARGS, NULL},
-	 { (char *)"grib_c_new_from_index", _wrap_grib_c_new_from_index, METH_VARARGS, NULL},
-	 { (char *)"grib_c_index_write", _wrap_grib_c_index_write, METH_VARARGS, NULL},
-	 { (char *)"grib_c_index_read", _wrap_grib_c_index_read, METH_VARARGS, NULL},
-	 { (char *)"grib_c_new_from_message", _wrap_grib_c_new_from_message, METH_VARARGS, NULL},
-	 { (char *)"grib_c_count_in_file", _wrap_grib_c_count_in_file, METH_VARARGS, NULL},
-	 { (char *)"grib_c_release", _wrap_grib_c_release, METH_VARARGS, NULL},
-	 { (char *)"grib_c_write", _wrap_grib_c_write, METH_VARARGS, NULL},
-	 { (char *)"grib_c_get_size_long", _wrap_grib_c_get_size_long, METH_VARARGS, NULL},
-	 { (char *)"grib_c_get_string_length", _wrap_grib_c_get_string_length, METH_VARARGS, NULL},
-	 { (char *)"grib_c_clone", _wrap_grib_c_clone, METH_VARARGS, NULL},
-	 { (char *)"grib_c_copy_namespace", _wrap_grib_c_copy_namespace, METH_VARARGS, NULL},
-	 { (char *)"grib_c_get_message_size", _wrap_grib_c_get_message_size, METH_VARARGS, NULL},
-	 { (char *)"grib_c_get_message_offset", _wrap_grib_c_get_message_offset, METH_VARARGS, NULL},
-	 { (char *)"grib_c_get_native_type", _wrap_grib_c_get_native_type, METH_VARARGS, NULL},
-	 { (char *)"grib_c_multi_new", _wrap_grib_c_multi_new, METH_VARARGS, NULL},
-	 { (char *)"grib_c_multi_support_on", _wrap_grib_c_multi_support_on, METH_VARARGS, NULL},
-	 { (char *)"grib_c_multi_write", _wrap_grib_c_multi_write, METH_VARARGS, NULL},
-	 { (char *)"grib_c_multi_support_off", _wrap_grib_c_multi_support_off, METH_VARARGS, NULL},
-	 { (char *)"grib_c_multi_release", _wrap_grib_c_multi_release, METH_VARARGS, NULL},
-	 { (char *)"grib_c_multi_append", _wrap_grib_c_multi_append, METH_VARARGS, NULL},
-	 { (char *)"grib_c_gribex_mode_on", _wrap_grib_c_gribex_mode_on, METH_VARARGS, NULL},
-	 { (char *)"grib_c_gribex_mode_off", _wrap_grib_c_gribex_mode_off, METH_VARARGS, NULL},
-	 { (char *)"grib_c_keys_iterator_next", _wrap_grib_c_keys_iterator_next, METH_VARARGS, NULL},
-	 { (char *)"grib_c_keys_iterator_delete", _wrap_grib_c_keys_iterator_delete, METH_VARARGS, NULL},
-	 { (char *)"grib_c_skip_computed", _wrap_grib_c_skip_computed, METH_VARARGS, NULL},
-	 { (char *)"grib_c_skip_coded", _wrap_grib_c_skip_coded, METH_VARARGS, NULL},
-	 { (char *)"grib_c_skip_edition_specific", _wrap_grib_c_skip_edition_specific, METH_VARARGS, NULL},
-	 { (char *)"grib_c_skip_duplicates", _wrap_grib_c_skip_duplicates, METH_VARARGS, NULL},
-	 { (char *)"grib_c_skip_read_only", _wrap_grib_c_skip_read_only, METH_VARARGS, NULL},
-	 { (char *)"grib_c_skip_function", _wrap_grib_c_skip_function, METH_VARARGS, NULL},
-	 { (char *)"grib_c_keys_iterator_rewind", _wrap_grib_c_keys_iterator_rewind, METH_VARARGS, NULL},
-	 { (char *)"grib_c_keys_iterator_get_name", _wrap_grib_c_keys_iterator_get_name, METH_VARARGS, NULL},
-	 { (char *)"grib_c_index_get_size_long", _wrap_grib_c_index_get_size_long, METH_VARARGS, NULL},
-	 { (char *)"grib_c_index_get_long", _wrap_grib_c_index_get_long, METH_VARARGS, NULL},
-	 { (char *)"grib_c_index_get_real8", _wrap_grib_c_index_get_real8, METH_VARARGS, NULL},
-	 { (char *)"grib_c_index_get_string", _wrap_grib_c_index_get_string, METH_VARARGS, NULL},
-	 { (char *)"grib_c_index_select_long", _wrap_grib_c_index_select_long, METH_VARARGS, NULL},
-	 { (char *)"grib_c_index_select_real8", _wrap_grib_c_index_select_real8, METH_VARARGS, NULL},
-	 { (char *)"grib_c_index_select_string", _wrap_grib_c_index_select_string, METH_VARARGS, NULL},
-	 { (char *)"grib_c_index_release", _wrap_grib_c_index_release, METH_VARARGS, NULL},
-	 { (char *)"grib_c_iterator_delete", _wrap_grib_c_iterator_delete, METH_VARARGS, NULL},
-	 { (char *)"grib_c_iterator_next", _wrap_grib_c_iterator_next, METH_VARARGS, NULL},
-	 { (char *)"grib_c_get_string", _wrap_grib_c_get_string, METH_VARARGS, NULL},
-	 { (char *)"grib_c_get_string_array", _wrap_grib_c_get_string_array, METH_VARARGS, NULL},
-	 { (char *)"grib_c_set_string", _wrap_grib_c_set_string, METH_VARARGS, NULL},
-	 { (char *)"grib_c_get_long", _wrap_grib_c_get_long, METH_VARARGS, NULL},
-	 { (char *)"grib_c_set_long", _wrap_grib_c_set_long, METH_VARARGS, NULL},
-	 { (char *)"grib_c_get_double", _wrap_grib_c_get_double, METH_VARARGS, NULL},
-	 { (char *)"grib_c_set_double", _wrap_grib_c_set_double, METH_VARARGS, NULL},
-	 { (char *)"grib_c_set_real8_array", _wrap_grib_c_set_real8_array, METH_VARARGS, NULL},
-	 { (char *)"grib_c_get_real8_array", _wrap_grib_c_get_real8_array, METH_VARARGS, NULL},
-	 { (char *)"grib_c_get_long_array", _wrap_grib_c_get_long_array, METH_VARARGS, NULL},
-	 { (char *)"grib_c_set_long_array", _wrap_grib_c_set_long_array, METH_VARARGS, NULL},
-	 { (char *)"grib_c_get_real8_element", _wrap_grib_c_get_real8_element, METH_VARARGS, NULL},
-	 { (char *)"grib_c_get_real8_elements", _wrap_grib_c_get_real8_elements, METH_VARARGS, NULL},
-	 { (char *)"grib_c_set_missing", _wrap_grib_c_set_missing, METH_VARARGS, NULL},
-	 { (char *)"grib_c_set_key_vals", _wrap_grib_c_set_key_vals, METH_VARARGS, NULL},
-	 { (char *)"grib_c_is_missing", _wrap_grib_c_is_missing, METH_VARARGS, NULL},
-	 { (char *)"grib_c_is_defined", _wrap_grib_c_is_defined, METH_VARARGS, NULL},
-	 { (char *)"grib_c_find_nearest_single", _wrap_grib_c_find_nearest_single, METH_VARARGS, NULL},
-	 { (char *)"grib_c_find_nearest_four_single", _wrap_grib_c_find_nearest_four_single, METH_VARARGS, NULL},
-	 { (char *)"grib_c_get_message", _wrap_grib_c_get_message, METH_VARARGS, NULL},
-	 { (char *)"grib_c_get_error_string", _wrap_grib_c_get_error_string, METH_VARARGS, NULL},
-	 { (char *)"no_fail_on_wrong_length", _wrap_no_fail_on_wrong_length, METH_VARARGS, NULL},
-	 { (char *)"grib_c_get_api_version", _wrap_grib_c_get_api_version, METH_VARARGS, NULL},
-	 { (char *)"grib_c_gts_header_on", _wrap_grib_c_gts_header_on, METH_VARARGS, NULL},
-	 { (char *)"grib_c_gts_header_off", _wrap_grib_c_gts_header_off, METH_VARARGS, NULL},
-	 { NULL, NULL, 0, NULL }
-};
-
-
-/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
-
-static void *_p_intpTo_p_int(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((int *)  ((intp *) x));
-}
-static void *_p_doublepTo_p_double(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((double *)  ((doublep *) x));
-}
-static void *_p_sizetpTo_p_size_t(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((size_t *)  ((sizetp *) x));
-}
-static void *_p_longpTo_p_long(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((long *)  ((longp *) x));
-}
-static swig_type_info _swigt__p_FILE = {"_p_FILE", "FILE *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_double = {"_p_double", "double *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_doublep = {"_p_doublep", "doublep *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_int = {"_p_int", "int *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_intp = {"_p_intp", "intp *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_long = {"_p_long", "long *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_longp = {"_p_longp", "longp *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_p_char = {"_p_p_char", "char **", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_p_void = {"_p_p_void", "void **", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_size_t = {"_p_size_t", "size_t *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_sizetp = {"_p_sizetp", "sizetp *", 0, 0, (void*)0, 0};
-
-static swig_type_info *swig_type_initial[] = {
-  &_swigt__p_FILE,
-  &_swigt__p_char,
-  &_swigt__p_double,
-  &_swigt__p_doublep,
-  &_swigt__p_int,
-  &_swigt__p_intp,
-  &_swigt__p_long,
-  &_swigt__p_longp,
-  &_swigt__p_p_char,
-  &_swigt__p_p_void,
-  &_swigt__p_size_t,
-  &_swigt__p_sizetp,
-};
-
-static swig_cast_info _swigc__p_FILE[] = {  {&_swigt__p_FILE, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_char[] = {  {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_double[] = {  {&_swigt__p_double, 0, 0, 0},  {&_swigt__p_doublep, _p_doublepTo_p_double, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_doublep[] = {  {&_swigt__p_doublep, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_int[] = {  {&_swigt__p_intp, _p_intpTo_p_int, 0, 0},  {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_intp[] = {  {&_swigt__p_intp, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_long[] = {  {&_swigt__p_long, 0, 0, 0},  {&_swigt__p_longp, _p_longpTo_p_long, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_longp[] = {  {&_swigt__p_longp, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_p_char[] = {  {&_swigt__p_p_char, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_p_void[] = {  {&_swigt__p_p_void, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_size_t[] = {  {&_swigt__p_sizetp, _p_sizetpTo_p_size_t, 0, 0},  {&_swigt__p_size_t, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_sizetp[] = {  {&_swigt__p_sizetp, 0, 0, 0},{0, 0, 0, 0}};
-
-static swig_cast_info *swig_cast_initial[] = {
-  _swigc__p_FILE,
-  _swigc__p_char,
-  _swigc__p_double,
-  _swigc__p_doublep,
-  _swigc__p_int,
-  _swigc__p_intp,
-  _swigc__p_long,
-  _swigc__p_longp,
-  _swigc__p_p_char,
-  _swigc__p_p_void,
-  _swigc__p_size_t,
-  _swigc__p_sizetp,
-};
-
-
-/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
-
-static swig_const_info swig_const_table[] = {
-{0, 0, 0, 0.0, 0, 0}};
-
-#ifdef __cplusplus
-}
-#endif
-/* -----------------------------------------------------------------------------
- * Type initialization:
- * This problem is tough by the requirement that no dynamic 
- * memory is used. Also, since swig_type_info structures store pointers to 
- * swig_cast_info structures and swig_cast_info structures store pointers back
- * to swig_type_info structures, we need some lookup code at initialization. 
- * The idea is that swig generates all the structures that are needed. 
- * The runtime then collects these partially filled structures. 
- * The SWIG_InitializeModule function takes these initial arrays out of 
- * swig_module, and does all the lookup, filling in the swig_module.types
- * array with the correct data and linking the correct swig_cast_info
- * structures together.
- *
- * The generated swig_type_info structures are assigned staticly to an initial 
- * array. We just loop through that array, and handle each type individually.
- * First we lookup if this type has been already loaded, and if so, use the
- * loaded structure instead of the generated one. Then we have to fill in the
- * cast linked list. The cast data is initially stored in something like a
- * two-dimensional array. Each row corresponds to a type (there are the same
- * number of rows as there are in the swig_type_initial array). Each entry in
- * a column is one of the swig_cast_info structures for that type.
- * The cast_initial array is actually an array of arrays, because each row has
- * a variable number of columns. So to actually build the cast linked list,
- * we find the array of casts associated with the type, and loop through it 
- * adding the casts to the list. The one last trick we need to do is making
- * sure the type pointer in the swig_cast_info struct is correct.
- *
- * First off, we lookup the cast->type name to see if it is already loaded. 
- * There are three cases to handle:
- *  1) If the cast->type has already been loaded AND the type we are adding
- *     casting info to has not been loaded (it is in this module), THEN we
- *     replace the cast->type pointer with the type pointer that has already
- *     been loaded.
- *  2) If BOTH types (the one we are adding casting info to, and the 
- *     cast->type) are loaded, THEN the cast info has already been loaded by
- *     the previous module so we just ignore it.
- *  3) Finally, if cast->type has not already been loaded, then we add that
- *     swig_cast_info to the linked list (because the cast->type) pointer will
- *     be correct.
- * ----------------------------------------------------------------------------- */
-
-#ifdef __cplusplus
-extern "C" {
-#if 0
-} /* c-mode */
-#endif
-#endif
-
-#if 0
-#define SWIGRUNTIME_DEBUG
-#endif
-
-
-SWIGRUNTIME void
-SWIG_InitializeModule(void *clientdata) {
-  size_t i;
-  swig_module_info *module_head, *iter;
-  int found, init;
-  
-  clientdata = clientdata;
-  
-  /* check to see if the circular list has been setup, if not, set it up */
-  if (swig_module.next==0) {
-    /* Initialize the swig_module */
-    swig_module.type_initial = swig_type_initial;
-    swig_module.cast_initial = swig_cast_initial;
-    swig_module.next = &swig_module;
-    init = 1;
-  } else {
-    init = 0;
-  }
-  
-  /* Try and load any already created modules */
-  module_head = SWIG_GetModule(clientdata);
-  if (!module_head) {
-    /* This is the first module loaded for this interpreter */
-    /* so set the swig module into the interpreter */
-    SWIG_SetModule(clientdata, &swig_module);
-    module_head = &swig_module;
-  } else {
-    /* the interpreter has loaded a SWIG module, but has it loaded this one? */
-    found=0;
-    iter=module_head;
-    do {
-      if (iter==&swig_module) {
-        found=1;
-        break;
-      }
-      iter=iter->next;
-    } while (iter!= module_head);
-    
-    /* if the is found in the list, then all is done and we may leave */
-    if (found) return;
-    /* otherwise we must add out module into the list */
-    swig_module.next = module_head->next;
-    module_head->next = &swig_module;
-  }
-  
-  /* When multiple interpeters are used, a module could have already been initialized in
-       a different interpreter, but not yet have a pointer in this interpreter.
-       In this case, we do not want to continue adding types... everything should be
-       set up already */
-  if (init == 0) return;
-  
-  /* Now work on filling in swig_module.types */
-#ifdef SWIGRUNTIME_DEBUG
-  printf("SWIG_InitializeModule: size %d\n", swig_module.size);
-#endif
-  for (i = 0; i < swig_module.size; ++i) {
-    swig_type_info *type = 0;
-    swig_type_info *ret;
-    swig_cast_info *cast;
-    
-#ifdef SWIGRUNTIME_DEBUG
-    printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
-#endif
-    
-    /* if there is another module already loaded */
-    if (swig_module.next != &swig_module) {
-      type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name);
-    }
-    if (type) {
-      /* Overwrite clientdata field */
-#ifdef SWIGRUNTIME_DEBUG
-      printf("SWIG_InitializeModule: found type %s\n", type->name);
-#endif
-      if (swig_module.type_initial[i]->clientdata) {
-        type->clientdata = swig_module.type_initial[i]->clientdata;
-#ifdef SWIGRUNTIME_DEBUG
-        printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name);
-#endif
-      }
-    } else {
-      type = swig_module.type_initial[i];
-    }
-    
-    /* Insert casting types */
-    cast = swig_module.cast_initial[i];
-    while (cast->type) {
-      /* Don't need to add information already in the list */
-      ret = 0;
-#ifdef SWIGRUNTIME_DEBUG
-      printf("SWIG_InitializeModule: look cast %s\n", cast->type->name);
-#endif
-      if (swig_module.next != &swig_module) {
-        ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name);
-#ifdef SWIGRUNTIME_DEBUG
-        if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name);
-#endif
-      }
-      if (ret) {
-        if (type == swig_module.type_initial[i]) {
-#ifdef SWIGRUNTIME_DEBUG
-          printf("SWIG_InitializeModule: skip old type %s\n", ret->name);
-#endif
-          cast->type = ret;
-          ret = 0;
-        } else {
-          /* Check for casting already in the list */
-          swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type);
-#ifdef SWIGRUNTIME_DEBUG
-          if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name);
-#endif
-          if (!ocast) ret = 0;
-        }
-      }
-      
-      if (!ret) {
-#ifdef SWIGRUNTIME_DEBUG
-        printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name);
-#endif
-        if (type->cast) {
-          type->cast->prev = cast;
-          cast->next = type->cast;
-        }
-        type->cast = cast;
-      }
-      cast++;
-    }
-    /* Set entry in modules->types array equal to the type */
-    swig_module.types[i] = type;
-  }
-  swig_module.types[i] = 0;
-  
-#ifdef SWIGRUNTIME_DEBUG
-  printf("**** SWIG_InitializeModule: Cast List ******\n");
-  for (i = 0; i < swig_module.size; ++i) {
-    int j = 0;
-    swig_cast_info *cast = swig_module.cast_initial[i];
-    printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
-    while (cast->type) {
-      printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
-      cast++;
-      ++j;
-    }
-    printf("---- Total casts: %d\n",j);
-  }
-  printf("**** SWIG_InitializeModule: Cast List ******\n");
-#endif
-}
-
-/* This function will propagate the clientdata field of type to
-* any new swig_type_info structures that have been added into the list
-* of equivalent types.  It is like calling
-* SWIG_TypeClientData(type, clientdata) a second time.
-*/
-SWIGRUNTIME void
-SWIG_PropagateClientData(void) {
-  size_t i;
-  swig_cast_info *equiv;
-  static int init_run = 0;
-  
-  if (init_run) return;
-  init_run = 1;
-  
-  for (i = 0; i < swig_module.size; i++) {
-    if (swig_module.types[i]->clientdata) {
-      equiv = swig_module.types[i]->cast;
-      while (equiv) {
-        if (!equiv->converter) {
-          if (equiv->type && !equiv->type->clientdata)
-          SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata);
-        }
-        equiv = equiv->next;
-      }
-    }
-  }
-}
-
-#ifdef __cplusplus
-#if 0
-{
-  /* c-mode */
-#endif
-}
-#endif
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-  
-  /* Python-specific SWIG API */
-#define SWIG_newvarlink()                             SWIG_Python_newvarlink()
-#define SWIG_addvarlink(p, name, get_attr, set_attr)  SWIG_Python_addvarlink(p, name, get_attr, set_attr)
-#define SWIG_InstallConstants(d, constants)           SWIG_Python_InstallConstants(d, constants)
-  
-  /* -----------------------------------------------------------------------------
-   * global variable support code.
-   * ----------------------------------------------------------------------------- */
-  
-  typedef struct swig_globalvar {
-    char       *name;                  /* Name of global variable */
-    PyObject *(*get_attr)(void);       /* Return the current value */
-    int       (*set_attr)(PyObject *); /* Set the value */
-    struct swig_globalvar *next;
-  } swig_globalvar;
-  
-  typedef struct swig_varlinkobject {
-    PyObject_HEAD
-    swig_globalvar *vars;
-  } swig_varlinkobject;
-  
-  SWIGINTERN PyObject *
-  swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) {
-#if PY_VERSION_HEX >= 0x03000000
-    return PyUnicode_InternFromString("<Swig global variables>");
-#else
-    return PyString_FromString("<Swig global variables>");
-#endif
-  }
-  
-  SWIGINTERN PyObject *
-  swig_varlink_str(swig_varlinkobject *v) {
-#if PY_VERSION_HEX >= 0x03000000
-    PyObject *str = PyUnicode_InternFromString("(");
-    PyObject *tail;
-    PyObject *joined;
-    swig_globalvar *var;
-    for (var = v->vars; var; var=var->next) {
-      tail = PyUnicode_FromString(var->name);
-      joined = PyUnicode_Concat(str, tail);
-      Py_DecRef(str);
-      Py_DecRef(tail);
-      str = joined;
-      if (var->next) {
-        tail = PyUnicode_InternFromString(", ");
-        joined = PyUnicode_Concat(str, tail);
-        Py_DecRef(str);
-        Py_DecRef(tail);
-        str = joined;
-      }
-    }
-    tail = PyUnicode_InternFromString(")");
-    joined = PyUnicode_Concat(str, tail);
-    Py_DecRef(str);
-    Py_DecRef(tail);
-    str = joined;
-#else
-    PyObject *str = PyString_FromString("(");
-    swig_globalvar *var;
-    for (var = v->vars; var; var=var->next) {
-      PyString_ConcatAndDel(&str,PyString_FromString(var->name));
-      if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", "));
-    }
-    PyString_ConcatAndDel(&str,PyString_FromString(")"));
-#endif
-    return str;
-  }
-  
-  SWIGINTERN int
-  swig_varlink_print(swig_varlinkobject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) {
-    char *tmp;
-    PyObject *str = swig_varlink_str(v);
-    fprintf(fp,"Swig global variables ");
-    fprintf(fp,"%s\n", tmp = SWIG_Python_str_AsChar(str));
-    SWIG_Python_str_DelForPy3(tmp);
-    Py_DECREF(str);
-    return 0;
-  }
-  
-  SWIGINTERN void
-  swig_varlink_dealloc(swig_varlinkobject *v) {
-    swig_globalvar *var = v->vars;
-    while (var) {
-      swig_globalvar *n = var->next;
-      free(var->name);
-      free(var);
-      var = n;
-    }
-  }
-  
-  SWIGINTERN PyObject *
-  swig_varlink_getattr(swig_varlinkobject *v, char *n) {
-    PyObject *res = NULL;
-    swig_globalvar *var = v->vars;
-    while (var) {
-      if (strcmp(var->name,n) == 0) {
-        res = (*var->get_attr)();
-        break;
-      }
-      var = var->next;
-    }
-    if (res == NULL && !PyErr_Occurred()) {
-      PyErr_SetString(PyExc_NameError,"Unknown C global variable");
-    }
-    return res;
-  }
-  
-  SWIGINTERN int
-  swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) {
-    int res = 1;
-    swig_globalvar *var = v->vars;
-    while (var) {
-      if (strcmp(var->name,n) == 0) {
-        res = (*var->set_attr)(p);
-        break;
-      }
-      var = var->next;
-    }
-    if (res == 1 && !PyErr_Occurred()) {
-      PyErr_SetString(PyExc_NameError,"Unknown C global variable");
-    }
-    return res;
-  }
-  
-  SWIGINTERN PyTypeObject*
-  swig_varlink_type(void) {
-    static char varlink__doc__[] = "Swig var link object";
-    static PyTypeObject varlink_type;
-    static int type_init = 0;  
-    if (!type_init) {
-      const PyTypeObject tmp
-      = {
-        /* PyObject header changed in Python 3 */
-#if PY_VERSION_HEX >= 0x03000000
-        PyVarObject_HEAD_INIT(&PyType_Type, 0)
-#else
-        PyObject_HEAD_INIT(NULL)
-        0,                                  /* Number of items in variable part (ob_size) */
-#endif
-        (char *)"swigvarlink",              /* Type name (tp_name) */
-        sizeof(swig_varlinkobject),         /* Basic size (tp_basicsize) */
-        0,                                  /* Itemsize (tp_itemsize) */
-        (destructor) swig_varlink_dealloc,  /* Deallocator (tp_dealloc) */ 
-        (printfunc) swig_varlink_print,     /* Print (tp_print) */
-        (getattrfunc) swig_varlink_getattr, /* get attr (tp_getattr) */
-        (setattrfunc) swig_varlink_setattr, /* Set attr (tp_setattr) */
-        0,                                  /* tp_compare */
-        (reprfunc) swig_varlink_repr,       /* tp_repr */
-        0,                                  /* tp_as_number */
-        0,                                  /* tp_as_sequence */
-        0,                                  /* tp_as_mapping */
-        0,                                  /* tp_hash */
-        0,                                  /* tp_call */
-        (reprfunc) swig_varlink_str,        /* tp_str */
-        0,                                  /* tp_getattro */
-        0,                                  /* tp_setattro */
-        0,                                  /* tp_as_buffer */
-        0,                                  /* tp_flags */
-        varlink__doc__,                     /* tp_doc */
-        0,                                  /* tp_traverse */
-        0,                                  /* tp_clear */
-        0,                                  /* tp_richcompare */
-        0,                                  /* tp_weaklistoffset */
-#if PY_VERSION_HEX >= 0x02020000
-        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
-#endif
-#if PY_VERSION_HEX >= 0x02030000
-        0,                                  /* tp_del */
-#endif
-#ifdef COUNT_ALLOCS
-        0,0,0,0                             /* tp_alloc -> tp_next */
-#endif
-      };
-      varlink_type = tmp;
-      /* for Python 3 we already assigned ob_type in PyVarObject_HEAD_INIT() */
-#if PY_VERSION_HEX < 0x03000000
-      varlink_type.ob_type = &PyType_Type;
-#endif
-      type_init = 1;
-    }
-    return &varlink_type;
-  }
-  
-  /* Create a variable linking object for use later */
-  SWIGINTERN PyObject *
-  SWIG_Python_newvarlink(void) {
-    swig_varlinkobject *result = PyObject_NEW(swig_varlinkobject, swig_varlink_type());
-    if (result) {
-      result->vars = 0;
-    }
-    return ((PyObject*) result);
-  }
-  
-  SWIGINTERN void 
-  SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) {
-    swig_varlinkobject *v = (swig_varlinkobject *) p;
-    swig_globalvar *gv = (swig_globalvar *) malloc(sizeof(swig_globalvar));
-    if (gv) {
-      size_t size = strlen(name)+1;
-      gv->name = (char *)malloc(size);
-      if (gv->name) {
-        strncpy(gv->name,name,size);
-        gv->get_attr = get_attr;
-        gv->set_attr = set_attr;
-        gv->next = v->vars;
-      }
-    }
-    v->vars = gv;
-  }
-  
-  SWIGINTERN PyObject *
-  SWIG_globals(void) {
-    static PyObject *_SWIG_globals = 0; 
-    if (!_SWIG_globals) _SWIG_globals = SWIG_newvarlink();  
-    return _SWIG_globals;
-  }
-  
-  /* -----------------------------------------------------------------------------
-   * constants/methods manipulation
-   * ----------------------------------------------------------------------------- */
-  
-  /* Install Constants */
-  SWIGINTERN void
-  SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) {
-    PyObject *obj = 0;
-    size_t i;
-    for (i = 0; constants[i].type; ++i) {
-      switch(constants[i].type) {
-      case SWIG_PY_POINTER:
-        obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
-        break;
-      case SWIG_PY_BINARY:
-        obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype));
-        break;
-      default:
-        obj = 0;
-        break;
-      }
-      if (obj) {
-        PyDict_SetItemString(d, constants[i].name, obj);
-        Py_DECREF(obj);
-      }
-    }
-  }
-  
-  /* -----------------------------------------------------------------------------*/
-  /* Fix SwigMethods to carry the callback ptrs when needed */
-  /* -----------------------------------------------------------------------------*/
-  
-  SWIGINTERN void
-  SWIG_Python_FixMethods(PyMethodDef *methods,
-    swig_const_info *const_table,
-    swig_type_info **types,
-    swig_type_info **types_initial) {
-    size_t i;
-    for (i = 0; methods[i].ml_name; ++i) {
-      const char *c = methods[i].ml_doc;
-      if (c && (c = strstr(c, "swig_ptr: "))) {
-        int j;
-        swig_const_info *ci = 0;
-        const char *name = c + 10;
-        for (j = 0; const_table[j].type; ++j) {
-          if (strncmp(const_table[j].name, name, 
-              strlen(const_table[j].name)) == 0) {
-            ci = &(const_table[j]);
-            break;
-          }
-        }
-        if (ci) {
-          size_t shift = (ci->ptype) - types;
-          swig_type_info *ty = types_initial[shift];
-          size_t ldoc = (c - methods[i].ml_doc);
-          size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
-          char *ndoc = (char*)malloc(ldoc + lptr + 10);
-          if (ndoc) {
-            char *buff = ndoc;
-            void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0;
-            if (ptr) {
-              strncpy(buff, methods[i].ml_doc, ldoc);
-              buff += ldoc;
-              strncpy(buff, "swig_ptr: ", 10);
-              buff += 10;
-              SWIG_PackVoidPtr(buff, ptr, ty->name, lptr);
-              methods[i].ml_doc = ndoc;
-            }
-          }
-        }
-      }
-    }
-  } 
-  
-#ifdef __cplusplus
-}
-#endif
-
-/* -----------------------------------------------------------------------------*
- *  Partial Init method
- * -----------------------------------------------------------------------------*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-
-SWIGEXPORT 
-#if PY_VERSION_HEX >= 0x03000000
-PyObject*
-#else
-void
-#endif
-SWIG_init(void) {
-  PyObject *m, *d;  
-#if PY_VERSION_HEX >= 0x03000000
-  static struct PyModuleDef SWIG_module = {
-    PyModuleDef_HEAD_INIT,
-    (char *) SWIG_name,
-    NULL,
-    -1,
-    SwigMethods,
-    NULL,
-    NULL,
-    NULL,
-    NULL
-  };
-#endif
-  
-  /* Fix SwigMethods to carry the callback ptrs when needed */
-  SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_type_initial);
-  
-#if PY_VERSION_HEX >= 0x03000000
-  m = PyModule_Create(&SWIG_module);
-#else
-  m = Py_InitModule((char *) SWIG_name, SwigMethods);
-#endif
-  d = PyModule_GetDict(m);
-  
-  SWIG_InitializeModule(0);
-  SWIG_InstallConstants(d,swig_const_table);
-  
-  
-  SWIG_Python_SetConstant(d, "GRIB_SUCCESS",SWIG_From_int((int)(0)));
-  SWIG_Python_SetConstant(d, "GRIB_END_OF_FILE",SWIG_From_int((int)(-1)));
-  SWIG_Python_SetConstant(d, "GRIB_INTERNAL_ERROR",SWIG_From_int((int)(-2)));
-  SWIG_Python_SetConstant(d, "GRIB_BUFFER_TOO_SMALL",SWIG_From_int((int)(-3)));
-  SWIG_Python_SetConstant(d, "GRIB_NOT_IMPLEMENTED",SWIG_From_int((int)(-4)));
-  SWIG_Python_SetConstant(d, "GRIB_7777_NOT_FOUND",SWIG_From_int((int)(-5)));
-  SWIG_Python_SetConstant(d, "GRIB_ARRAY_TOO_SMALL",SWIG_From_int((int)(-6)));
-  SWIG_Python_SetConstant(d, "GRIB_FILE_NOT_FOUND",SWIG_From_int((int)(-7)));
-  SWIG_Python_SetConstant(d, "GRIB_CODE_NOT_FOUND_IN_TABLE",SWIG_From_int((int)(-8)));
-  SWIG_Python_SetConstant(d, "GRIB_WRONG_ARRAY_SIZE",SWIG_From_int((int)(-9)));
-  SWIG_Python_SetConstant(d, "GRIB_NOT_FOUND",SWIG_From_int((int)(-10)));
-  SWIG_Python_SetConstant(d, "GRIB_IO_PROBLEM",SWIG_From_int((int)(-11)));
-  SWIG_Python_SetConstant(d, "GRIB_INVALID_MESSAGE",SWIG_From_int((int)(-12)));
-  SWIG_Python_SetConstant(d, "GRIB_DECODING_ERROR",SWIG_From_int((int)(-13)));
-  SWIG_Python_SetConstant(d, "GRIB_ENCODING_ERROR",SWIG_From_int((int)(-14)));
-  SWIG_Python_SetConstant(d, "GRIB_NO_MORE_IN_SET",SWIG_From_int((int)(-15)));
-  SWIG_Python_SetConstant(d, "GRIB_GEOCALCULUS_PROBLEM",SWIG_From_int((int)(-16)));
-  SWIG_Python_SetConstant(d, "GRIB_OUT_OF_MEMORY",SWIG_From_int((int)(-17)));
-  SWIG_Python_SetConstant(d, "GRIB_READ_ONLY",SWIG_From_int((int)(-18)));
-  SWIG_Python_SetConstant(d, "GRIB_INVALID_ARGUMENT",SWIG_From_int((int)(-19)));
-  SWIG_Python_SetConstant(d, "GRIB_NULL_HANDLE",SWIG_From_int((int)(-20)));
-  SWIG_Python_SetConstant(d, "GRIB_INVALID_SECTION_NUMBER",SWIG_From_int((int)(-21)));
-  SWIG_Python_SetConstant(d, "GRIB_VALUE_CANNOT_BE_MISSING",SWIG_From_int((int)(-22)));
-  SWIG_Python_SetConstant(d, "GRIB_WRONG_LENGTH",SWIG_From_int((int)(-23)));
-  SWIG_Python_SetConstant(d, "GRIB_INVALID_TYPE",SWIG_From_int((int)(-24)));
-  SWIG_Python_SetConstant(d, "GRIB_WRONG_STEP",SWIG_From_int((int)(-25)));
-  SWIG_Python_SetConstant(d, "GRIB_WRONG_STEP_UNIT",SWIG_From_int((int)(-26)));
-  SWIG_Python_SetConstant(d, "GRIB_INVALID_FILE",SWIG_From_int((int)(-27)));
-  SWIG_Python_SetConstant(d, "GRIB_INVALID_GRIB",SWIG_From_int((int)(-28)));
-  SWIG_Python_SetConstant(d, "GRIB_INVALID_INDEX",SWIG_From_int((int)(-29)));
-  SWIG_Python_SetConstant(d, "GRIB_INVALID_ITERATOR",SWIG_From_int((int)(-30)));
-  SWIG_Python_SetConstant(d, "GRIB_INVALID_KEYS_ITERATOR",SWIG_From_int((int)(-31)));
-  SWIG_Python_SetConstant(d, "GRIB_INVALID_NEAREST",SWIG_From_int((int)(-32)));
-  SWIG_Python_SetConstant(d, "GRIB_INVALID_ORDERBY",SWIG_From_int((int)(-33)));
-  SWIG_Python_SetConstant(d, "GRIB_MISSING_KEY",SWIG_From_int((int)(-34)));
-  SWIG_Python_SetConstant(d, "GRIB_OUT_OF_AREA",SWIG_From_int((int)(-35)));
-  SWIG_Python_SetConstant(d, "GRIB_CONCEPT_NO_MATCH",SWIG_From_int((int)(-36)));
-  SWIG_Python_SetConstant(d, "GRIB_HASH_ARRAY_NO_MATCH",SWIG_From_int((int)(-37)));
-  SWIG_Python_SetConstant(d, "GRIB_NO_DEFINITIONS",SWIG_From_int((int)(-38)));
-  SWIG_Python_SetConstant(d, "GRIB_WRONG_TYPE",SWIG_From_int((int)(-39)));
-  SWIG_Python_SetConstant(d, "GRIB_END",SWIG_From_int((int)(-40)));
-  SWIG_Python_SetConstant(d, "GRIB_NO_VALUES",SWIG_From_int((int)(-41)));
-  SWIG_Python_SetConstant(d, "GRIB_WRONG_GRID",SWIG_From_int((int)(-42)));
-  SWIG_Python_SetConstant(d, "GRIB_END_OF_INDEX",SWIG_From_int((int)(-43)));
-  SWIG_Python_SetConstant(d, "GRIB_NULL_INDEX",SWIG_From_int((int)(-44)));
-  SWIG_Python_SetConstant(d, "GRIB_PREMATURE_END_OF_FILE",SWIG_From_int((int)(-45)));
-  SWIG_Python_SetConstant(d, "GRIB_INTERNAL_ARRAY_TOO_SMALL",SWIG_From_int((int)(-46)));
-  SWIG_Python_SetConstant(d, "GRIB_MESSAGE_TOO_LARGE",SWIG_From_int((int)(-47)));
-  SWIG_Python_SetConstant(d, "GRIB_CONSTANT_FIELD",SWIG_From_int((int)(-48)));
-  SWIG_Python_SetConstant(d, "GRIB_SWITCH_NO_MATCH",SWIG_From_int((int)(-49)));
-  SWIG_Python_SetConstant(d, "GRIB_UNDERFLOW",SWIG_From_int((int)(-50)));
-  SWIG_Python_SetConstant(d, "GRIB_MESSAGE_MALFORMED",SWIG_From_int((int)(-51)));
-  SWIG_Python_SetConstant(d, "GRIB_CORRUPTED_INDEX",SWIG_From_int((int)(-52)));
-  SWIG_Python_SetConstant(d, "GRIB_INVALID_BPV",SWIG_From_int((int)(-53)));
-  SWIG_Python_SetConstant(d, "GRIB_DIFFERENT_EDITION",SWIG_From_int((int)(-54)));
-  SWIG_Python_SetConstant(d, "GRIB_VALUE_DIFFERENT",SWIG_From_int((int)(-55)));
-  SWIG_Python_SetConstant(d, "GRIB_INVALID_KEY_VALUE",SWIG_From_int((int)(-56)));
-  SWIG_Python_SetConstant(d, "GRIB_STRING_TOO_SMALL",SWIG_From_int((int)(-57)));
-  SWIG_Python_SetConstant(d, "GRIB_WRONG_CONVERSION",SWIG_From_int((int)(-58)));
-  SWIG_Python_SetConstant(d, "GRIB_MISSING_BUFR_ENTRY",SWIG_From_int((int)(-59)));
-  SWIG_Python_SetConstant(d, "GRIB_NULL_POINTER",SWIG_From_int((int)(-60)));
-  SWIG_Python_SetConstant(d, "GRIB_ATTRIBUTE_CLASH",SWIG_From_int((int)(-61)));
-  SWIG_Python_SetConstant(d, "GRIB_TOO_MANY_ATTRIBUTES",SWIG_From_int((int)(-62)));
-  SWIG_Python_SetConstant(d, "GRIB_ATTRIBUTE_NOT_FOUND",SWIG_From_int((int)(-63)));
-  SWIG_Python_SetConstant(d, "GRIB_UNSUPPORTED_EDITION",SWIG_From_int((int)(-64)));
-#if PY_VERSION_HEX >= 0x03000000
-  return m;
-#else
-  return;
-#endif
-}
-
diff --git a/python/swig_wrap_array.py b/python/swig_wrap_array.py
deleted file mode 100644
index a7ebc5e..0000000
--- a/python/swig_wrap_array.py
+++ /dev/null
@@ -1,611 +0,0 @@
-# This file was automatically generated by SWIG (http://www.swig.org).
-# Version 1.3.40
-#
-# Do not make changes to this file unless you know what you are doing--modify
-# the SWIG interface file instead.
-# This file is compatible with both classic and new-style classes.
-
-from sys import version_info
-if version_info >= (2,6,0):
-    def swig_import_helper():
-        from os.path import dirname
-        import imp
-        fp = None
-        try:
-            fp, pathname, description = imp.find_module('_gribapi_swig', [dirname(__file__)])
-        except ImportError:
-            import _gribapi_swig
-            return _gribapi_swig
-        if fp is not None:
-            try:
-                _mod = imp.load_module('_gribapi_swig', fp, pathname, description)
-            finally:
-                fp.close()
-            return _mod
-    _gribapi_swig = swig_import_helper()
-    del swig_import_helper
-else:
-    import _gribapi_swig
-del version_info
-try:
-    _swig_property = property
-except NameError:
-    pass # Python < 2.2 doesn't have 'property'.
-def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
-    if (name == "thisown"): return self.this.own(value)
-    if (name == "this"):
-        if type(value).__name__ == 'SwigPyObject':
-            self.__dict__[name] = value
-            return
-    method = class_type.__swig_setmethods__.get(name,None)
-    if method: return method(self,value)
-    if (not static) or hasattr(self,name):
-        self.__dict__[name] = value
-    else:
-        raise AttributeError("You cannot add attributes to %s" % self)
-
-def _swig_setattr(self,class_type,name,value):
-    return _swig_setattr_nondynamic(self,class_type,name,value,0)
-
-def _swig_getattr(self,class_type,name):
-    if (name == "thisown"): return self.this.own()
-    method = class_type.__swig_getmethods__.get(name,None)
-    if method: return method(self)
-    raise AttributeError(name)
-
-def _swig_repr(self):
-    try: strthis = "proxy of " + self.this.__repr__()
-    except: strthis = ""
-    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)
-
-try:
-    _object = object
-    _newclass = 1
-except AttributeError:
-    class _object : pass
-    _newclass = 0
-
-
-
-def cdata(*args):
-  return _gribapi_swig.cdata(*args)
-cdata = _gribapi_swig.cdata
-
-def memmove(*args):
-  return _gribapi_swig.memmove(*args)
-memmove = _gribapi_swig.memmove
-GRIB_SUCCESS = _gribapi_swig.GRIB_SUCCESS
-GRIB_END_OF_FILE = _gribapi_swig.GRIB_END_OF_FILE
-GRIB_INTERNAL_ERROR = _gribapi_swig.GRIB_INTERNAL_ERROR
-GRIB_BUFFER_TOO_SMALL = _gribapi_swig.GRIB_BUFFER_TOO_SMALL
-GRIB_NOT_IMPLEMENTED = _gribapi_swig.GRIB_NOT_IMPLEMENTED
-GRIB_7777_NOT_FOUND = _gribapi_swig.GRIB_7777_NOT_FOUND
-GRIB_ARRAY_TOO_SMALL = _gribapi_swig.GRIB_ARRAY_TOO_SMALL
-GRIB_FILE_NOT_FOUND = _gribapi_swig.GRIB_FILE_NOT_FOUND
-GRIB_CODE_NOT_FOUND_IN_TABLE = _gribapi_swig.GRIB_CODE_NOT_FOUND_IN_TABLE
-GRIB_WRONG_ARRAY_SIZE = _gribapi_swig.GRIB_WRONG_ARRAY_SIZE
-GRIB_NOT_FOUND = _gribapi_swig.GRIB_NOT_FOUND
-GRIB_IO_PROBLEM = _gribapi_swig.GRIB_IO_PROBLEM
-GRIB_INVALID_MESSAGE = _gribapi_swig.GRIB_INVALID_MESSAGE
-GRIB_DECODING_ERROR = _gribapi_swig.GRIB_DECODING_ERROR
-GRIB_ENCODING_ERROR = _gribapi_swig.GRIB_ENCODING_ERROR
-GRIB_NO_MORE_IN_SET = _gribapi_swig.GRIB_NO_MORE_IN_SET
-GRIB_GEOCALCULUS_PROBLEM = _gribapi_swig.GRIB_GEOCALCULUS_PROBLEM
-GRIB_OUT_OF_MEMORY = _gribapi_swig.GRIB_OUT_OF_MEMORY
-GRIB_READ_ONLY = _gribapi_swig.GRIB_READ_ONLY
-GRIB_INVALID_ARGUMENT = _gribapi_swig.GRIB_INVALID_ARGUMENT
-GRIB_NULL_HANDLE = _gribapi_swig.GRIB_NULL_HANDLE
-GRIB_INVALID_SECTION_NUMBER = _gribapi_swig.GRIB_INVALID_SECTION_NUMBER
-GRIB_VALUE_CANNOT_BE_MISSING = _gribapi_swig.GRIB_VALUE_CANNOT_BE_MISSING
-GRIB_WRONG_LENGTH = _gribapi_swig.GRIB_WRONG_LENGTH
-GRIB_INVALID_TYPE = _gribapi_swig.GRIB_INVALID_TYPE
-GRIB_WRONG_STEP = _gribapi_swig.GRIB_WRONG_STEP
-GRIB_WRONG_STEP_UNIT = _gribapi_swig.GRIB_WRONG_STEP_UNIT
-GRIB_INVALID_FILE = _gribapi_swig.GRIB_INVALID_FILE
-GRIB_INVALID_GRIB = _gribapi_swig.GRIB_INVALID_GRIB
-GRIB_INVALID_INDEX = _gribapi_swig.GRIB_INVALID_INDEX
-GRIB_INVALID_ITERATOR = _gribapi_swig.GRIB_INVALID_ITERATOR
-GRIB_INVALID_KEYS_ITERATOR = _gribapi_swig.GRIB_INVALID_KEYS_ITERATOR
-GRIB_INVALID_NEAREST = _gribapi_swig.GRIB_INVALID_NEAREST
-GRIB_INVALID_ORDERBY = _gribapi_swig.GRIB_INVALID_ORDERBY
-GRIB_MISSING_KEY = _gribapi_swig.GRIB_MISSING_KEY
-GRIB_OUT_OF_AREA = _gribapi_swig.GRIB_OUT_OF_AREA
-GRIB_CONCEPT_NO_MATCH = _gribapi_swig.GRIB_CONCEPT_NO_MATCH
-GRIB_HASH_ARRAY_NO_MATCH = _gribapi_swig.GRIB_HASH_ARRAY_NO_MATCH
-GRIB_NO_DEFINITIONS = _gribapi_swig.GRIB_NO_DEFINITIONS
-GRIB_WRONG_TYPE = _gribapi_swig.GRIB_WRONG_TYPE
-GRIB_END = _gribapi_swig.GRIB_END
-GRIB_NO_VALUES = _gribapi_swig.GRIB_NO_VALUES
-GRIB_WRONG_GRID = _gribapi_swig.GRIB_WRONG_GRID
-GRIB_END_OF_INDEX = _gribapi_swig.GRIB_END_OF_INDEX
-GRIB_NULL_INDEX = _gribapi_swig.GRIB_NULL_INDEX
-GRIB_PREMATURE_END_OF_FILE = _gribapi_swig.GRIB_PREMATURE_END_OF_FILE
-GRIB_INTERNAL_ARRAY_TOO_SMALL = _gribapi_swig.GRIB_INTERNAL_ARRAY_TOO_SMALL
-GRIB_MESSAGE_TOO_LARGE = _gribapi_swig.GRIB_MESSAGE_TOO_LARGE
-GRIB_CONSTANT_FIELD = _gribapi_swig.GRIB_CONSTANT_FIELD
-GRIB_SWITCH_NO_MATCH = _gribapi_swig.GRIB_SWITCH_NO_MATCH
-GRIB_UNDERFLOW = _gribapi_swig.GRIB_UNDERFLOW
-GRIB_MESSAGE_MALFORMED = _gribapi_swig.GRIB_MESSAGE_MALFORMED
-GRIB_CORRUPTED_INDEX = _gribapi_swig.GRIB_CORRUPTED_INDEX
-GRIB_INVALID_BPV = _gribapi_swig.GRIB_INVALID_BPV
-GRIB_DIFFERENT_EDITION = _gribapi_swig.GRIB_DIFFERENT_EDITION
-GRIB_VALUE_DIFFERENT = _gribapi_swig.GRIB_VALUE_DIFFERENT
-GRIB_INVALID_KEY_VALUE = _gribapi_swig.GRIB_INVALID_KEY_VALUE
-GRIB_STRING_TOO_SMALL = _gribapi_swig.GRIB_STRING_TOO_SMALL
-GRIB_WRONG_CONVERSION = _gribapi_swig.GRIB_WRONG_CONVERSION
-GRIB_MISSING_BUFR_ENTRY = _gribapi_swig.GRIB_MISSING_BUFR_ENTRY
-GRIB_NULL_POINTER = _gribapi_swig.GRIB_NULL_POINTER
-GRIB_ATTRIBUTE_CLASH = _gribapi_swig.GRIB_ATTRIBUTE_CLASH
-GRIB_TOO_MANY_ATTRIBUTES = _gribapi_swig.GRIB_TOO_MANY_ATTRIBUTES
-GRIB_ATTRIBUTE_NOT_FOUND = _gribapi_swig.GRIB_ATTRIBUTE_NOT_FOUND
-GRIB_UNSUPPORTED_EDITION = _gribapi_swig.GRIB_UNSUPPORTED_EDITION
-class intp(_object):
-    __swig_setmethods__ = {}
-    __setattr__ = lambda self, name, value: _swig_setattr(self, intp, name, value)
-    __swig_getmethods__ = {}
-    __getattr__ = lambda self, name: _swig_getattr(self, intp, name)
-    __repr__ = _swig_repr
-    def __init__(self): 
-        this = _gribapi_swig.new_intp()
-        try: self.this.append(this)
-        except: self.this = this
-    __swig_destroy__ = _gribapi_swig.delete_intp
-    __del__ = lambda self : None;
-    def assign(self, *args): return _gribapi_swig.intp_assign(self, *args)
-    def value(self): return _gribapi_swig.intp_value(self)
-    def cast(self): return _gribapi_swig.intp_cast(self)
-    __swig_getmethods__["frompointer"] = lambda x: _gribapi_swig.intp_frompointer
-    if _newclass:frompointer = staticmethod(_gribapi_swig.intp_frompointer)
-intp_swigregister = _gribapi_swig.intp_swigregister
-intp_swigregister(intp)
-
-def intp_frompointer(*args):
-  return _gribapi_swig.intp_frompointer(*args)
-intp_frompointer = _gribapi_swig.intp_frompointer
-
-class sizetp(_object):
-    __swig_setmethods__ = {}
-    __setattr__ = lambda self, name, value: _swig_setattr(self, sizetp, name, value)
-    __swig_getmethods__ = {}
-    __getattr__ = lambda self, name: _swig_getattr(self, sizetp, name)
-    __repr__ = _swig_repr
-    def __init__(self): 
-        this = _gribapi_swig.new_sizetp()
-        try: self.this.append(this)
-        except: self.this = this
-    __swig_destroy__ = _gribapi_swig.delete_sizetp
-    __del__ = lambda self : None;
-    def assign(self, *args): return _gribapi_swig.sizetp_assign(self, *args)
-    def value(self): return _gribapi_swig.sizetp_value(self)
-    def cast(self): return _gribapi_swig.sizetp_cast(self)
-    __swig_getmethods__["frompointer"] = lambda x: _gribapi_swig.sizetp_frompointer
-    if _newclass:frompointer = staticmethod(_gribapi_swig.sizetp_frompointer)
-sizetp_swigregister = _gribapi_swig.sizetp_swigregister
-sizetp_swigregister(sizetp)
-
-def sizetp_frompointer(*args):
-  return _gribapi_swig.sizetp_frompointer(*args)
-sizetp_frompointer = _gribapi_swig.sizetp_frompointer
-
-class longp(_object):
-    __swig_setmethods__ = {}
-    __setattr__ = lambda self, name, value: _swig_setattr(self, longp, name, value)
-    __swig_getmethods__ = {}
-    __getattr__ = lambda self, name: _swig_getattr(self, longp, name)
-    __repr__ = _swig_repr
-    def __init__(self): 
-        this = _gribapi_swig.new_longp()
-        try: self.this.append(this)
-        except: self.this = this
-    __swig_destroy__ = _gribapi_swig.delete_longp
-    __del__ = lambda self : None;
-    def assign(self, *args): return _gribapi_swig.longp_assign(self, *args)
-    def value(self): return _gribapi_swig.longp_value(self)
-    def cast(self): return _gribapi_swig.longp_cast(self)
-    __swig_getmethods__["frompointer"] = lambda x: _gribapi_swig.longp_frompointer
-    if _newclass:frompointer = staticmethod(_gribapi_swig.longp_frompointer)
-longp_swigregister = _gribapi_swig.longp_swigregister
-longp_swigregister(longp)
-
-def longp_frompointer(*args):
-  return _gribapi_swig.longp_frompointer(*args)
-longp_frompointer = _gribapi_swig.longp_frompointer
-
-class doublep(_object):
-    __swig_setmethods__ = {}
-    __setattr__ = lambda self, name, value: _swig_setattr(self, doublep, name, value)
-    __swig_getmethods__ = {}
-    __getattr__ = lambda self, name: _swig_getattr(self, doublep, name)
-    __repr__ = _swig_repr
-    def __init__(self): 
-        this = _gribapi_swig.new_doublep()
-        try: self.this.append(this)
-        except: self.this = this
-    __swig_destroy__ = _gribapi_swig.delete_doublep
-    __del__ = lambda self : None;
-    def assign(self, *args): return _gribapi_swig.doublep_assign(self, *args)
-    def value(self): return _gribapi_swig.doublep_value(self)
-    def cast(self): return _gribapi_swig.doublep_cast(self)
-    __swig_getmethods__["frompointer"] = lambda x: _gribapi_swig.doublep_frompointer
-    if _newclass:frompointer = staticmethod(_gribapi_swig.doublep_frompointer)
-doublep_swigregister = _gribapi_swig.doublep_swigregister
-doublep_swigregister(doublep)
-
-def doublep_frompointer(*args):
-  return _gribapi_swig.doublep_frompointer(*args)
-doublep_frompointer = _gribapi_swig.doublep_frompointer
-
-
-def new_doubleArray(*args):
-  return _gribapi_swig.new_doubleArray(*args)
-new_doubleArray = _gribapi_swig.new_doubleArray
-
-def delete_doubleArray(*args):
-  return _gribapi_swig.delete_doubleArray(*args)
-delete_doubleArray = _gribapi_swig.delete_doubleArray
-
-def doubleArray_getitem(*args):
-  return _gribapi_swig.doubleArray_getitem(*args)
-doubleArray_getitem = _gribapi_swig.doubleArray_getitem
-
-def doubleArray_setitem(*args):
-  return _gribapi_swig.doubleArray_setitem(*args)
-doubleArray_setitem = _gribapi_swig.doubleArray_setitem
-
-def new_longArray(*args):
-  return _gribapi_swig.new_longArray(*args)
-new_longArray = _gribapi_swig.new_longArray
-
-def delete_longArray(*args):
-  return _gribapi_swig.delete_longArray(*args)
-delete_longArray = _gribapi_swig.delete_longArray
-
-def longArray_getitem(*args):
-  return _gribapi_swig.longArray_getitem(*args)
-longArray_getitem = _gribapi_swig.longArray_getitem
-
-def longArray_setitem(*args):
-  return _gribapi_swig.longArray_setitem(*args)
-longArray_setitem = _gribapi_swig.longArray_setitem
-
-def new_intArray(*args):
-  return _gribapi_swig.new_intArray(*args)
-new_intArray = _gribapi_swig.new_intArray
-
-def delete_intArray(*args):
-  return _gribapi_swig.delete_intArray(*args)
-delete_intArray = _gribapi_swig.delete_intArray
-
-def intArray_getitem(*args):
-  return _gribapi_swig.intArray_getitem(*args)
-intArray_getitem = _gribapi_swig.intArray_getitem
-
-def intArray_setitem(*args):
-  return _gribapi_swig.intArray_setitem(*args)
-intArray_setitem = _gribapi_swig.intArray_setitem
-
-def new_stringArray(*args):
-  return _gribapi_swig.new_stringArray(*args)
-new_stringArray = _gribapi_swig.new_stringArray
-
-def delete_stringArray(*args):
-  return _gribapi_swig.delete_stringArray(*args)
-delete_stringArray = _gribapi_swig.delete_stringArray
-
-def stringArray_getitem(*args):
-  return _gribapi_swig.stringArray_getitem(*args)
-stringArray_getitem = _gribapi_swig.stringArray_getitem
-
-def stringArray_setitem(*args):
-  return _gribapi_swig.stringArray_setitem(*args)
-stringArray_setitem = _gribapi_swig.stringArray_setitem
-
-def grib_c_new_from_file(*args):
-  return _gribapi_swig.grib_c_new_from_file(*args)
-grib_c_new_from_file = _gribapi_swig.grib_c_new_from_file
-
-def grib_c_new_any_from_file(*args):
-  return _gribapi_swig.grib_c_new_any_from_file(*args)
-grib_c_new_any_from_file = _gribapi_swig.grib_c_new_any_from_file
-
-def grib_c_new_bufr_from_file(*args):
-  return _gribapi_swig.grib_c_new_bufr_from_file(*args)
-grib_c_new_bufr_from_file = _gribapi_swig.grib_c_new_bufr_from_file
-
-def grib_c_new_gts_from_file(*args):
-  return _gribapi_swig.grib_c_new_gts_from_file(*args)
-grib_c_new_gts_from_file = _gribapi_swig.grib_c_new_gts_from_file
-
-def grib_c_new_metar_from_file(*args):
-  return _gribapi_swig.grib_c_new_metar_from_file(*args)
-grib_c_new_metar_from_file = _gribapi_swig.grib_c_new_metar_from_file
-
-def grib_c_iterator_new(*args):
-  return _gribapi_swig.grib_c_iterator_new(*args)
-grib_c_iterator_new = _gribapi_swig.grib_c_iterator_new
-
-def grib_c_keys_iterator_new(*args):
-  return _gribapi_swig.grib_c_keys_iterator_new(*args)
-grib_c_keys_iterator_new = _gribapi_swig.grib_c_keys_iterator_new
-
-def grib_c_new_from_samples(*args):
-  return _gribapi_swig.grib_c_new_from_samples(*args)
-grib_c_new_from_samples = _gribapi_swig.grib_c_new_from_samples
-
-def grib_c_index_new_from_file(*args):
-  return _gribapi_swig.grib_c_index_new_from_file(*args)
-grib_c_index_new_from_file = _gribapi_swig.grib_c_index_new_from_file
-
-def grib_c_index_add_file(*args):
-  return _gribapi_swig.grib_c_index_add_file(*args)
-grib_c_index_add_file = _gribapi_swig.grib_c_index_add_file
-
-def grib_c_new_from_index(*args):
-  return _gribapi_swig.grib_c_new_from_index(*args)
-grib_c_new_from_index = _gribapi_swig.grib_c_new_from_index
-
-def grib_c_index_write(*args):
-  return _gribapi_swig.grib_c_index_write(*args)
-grib_c_index_write = _gribapi_swig.grib_c_index_write
-
-def grib_c_index_read(*args):
-  return _gribapi_swig.grib_c_index_read(*args)
-grib_c_index_read = _gribapi_swig.grib_c_index_read
-
-def grib_c_new_from_message(*args):
-  return _gribapi_swig.grib_c_new_from_message(*args)
-grib_c_new_from_message = _gribapi_swig.grib_c_new_from_message
-
-def grib_c_count_in_file(*args):
-  return _gribapi_swig.grib_c_count_in_file(*args)
-grib_c_count_in_file = _gribapi_swig.grib_c_count_in_file
-
-def grib_c_release(*args):
-  return _gribapi_swig.grib_c_release(*args)
-grib_c_release = _gribapi_swig.grib_c_release
-
-def grib_c_write(*args):
-  return _gribapi_swig.grib_c_write(*args)
-grib_c_write = _gribapi_swig.grib_c_write
-
-def grib_c_get_size_long(*args):
-  return _gribapi_swig.grib_c_get_size_long(*args)
-grib_c_get_size_long = _gribapi_swig.grib_c_get_size_long
-
-def grib_c_get_string_length(*args):
-  return _gribapi_swig.grib_c_get_string_length(*args)
-grib_c_get_string_length = _gribapi_swig.grib_c_get_string_length
-
-def grib_c_clone(*args):
-  return _gribapi_swig.grib_c_clone(*args)
-grib_c_clone = _gribapi_swig.grib_c_clone
-
-def grib_c_copy_namespace(*args):
-  return _gribapi_swig.grib_c_copy_namespace(*args)
-grib_c_copy_namespace = _gribapi_swig.grib_c_copy_namespace
-
-def grib_c_get_message_size(*args):
-  return _gribapi_swig.grib_c_get_message_size(*args)
-grib_c_get_message_size = _gribapi_swig.grib_c_get_message_size
-
-def grib_c_get_message_offset(*args):
-  return _gribapi_swig.grib_c_get_message_offset(*args)
-grib_c_get_message_offset = _gribapi_swig.grib_c_get_message_offset
-
-def grib_c_get_native_type(*args):
-  return _gribapi_swig.grib_c_get_native_type(*args)
-grib_c_get_native_type = _gribapi_swig.grib_c_get_native_type
-
-def grib_c_multi_new():
-  return _gribapi_swig.grib_c_multi_new()
-grib_c_multi_new = _gribapi_swig.grib_c_multi_new
-
-def grib_c_multi_support_on():
-  return _gribapi_swig.grib_c_multi_support_on()
-grib_c_multi_support_on = _gribapi_swig.grib_c_multi_support_on
-
-def grib_c_multi_write(*args):
-  return _gribapi_swig.grib_c_multi_write(*args)
-grib_c_multi_write = _gribapi_swig.grib_c_multi_write
-
-def grib_c_multi_support_off():
-  return _gribapi_swig.grib_c_multi_support_off()
-grib_c_multi_support_off = _gribapi_swig.grib_c_multi_support_off
-
-def grib_c_multi_release(*args):
-  return _gribapi_swig.grib_c_multi_release(*args)
-grib_c_multi_release = _gribapi_swig.grib_c_multi_release
-
-def grib_c_multi_append(*args):
-  return _gribapi_swig.grib_c_multi_append(*args)
-grib_c_multi_append = _gribapi_swig.grib_c_multi_append
-
-def grib_c_gribex_mode_on():
-  return _gribapi_swig.grib_c_gribex_mode_on()
-grib_c_gribex_mode_on = _gribapi_swig.grib_c_gribex_mode_on
-
-def grib_c_gribex_mode_off():
-  return _gribapi_swig.grib_c_gribex_mode_off()
-grib_c_gribex_mode_off = _gribapi_swig.grib_c_gribex_mode_off
-
-def grib_c_keys_iterator_next(*args):
-  return _gribapi_swig.grib_c_keys_iterator_next(*args)
-grib_c_keys_iterator_next = _gribapi_swig.grib_c_keys_iterator_next
-
-def grib_c_keys_iterator_delete(*args):
-  return _gribapi_swig.grib_c_keys_iterator_delete(*args)
-grib_c_keys_iterator_delete = _gribapi_swig.grib_c_keys_iterator_delete
-
-def grib_c_skip_computed(*args):
-  return _gribapi_swig.grib_c_skip_computed(*args)
-grib_c_skip_computed = _gribapi_swig.grib_c_skip_computed
-
-def grib_c_skip_coded(*args):
-  return _gribapi_swig.grib_c_skip_coded(*args)
-grib_c_skip_coded = _gribapi_swig.grib_c_skip_coded
-
-def grib_c_skip_edition_specific(*args):
-  return _gribapi_swig.grib_c_skip_edition_specific(*args)
-grib_c_skip_edition_specific = _gribapi_swig.grib_c_skip_edition_specific
-
-def grib_c_skip_duplicates(*args):
-  return _gribapi_swig.grib_c_skip_duplicates(*args)
-grib_c_skip_duplicates = _gribapi_swig.grib_c_skip_duplicates
-
-def grib_c_skip_read_only(*args):
-  return _gribapi_swig.grib_c_skip_read_only(*args)
-grib_c_skip_read_only = _gribapi_swig.grib_c_skip_read_only
-
-def grib_c_skip_function(*args):
-  return _gribapi_swig.grib_c_skip_function(*args)
-grib_c_skip_function = _gribapi_swig.grib_c_skip_function
-
-def grib_c_keys_iterator_rewind(*args):
-  return _gribapi_swig.grib_c_keys_iterator_rewind(*args)
-grib_c_keys_iterator_rewind = _gribapi_swig.grib_c_keys_iterator_rewind
-
-def grib_c_keys_iterator_get_name(*args):
-  return _gribapi_swig.grib_c_keys_iterator_get_name(*args)
-grib_c_keys_iterator_get_name = _gribapi_swig.grib_c_keys_iterator_get_name
-
-def grib_c_index_get_size_long(*args):
-  return _gribapi_swig.grib_c_index_get_size_long(*args)
-grib_c_index_get_size_long = _gribapi_swig.grib_c_index_get_size_long
-
-def grib_c_index_get_long(*args):
-  return _gribapi_swig.grib_c_index_get_long(*args)
-grib_c_index_get_long = _gribapi_swig.grib_c_index_get_long
-
-def grib_c_index_get_real8(*args):
-  return _gribapi_swig.grib_c_index_get_real8(*args)
-grib_c_index_get_real8 = _gribapi_swig.grib_c_index_get_real8
-
-def grib_c_index_get_string(*args):
-  return _gribapi_swig.grib_c_index_get_string(*args)
-grib_c_index_get_string = _gribapi_swig.grib_c_index_get_string
-
-def grib_c_index_select_long(*args):
-  return _gribapi_swig.grib_c_index_select_long(*args)
-grib_c_index_select_long = _gribapi_swig.grib_c_index_select_long
-
-def grib_c_index_select_real8(*args):
-  return _gribapi_swig.grib_c_index_select_real8(*args)
-grib_c_index_select_real8 = _gribapi_swig.grib_c_index_select_real8
-
-def grib_c_index_select_string(*args):
-  return _gribapi_swig.grib_c_index_select_string(*args)
-grib_c_index_select_string = _gribapi_swig.grib_c_index_select_string
-
-def grib_c_index_release(*args):
-  return _gribapi_swig.grib_c_index_release(*args)
-grib_c_index_release = _gribapi_swig.grib_c_index_release
-
-def grib_c_iterator_delete(*args):
-  return _gribapi_swig.grib_c_iterator_delete(*args)
-grib_c_iterator_delete = _gribapi_swig.grib_c_iterator_delete
-
-def grib_c_iterator_next(*args):
-  return _gribapi_swig.grib_c_iterator_next(*args)
-grib_c_iterator_next = _gribapi_swig.grib_c_iterator_next
-
-def grib_c_get_string(*args):
-  return _gribapi_swig.grib_c_get_string(*args)
-grib_c_get_string = _gribapi_swig.grib_c_get_string
-
-def grib_c_get_string_array(*args):
-  return _gribapi_swig.grib_c_get_string_array(*args)
-grib_c_get_string_array = _gribapi_swig.grib_c_get_string_array
-
-def grib_c_set_string(*args):
-  return _gribapi_swig.grib_c_set_string(*args)
-grib_c_set_string = _gribapi_swig.grib_c_set_string
-
-def grib_c_get_long(*args):
-  return _gribapi_swig.grib_c_get_long(*args)
-grib_c_get_long = _gribapi_swig.grib_c_get_long
-
-def grib_c_set_long(*args):
-  return _gribapi_swig.grib_c_set_long(*args)
-grib_c_set_long = _gribapi_swig.grib_c_set_long
-
-def grib_c_get_double(*args):
-  return _gribapi_swig.grib_c_get_double(*args)
-grib_c_get_double = _gribapi_swig.grib_c_get_double
-
-def grib_c_set_double(*args):
-  return _gribapi_swig.grib_c_set_double(*args)
-grib_c_set_double = _gribapi_swig.grib_c_set_double
-
-def grib_c_set_real8_array(*args):
-  return _gribapi_swig.grib_c_set_real8_array(*args)
-grib_c_set_real8_array = _gribapi_swig.grib_c_set_real8_array
-
-def grib_c_get_real8_array(*args):
-  return _gribapi_swig.grib_c_get_real8_array(*args)
-grib_c_get_real8_array = _gribapi_swig.grib_c_get_real8_array
-
-def grib_c_get_long_array(*args):
-  return _gribapi_swig.grib_c_get_long_array(*args)
-grib_c_get_long_array = _gribapi_swig.grib_c_get_long_array
-
-def grib_c_set_long_array(*args):
-  return _gribapi_swig.grib_c_set_long_array(*args)
-grib_c_set_long_array = _gribapi_swig.grib_c_set_long_array
-
-def grib_c_get_real8_element(*args):
-  return _gribapi_swig.grib_c_get_real8_element(*args)
-grib_c_get_real8_element = _gribapi_swig.grib_c_get_real8_element
-
-def grib_c_get_real8_elements(*args):
-  return _gribapi_swig.grib_c_get_real8_elements(*args)
-grib_c_get_real8_elements = _gribapi_swig.grib_c_get_real8_elements
-
-def grib_c_set_missing(*args):
-  return _gribapi_swig.grib_c_set_missing(*args)
-grib_c_set_missing = _gribapi_swig.grib_c_set_missing
-
-def grib_c_set_key_vals(*args):
-  return _gribapi_swig.grib_c_set_key_vals(*args)
-grib_c_set_key_vals = _gribapi_swig.grib_c_set_key_vals
-
-def grib_c_is_missing(*args):
-  return _gribapi_swig.grib_c_is_missing(*args)
-grib_c_is_missing = _gribapi_swig.grib_c_is_missing
-
-def grib_c_is_defined(*args):
-  return _gribapi_swig.grib_c_is_defined(*args)
-grib_c_is_defined = _gribapi_swig.grib_c_is_defined
-
-def grib_c_find_nearest_single(*args):
-  return _gribapi_swig.grib_c_find_nearest_single(*args)
-grib_c_find_nearest_single = _gribapi_swig.grib_c_find_nearest_single
-
-def grib_c_find_nearest_four_single(*args):
-  return _gribapi_swig.grib_c_find_nearest_four_single(*args)
-grib_c_find_nearest_four_single = _gribapi_swig.grib_c_find_nearest_four_single
-
-def grib_c_get_message(*args):
-  return _gribapi_swig.grib_c_get_message(*args)
-grib_c_get_message = _gribapi_swig.grib_c_get_message
-
-def grib_c_get_error_string(*args):
-  return _gribapi_swig.grib_c_get_error_string(*args)
-grib_c_get_error_string = _gribapi_swig.grib_c_get_error_string
-
-def no_fail_on_wrong_length(*args):
-  return _gribapi_swig.no_fail_on_wrong_length(*args)
-no_fail_on_wrong_length = _gribapi_swig.no_fail_on_wrong_length
-
-def grib_c_get_api_version():
-  return _gribapi_swig.grib_c_get_api_version()
-grib_c_get_api_version = _gribapi_swig.grib_c_get_api_version
-
-def grib_c_gts_header_on():
-  return _gribapi_swig.grib_c_gts_header_on()
-grib_c_gts_header_on = _gribapi_swig.grib_c_gts_header_on
-
-def grib_c_gts_header_off():
-  return _gribapi_swig.grib_c_gts_header_off()
-grib_c_gts_header_off = _gribapi_swig.grib_c_gts_header_off
-
-
diff --git a/python/swig_wrap_numpy.c b/python/swig_wrap_numpy.c
index 1a1f531..ce2dc6b 100644
--- a/python/swig_wrap_numpy.c
+++ b/python/swig_wrap_numpy.c
@@ -2923,7 +2923,7 @@ SWIG_From_int  (int value)
 
 typedef int intp;
 
-SWIGINTERN intp *new_intp(){
+SWIGINTERN intp *new_intp(void){
     return (int *)malloc(sizeof(int));
   }
 SWIGINTERN void delete_intp(intp *self){
@@ -3009,7 +3009,7 @@ SWIGINTERN intp *intp_frompointer(int *t){
 
 typedef size_t sizetp;
 
-SWIGINTERN sizetp *new_sizetp(){
+SWIGINTERN sizetp *new_sizetp(void){
     return (size_t *)malloc(sizeof(size_t));
   }
 SWIGINTERN void delete_sizetp(sizetp *self){
@@ -3045,7 +3045,7 @@ SWIGINTERN sizetp *sizetp_frompointer(size_t *t){
 
 typedef long longp;
 
-SWIGINTERN longp *new_longp(){
+SWIGINTERN longp *new_longp(void){
     return (long *)malloc(sizeof(long));
   }
 SWIGINTERN void delete_longp(longp *self){
@@ -3066,7 +3066,7 @@ SWIGINTERN longp *longp_frompointer(long *t){
 
 typedef double doublep;
 
-SWIGINTERN doublep *new_doublep(){
+SWIGINTERN doublep *new_doublep(void){
     return (double *)malloc(sizeof(double));
   }
 SWIGINTERN void delete_doublep(doublep *self){
@@ -3238,9 +3238,9 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
 
 
 
-void with_numpy() {
-    return;
-}
+//void with_numpy() {
+//    return;
+//}
 int grib_set_double_ndarray(int* gid, char* key, double* dpin_val, int dpin_val_dim1) {
     return grib_c_set_real8_array(gid,key,dpin_val,&dpin_val_dim1);
 }
@@ -5122,7 +5122,52 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_grib_c_new_from_samples(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_grib_c_grib_new_from_samples(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  int *arg1 = (int *) 0 ;
+  char *arg2 = (char *) 0 ;
+  int temp1 ;
+  int res1 = 0 ;
+  int res2 ;
+  char *buf2 = 0 ;
+  int alloc2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  int result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_grib_new_from_samples",&obj0,&obj1)) SWIG_fail;
+  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
+    int val; 
+    int ecode = SWIG_AsVal_int(obj0, &val);
+    if (!SWIG_IsOK(ecode)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_grib_new_from_samples" "', argument " "1"" of type '" "int""'");
+    }
+    temp1 = (int)(val);
+    arg1 = &temp1;
+    res1 = SWIG_AddTmpMask(ecode);
+  }
+  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_grib_new_from_samples" "', argument " "2"" of type '" "char *""'");
+  }
+  arg2 = (char *)(buf2);
+  result = (int)grib_c_grib_new_from_samples(arg1,arg2);
+  resultobj = SWIG_From_int((int)(result));
+  if (SWIG_IsTmpObj(res1)) {
+    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg1)));
+  } else {
+    int new_flags = SWIG_IsNewObj(res1) ? (SWIG_POINTER_OWN |  0 ) :  0 ;
+    resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg1), SWIGTYPE_p_int, new_flags));
+  }
+  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
+  return resultobj;
+fail:
+  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_grib_c_bufr_new_from_samples(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   int *arg1 = (int *) 0 ;
   char *arg2 = (char *) 0 ;
@@ -5135,12 +5180,12 @@ SWIGINTERN PyObject *_wrap_grib_c_new_from_samples(PyObject *SWIGUNUSEDPARM(self
   PyObject * obj1 = 0 ;
   int result;
   
-  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_new_from_samples",&obj0,&obj1)) SWIG_fail;
+  if (!PyArg_ParseTuple(args,(char *)"OO:grib_c_bufr_new_from_samples",&obj0,&obj1)) SWIG_fail;
   if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
     int val; 
     int ecode = SWIG_AsVal_int(obj0, &val);
     if (!SWIG_IsOK(ecode)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_new_from_samples" "', argument " "1"" of type '" "int""'");
+      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_bufr_new_from_samples" "', argument " "1"" of type '" "int""'");
     }
     temp1 = (int)(val);
     arg1 = &temp1;
@@ -5148,10 +5193,10 @@ SWIGINTERN PyObject *_wrap_grib_c_new_from_samples(PyObject *SWIGUNUSEDPARM(self
   }
   res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_new_from_samples" "', argument " "2"" of type '" "char *""'");
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_bufr_new_from_samples" "', argument " "2"" of type '" "char *""'");
   }
   arg2 = (char *)(buf2);
-  result = (int)grib_c_new_from_samples(arg1,arg2);
+  result = (int)grib_c_bufr_new_from_samples(arg1,arg2);
   resultobj = SWIG_From_int((int)(result));
   if (SWIG_IsTmpObj(res1)) {
     resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg1)));
@@ -7873,14 +7918,73 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_with_numpy(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_grib_c_set_string_array(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
+  int *arg1 = (int *) 0 ;
+  char *arg2 = (char *) 0 ;
+  char **arg3 = (char **) 0 ;
+  int temp1 ;
+  int res1 = 0 ;
+  int res2 ;
+  char *buf2 = 0 ;
+  int alloc2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  PyObject * obj2 = 0 ;
+  int result;
   
-  if (!PyArg_ParseTuple(args,(char *)":with_numpy")) SWIG_fail;
-  with_numpy();
-  resultobj = SWIG_Py_Void();
+  if (!PyArg_ParseTuple(args,(char *)"OOO:grib_c_set_string_array",&obj0,&obj1,&obj2)) SWIG_fail;
+  if (!(SWIG_IsOK((res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1),SWIGTYPE_p_int,0))))) {
+    int val; 
+    int ecode = SWIG_AsVal_int(obj0, &val);
+    if (!SWIG_IsOK(ecode)) {
+      SWIG_exception_fail(SWIG_ArgError(ecode), "in method '" "grib_c_set_string_array" "', argument " "1"" of type '" "int""'");
+    }
+    temp1 = (int)(val);
+    arg1 = &temp1;
+    res1 = SWIG_AddTmpMask(ecode);
+  }
+  res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "grib_c_set_string_array" "', argument " "2"" of type '" "char *""'");
+  }
+  arg2 = (char *)(buf2);
+  {
+    /* Check if is a list */
+    if (PyList_Check(obj2)) {
+      int size = PyList_Size(obj2);
+      int i = 0;
+      arg3 = (char **) malloc((size+1)*sizeof(char *));
+      for (i = 0; i < size; i++) {
+        PyObject *o = PyList_GetItem(obj2,i);
+        if (PyString_Check(o))
+        arg3[i] = PyString_AsString(PyList_GetItem(obj2,i));
+        else {
+          PyErr_SetString(PyExc_TypeError,"list must contain strings");
+          free(arg3);
+          return NULL;
+        }
+      }
+      arg3[i] = 0;  /* Last entry set to NULL */
+    } else {
+      PyErr_SetString(PyExc_TypeError,"not a list");
+      return NULL;
+    }
+  }
+  result = (int)grib_c_set_string_array(arg1,arg2,(char const **)arg3);
+  resultobj = SWIG_From_int((int)(result));
+  if (SWIG_IsNewObj(res1)) free((char*)arg1);
+  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
+  {
+    free((char *) arg3);
+  }
   return resultobj;
 fail:
+  if (SWIG_IsNewObj(res1)) free((char*)arg1);
+  if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
+  {
+    free((char *) arg3);
+  }
   return NULL;
 }
 
@@ -8631,6 +8735,54 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_grib_c_set_definitions_path(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  char *arg1 = (char *) 0 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  PyObject * obj0 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_set_definitions_path",&obj0)) SWIG_fail;
+  res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "grib_c_set_definitions_path" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  grib_c_set_definitions_path((char const *)arg1);
+  resultobj = SWIG_Py_Void();
+  if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
+  return resultobj;
+fail:
+  if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_grib_c_set_samples_path(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  char *arg1 = (char *) 0 ;
+  int res1 ;
+  char *buf1 = 0 ;
+  int alloc1 = 0 ;
+  PyObject * obj0 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:grib_c_set_samples_path",&obj0)) SWIG_fail;
+  res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "grib_c_set_samples_path" "', argument " "1"" of type '" "char const *""'");
+  }
+  arg1 = (char *)(buf1);
+  grib_c_set_samples_path((char const *)arg1);
+  resultobj = SWIG_Py_Void();
+  if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
+  return resultobj;
+fail:
+  if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
+  return NULL;
+}
+
+
 static PyMethodDef SwigMethods[] = {
 	 { (char *)"SWIG_PyInstanceMethod_New", (PyCFunction)SWIG_PyInstanceMethod_New, METH_O, NULL},
 	 { (char *)"cdata", _wrap_cdata, METH_VARARGS, NULL},
@@ -8686,7 +8838,8 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"grib_c_new_metar_from_file", _wrap_grib_c_new_metar_from_file, METH_VARARGS, NULL},
 	 { (char *)"grib_c_iterator_new", _wrap_grib_c_iterator_new, METH_VARARGS, NULL},
 	 { (char *)"grib_c_keys_iterator_new", _wrap_grib_c_keys_iterator_new, METH_VARARGS, NULL},
-	 { (char *)"grib_c_new_from_samples", _wrap_grib_c_new_from_samples, METH_VARARGS, NULL},
+	 { (char *)"grib_c_grib_new_from_samples", _wrap_grib_c_grib_new_from_samples, METH_VARARGS, NULL},
+	 { (char *)"grib_c_bufr_new_from_samples", _wrap_grib_c_bufr_new_from_samples, METH_VARARGS, NULL},
 	 { (char *)"grib_c_index_new_from_file", _wrap_grib_c_index_new_from_file, METH_VARARGS, NULL},
 	 { (char *)"grib_c_index_add_file", _wrap_grib_c_index_add_file, METH_VARARGS, NULL},
 	 { (char *)"grib_c_new_from_index", _wrap_grib_c_new_from_index, METH_VARARGS, NULL},
@@ -8748,7 +8901,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"grib_c_set_key_vals", _wrap_grib_c_set_key_vals, METH_VARARGS, NULL},
 	 { (char *)"grib_c_is_missing", _wrap_grib_c_is_missing, METH_VARARGS, NULL},
 	 { (char *)"grib_c_is_defined", _wrap_grib_c_is_defined, METH_VARARGS, NULL},
-	 { (char *)"with_numpy", _wrap_with_numpy, METH_VARARGS, NULL},
+	 { (char *)"grib_c_set_string_array", _wrap_grib_c_set_string_array, METH_VARARGS, NULL},
 	 { (char *)"grib_set_double_ndarray", _wrap_grib_set_double_ndarray, METH_VARARGS, NULL},
 	 { (char *)"grib_set_long_ndarray", _wrap_grib_set_long_ndarray, METH_VARARGS, NULL},
 	 { (char *)"grib_get_double_ndarray", _wrap_grib_get_double_ndarray, METH_VARARGS, NULL},
@@ -8762,6 +8915,8 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"grib_c_get_api_version", _wrap_grib_c_get_api_version, METH_VARARGS, NULL},
 	 { (char *)"grib_c_gts_header_on", _wrap_grib_c_gts_header_on, METH_VARARGS, NULL},
 	 { (char *)"grib_c_gts_header_off", _wrap_grib_c_gts_header_off, METH_VARARGS, NULL},
+	 { (char *)"grib_c_set_definitions_path", _wrap_grib_c_set_definitions_path, METH_VARARGS, NULL},
+	 { (char *)"grib_c_set_samples_path", _wrap_grib_c_set_samples_path, METH_VARARGS, NULL},
 	 { NULL, NULL, 0, NULL }
 };
 
@@ -9492,6 +9647,8 @@ SWIG_init(void) {
   SWIG_Python_SetConstant(d, "GRIB_TOO_MANY_ATTRIBUTES",SWIG_From_int((int)(-62)));
   SWIG_Python_SetConstant(d, "GRIB_ATTRIBUTE_NOT_FOUND",SWIG_From_int((int)(-63)));
   SWIG_Python_SetConstant(d, "GRIB_UNSUPPORTED_EDITION",SWIG_From_int((int)(-64)));
+  SWIG_Python_SetConstant(d, "GRIB_OUT_OF_RANGE",SWIG_From_int((int)(-65)));
+  SWIG_Python_SetConstant(d, "GRIB_WRONG_BITMAP_SIZE",SWIG_From_int((int)(-66)));
   
   import_array();
   
diff --git a/python/swig_wrap_numpy.py b/python/swig_wrap_numpy.py
index d41752f..7ddb569 100644
--- a/python/swig_wrap_numpy.py
+++ b/python/swig_wrap_numpy.py
@@ -139,6 +139,8 @@ GRIB_ATTRIBUTE_CLASH = _gribapi_swig.GRIB_ATTRIBUTE_CLASH
 GRIB_TOO_MANY_ATTRIBUTES = _gribapi_swig.GRIB_TOO_MANY_ATTRIBUTES
 GRIB_ATTRIBUTE_NOT_FOUND = _gribapi_swig.GRIB_ATTRIBUTE_NOT_FOUND
 GRIB_UNSUPPORTED_EDITION = _gribapi_swig.GRIB_UNSUPPORTED_EDITION
+GRIB_OUT_OF_RANGE = _gribapi_swig.GRIB_OUT_OF_RANGE
+GRIB_WRONG_BITMAP_SIZE = _gribapi_swig.GRIB_WRONG_BITMAP_SIZE
 class intp(_object):
     __swig_setmethods__ = {}
     __setattr__ = lambda self, name, value: _swig_setattr(self, intp, name, value)
@@ -328,9 +330,13 @@ def grib_c_keys_iterator_new(*args):
   return _gribapi_swig.grib_c_keys_iterator_new(*args)
 grib_c_keys_iterator_new = _gribapi_swig.grib_c_keys_iterator_new
 
-def grib_c_new_from_samples(*args):
-  return _gribapi_swig.grib_c_new_from_samples(*args)
-grib_c_new_from_samples = _gribapi_swig.grib_c_new_from_samples
+def grib_c_grib_new_from_samples(*args):
+  return _gribapi_swig.grib_c_grib_new_from_samples(*args)
+grib_c_grib_new_from_samples = _gribapi_swig.grib_c_grib_new_from_samples
+
+def grib_c_bufr_new_from_samples(*args):
+  return _gribapi_swig.grib_c_bufr_new_from_samples(*args)
+grib_c_bufr_new_from_samples = _gribapi_swig.grib_c_bufr_new_from_samples
 
 def grib_c_index_new_from_file(*args):
   return _gribapi_swig.grib_c_index_new_from_file(*args)
@@ -576,9 +582,9 @@ def grib_c_is_defined(*args):
   return _gribapi_swig.grib_c_is_defined(*args)
 grib_c_is_defined = _gribapi_swig.grib_c_is_defined
 
-def with_numpy():
-  return _gribapi_swig.with_numpy()
-with_numpy = _gribapi_swig.with_numpy
+def grib_c_set_string_array(*args):
+  return _gribapi_swig.grib_c_set_string_array(*args)
+grib_c_set_string_array = _gribapi_swig.grib_c_set_string_array
 
 def grib_set_double_ndarray(*args):
   return _gribapi_swig.grib_set_double_ndarray(*args)
@@ -632,4 +638,12 @@ def grib_c_gts_header_off():
   return _gribapi_swig.grib_c_gts_header_off()
 grib_c_gts_header_off = _gribapi_swig.grib_c_gts_header_off
 
+def grib_c_set_definitions_path(*args):
+  return _gribapi_swig.grib_c_set_definitions_path(*args)
+grib_c_set_definitions_path = _gribapi_swig.grib_c_set_definitions_path
+
+def grib_c_set_samples_path(*args):
+  return _gribapi_swig.grib_c_set_samples_path(*args)
+grib_c_set_samples_path = _gribapi_swig.grib_c_set_samples_path
+
 
diff --git a/rpms/CMakeLists.txt b/rpms/CMakeLists.txt
deleted file mode 100644
index d3e5a9a..0000000
--- a/rpms/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-#configure_file( grib_api.cmake.pc.in     grib_api-deprecated.pc     @ONLY )
-#configure_file( grib_api_f90.cmake.pc.in grib_api_f90-deprecated.pc @ONLY )
-
-#install(FILES ${CMAKE_CURRENT_BINARY_DIR}/grib_api-deprecated.pc
-#              ${CMAKE_CURRENT_BINARY_DIR}/grib_api_f90-deprecated.pc
-#        DESTINATION ${INSTALL_LIB_DIR}/pkgconfig)
-#
diff --git a/rpms/eccodes.pc b/rpms/eccodes.pc
deleted file mode 100644
index 770c242..0000000
--- a/rpms/eccodes.pc
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=/usr/local
-exec_prefix=${prefix}
-bindir=${exec_prefix}/bin
-includedir=${prefix}/include
-libdir=${exec_prefix}/lib
-
-Name: eccodes
-Description: The eccodes library
-Version: 0.16.0
-Cflags: -I${includedir}
-Libs: -L${libdir} -leccodes
-Libs.private: -L${libdir} -leccodes -lm -ljasper 
diff --git a/rpms/eccodes.pc.in b/rpms/eccodes.pc.in
deleted file mode 100644
index a69c566..0000000
--- a/rpms/eccodes.pc.in
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-bindir=@bindir@
-includedir=@includedir@
-libdir=@libdir@
-
-Name: eccodes
-Description: The eccodes library
-Version: @VERSION@
-Cflags: -I${includedir}
-Libs: -L${libdir} -leccodes
-Libs.private: -L${libdir} -leccodes @LIBS@
diff --git a/rpms/eccodes.spec b/rpms/eccodes.spec
deleted file mode 100644
index b3d7a71..0000000
--- a/rpms/eccodes.spec
+++ /dev/null
@@ -1,131 +0,0 @@
-# -*- Mode:rpm-spec -*-
-Summary: The ECMWF ecCodes package is an application program interface accessible from C, FORTRAN and Python programs developed for encoding and decoding WMO FM-92 GRIB edition 1 and edition 2 messages.
-%define rel 1
-
-%define version 0.16.0
-%define pkgname eccodes
-%define prefix /usr/local
-%define _prefix /usr/local
-%define _target_platform x86_64-suse-linux-gnu
-%define _target_cpu x86_64
-%define _enable_python %(test -z "" && echo 1 || echo 0)
-%define _enable_fortran %(test -z "" && echo 1 || echo 0)
-%define _requires_openjpeg %(test -n "" && echo 1 || echo 0)
-%define _requires_jasper %(test -n "-ljasper" && echo 1 || echo 0)
-
-%define lt_release @LT_RELEASE@
-%define lt_version @LT_CURRENT at .@LT_REVISION at .@LT_AGE@
-
-%define __aclocal   aclocal || aclocal -I ./macros
-%define configure_args  '--enable-python' '--disable-shared' 'CC=gcc' 'F77=gfortran' 'FC=gfortran'
-
-Name: %{pkgname}
-Version: %{version}
-Release: %{rel}
-Distribution: openSUSE 13.1 (x86_64) 
-
-Vendor: ECMWF
-License: Apache Licence version 2.0 
-Group: Scientific/Libraries
-Source: %{pkgname}-%{version}.tar.gz
-%if %{_requires_jasper}
-Requires: libjasper
-%endif
-%if %{_requires_openjpeg}
-Requires: openjpeg 
-%endif
-Buildroot: /tmp/%{pkgname}-root
-URL: http://www.ecmwf.int
-Prefix: %{prefix}
-BuildArchitectures: %{_target_cpu}
-Packager: Software Support <software.support at ecmwf.int>
-
-%description 
-The ECMWF ecCodes package is an application program interface accessible from C, FORTRAN and Python programs developed for encoding and decoding WMO FM-92 GRIB edition 1 and edition 2 messages.
-
-%changelog
-* Thu Mar 15 2012 - Get the changelog from JIRA
-- Multiple bugfixes
-
-%prep
-%setup
-#%patch
-
-%build
-%configure %{?configure_args}
-# This is why we copy the CFLAGS to the CXXFLAGS in configure.in
-# CFLAGS="%{optflags}" CXXFLAGS="%{optflags}" ./configure %{_target_platform} --prefix=%{prefix}
-make
-
-%install
-# To make things work with BUILDROOT
-echo Cleaning RPM_BUILD_ROOT: "$RPM_BUILD_ROOT"
-rm -rf "$RPM_BUILD_ROOT"
-make DESTDIR="$RPM_BUILD_ROOT" install
-
-%clean
-
-
-%files
-%defattr(-, root, root)
-%doc ChangeLog README AUTHORS NEWS LICENSE
-#%doc doc/*
-%prefix/bin/*
-%prefix/lib*/libeccodes.so
-%prefix/lib*/libeccodes.so.*
-%prefix/share/eccodes/definitions/*
-
-# If you install a library
-%post -p /sbin/ldconfig
-
-# If you install a library
-%postun -p /sbin/ldconfig
-
-%package devel
-Summary: Development files for %{pkgname}
-Group: Scientific/Libraries
-Requires: grib_api
-%description devel
-Development files for %{pkgname}.
-The ECMWF ecCodes package is an application program interface accessible from C, FORTRAN and Python programs developed for encoding and decoding WMO FM-92 GRIB edition 1 and edition 2 messages.
-%files devel
-%defattr(-, root, root)
-#%doc doc
-%prefix/include/grib_api.h
-%prefix/include/eccodes_windef.h
-%prefix/lib*/libeccodes.a
-%prefix/lib*/libeccodes.la
-%prefix/lib*/pkgconfig/*
-%prefix/share/eccodes/samples/*
-%prefix/share/eccodes/ifs_samples/*
-
-# Only generate package if python is enabled
-%if %{_enable_python}
-%package python
-Summary: Python interface for %{pkgname}
-Group: Scientific/Libraries
-Requires: grib_api
-%description python
-Python interface for %{pkgname}.
-The ECMWF ecCodes package is an application program interface accessible from C, FORTRAN and Python programs developed for encoding and decoding WMO FM-92 GRIB edition 1 and edition 2 messages.
-%files python
-%defattr(-, root, root)
-%prefix/lib*/python*/*
-%endif
-
-# Only generate package if fortran is enabled
-%if %{_enable_fortran}
-%package fortran
-Summary: Fortran 90 interface for %{pkgname}
-Group: Scientific/Libraries
-Requires: grib_api
-%description fortran
-Fortran 90 interface for %{pkgname}.
-The ECMWF ecCodes package is an application program interface accessible from C, FORTRAN and Python programs developed for encoding and decoding WMO FM-92 GRIB edition 1
-and edition 2 messages.
-%files fortran
-%defattr(-, root,root)
-%prefix/include/*.mod
-%prefix/lib*/*f90*
-%endif
-
diff --git a/rpms/eccodes.spec.in b/rpms/eccodes.spec.in
deleted file mode 100644
index 4f3f93b..0000000
--- a/rpms/eccodes.spec.in
+++ /dev/null
@@ -1,131 +0,0 @@
-# -*- Mode:rpm-spec -*-
-Summary: The ECMWF ecCodes package is an application program interface accessible from C, FORTRAN and Python programs developed for encoding and decoding WMO FM-92 GRIB edition 1 and edition 2 messages.
-%define rel @RPM_RELEASE@
-
-%define version @VERSION@
-%define pkgname @PACKAGE@
-%define prefix @prefix@
-%define _prefix @prefix@
-%define _target_platform @RPM_HOST_CPU at -@RPM_HOST_VENDOR at -@RPM_HOST_OS@
-%define _target_cpu @RPM_HOST_CPU@
-%define _enable_python %(test -z "@WITH_PYTHON_TRUE@" && echo 1 || echo 0)
-%define _enable_fortran %(test -z "@WITH_FORTRAN_TRUE@" && echo 1 || echo 0)
-%define _requires_openjpeg %(test -n "@LIB_OPENJPEG@" && echo 1 || echo 0)
-%define _requires_jasper %(test -n "@LIB_JASPER@" && echo 1 || echo 0)
-
-%define lt_release @LT_RELEASE@
-%define lt_version @LT_CURRENT at .@LT_REVISION at .@LT_AGE@
-
-%define __aclocal   aclocal || aclocal -I ./macros
-%define configure_args @RPM_CONFIGURE_ARGS@
-
-Name: %{pkgname}
-Version: %{version}
-Release: %{rel}
-Distribution: @LINUX_DISTRIBUTION_NAME@ @LINUX_DISTRIBUTION_VERSION@
-
-Vendor: ECMWF
-License: Apache Licence version 2.0 
-Group: Scientific/Libraries
-Source: %{pkgname}-%{version}.tar.gz
-%if %{_requires_jasper}
-Requires: libjasper
-%endif
-%if %{_requires_openjpeg}
-Requires: openjpeg 
-%endif
-Buildroot: /tmp/%{pkgname}-root
-URL: http://www.ecmwf.int
-Prefix: %{prefix}
-BuildArchitectures: %{_target_cpu}
-Packager: Software Support <software.support at ecmwf.int>
-
-%description 
-The ECMWF ecCodes package is an application program interface accessible from C, FORTRAN and Python programs developed for encoding and decoding WMO FM-92 GRIB edition 1 and edition 2 messages.
-
-%changelog
-* Thu Mar 15 2012 - Get the changelog from JIRA
-- Multiple bugfixes
-
-%prep
-%setup
-#%patch
-
-%build
-%configure %{?configure_args}
-# This is why we copy the CFLAGS to the CXXFLAGS in configure.in
-# CFLAGS="%{optflags}" CXXFLAGS="%{optflags}" ./configure %{_target_platform} --prefix=%{prefix}
-make
-
-%install
-# To make things work with BUILDROOT
-echo Cleaning RPM_BUILD_ROOT: "$RPM_BUILD_ROOT"
-rm -rf "$RPM_BUILD_ROOT"
-make DESTDIR="$RPM_BUILD_ROOT" install
-
-%clean
-
-
-%files
-%defattr(-, root, root)
-%doc ChangeLog README AUTHORS NEWS LICENSE
-#%doc doc/*
-%prefix/bin/*
-%prefix/lib*/libeccodes.so
-%prefix/lib*/libeccodes.so.*
-%prefix/share/eccodes/definitions/*
-
-# If you install a library
-%post -p /sbin/ldconfig
-
-# If you install a library
-%postun -p /sbin/ldconfig
-
-%package devel
-Summary: Development files for %{pkgname}
-Group: Scientific/Libraries
-Requires: grib_api
-%description devel
-Development files for %{pkgname}.
-The ECMWF ecCodes package is an application program interface accessible from C, FORTRAN and Python programs developed for encoding and decoding WMO FM-92 GRIB edition 1 and edition 2 messages.
-%files devel
-%defattr(-, root, root)
-#%doc doc
-%prefix/include/grib_api.h
-%prefix/include/eccodes_windef.h
-%prefix/lib*/libeccodes.a
-%prefix/lib*/libeccodes.la
-%prefix/lib*/pkgconfig/*
-%prefix/share/eccodes/samples/*
-%prefix/share/eccodes/ifs_samples/*
-
-# Only generate package if python is enabled
-%if %{_enable_python}
-%package python
-Summary: Python interface for %{pkgname}
-Group: Scientific/Libraries
-Requires: grib_api
-%description python
-Python interface for %{pkgname}.
-The ECMWF ecCodes package is an application program interface accessible from C, FORTRAN and Python programs developed for encoding and decoding WMO FM-92 GRIB edition 1 and edition 2 messages.
-%files python
-%defattr(-, root, root)
-%prefix/lib*/python*/*
-%endif
-
-# Only generate package if fortran is enabled
-%if %{_enable_fortran}
-%package fortran
-Summary: Fortran 90 interface for %{pkgname}
-Group: Scientific/Libraries
-Requires: grib_api
-%description fortran
-Fortran 90 interface for %{pkgname}.
-The ECMWF ecCodes package is an application program interface accessible from C, FORTRAN and Python programs developed for encoding and decoding WMO FM-92 GRIB edition 1
-and edition 2 messages.
-%files fortran
-%defattr(-, root,root)
-%prefix/include/*.mod
-%prefix/lib*/*f90*
-%endif
-
diff --git a/rpms/eccodes_f90.pc b/rpms/eccodes_f90.pc
deleted file mode 100644
index 24e60e5..0000000
--- a/rpms/eccodes_f90.pc
+++ /dev/null
@@ -1,13 +0,0 @@
-prefix=/usr/local
-exec_prefix=${prefix}
-bindir=${exec_prefix}/bin
-includedir=${prefix}/include
-libdir=${exec_prefix}/lib
-FC=gfortran
-
-Name: eccodes_f90
-Description: The eccodes library for Fortran 90
-Version: 0.16.0
-Cflags: -I${prefix}/include
-Libs: -L${libdir} -leccodes_f90 -leccodes
-Libs.private: -L${libdir} -leccodes_f90 -leccodes -lm -ljasper 
diff --git a/rpms/eccodes_f90.pc.in b/rpms/eccodes_f90.pc.in
deleted file mode 100644
index e912788..0000000
--- a/rpms/eccodes_f90.pc.in
+++ /dev/null
@@ -1,13 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-bindir=@bindir@
-includedir=@includedir@
-libdir=@libdir@
-FC=@FC@
-
-Name: eccodes_f90
-Description: The eccodes library for Fortran 90
-Version: @VERSION@
-Cflags: @F90_MODULE_FLAG@@includedir@
-Libs: -L${libdir} -leccodes_f90 -leccodes
-Libs.private: -L${libdir} -leccodes_f90 -leccodes @LIBS@
diff --git a/samples/BUFR3.tmpl b/samples/BUFR3.tmpl
new file mode 100644
index 0000000..a27282e
Binary files /dev/null and b/samples/BUFR3.tmpl differ
diff --git a/samples/BUFR3_local.tmpl b/samples/BUFR3_local.tmpl
new file mode 100644
index 0000000..c4d7af6
Binary files /dev/null and b/samples/BUFR3_local.tmpl differ
diff --git a/samples/BUFR3_local_satellite.tmpl b/samples/BUFR3_local_satellite.tmpl
new file mode 100644
index 0000000..16ab06b
Binary files /dev/null and b/samples/BUFR3_local_satellite.tmpl differ
diff --git a/samples/BUFR4.tmpl b/samples/BUFR4.tmpl
new file mode 100644
index 0000000..b3220bb
Binary files /dev/null and b/samples/BUFR4.tmpl differ
diff --git a/samples/BUFR4_local.tmpl b/samples/BUFR4_local.tmpl
new file mode 100644
index 0000000..b2905b5
Binary files /dev/null and b/samples/BUFR4_local.tmpl differ
diff --git a/samples/BUFR4_local_satellite.tmpl b/samples/BUFR4_local_satellite.tmpl
new file mode 100644
index 0000000..07107d0
Binary files /dev/null and b/samples/BUFR4_local_satellite.tmpl differ
diff --git a/samples/Makefile.in b/samples/Makefile.in
deleted file mode 100644
index 3c8cd35..0000000
--- a/samples/Makefile.in
+++ /dev/null
@@ -1,622 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = samples
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(dist_samples_DATA)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(samplesdir)"
-DATA = $(dist_samples_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AEC_DIR = @AEC_DIR@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CCSDS_TEST = @CCSDS_TEST@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEVEL_RULES = @DEVEL_RULES@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECCODES_AGE = @ECCODES_AGE@
-ECCODES_CURRENT = @ECCODES_CURRENT@
-ECCODES_DEFINITION_PATH = @ECCODES_DEFINITION_PATH@
-ECCODES_MAIN_VERSION = @ECCODES_MAIN_VERSION@
-ECCODES_MAJOR_VERSION = @ECCODES_MAJOR_VERSION@
-ECCODES_MINOR_VERSION = @ECCODES_MINOR_VERSION@
-ECCODES_PATCH_VERSION = @ECCODES_PATCH_VERSION@
-ECCODES_REVISION = @ECCODES_REVISION@
-ECCODES_SAMPLES_PATH = @ECCODES_SAMPLES_PATH@
-ECCODES_VERSION_STR = @ECCODES_VERSION_STR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB = @EMOS_LIB@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-F90_CHECK = @F90_CHECK@
-F90_MODULE_FLAG = @F90_MODULE_FLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FORTRAN_MOD = @FORTRAN_MOD@
-GREP = @GREP@
-GRIB_API_INC = @GRIB_API_INC@
-GRIB_API_LIB = @GRIB_API_LIB@
-GRIB_DEVEL = @GRIB_DEVEL@
-IFS_SAMPLES_DIR = @IFS_SAMPLES_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JASPER_DIR = @JASPER_DIR@
-JPEG_TEST = @JPEG_TEST@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_AEC = @LIB_AEC@
-LIB_JASPER = @LIB_JASPER@
-LIB_OPENJPEG = @LIB_OPENJPEG@
-LIB_PNG = @LIB_PNG@
-LINUX_DISTRIBUTION_NAME = @LINUX_DISTRIBUTION_NAME@
-LINUX_DISTRIBUTION_VERSION = @LINUX_DISTRIBUTION_VERSION@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENJPEG_DIR = @OPENJPEG_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PERLDIR = @PERLDIR@
-PERL_INSTALL_OPTIONS = @PERL_INSTALL_OPTIONS@
-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_CHECK = @PYTHON_CHECK@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_DATA_HANDLER = @PYTHON_DATA_HANDLER@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RM = @RM@
-RPM_CONFIGURE_ARGS = @RPM_CONFIGURE_ARGS@
-RPM_HOST_CPU = @RPM_HOST_CPU@
-RPM_HOST_OS = @RPM_HOST_OS@
-RPM_HOST_VENDOR = @RPM_HOST_VENDOR@
-RPM_RELEASE = @RPM_RELEASE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_PEDANTIC = @WARN_PEDANTIC@
-WERROR = @WERROR@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-samplesdir = @ECCODES_SAMPLES_PATH@
-dist_samples_DATA = \
-    GRIB1.tmpl \
-    GRIB2.tmpl \
-    reduced_gg_ml_grib1.tmpl \
-    reduced_gg_ml_grib2.tmpl \
-    reduced_gg_pl_grib1.tmpl \
-    reduced_gg_pl_grib2.tmpl \
-    reduced_gg_sfc_grib1.tmpl \
-    reduced_gg_sfc_grib2.tmpl \
-    reduced_gg_sfc_jpeg_grib2.tmpl \
-    reduced_ll_sfc_grib1.tmpl \
-    reduced_ll_sfc_grib2.tmpl \
-    regular_gg_ml_grib1.tmpl \
-    regular_gg_ml_grib2.tmpl \
-    regular_gg_pl_grib1.tmpl \
-    regular_gg_pl_grib2.tmpl \
-    polar_stereographic_pl_grib1.tmpl \
-    polar_stereographic_pl_grib2.tmpl \
-    polar_stereographic_sfc_grib1.tmpl \
-    polar_stereographic_sfc_grib2.tmpl \
-    regular_ll_pl_grib1.tmpl \
-    regular_ll_pl_grib2.tmpl \
-    regular_ll_sfc_grib1.tmpl \
-    regular_ll_sfc_grib2.tmpl \
-    regular_gg_sfc_grib1.tmpl \
-    regular_gg_sfc_grib2.tmpl \
-    rotated_ll_pl_grib1.tmpl \
-    rotated_ll_pl_grib2.tmpl \
-    rotated_ll_sfc_grib1.tmpl \
-    rotated_ll_sfc_grib2.tmpl \
-    reduced_gg_pl_128_grib1.tmpl \
-    reduced_gg_pl_128_grib2.tmpl \
-    reduced_gg_pl_160_grib1.tmpl \
-    reduced_gg_pl_160_grib2.tmpl \
-    reduced_gg_pl_200_grib1.tmpl \
-    reduced_gg_pl_200_grib2.tmpl \
-    reduced_gg_pl_256_grib1.tmpl \
-    reduced_gg_pl_256_grib2.tmpl \
-    reduced_gg_pl_320_grib1.tmpl \
-    reduced_gg_pl_320_grib2.tmpl \
-    reduced_gg_pl_400_grib1.tmpl \
-    reduced_gg_pl_400_grib2.tmpl \
-    reduced_gg_pl_48_grib1.tmpl \
-    reduced_gg_pl_48_grib2.tmpl \
-    reduced_gg_pl_32_grib1.tmpl \
-    reduced_gg_pl_32_grib2.tmpl \
-    reduced_gg_pl_512_grib1.tmpl \
-    reduced_gg_pl_512_grib2.tmpl \
-    reduced_gg_pl_640_grib1.tmpl \
-    reduced_gg_pl_640_grib2.tmpl \
-    reduced_gg_pl_1024_grib1.tmpl \
-    reduced_gg_pl_1024_grib2.tmpl \
-    reduced_gg_pl_1280_grib1.tmpl \
-    reduced_gg_pl_1280_grib2.tmpl \
-    reduced_gg_pl_2000_grib1.tmpl \
-    reduced_gg_pl_2000_grib2.tmpl \
-    reduced_gg_pl_80_grib1.tmpl \
-    reduced_gg_pl_80_grib2.tmpl \
-    reduced_gg_pl_96_grib1.tmpl \
-    reduced_gg_pl_96_grib2.tmpl \
-    sh_ml_grib1.tmpl \
-    sh_ml_grib2.tmpl \
-    sh_pl_grib1.tmpl \
-    sh_pl_grib2.tmpl \
-    budg.tmpl \
-    gg_sfc_grib1.tmpl \
-    gg_sfc_grib2.tmpl \
-    sh_sfc_grib1.tmpl \
-    sh_sfc_grib2.tmpl \
-    clusters_grib1.tmpl
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu samples/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu samples/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-dist_samplesDATA: $(dist_samples_DATA)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_samples_DATA)'; test -n "$(samplesdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(samplesdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(samplesdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(samplesdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(samplesdir)" || exit $$?; \
-	done
-
-uninstall-dist_samplesDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_samples_DATA)'; test -n "$(samplesdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(samplesdir)'; $(am__uninstall_files_from_dir)
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(samplesdir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-dist_samplesDATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-dist_samplesDATA
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	cscopelist-am ctags-am distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-dist_samplesDATA install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
-	uninstall-am uninstall-dist_samplesDATA
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake b/share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake
new file mode 100644
index 0000000..31a241b
--- /dev/null
+++ b/share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake
@@ -0,0 +1,49 @@
+####################################################################
+# ARCHITECTURE
+####################################################################
+set( CMAKE_SIZEOF_VOID_P 8 )
+
+# Disable relative rpaths as aprun does not respect it
+set( ENABLE_RELATIVE_RPATHS OFF CACHE STRING "Disable relative rpaths" FORCE )
+
+####################################################################
+# COMPILER
+####################################################################
+
+include(CMakeForceCompiler)
+
+CMAKE_FORCE_C_COMPILER       ( cc  Cray )
+CMAKE_FORCE_CXX_COMPILER     ( CC  Cray )
+CMAKE_FORCE_Fortran_COMPILER ( ftn Cray )
+
+set( ECBUILD_FIND_MPI OFF )
+set( ECBUILD_TRUST_FLAGS ON )
+
+####################################################################
+# MPI
+####################################################################
+
+set( MPIEXEC                 "aprun" )
+set( MPIEXEC_NUMPROC_FLAG    "-n"    )
+set( MPIEXEC_NUMTHREAD_FLAG  "-d"    )
+
+####################################################################
+# OpenMP FLAGS
+####################################################################
+
+set( OMP_C_FLAGS             "-homp" )
+set( OMP_CXX_FLAGS           "-homp" )
+set( OMP_Fortran_FLAGS       "-homp" )
+
+set( OMPSTUBS_C_FLAGS        "-hnoomp" )
+set( OMPSTUBS_CXX_FLAGS      "-hnoomp" )
+set( OMPSTUBS_Fortran_FLAGS  "-hnoomp" )
+
+####################################################################
+# LINK FLAGS
+####################################################################
+
+set( ECBUILD_C_LINK_FLAGS        "-Wl,-Map,loadmap -Wl,--as-needed -Ktrap=fp" )
+set( ECBUILD_CXX_LINK_FLAGS      "-Wl,-Map,loadmap -Wl,--as-needed -Ktrap=fp" )
+set( ECBUILD_Fortran_LINK_FLAGS  "-Wl,-Map,loadmap -Wl,--as-needed -Ktrap=fp" )
+set( ECBUILD_CXX_IMPLICIT_LINK_LIBRARIES "$ENV{CC_X86_64}/lib/x86-64/libcray-c++-rts.so" CACHE STRING "" )
diff --git a/share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake b/share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake
new file mode 100644
index 0000000..3f69f06
--- /dev/null
+++ b/share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake
@@ -0,0 +1,52 @@
+####################################################################
+# ARCHITECTURE
+####################################################################
+set( CMAKE_SIZEOF_VOID_P 8 )
+
+# Disable relative rpaths as aprun does not respect it
+set( ENABLE_RELATIVE_RPATHS OFF CACHE STRING "Disable relative rpaths" FORCE )
+
+####################################################################
+# COMPILER
+####################################################################
+
+include(CMakeForceCompiler)
+
+CMAKE_FORCE_C_COMPILER       ( cc  GNU )
+CMAKE_FORCE_CXX_COMPILER     ( CC  GNU )
+CMAKE_FORCE_Fortran_COMPILER ( ftn GNU )
+
+set( ECBUILD_FIND_MPI OFF )
+set( ECBUILD_TRUST_FLAGS ON )
+
+####################################################################
+# MPI
+####################################################################
+
+set( MPIEXEC                 "aprun" )
+set( MPIEXEC_NUMPROC_FLAG    "-n"    )
+set( MPIEXEC_NUMTHREAD_FLAG  "-d"    )
+
+####################################################################
+# OpenMP FLAGS
+####################################################################
+
+set( OMP_C_FLAGS             "-fopenmp" )
+set( OMP_CXX_FLAGS           "-fopenmp" )
+set( OMP_Fortran_FLAGS       "-fopenmp" )
+
+####################################################################
+# DEBUG FLAGS
+####################################################################
+
+set( ECBUILD_C_FLAGS_DEBUG        "-O0 -g -ftrapv" )
+set( ECBUILD_CXX_FLAGS_DEBUG      "-O0 -g -ftrapv" )
+set( ECBUILD_Fortran_FLAGS_DEBUG  "-ffree-line-length-none -O0 -g -fcheck=bounds -fbacktrace -finit-real=snan -ffpe-trap=invalid,zero,overflow" )
+
+####################################################################
+# LINK FLAGS
+####################################################################
+
+set( ECBUILD_C_LINK_FLAGS        "-Wl,-Map,load.map -Wl,--as-needed" )
+set( ECBUILD_CXX_LINK_FLAGS      "-Wl,-Map,load.map -Wl,--as-needed" )
+set( ECBUILD_Fortran_LINK_FLAGS  "-Wl,-Map,load.map -Wl,--as-needed" )
diff --git a/share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake b/share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake
new file mode 100644
index 0000000..01c6267
--- /dev/null
+++ b/share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake
@@ -0,0 +1,73 @@
+####################################################################
+# ARCHITECTURE
+####################################################################
+set( CMAKE_SIZEOF_VOID_P 8 )
+
+# Disable relative rpaths as aprun does not respect it
+set( ENABLE_RELATIVE_RPATHS OFF CACHE STRING "Disable relative rpaths" FORCE )
+
+
+####################################################################
+# COMPILER
+####################################################################
+
+include(CMakeForceCompiler)
+
+CMAKE_FORCE_C_COMPILER       ( cc  Intel )
+CMAKE_FORCE_CXX_COMPILER     ( CC  Intel )
+CMAKE_FORCE_Fortran_COMPILER ( ftn Intel )
+
+set( ECBUILD_FIND_MPI OFF )
+set( ECBUILD_TRUST_FLAGS ON )
+
+####################################################################
+# MPI
+####################################################################
+
+set( MPIEXEC                 "aprun" )
+set( MPIEXEC_NUMPROC_FLAG    "-n"    )
+set( MPIEXEC_NUMTHREAD_FLAG  "-d"    )
+
+####################################################################
+# OpenMP FLAGS
+####################################################################
+
+set( OMP_C_FLAGS             "-openmp -openmp-threadprivate=compat" )
+set( OMP_CXX_FLAGS           "-openmp -openmp-threadprivate=compat" )
+set( OMP_Fortran_FLAGS       "-openmp -openmp-threadprivate=compat" )
+
+####################################################################
+# COMMON FLAGS
+####################################################################
+
+# for diagnostics:
+#  -diag-enable=vec -diag-file -Winline
+
+set( ECBUILD_C_FLAGS       "-fp-speculation=strict -fp-model precise -traceback")
+set( ECBUILD_CXX_FLAGS     "-fp-speculation=strict -fp-model precise -traceback" )
+set( ECBUILD_Fortran_FLAGS "-fp-speculation=strict -fp-model source  -convert big_endian -assume byterecl -traceback -fpe0" )
+
+####################################################################
+# BIT REPRODUCIBLE FLAGS
+####################################################################
+
+set( ECBUILD_C_FLAGS_BIT        "-O2 -xAVX -finline-function -finline-limit=500" )
+set( ECBUILD_CXX_FLAGS_BIT      "-O2 -xAVX -finline-function -finline-limit=500" )
+set( ECBUILD_Fortran_FLAGS_BIT  "-O2 -xAVX -finline-function -finline-limit=500 -align array64byte" )
+
+####################################################################
+# DEBUG FLAGS
+####################################################################
+
+set( ECBUILD_C_FLAGS_DEBUG        "-O0 -g -traceback -fp-trap=common" )
+set( ECBUILD_CXX_FLAGS_DEBUG      "-O0 -g -traceback -fp-trap=common" )
+# -check all implies -check bounds
+set( ECBUILD_Fortran_FLAGS_DEBUG  "-O0 -g -traceback -warn all -heap-arrays -fpe-all=0 -fpe:0 -check all" )
+
+####################################################################
+# LINK FLAGS
+####################################################################
+
+set( ECBUILD_C_LINK_FLAGS        "-Wl,-Map,load.map -Wl,--as-needed" )
+set( ECBUILD_CXX_LINK_FLAGS      "-Wl,-Map,load.map -Wl,--as-needed" )
+set( ECBUILD_Fortran_LINK_FLAGS  "-Wl,-Map,load.map -Wl,--as-needed" )
diff --git a/share/ecbuild/toolchains/ichec-fionn-Intel.cmake b/share/ecbuild/toolchains/ichec-fionn-Intel.cmake
new file mode 100644
index 0000000..184dfb5
--- /dev/null
+++ b/share/ecbuild/toolchains/ichec-fionn-Intel.cmake
@@ -0,0 +1,67 @@
+####################################################################
+# ARCHITECTURE
+####################################################################
+
+
+####################################################################
+# COMPILER
+####################################################################
+
+include(CMakeForceCompiler)
+
+CMAKE_FORCE_C_COMPILER       ( icc  Intel )
+CMAKE_FORCE_CXX_COMPILER     ( icpc  Intel )
+CMAKE_FORCE_Fortran_COMPILER ( ifort Intel )
+
+####################################################################
+# OpenMP FLAGS
+####################################################################
+
+set( OMP_C_FLAGS             "-openmp -openmp-threadprivate=compat" )
+set( OMP_CXX_FLAGS           "-openmp -openmp-threadprivate=compat" )
+set( OMP_Fortran_FLAGS       "-openmp -openmp-threadprivate=compat" )
+
+####################################################################
+# COMMON FLAGS
+####################################################################
+
+# for diagnostics:
+#  -diag-enable=vec -diag-file -Winline
+
+set( ECBUILD_C_FLAGS       "-fp-speculation=strict -fp-model precise -traceback")
+set( ECBUILD_CXX_FLAGS     "-fp-speculation=strict -fp-model precise -traceback" )
+set( ECBUILD_Fortran_FLAGS "-fp-speculation=strict -fp-model source  -convert big_endian -assume byterecl -traceback -fpe0" )
+
+####################################################################
+# BIT REPRODUCIBLE FLAGS
+####################################################################
+
+set( ECBUILD_C_FLAGS_BIT        "-O2 -xAVX -finline-function -finline-limit=500" )
+set( ECBUILD_CXX_FLAGS_BIT      "-O2 -xAVX -finline-function -finline-limit=500" )
+set( ECBUILD_Fortran_FLAGS_BIT  "-O2 -xAVX -finline-function -finline-limit=500 -align array64byte" )
+
+####################################################################
+# DEBUG FLAGS
+####################################################################
+
+set( ECBUILD_C_FLAGS_DEBUG        "-O0 -g -traceback -fp-trap=common" )
+set( ECBUILD_CXX_FLAGS_DEBUG      "-O0 -g -traceback -fp-trap=common" )
+# -check all implies -check bounds
+set( ECBUILD_Fortran_FLAGS_DEBUG  "-O0 -g -traceback -warn all -heap-arrays -fpe-all=0 -fpe:0 -check all" )
+
+####################################################################
+# LINK FLAGS
+####################################################################
+
+set( ECBUILD_C_LINK_FLAGS        "-Wl,-Map,load.map -Wl,--as-needed" )
+set( ECBUILD_CXX_LINK_FLAGS      "-Wl,-Map,load.map -Wl,--as-needed" )
+set( ECBUILD_Fortran_LINK_FLAGS  "-Wl,-Map,load.map -Wl,--as-needed" )
+
+###################################################################
+# 
+# Serial versions of these packages (need to specify intel_mpi versions? )
+###################################################################
+
+set( FFTW_PATH    "/ichec/packages/fftw/intel/3.3.4")
+set( NETCDF_PATH  "/ichec/packages/netcdf/intel/4.4.0")
+set( HDF5_PATH    "/ichec/packages/hdf5/intel/1.8.16")
diff --git a/show_compile.sh b/show_compile.sh
new file mode 100755
index 0000000..eb3735e
--- /dev/null
+++ b/show_compile.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+# Copyright 2005-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+#
+# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+#
+
+if [ $# -ne 1 ]; then
+    echo "Usage: `basename $0` /path/to/ecCodes/installation"
+    exit 1
+fi
+
+set -e
+PACKAGE=eccodes_f90
+ECCODES_INSTALL_PATH=$1
+ECCODES_PKGCONF_PATH=$ECCODES_INSTALL_PATH/lib/pkgconfig
+
+if [ ! -d "$ECCODES_INSTALL_PATH" ]; then
+   echo "Error: Installation path does not exist!" 2>&1
+   exit 1
+fi
+if [ ! -d "$ECCODES_PKGCONF_PATH" ]; then
+   echo "Error: Could not find pkgconfig directory in installation path!" 2>&1
+   echo "       Expected path: $ECCODES_PKGCONF_PATH" 2>&1
+   exit 1
+fi
+
+if ! command -v pkg-config >/dev/null 2>&1; then
+   echo "Error: cannot find pkg-config command!" 2>&1
+   exit 1
+fi
+
+export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$ECCODES_PKGCONF_PATH
+LIBS=`pkg-config $PACKAGE --libs`
+INCL=`pkg-config $PACKAGE --cflags`
+FCMP=`pkg-config $PACKAGE --variable=FC`
+CCMP=`pkg-config $PACKAGE --variable=CC`
+
+echo
+echo "Compilation for Fortran 90 ..."
+echo "$FCMP myprog.f90 $LIBS $INCL"
+echo
+echo "Compilation for C ..."
+echo "$CCMP myprog.c $LIBS $INCL"
+echo
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index dfa25cd..a60ac9e 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -247,7 +247,10 @@ list( APPEND grib_api_srcs
     grib_accessor_class_unsigned.c
     grib_accessor_class_unsigned_bits.c
     grib_accessor_class_raw.c
+    grib_accessor_class_bufr_simple_thinning.c
     grib_accessor_class_bufr_extract_subsets.c
+    grib_accessor_class_bufr_extract_area_subsets.c
+    grib_accessor_class_bufr_extract_datetime_subsets.c
     grib_accessor_class_spd.c
     grib_accessor_class_sum.c
     grib_accessor_class_to_integer.c
@@ -272,9 +275,17 @@ list( APPEND grib_api_srcs
     grib_dumper_class_debug.c
     grib_dumper_class_default.c
     grib_dumper_class_keys.c
+    grib_dumper_class_bufr_encode_C.c
+    grib_dumper_class_bufr_encode_filter.c
+    grib_dumper_class_bufr_encode_fortran.c
+    grib_dumper_class_bufr_encode_python.c
+    grib_dumper_class_bufr_decode_C.c
+    grib_dumper_class_bufr_decode_filter.c
+    grib_dumper_class_bufr_decode_fortran.c
+    grib_dumper_class_bufr_decode_python.c
     grib_dumper_class_json.c
     grib_dumper_class_xml.c
-    grib_dumper_class_c_code.c
+    grib_dumper_class_grib_encode_C.c
     grib_dumper_class_wmo.c
     grib_dumper_class.c
     grib_context.c
diff --git a/src/Makefile.am b/src/Makefile.am
index f2c7cb3..0244a06 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -33,7 +33,7 @@ libeccodes_la_prototypes= \
 	action_class_trigger.c \
 	action_class_when.c \
 	action_class_concept.c \
-    action_class_hash_array.c \
+	action_class_hash_array.c \
 	action_class_set.c \
 	action_class_set_darray.c \
 	action_class_set_iarray.c \
@@ -70,6 +70,8 @@ libeccodes_la_prototypes= \
 	grib_accessor_class_bufr_group.c \
 	grib_accessor_class_bufr_string_values.c \
 	grib_accessor_class_pack_bufr_values.c \
+	grib_accessor_class_bufr_extract_area_subsets.c \
+	grib_accessor_class_bufr_extract_datetime_subsets.c \
 	grib_accessor_class_group.c \
 	grib_accessor_class_unpack_bufr_values.c \
 	grib_accessor_class_bufr_has_delayed_replication.c \
@@ -263,6 +265,7 @@ libeccodes_la_prototypes= \
 	grib_accessor_class_unsigned_bits.c \
 	grib_accessor_class_raw.c \
 	grib_accessor_class_bufr_extract_subsets.c \
+	grib_accessor_class_bufr_simple_thinning.c \
 	grib_accessor_class_spd.c \
 	grib_accessor_class_sum.c \
 	grib_accessor_class_to_integer.c \
@@ -287,9 +290,17 @@ libeccodes_la_prototypes= \
 	grib_dumper_class_debug.c \
 	grib_dumper_class_default.c \
 	grib_dumper_class_keys.c \
+	grib_dumper_class_bufr_encode_C.c \
+	grib_dumper_class_bufr_encode_filter.c \
+	grib_dumper_class_bufr_encode_fortran.c \
+	grib_dumper_class_bufr_encode_python.c \
+	grib_dumper_class_bufr_decode_C.c \
+	grib_dumper_class_bufr_decode_filter.c \
+	grib_dumper_class_bufr_decode_fortran.c \
+	grib_dumper_class_bufr_decode_python.c \
 	grib_dumper_class_json.c \
 	grib_dumper_class_xml.c \
-	grib_dumper_class_c_code.c \
+	grib_dumper_class_grib_encode_C.c \
 	grib_dumper_class_wmo.c \
 	grib_dumper_class.c \
 	grib_context.c \
diff --git a/src/Makefile.in b/src/Makefile.in
deleted file mode 100644
index bda1ab9..0000000
--- a/src/Makefile.in
+++ /dev/null
@@ -1,1739 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-# See http://www.delorie.com/gnu/docs/automake/automake_48.html
-
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = src
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(srcdir)/config.h.in $(srcdir)/eccodes_version.h.in \
-	$(top_srcdir)/config/depcomp $(include_HEADERS) \
-	$(noinst_HEADERS) README TODO
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = eccodes_version.h
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-am__objects_1 = action.lo action_class_alias.lo action_class_gen.lo \
-	action_class_if.lo action_class_switch.lo \
-	grib_accessor_class_g1fcperiod.lo \
-	grib_accessor_class_g1end_of_interval_monthly.lo \
-	grib_accessor_class_mars_param.lo action_class_section.lo \
-	action_class_list.lo action_class_while.lo action_class_put.lo \
-	action_class_meta.lo action_class_remove.lo \
-	action_class_rename.lo action_class_assert.lo \
-	action_class_template.lo action_class_trigger.lo \
-	action_class_when.lo action_class_concept.lo \
-	action_class_hash_array.lo action_class_set.lo \
-	action_class_set_darray.lo action_class_set_iarray.lo \
-	action_class_set_sarray.lo action_class_noop.lo \
-	action_class_write.lo action_class_print.lo \
-	action_class_close.lo action_class_variable.lo \
-	action_class_modify.lo action_class_transient_darray.lo \
-	grib_accessor.lo grib_concept.lo grib_hash_array.lo \
-	grib_bufr_descriptor.lo grib_bufr_descriptors_array.lo \
-	grib_darray.lo grib_sarray.lo grib_iarray.lo grib_vdarray.lo \
-	grib_vsarray.lo grib_viarray.lo grib_accessor_class_array.lo \
-	grib_accessor_class_assert.lo grib_accessor_class_ascii.lo \
-	grib_accessor_class_bit.lo grib_accessor_class_bitmap.lo \
-	grib_accessor_class_bits.lo \
-	grib_accessor_class_bits_per_value.lo \
-	grib_accessor_class_bufr_data.lo \
-	grib_accessor_class_bufr_data_array.lo \
-	grib_accessor_class_bufr_data_element.lo \
-	grib_accessor_class_bufr_elements_table.lo \
-	grib_accessor_class_bufr_group.lo \
-	grib_accessor_class_bufr_string_values.lo \
-	grib_accessor_class_pack_bufr_values.lo \
-	grib_accessor_class_group.lo \
-	grib_accessor_class_unpack_bufr_values.lo \
-	grib_accessor_class_bufr_has_delayed_replication.lo \
-	grib_accessor_class_apply_operators.lo \
-	grib_accessor_class_non_alpha.lo \
-	grib_accessor_class_g1bitmap.lo \
-	grib_accessor_class_g2bitmap.lo grib_accessor_class_concept.lo \
-	grib_accessor_class_hash_array.lo \
-	grib_accessor_class_decimal_precision.lo \
-	grib_accessor_class_divdouble.lo \
-	grib_accessor_class_budgdate.lo \
-	grib_accessor_class_validity_date.lo \
-	grib_accessor_class_validity_time.lo \
-	grib_accessor_class_bytes.lo grib_accessor_class.lo \
-	grib_accessor_class_change_scanning_direction.lo \
-	grib_accessor_class_check_internal_version.lo \
-	grib_accessor_class_codeflag.lo \
-	grib_accessor_class_smart_table.lo \
-	grib_accessor_class_smart_table_column.lo \
-	grib_accessor_class_codetable.lo \
-	grib_accessor_class_codetable_units.lo \
-	grib_accessor_class_codetable_title.lo \
-	grib_accessor_class_count_file.lo \
-	grib_accessor_class_count_total.lo \
-	grib_accessor_class_double.lo grib_accessor_class_element.lo \
-	grib_accessor_class_evaluate.lo grib_accessor_class_g1area.lo \
-	grib_accessor_class_g1date.lo \
-	grib_accessor_class_g1monthlydate.lo \
-	grib_accessor_class_library_version.lo \
-	grib_accessor_class_when.lo \
-	grib_accessor_class_g1verificationdate.lo \
-	grib_accessor_class_g1day_of_the_year_date.lo \
-	grib_accessor_class_g1_half_byte_codeflag.lo \
-	grib_accessor_class_g1forecastmonth.lo \
-	grib_accessor_class_g1step_range.lo \
-	grib_accessor_class_g2step_range.lo \
-	grib_accessor_class_data_g22order_packing.lo \
-	grib_accessor_class_mars_step.lo \
-	grib_accessor_class_message_copy.lo \
-	grib_accessor_class_dictionary.lo \
-	grib_accessor_class_g1param.lo grib_accessor_class_g1p1p2.lo \
-	grib_accessor_class_g1_increment.lo \
-	grib_accessor_class_latlon_increment.lo \
-	grib_accessor_class_g2date.lo grib_accessor_class_g2level.lo \
-	grib_accessor_class_g2step.lo \
-	grib_accessor_class_g2end_step.lo \
-	grib_accessor_class_g2latlon.lo grib_accessor_class_g2lon.lo \
-	grib_accessor_class_global_gaussian.lo \
-	grib_accessor_class_gaussian_grid_name.lo \
-	grib_accessor_class_gen.lo grib_accessor_class_gts_header.lo \
-	grib_accessor_class_ifs_param.lo grib_accessor_class_int16.lo \
-	grib_accessor_class_int16_little_endian.lo \
-	grib_accessor_class_int32.lo \
-	grib_accessor_class_int32_little_endian.lo \
-	grib_accessor_class_int64.lo \
-	grib_accessor_class_int64_little_endian.lo \
-	grib_accessor_class_int8.lo grib_accessor_class_uint16.lo \
-	grib_accessor_class_uint16_little_endian.lo \
-	grib_accessor_class_uint32.lo \
-	grib_accessor_class_uint32_little_endian.lo \
-	grib_accessor_class_uint64.lo \
-	grib_accessor_class_uint64_little_endian.lo \
-	grib_accessor_class_uint8.lo grib_accessor_class_blob.lo \
-	grib_accessor_class_julian_day.lo \
-	grib_accessor_class_latlonvalues.lo \
-	grib_accessor_class_latitudes.lo \
-	grib_accessor_class_longitudes.lo \
-	grib_accessor_class_missing.lo \
-	grib_accessor_class_octahedral_gaussian.lo \
-	grib_accessor_class_offset_file.lo \
-	grib_accessor_class_scale.lo \
-	grib_accessor_class_from_scale_factor_scaled_value.lo \
-	grib_accessor_class_times.lo grib_accessor_class_forward.lo \
-	grib_accessor_class_g2bitmap_present.lo \
-	grib_accessor_class_ibmfloat.lo \
-	grib_accessor_class_ieeefloat.lo \
-	grib_accessor_class_constant.lo \
-	grib_accessor_class_iterator.lo grib_accessor_class_message.lo \
-	grib_accessor_class_nearest.lo grib_accessor_class_box.lo \
-	grib_accessor_class_ksec1expver.lo \
-	grib_accessor_class_laplacian.lo grib_accessor_class_label.lo \
-	grib_accessor_class_long.lo grib_accessor_class_lookup.lo \
-	grib_accessor_class_octect_number.lo \
-	grib_accessor_class_headers_only.lo \
-	grib_accessor_class_padding.lo grib_accessor_class_pad.lo \
-	grib_accessor_class_padto.lo grib_accessor_class_padtoeven.lo \
-	grib_accessor_class_padtomultiple.lo \
-	grib_accessor_class_section_padding.lo \
-	grib_accessor_class_section_pointer.lo \
-	grib_accessor_class_position.lo grib_accessor_class_signed.lo \
-	grib_accessor_class_signed_bits.lo \
-	grib_accessor_class_section.lo \
-	grib_accessor_class_step_in_units.lo \
-	grib_accessor_class_section_length.lo \
-	grib_accessor_class_g1_message_length.lo \
-	grib_accessor_class_g1_section4_length.lo \
-	grib_accessor_class_size.lo \
-	grib_accessor_class_scale_values.lo \
-	grib_accessor_class_offset_values.lo \
-	grib_accessor_class_sprintf.lo grib_accessor_class_getenv.lo \
-	grib_accessor_class_round.lo \
-	grib_accessor_class_spectral_truncation.lo \
-	grib_accessor_class_time.lo grib_accessor_class_transient.lo \
-	grib_accessor_class_values.lo \
-	grib_accessor_class_simple_packing_error.lo \
-	grib_accessor_class_data_simple_packing.lo \
-	grib_accessor_class_data_ccsds_packing.lo \
-	grib_accessor_class_count_missing.lo \
-	grib_accessor_class_data_sh_packed.lo \
-	grib_accessor_class_data_sh_unpacked.lo \
-	grib_accessor_class_number_of_values_data_raw_packing.lo \
-	grib_accessor_class_data_g1simple_packing.lo \
-	grib_accessor_class_data_g1shsimple_packing.lo \
-	grib_accessor_class_data_shsimple_packing.lo \
-	grib_accessor_class_data_constant_field.lo \
-	grib_accessor_class_data_dummy_field.lo \
-	grib_2order_packer_simple.lo grib_accessor_class_variable.lo \
-	grib_accessor_class_second_order_bits_per_value.lo \
-	grib_accessor_class_data_g2simple_packing.lo \
-	grib_accessor_class_data_g2simple_packing_with_preprocessing.lo \
-	grib_accessor_class_data_g2shsimple_packing.lo \
-	grib_accessor_class_data_g2complex_packing.lo \
-	grib_accessor_class_data_2order_packing.lo \
-	grib_accessor_class_data_2order_packing_count.lo \
-	grib_accessor_class_data_g1second_order_row_by_row_packing.lo \
-	grib_accessor_class_data_g1second_order_constant_width_packing.lo \
-	grib_accessor_class_data_g1second_order_general_packing.lo \
-	grib_accessor_class_data_g1second_order_general_extended_packing.lo \
-	grib_accessor_class_g2grid.lo \
-	grib_accessor_class_unexpanded_descriptors.lo \
-	grib_accessor_class_expanded_descriptors.lo \
-	grib_accessor_class_bufrdc_expanded_descriptors.lo \
-	grib_accessor_class_data_apply_bitmap.lo \
-	grib_accessor_class_data_apply_boustrophedonic.lo \
-	grib_accessor_class_data_apply_boustrophedonic_bitmap.lo \
-	grib_accessor_class_data_secondary_bitmap.lo \
-	grib_accessor_class_data_g1secondary_bitmap.lo \
-	grib_accessor_class_data_g2secondary_bitmap.lo \
-	grib_accessor_class_data_jpeg2000_packing.lo \
-	grib_accessor_class_data_png_packing.lo \
-	grib_accessor_class_data_raw_packing.lo \
-	grib_accessor_class_data_complex_packing.lo \
-	grib_accessor_class_data_g1complex_packing.lo \
-	grib_accessor_class_gds_not_present_bitmap.lo \
-	grib_accessor_class_data_apply_gdsnotpresent.lo \
-	grib_accessor_class_gds_is_present.lo \
-	grib_accessor_class_select_step_template.lo \
-	grib_accessor_class_local_definition.lo \
-	grib_accessor_class_g2_eps.lo \
-	grib_accessor_class_g2_chemical.lo \
-	grib_accessor_class_g2_mars_labeling.lo \
-	grib_accessor_class_transient_darray.lo \
-	grib_accessor_class_md5.lo grib_jasper_encoding.lo \
-	grib_openjpeg_encoding.lo action_class_set_missing.lo \
-	grib_accessor_class_number_of_points.lo \
-	grib_accessor_class_suppressed.lo grib_index.lo \
-	grib_accessor_class_number_of_points_gaussian.lo \
-	grib_accessor_class_number_of_values.lo \
-	grib_accessor_class_number_of_coded_values.lo \
-	grib_accessor_class_g1number_of_coded_values_sh_complex.lo \
-	grib_accessor_class_g1number_of_coded_values_sh_simple.lo \
-	grib_accessor_class_dirty.lo grib_accessor_class_statistics.lo \
-	grib_accessor_class_statistics_spectral.lo \
-	grib_accessor_class_unsigned.lo \
-	grib_accessor_class_unsigned_bits.lo \
-	grib_accessor_class_raw.lo \
-	grib_accessor_class_bufr_extract_subsets.lo \
-	grib_accessor_class_spd.lo grib_accessor_class_sum.lo \
-	grib_accessor_class_to_integer.lo \
-	grib_accessor_class_to_double.lo \
-	grib_accessor_class_to_string.lo \
-	grib_accessor_class_sexagesimal2decimal.lo \
-	grib_accessor_class_vector.lo \
-	grib_accessor_class_long_vector.lo grib_gaussian_reduced.lo \
-	grib_accessor_class_abstract_vector.lo \
-	grib_accessor_class_abstract_long_vector.lo \
-	grib_loader_from_handle.lo grib_bits.lo grib_timer.lo \
-	grib_ibmfloat.lo grib_ieeefloat.lo \
-	grib_accessor_class_reference_value_error.lo grib_memory.lo \
-	grib_buffer.lo grib_dumper.lo grib_dumper_class_serialize.lo \
-	grib_dumper_class_debug.lo grib_dumper_class_default.lo \
-	grib_dumper_class_keys.lo grib_dumper_class_json.lo \
-	grib_dumper_class_xml.lo grib_dumper_class_c_code.lo \
-	grib_dumper_class_wmo.lo grib_dumper_class.lo grib_context.lo \
-	grib_date.lo grib_fieldset.lo grib_filepool.lo \
-	grib_geography.lo grib_handle.lo grib_header_compute.lo \
-	grib_hash_keys.lo grib_io.lo grib_trie.lo grib_itrie.lo \
-	grib_rules.lo grib_keys_iterator.lo grib_parse_utils.lo \
-	grib_query.lo grib_scaling.lo grib_templates.lo \
-	grib_dependency.lo grib_value.lo grib_errors.lo \
-	grib_expression_class_binop.lo \
-	grib_expression_class_is_in_dict.lo \
-	grib_expression_class_true.lo \
-	grib_expression_class_string_compare.lo \
-	grib_expression_class_unop.lo grib_expression_class_functor.lo \
-	grib_expression_class_accessor.lo \
-	grib_expression_class_is_in_list.lo \
-	grib_expression_class_is_integer.lo \
-	grib_expression_class_length.lo grib_expression_class_long.lo \
-	grib_expression_class_double.lo \
-	grib_expression_class_string.lo \
-	grib_expression_class_sub_string.lo grib_box.lo \
-	grib_box_class.lo grib_box_class_gen.lo \
-	grib_box_class_regular_gaussian.lo \
-	grib_box_class_reduced_gaussian.lo grib_nearest.lo \
-	grib_nearest_class.lo grib_nearest_class_gen.lo \
-	grib_nearest_class_regular.lo grib_nearest_class_reduced.lo \
-	grib_nearest_class_latlon_reduced.lo grib_nearest_class_sh.lo \
-	grib_nearest_class_lambert_conformal.lo \
-	grib_iterator_class_polar_stereographic.lo \
-	grib_iterator_class_lambert_azimuthal_equal_area.lo \
-	grib_iterator_class_lambert_conformal.lo grib_iterator.lo \
-	grib_iterator_class.lo grib_iterator_class_gaussian.lo \
-	grib_iterator_class_gaussian_reduced.lo \
-	grib_iterator_class_latlon_reduced.lo \
-	grib_iterator_class_gen.lo grib_iterator_class_latlon.lo \
-	grib_iterator_class_regular.lo grib_expression.lo grib_util.lo \
-	compile.lo functions.lo codes_memfs.lo grib_api_version.lo
-am_libeccodes_la_OBJECTS = $(am__objects_1) eccodes.lo grib_yacc.lo \
-	grib_lex.lo md5.lo
-libeccodes_la_OBJECTS = $(am_libeccodes_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-libeccodes_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(libeccodes_la_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(libeccodes_la_SOURCES)
-DIST_SOURCES = $(libeccodes_la_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-HEADERS = $(include_HEADERS) $(noinst_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
-	$(LISP)config.h.in
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AEC_DIR = @AEC_DIR@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CCSDS_TEST = @CCSDS_TEST@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEVEL_RULES = @DEVEL_RULES@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECCODES_AGE = @ECCODES_AGE@
-ECCODES_CURRENT = @ECCODES_CURRENT@
-ECCODES_DEFINITION_PATH = @ECCODES_DEFINITION_PATH@
-ECCODES_MAIN_VERSION = @ECCODES_MAIN_VERSION@
-ECCODES_MAJOR_VERSION = @ECCODES_MAJOR_VERSION@
-ECCODES_MINOR_VERSION = @ECCODES_MINOR_VERSION@
-ECCODES_PATCH_VERSION = @ECCODES_PATCH_VERSION@
-ECCODES_REVISION = @ECCODES_REVISION@
-ECCODES_SAMPLES_PATH = @ECCODES_SAMPLES_PATH@
-ECCODES_VERSION_STR = @ECCODES_VERSION_STR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB = @EMOS_LIB@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-F90_CHECK = @F90_CHECK@
-F90_MODULE_FLAG = @F90_MODULE_FLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FORTRAN_MOD = @FORTRAN_MOD@
-GREP = @GREP@
-GRIB_API_INC = @GRIB_API_INC@
-GRIB_API_LIB = @GRIB_API_LIB@
-GRIB_DEVEL = @GRIB_DEVEL@
-IFS_SAMPLES_DIR = @IFS_SAMPLES_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JASPER_DIR = @JASPER_DIR@
-JPEG_TEST = @JPEG_TEST@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_AEC = @LIB_AEC@
-LIB_JASPER = @LIB_JASPER@
-LIB_OPENJPEG = @LIB_OPENJPEG@
-LIB_PNG = @LIB_PNG@
-LINUX_DISTRIBUTION_NAME = @LINUX_DISTRIBUTION_NAME@
-LINUX_DISTRIBUTION_VERSION = @LINUX_DISTRIBUTION_VERSION@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENJPEG_DIR = @OPENJPEG_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PERLDIR = @PERLDIR@
-PERL_INSTALL_OPTIONS = @PERL_INSTALL_OPTIONS@
-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_CHECK = @PYTHON_CHECK@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_DATA_HANDLER = @PYTHON_DATA_HANDLER@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RM = @RM@
-RPM_CONFIGURE_ARGS = @RPM_CONFIGURE_ARGS@
-RPM_HOST_CPU = @RPM_HOST_CPU@
-RPM_HOST_OS = @RPM_HOST_OS@
-RPM_HOST_VENDOR = @RPM_HOST_VENDOR@
-RPM_RELEASE = @RPM_RELEASE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_PEDANTIC = @WARN_PEDANTIC@
-WERROR = @WERROR@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AM_CFLAGS = @WARN_PEDANTIC@
-AM_CPPFLAGS = -DECCODES_SAMPLES_PATH=\"$(ECCODES_SAMPLES_PATH)\" \
-	-DECCODES_DEFINITION_PATH=\"$(ECCODES_DEFINITION_PATH)\"
-
-
-# -DUSE_JPEG2000
-#  -DYYDEBUG
-lib_LTLIBRARIES = libeccodes.la
-include_HEADERS = grib_api.h eccodes.h eccodes_windef.h eccodes_version.h
-libeccodes_la_prototypes = \
-	action.c \
-	action_class_alias.c \
-	action_class_gen.c \
-	action_class_if.c \
-	action_class_switch.c \
-	grib_accessor_class_g1fcperiod.c \
-	grib_accessor_class_g1end_of_interval_monthly.c \
-	grib_accessor_class_mars_param.c \
-	action_class_section.c \
-	action_class_list.c \
-	action_class_while.c \
-	action_class_put.c \
-	action_class_meta.c \
-	action_class_remove.c \
-	action_class_rename.c \
-	action_class_assert.c \
-	action_class_template.c \
-	action_class_trigger.c \
-	action_class_when.c \
-	action_class_concept.c \
-    action_class_hash_array.c \
-	action_class_set.c \
-	action_class_set_darray.c \
-	action_class_set_iarray.c \
-	action_class_set_sarray.c \
-	action_class_noop.c \
-	action_class_write.c \
-	action_class_print.c \
-	action_class_close.c \
-	action_class_variable.c \
-	action_class_modify.c \
-	action_class_transient_darray.c \
-	grib_accessor.c \
-	grib_concept.c \
-	grib_hash_array.c \
-	grib_bufr_descriptor.c \
-	grib_bufr_descriptors_array.c \
-	grib_darray.c \
-	grib_sarray.c \
-	grib_iarray.c \
-	grib_vdarray.c \
-	grib_vsarray.c \
-	grib_viarray.c \
-	grib_accessor_class_array.c \
-	grib_accessor_class_assert.c \
-	grib_accessor_class_ascii.c \
-	grib_accessor_class_bit.c \
-	grib_accessor_class_bitmap.c \
-	grib_accessor_class_bits.c  \
-	grib_accessor_class_bits_per_value.c \
-	grib_accessor_class_bufr_data.c \
-	grib_accessor_class_bufr_data_array.c \
-	grib_accessor_class_bufr_data_element.c \
-	grib_accessor_class_bufr_elements_table.c \
-	grib_accessor_class_bufr_group.c \
-	grib_accessor_class_bufr_string_values.c \
-	grib_accessor_class_pack_bufr_values.c \
-	grib_accessor_class_group.c \
-	grib_accessor_class_unpack_bufr_values.c \
-	grib_accessor_class_bufr_has_delayed_replication.c \
-	grib_accessor_class_apply_operators.c \
-	grib_accessor_class_non_alpha.c \
-	grib_accessor_class_g1bitmap.c \
-	grib_accessor_class_g2bitmap.c \
-	grib_accessor_class_concept.c \
-	grib_accessor_class_hash_array.c \
-	grib_accessor_class_decimal_precision.c \
-	grib_accessor_class_divdouble.c \
-	grib_accessor_class_budgdate.c \
-	grib_accessor_class_validity_date.c \
-	grib_accessor_class_validity_time.c \
-	grib_accessor_class_bytes.c \
-	grib_accessor_class.c \
-	grib_accessor_class_change_scanning_direction.c \
-	grib_accessor_class_check_internal_version.c \
-	grib_accessor_class_codeflag.c \
-	grib_accessor_class_smart_table.c \
-	grib_accessor_class_smart_table_column.c \
-	grib_accessor_class_codetable.c \
-	grib_accessor_class_codetable_units.c \
-	grib_accessor_class_codetable_title.c \
-	grib_accessor_class_count_file.c \
-	grib_accessor_class_count_total.c \
-	grib_accessor_class_double.c \
-	grib_accessor_class_element.c \
-	grib_accessor_class_evaluate.c \
-	grib_accessor_class_g1area.c \
-	grib_accessor_class_g1date.c \
-	grib_accessor_class_g1monthlydate.c \
-	grib_accessor_class_library_version.c \
-	grib_accessor_class_when.c \
-	grib_accessor_class_g1verificationdate.c \
-	grib_accessor_class_g1day_of_the_year_date.c \
-	grib_accessor_class_g1_half_byte_codeflag.c \
-	grib_accessor_class_g1forecastmonth.c \
-	grib_accessor_class_g1step_range.c \
-	grib_accessor_class_g2step_range.c \
-	grib_accessor_class_data_g22order_packing.c \
-	grib_accessor_class_mars_step.c \
-	grib_accessor_class_message_copy.c \
-	grib_accessor_class_dictionary.c \
-	grib_accessor_class_g1param.c \
-	grib_accessor_class_g1p1p2.c \
-	grib_accessor_class_g1_increment.c \
-	grib_accessor_class_latlon_increment.c \
-	grib_accessor_class_g2date.c \
-	grib_accessor_class_g2level.c \
-	grib_accessor_class_g2step.c \
-	grib_accessor_class_g2end_step.c \
-	grib_accessor_class_g2latlon.c \
-	grib_accessor_class_g2lon.c \
-	grib_accessor_class_global_gaussian.c \
-	grib_accessor_class_gaussian_grid_name.c \
-	grib_accessor_class_gen.c \
-	grib_accessor_class_gts_header.c \
-	grib_accessor_class_ifs_param.c \
-	grib_accessor_class_int16.c \
-	grib_accessor_class_int16_little_endian.c \
-	grib_accessor_class_int32.c \
-	grib_accessor_class_int32_little_endian.c \
-	grib_accessor_class_int64.c \
-	grib_accessor_class_int64_little_endian.c \
-	grib_accessor_class_int8.c \
-	grib_accessor_class_uint16.c \
-	grib_accessor_class_uint16_little_endian.c \
-	grib_accessor_class_uint32.c \
-	grib_accessor_class_uint32_little_endian.c \
-	grib_accessor_class_uint64.c \
-	grib_accessor_class_uint64_little_endian.c \
-	grib_accessor_class_uint8.c \
-	grib_accessor_class_blob.c \
-	grib_accessor_class_julian_day.c \
-	grib_accessor_class_latlonvalues.c \
-	grib_accessor_class_latitudes.c \
-	grib_accessor_class_longitudes.c \
-	grib_accessor_class_missing.c \
-	grib_accessor_class_octahedral_gaussian.c \
-	grib_accessor_class_offset_file.c \
-	grib_accessor_class_scale.c \
-	grib_accessor_class_from_scale_factor_scaled_value.c \
-	grib_accessor_class_times.c \
-	grib_accessor_class_forward.c \
-	grib_accessor_class_g2bitmap_present.c \
-	grib_accessor_class_ibmfloat.c \
-	grib_accessor_class_ieeefloat.c \
-	grib_accessor_class_constant.c \
-	grib_accessor_class_iterator.c \
-	grib_accessor_class_message.c \
-	grib_accessor_class_nearest.c \
-	grib_accessor_class_box.c \
-	grib_accessor_class_ksec1expver.c \
-	grib_accessor_class_laplacian.c \
-	grib_accessor_class_label.c \
-	grib_accessor_class_long.c \
-	grib_accessor_class_lookup.c \
-	grib_accessor_class_octect_number.c \
-	grib_accessor_class_headers_only.c \
-	grib_accessor_class_padding.c \
-	grib_accessor_class_pad.c \
-	grib_accessor_class_padto.c \
-	grib_accessor_class_padtoeven.c \
-	grib_accessor_class_padtomultiple.c \
-	grib_accessor_class_section_padding.c \
-	grib_accessor_class_section_pointer.c \
-	grib_accessor_class_position.c \
-	grib_accessor_class_signed.c \
-	grib_accessor_class_signed_bits.c \
-	grib_accessor_class_section.c \
-	grib_accessor_class_step_in_units.c \
-	grib_accessor_class_section_length.c \
-	grib_accessor_class_g1_message_length.c \
-	grib_accessor_class_g1_section4_length.c \
-	grib_accessor_class_size.c \
-	grib_accessor_class_scale_values.c \
-	grib_accessor_class_offset_values.c \
-	grib_accessor_class_sprintf.c \
-	grib_accessor_class_getenv.c \
-	grib_accessor_class_round.c \
-	grib_accessor_class_spectral_truncation.c \
-	grib_accessor_class_time.c \
-	grib_accessor_class_transient.c \
-	grib_accessor_class_values.c \
-	grib_accessor_class_simple_packing_error.c \
-	grib_accessor_class_data_simple_packing.c \
-	grib_accessor_class_data_ccsds_packing.c \
-	grib_accessor_class_count_missing.c \
-	grib_accessor_class_data_sh_packed.c \
-	grib_accessor_class_data_sh_unpacked.c \
-	grib_accessor_class_number_of_values_data_raw_packing.c \
-	grib_accessor_class_data_g1simple_packing.c \
-	grib_accessor_class_data_g1shsimple_packing.c \
-	grib_accessor_class_data_shsimple_packing.c \
-	grib_accessor_class_data_constant_field.c \
-	grib_accessor_class_data_dummy_field.c \
-	grib_2order_packer_simple.c \
-	grib_accessor_class_variable.c \
-	grib_accessor_class_second_order_bits_per_value.c \
-	grib_accessor_class_data_g2simple_packing.c \
-	grib_accessor_class_data_g2simple_packing_with_preprocessing.c \
-	grib_accessor_class_data_g2shsimple_packing.c \
-	grib_accessor_class_data_g2complex_packing.c \
-	grib_accessor_class_data_2order_packing.c \
-	grib_accessor_class_data_2order_packing_count.c \
-	grib_accessor_class_data_g1second_order_row_by_row_packing.c \
-	grib_accessor_class_data_g1second_order_constant_width_packing.c \
-	grib_accessor_class_data_g1second_order_general_packing.c \
-	grib_accessor_class_data_g1second_order_general_extended_packing.c \
-	grib_accessor_class_g2grid.c \
-	grib_accessor_class_unexpanded_descriptors.c \
-	grib_accessor_class_expanded_descriptors.c \
-	grib_accessor_class_bufrdc_expanded_descriptors.c \
-	grib_accessor_class_data_apply_bitmap.c \
-	grib_accessor_class_data_apply_boustrophedonic.c \
-	grib_accessor_class_data_apply_boustrophedonic_bitmap.c \
-	grib_accessor_class_data_secondary_bitmap.c \
-	grib_accessor_class_data_g1secondary_bitmap.c \
-	grib_accessor_class_data_g2secondary_bitmap.c \
-	grib_accessor_class_data_jpeg2000_packing.c \
-	grib_accessor_class_data_png_packing.c \
-	grib_accessor_class_data_raw_packing.c \
-	grib_accessor_class_data_complex_packing.c \
-	grib_accessor_class_data_g1complex_packing.c \
-	grib_accessor_class_gds_not_present_bitmap.c \
-	grib_accessor_class_data_apply_gdsnotpresent.c \
-	grib_accessor_class_gds_is_present.c \
-	grib_accessor_class_select_step_template.c \
-	grib_accessor_class_local_definition.c \
-	grib_accessor_class_g2_eps.c \
-	grib_accessor_class_g2_chemical.c \
-	grib_accessor_class_g2_mars_labeling.c \
-	grib_accessor_class_transient_darray.c \
-	grib_accessor_class_md5.c \
-	grib_jasper_encoding.c \
-	grib_openjpeg_encoding.c \
-	action_class_set_missing.c \
-	grib_accessor_class_number_of_points.c \
-	grib_accessor_class_suppressed.c \
-	grib_index.c \
-	grib_accessor_class_number_of_points_gaussian.c \
-	grib_accessor_class_number_of_values.c \
-	grib_accessor_class_number_of_coded_values.c \
-	grib_accessor_class_g1number_of_coded_values_sh_complex.c \
-	grib_accessor_class_g1number_of_coded_values_sh_simple.c \
-	grib_accessor_class_dirty.c \
-	grib_accessor_class_statistics.c \
-	grib_accessor_class_statistics_spectral.c \
-	grib_accessor_class_unsigned.c  \
-	grib_accessor_class_unsigned_bits.c \
-	grib_accessor_class_raw.c \
-	grib_accessor_class_bufr_extract_subsets.c \
-	grib_accessor_class_spd.c \
-	grib_accessor_class_sum.c \
-	grib_accessor_class_to_integer.c \
-	grib_accessor_class_to_double.c \
-	grib_accessor_class_to_string.c \
-	grib_accessor_class_sexagesimal2decimal.c \
-	grib_accessor_class_vector.c \
-	grib_accessor_class_long_vector.c \
-	grib_gaussian_reduced.c \
-	grib_accessor_class_abstract_vector.c \
-	grib_accessor_class_abstract_long_vector.c \
-	grib_loader_from_handle.c  \
-	grib_bits.c \
-	grib_timer.c \
-	grib_ibmfloat.c \
-	grib_ieeefloat.c \
-	grib_accessor_class_reference_value_error.c \
-	grib_memory.c \
-	grib_buffer.c \
-	grib_dumper.c \
-	grib_dumper_class_serialize.c \
-	grib_dumper_class_debug.c \
-	grib_dumper_class_default.c \
-	grib_dumper_class_keys.c \
-	grib_dumper_class_json.c \
-	grib_dumper_class_xml.c \
-	grib_dumper_class_c_code.c \
-	grib_dumper_class_wmo.c \
-	grib_dumper_class.c \
-	grib_context.c \
-	grib_date.c \
-	grib_fieldset.c \
-	grib_filepool.c \
-	grib_geography.c \
-	grib_handle.c \
-	grib_header_compute.c \
-	grib_hash_keys.c \
-	grib_io.c \
-	grib_trie.c \
-	grib_itrie.c \
-	grib_rules.c \
-	grib_keys_iterator.c \
-	grib_parse_utils.c \
-	grib_query.c \
-	grib_scaling.c \
-	grib_templates.c \
-	grib_dependency.c \
-	grib_value.c \
-	grib_errors.c \
-	grib_expression_class_binop.c \
-	grib_expression_class_is_in_dict.c \
-	grib_expression_class_true.c \
-	grib_expression_class_string_compare.c \
-	grib_expression_class_unop.c \
-	grib_expression_class_functor.c \
-	grib_expression_class_accessor.c \
-	grib_expression_class_is_in_list.c \
-	grib_expression_class_is_integer.c \
-	grib_expression_class_length.c \
-	grib_expression_class_long.c \
-	grib_expression_class_double.c \
-	grib_expression_class_string.c \
-	grib_expression_class_sub_string.c \
-	grib_box.c \
-	grib_box_class.c \
-	grib_box_class_gen.c \
-	grib_box_class_regular_gaussian.c \
-	grib_box_class_reduced_gaussian.c \
-	grib_nearest.c \
-	grib_nearest_class.c \
-	grib_nearest_class_gen.c \
-	grib_nearest_class_regular.c \
-	grib_nearest_class_reduced.c \
-	grib_nearest_class_latlon_reduced.c \
-	grib_nearest_class_sh.c \
-	grib_nearest_class_lambert_conformal.c \
-	grib_iterator_class_polar_stereographic.c \
-	grib_iterator_class_lambert_azimuthal_equal_area.c  \
-	grib_iterator_class_lambert_conformal.c \
-	grib_iterator.c \
-	grib_iterator_class.c \
-	grib_iterator_class_gaussian.c \
-	grib_iterator_class_gaussian_reduced.c \
-	grib_iterator_class_latlon_reduced.c \
-	grib_iterator_class_gen.c \
-	grib_iterator_class_latlon.c \
-	grib_iterator_class_regular.c \
-	grib_expression.c \
-	grib_util.c \
-	compile.c \
-	functions.c \
-	codes_memfs.c \
-	grib_api_version.c
-
-libeccodes_extra_prototypes = grib_bits_any_endian.c grib_bits_any_endian_simple.c
-libeccodes_la_SOURCES = $(libeccodes_la_prototypes) eccodes.c grib_yacc.c  grib_lex.c md5.c
-libeccodes_la_LIBADD = @LIBOBJS@
-libeccodes_la_DEPENDENCIES = grib_api.h $(libeccodes_la_LIBADD)
-libeccodes_la_LDFLAGS = -version-info $(ECCODES_CURRENT):$(ECCODES_REVISION):$(ECCODES_AGE)
-
-# set the include path
-INCLUDES = -I.
-CLEANFILES = libeccodes.la
-noinst_HEADERS = grib_api_internal.h \
-                 md5.h \
-                 grib_emoslib.h \
-                 grib_api_prototypes.h \
-                 grib_dumper_class.h \
-                 errors.pl \
-                 grib_dumper_factory.h \
-                 grib_accessor_class.h \
-                 grib_accessor_factory.h \
-                 grib_expression.h \
-                 grib_nearest_class.h \
-                 grib_nearest_factory.h \
-                 grib_box_class.h \
-                 grib_box_factory.h \
-                 grib_iterator_class.h \
-                 grib_iterator_factory.h \
-                 grib_templates.h \
-                 grib_yacc.h \
-                 grib2c.pl \
-                 grib_errors_internal.txt \
-                 grib_errors.txt
-
-EXTRA_DIST = dummy.am griby.y gribl.l grib_accessor_classes_hash.c \
-            grib_bits_fast_big_endian.c grib_bits_any_endian.c \
-            grib_bits_fast_big_endian_vector.c grib_bits_any_endian_vector.c \
-            grib_bits_fast_big_endian_simple.c grib_bits_any_endian_simple.c \
-            grib_bits_fast_big_endian_omp.c grib_bits_any_endian_omp.c \
-            encode_double_array.c grib_bits_ibmpow.c grib_bits_ibmpow_opt.c minmax_val.c \
-            CMakeLists.txt grib_api_version.c.in \
-            errors.pl make_class.pl make_hash_keys.ksh make_accessor_class_hash.ksh
-
-all: config.h
-	$(MAKE) $(AM_MAKEFLAGS) all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-config.h: stamp-h1
-	@if test ! -f $@; then rm -f stamp-h1; else :; fi
-	@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
-
-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
-	@rm -f stamp-h1
-	cd $(top_builddir) && $(SHELL) ./config.status src/config.h
-$(srcdir)/config.h.in:  $(am__configure_deps) 
-	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
-	rm -f stamp-h1
-	touch $@
-
-distclean-hdr:
-	-rm -f config.h stamp-h1
-eccodes_version.h: $(top_builddir)/config.status $(srcdir)/eccodes_version.h.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-libeccodes.la: $(libeccodes_la_OBJECTS) $(libeccodes_la_DEPENDENCIES) $(EXTRA_libeccodes_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(libeccodes_la_LINK) -rpath $(libdir) $(libeccodes_la_OBJECTS) $(libeccodes_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_alias.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_assert.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_close.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_concept.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_gen.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_hash_array.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_if.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_list.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_meta.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_modify.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_noop.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_print.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_put.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_remove.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_rename.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_section.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_set.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_set_darray.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_set_iarray.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_set_missing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_set_sarray.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_switch.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_template.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_transient_darray.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_trigger.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_variable.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_when.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_while.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/action_class_write.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/codes_memfs.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/compile.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/eccodes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/functions.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_2order_packer_simple.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_abstract_long_vector.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_abstract_vector.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_apply_operators.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_array.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_ascii.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_assert.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bit.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bitmap.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bits.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bits_per_value.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_blob.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_box.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_budgdate.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bufr_data.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bufr_data_array.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bufr_data_element.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bufr_elements_table.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bufr_extract_subsets.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bufr_group.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bufr_has_delayed_replication.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bufr_string_values.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bufrdc_expanded_descriptors.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_bytes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_change_scanning_direction.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_check_internal_version.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_codeflag.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_codetable.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_codetable_title.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_codetable_units.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_concept.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_constant.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_count_file.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_count_missing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_count_total.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_2order_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_2order_packing_count.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_apply_bitmap.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_apply_boustrophedonic.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_apply_boustrophedonic_bitmap.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_apply_gdsnotpresent.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_ccsds_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_complex_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_constant_field.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_dummy_field.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_g1complex_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_g1second_order_constant_width_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_g1second_order_general_extended_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_g1second_order_general_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_g1second_order_row_by_row_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_g1secondary_bitmap.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_g1shsimple_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_g1simple_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_g22order_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_g2complex_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_g2secondary_bitmap.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_g2shsimple_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_g2simple_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_g2simple_packing_with_preprocessing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_jpeg2000_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_png_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_raw_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_secondary_bitmap.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_sh_packed.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_sh_unpacked.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_shsimple_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_data_simple_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_decimal_precision.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_dictionary.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_dirty.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_divdouble.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_double.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_element.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_evaluate.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_expanded_descriptors.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_forward.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_from_scale_factor_scaled_value.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1_half_byte_codeflag.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1_increment.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1_message_length.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1_section4_length.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1area.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1bitmap.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1date.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1day_of_the_year_date.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1end_of_interval_monthly.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1fcperiod.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1forecastmonth.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1monthlydate.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1number_of_coded_values_sh_complex.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1number_of_coded_values_sh_simple.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1p1p2.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1param.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1step_range.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g1verificationdate.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g2_chemical.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g2_eps.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g2_mars_labeling.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g2bitmap.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g2bitmap_present.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g2date.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g2end_step.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g2grid.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g2latlon.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g2level.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g2lon.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g2step.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_g2step_range.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_gaussian_grid_name.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_gds_is_present.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_gds_not_present_bitmap.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_gen.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_getenv.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_global_gaussian.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_group.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_gts_header.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_hash_array.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_headers_only.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_ibmfloat.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_ieeefloat.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_ifs_param.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_int16.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_int16_little_endian.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_int32.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_int32_little_endian.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_int64.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_int64_little_endian.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_int8.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_iterator.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_julian_day.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_ksec1expver.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_label.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_laplacian.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_latitudes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_latlon_increment.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_latlonvalues.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_library_version.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_local_definition.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_long.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_long_vector.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_longitudes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_lookup.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_mars_param.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_mars_step.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_md5.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_message.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_message_copy.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_missing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_nearest.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_non_alpha.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_number_of_coded_values.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_number_of_points.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_number_of_points_gaussian.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_number_of_values.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_number_of_values_data_raw_packing.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_octahedral_gaussian.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_octect_number.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_offset_file.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_offset_values.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_pack_bufr_values.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_pad.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_padding.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_padto.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_padtoeven.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_padtomultiple.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_position.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_raw.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_reference_value_error.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_round.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_scale.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_scale_values.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_second_order_bits_per_value.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_section.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_section_length.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_section_padding.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_section_pointer.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_select_step_template.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_sexagesimal2decimal.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_signed.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_signed_bits.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_simple_packing_error.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_size.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_smart_table.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_smart_table_column.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_spd.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_spectral_truncation.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_sprintf.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_statistics.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_statistics_spectral.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_step_in_units.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_sum.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_suppressed.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_time.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_times.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_to_double.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_to_integer.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_to_string.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_transient.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_transient_darray.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_uint16.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_uint16_little_endian.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_uint32.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_uint32_little_endian.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_uint64.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_uint64_little_endian.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_uint8.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_unexpanded_descriptors.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_unpack_bufr_values.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_unsigned.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_unsigned_bits.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_validity_date.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_validity_time.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_values.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_variable.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_vector.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_accessor_class_when.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_api_version.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_bits.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_box.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_box_class.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_box_class_gen.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_box_class_reduced_gaussian.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_box_class_regular_gaussian.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_buffer.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_bufr_descriptor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_bufr_descriptors_array.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_concept.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_context.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_darray.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_date.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_dependency.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_dumper.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_dumper_class.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_dumper_class_c_code.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_dumper_class_debug.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_dumper_class_default.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_dumper_class_json.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_dumper_class_keys.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_dumper_class_serialize.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_dumper_class_wmo.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_dumper_class_xml.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_errors.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_expression.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_expression_class_accessor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_expression_class_binop.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_expression_class_double.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_expression_class_functor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_expression_class_is_in_dict.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_expression_class_is_in_list.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_expression_class_is_integer.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_expression_class_length.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_expression_class_long.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_expression_class_string.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_expression_class_string_compare.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_expression_class_sub_string.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_expression_class_true.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_expression_class_unop.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_fieldset.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_filepool.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_gaussian_reduced.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_geography.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_handle.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_hash_array.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_hash_keys.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_header_compute.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_iarray.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_ibmfloat.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_ieeefloat.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_index.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_io.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_iterator.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_iterator_class.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_iterator_class_gaussian.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_iterator_class_gaussian_reduced.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_iterator_class_gen.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_iterator_class_lambert_azimuthal_equal_area.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_iterator_class_lambert_conformal.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_iterator_class_latlon.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_iterator_class_latlon_reduced.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_iterator_class_polar_stereographic.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_iterator_class_regular.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_itrie.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_jasper_encoding.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_keys_iterator.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_lex.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_loader_from_handle.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_memory.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_nearest.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_nearest_class.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_nearest_class_gen.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_nearest_class_lambert_conformal.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_nearest_class_latlon_reduced.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_nearest_class_reduced.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_nearest_class_regular.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_nearest_class_sh.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_openjpeg_encoding.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_parse_utils.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_query.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_rules.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_sarray.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_scaling.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_templates.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_timer.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_trie.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_util.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_value.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_vdarray.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_viarray.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_vsarray.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_yacc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/md5.Plo at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
-	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
-	done
-
-uninstall-includeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS) config.h
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-hdr distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-includeHEADERS
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
-
-.MAKE: all install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-hdr distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-includeHEADERS install-info install-info-am \
-	install-libLTLIBRARIES install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am uninstall-includeHEADERS \
-	uninstall-libLTLIBRARIES
-
-
-include $(DEVEL_RULES)
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/action.c b/src/action.c
index 38dcd16..c59fee6 100644
--- a/src/action.c
+++ b/src/action.c
@@ -114,13 +114,13 @@ int grib_create_accessor(grib_section* p, grib_action* a,  grib_loader* h)
     while(c)
     {
         if(c->create_accessor) {
-			int ret;
-			GRIB_MUTEX_INIT_ONCE(&once,&init_mutex);
-			GRIB_MUTEX_LOCK(&mutex1);
+            int ret;
+            GRIB_MUTEX_INIT_ONCE(&once,&init_mutex);
+            GRIB_MUTEX_LOCK(&mutex1);
             ret=c->create_accessor(p, a, h);
-			GRIB_MUTEX_UNLOCK(&mutex1);
+            GRIB_MUTEX_UNLOCK(&mutex1);
             return ret;
-		}
+        }
         c = c->super ? *(c->super) : NULL;
     }
     fprintf(stderr,"Cannot create accessor %s %s\n",a->name,a->cclass->name);
@@ -132,8 +132,8 @@ int grib_action_notify_change( grib_action* a, grib_accessor *observer, grib_acc
 {
     grib_action_class *c = a->cclass;
 
-    GRIB_MUTEX_INIT_ONCE(&once,&init_mutex)
-    GRIB_MUTEX_LOCK(&mutex1)
+    GRIB_MUTEX_INIT_ONCE(&once,&init_mutex);
+    GRIB_MUTEX_LOCK(&mutex1);
 
     init(c);
     while(c)
diff --git a/src/action_class_close.c b/src/action_class_close.c
index b06f8be..cde82fe 100644
--- a/src/action_class_close.c
+++ b/src/action_class_close.c
@@ -104,7 +104,7 @@ static int execute(grib_action* act, grib_handle *h)
   err=grib_get_string(h,self->filename,filename,&len);
   /* fprintf(stderr,"++++ name %s\n",filename); */
   if (err) return err;
-  /* grib_file_close_force(filename,&err); */
+  /* grib_file_close(filename,1,&err); */
   file=grib_get_file(filename,&err);
   if (err) return err;
   if (file) grib_file_pool_delete_file(file);
diff --git a/src/action_class_section.c b/src/action_class_section.c
index 2364f1e..dabed33 100644
--- a/src/action_class_section.c
+++ b/src/action_class_section.c
@@ -158,6 +158,9 @@ static int notify_change(grib_action* act, grib_accessor * notified,
     loader.lookup_long   = grib_lookup_long_from_handle;
     loader.init_accessor = grib_init_accessor_from_handle;
 
+    if (h->kid != NULL) {
+        return GRIB_INTERNAL_ERROR;
+    }
 
     Assert(h->kid == NULL);
     tmp_handle->loader = &loader;
diff --git a/src/action_class_transient_darray.c b/src/action_class_transient_darray.c
index 378c780..eb46c0b 100644
--- a/src/action_class_transient_darray.c
+++ b/src/action_class_transient_darray.c
@@ -86,7 +86,7 @@ static void init_class(grib_action_class* c)
 }
 /* END_CLASS_IMP */
 
-grib_action* grib_action_create_transient_darray( grib_context* context, const char* name, grib_darray* darray)
+grib_action* grib_action_create_transient_darray( grib_context* context, const char* name, grib_darray* darray,int flags)
 {
     grib_action_transient_darray* a = NULL;
     grib_action_class* c   = grib_action_class_transient_darray;
@@ -96,6 +96,7 @@ grib_action* grib_action_create_transient_darray( grib_context* context, const c
     act->cclass       = c;
     a                 = (grib_action_transient_darray*)act;
     act->context      = context;
+    act->flags        = flags;
 
     a->darray  = darray;
     a->name        = grib_context_strdup_persistent(context,name);
diff --git a/src/action_class_write.c b/src/action_class_write.c
index 608708e..f5fdfda 100644
--- a/src/action_class_write.c
+++ b/src/action_class_write.c
@@ -173,7 +173,7 @@ static int execute(grib_action* act, grib_handle *h)
         }
     }
 
-    grib_file_close(filename, &err);
+    grib_file_close(filename, 0, &err);
     if (err != GRIB_SUCCESS) {
         grib_context_log(act->context, GRIB_LOG_ERROR,"unable to write message\n");
         return err;
diff --git a/src/config.h b/src/config.h
deleted file mode 100644
index bf20822..0000000
--- a/src/config.h
+++ /dev/null
@@ -1,230 +0,0 @@
-/* src/config.h.  Generated from config.h.in by configure.  */
-/* src/config.h.in.  Generated from configure.ac by autoheader.  */
-
-/* Define to 1 if the `closedir' function returns void instead of `int'. */
-/* #undef CLOSEDIR_VOID */
-
-/* ecCodes Age of ABI version */
-#define ECCODES_AGE 0
-
-/* ecCodes Current ABI version */
-#define ECCODES_CURRENT 1
-
-/* ecCodes version */
-#define ECCODES_MAIN_VERSION 0.16.0
-
-/* ecCodes Major release */
-#define ECCODES_MAJOR_VERSION 0
-
-/* ecCodes Minor release */
-#define ECCODES_MINOR_VERSION 16
-
-/* ecCodes Revision ABI version */
-#define ECCODES_REVISION 0
-
-/* ecCodes Revision release */
-#define ECCODES_REVISION_VERSION 0
-
-/* 1->IBM Power6/7 Optimisations enabled 0->IBM Power6/7 Optimisations
-   disabled */
-#define GRIB_IBMPOWER67_OPT 0
-
-/* inline if available */
-#define GRIB_INLINE inline
-
-/* 1->pthreads enabled 0->pthreads disabled */
-#define GRIB_LINUX_PTHREADS 0
-
-/* memory alignment required */
-#define GRIB_MEM_ALIGN 0
-
-/* 1->pthreads enabled 0->pthreads disabled */
-#define GRIB_PTHREADS 0
-
-/* 1->Timer on 0->Timer off */
-#define GRIB_TIMER 0
-
-/* Define to 1 if you have the <assert.h> header file. */
-#define HAVE_ASSERT_H 1
-
-/* Define to 1 if you have the `bzero' function. */
-#define HAVE_BZERO 1
-
-/* Define to 1 if you have the <ctype.h> header file. */
-#define HAVE_CTYPE_H 1
-
-/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
-   */
-#define HAVE_DIRENT_H 1
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
-
-/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-/* #undef HAVE_DOPRNT */
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
-#define HAVE_FSEEKO 1
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#define HAVE_GETTIMEOFDAY 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* JPEG enabled */
-#define HAVE_JPEG 1
-
-/* Define to 1 if you have the `aec' library (-laec). */
-/* #undef HAVE_LIBAEC */
-
-/* Define if you have EMOS library */
-/* #undef HAVE_LIBEMOS */
-
-/* Define if you have JPEG version 2 "Jasper" library */
-#define HAVE_LIBJASPER 1
-
-/* Define to 1 if you have the `m' library (-lm). */
-#define HAVE_LIBM 1
-
-/* Define if you have JPEG version 2 "Openjpeg" library */
-/* #undef HAVE_LIBOPENJPEG */
-
-/* Define to 1 if you have the png library (-lpng) */
-/* #undef HAVE_LIBPNG */
-
-/* Define to 1 if you have the <math.h> header file. */
-#define HAVE_MATH_H 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
-/* #undef HAVE_NDIR_H */
-
-/* NETCDF enabled */
-/* #undef HAVE_NETCDF */
-
-/* Define to 1 if you have the <stdarg.h> header file. */
-#define HAVE_STDARG_H 1
-
-/* Define to 1 if you have the <stddef.h> header file. */
-#define HAVE_STDDEF_H 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
-   */
-/* #undef HAVE_SYS_DIR_H */
-
-/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
-   */
-/* #undef HAVE_SYS_NDIR_H */
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#define HAVE_SYS_PARAM_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#define HAVE_SYS_TIME_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if you have the `vprintf' function. */
-#define HAVE_VPRINTF 1
-
-/* 1-> ieee big endian float/double 0->no ieee big endian float/double */
-#define IEEE_BE 0
-
-/* 1-> ieee little endian float/double 0->no ieee little endian float/double
-   */
-#define IEEE_LE 1
-
-/* 1-> big endian 0->little endian */
-#define IS_BIG_ENDIAN 0
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
-   */
-#define LT_OBJDIR ".libs/"
-
-/* memory management */
-#define MANAGE_MEM 0
-
-/* 1->OpenMP packing 0->single thread packing */
-#define OMP_PACKING 0
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "Software.Support at ecmwf.int"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "eccodes"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "eccodes  "
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "eccodes"
-
-/* Define to the home page for this package. */
-#define PACKAGE_URL ""
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION " "
-
-/* posix_memalign present */
-#define POSIX_MEMALIGN 1
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#define RETSIGTYPE void
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#define TIME_WITH_SYS_TIME 1
-
-/* vectorised code */
-#define VECTOR 0
-
-/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
-   `char[]'. */
-#define YYTEXT_POINTER 1
-
-/* Enable large inode numbers on Mac OS X 10.5.  */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-/* #undef _FILE_OFFSET_BITS */
-
-/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
-/* #undef _LARGEFILE_SOURCE */
-
-/* Define for large files, on AIX-style hosts. */
-/* #undef _LARGE_FILES */
-
-/* Needs to be undefined on some AIX */
-/* #undef _LARGE_FILE_API */
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-/* #undef size_t */
diff --git a/src/config.h.in b/src/config.h.in
deleted file mode 100644
index 02f141b..0000000
--- a/src/config.h.in
+++ /dev/null
@@ -1,229 +0,0 @@
-/* src/config.h.in.  Generated from configure.ac by autoheader.  */
-
-/* Define to 1 if the `closedir' function returns void instead of `int'. */
-#undef CLOSEDIR_VOID
-
-/* ecCodes Age of ABI version */
-#undef ECCODES_AGE
-
-/* ecCodes Current ABI version */
-#undef ECCODES_CURRENT
-
-/* ecCodes version */
-#undef ECCODES_MAIN_VERSION
-
-/* ecCodes Major release */
-#undef ECCODES_MAJOR_VERSION
-
-/* ecCodes Minor release */
-#undef ECCODES_MINOR_VERSION
-
-/* ecCodes Revision ABI version */
-#undef ECCODES_REVISION
-
-/* ecCodes Revision release */
-#undef ECCODES_REVISION_VERSION
-
-/* 1->IBM Power6/7 Optimisations enabled 0->IBM Power6/7 Optimisations
-   disabled */
-#undef GRIB_IBMPOWER67_OPT
-
-/* inline if available */
-#undef GRIB_INLINE
-
-/* 1->pthreads enabled 0->pthreads disabled */
-#undef GRIB_LINUX_PTHREADS
-
-/* memory alignment required */
-#undef GRIB_MEM_ALIGN
-
-/* 1->pthreads enabled 0->pthreads disabled */
-#undef GRIB_PTHREADS
-
-/* 1->Timer on 0->Timer off */
-#undef GRIB_TIMER
-
-/* Define to 1 if you have the <assert.h> header file. */
-#undef HAVE_ASSERT_H
-
-/* Define to 1 if you have the `bzero' function. */
-#undef HAVE_BZERO
-
-/* Define to 1 if you have the <ctype.h> header file. */
-#undef HAVE_CTYPE_H
-
-/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
-   */
-#undef HAVE_DIRENT_H
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-#undef HAVE_DOPRNT
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
-#undef HAVE_FSEEKO
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#undef HAVE_GETTIMEOFDAY
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* JPEG enabled */
-#undef HAVE_JPEG
-
-/* Define to 1 if you have the `aec' library (-laec). */
-#undef HAVE_LIBAEC
-
-/* Define if you have EMOS library */
-#undef HAVE_LIBEMOS
-
-/* Define if you have JPEG version 2 "Jasper" library */
-#undef HAVE_LIBJASPER
-
-/* Define to 1 if you have the `m' library (-lm). */
-#undef HAVE_LIBM
-
-/* Define if you have JPEG version 2 "Openjpeg" library */
-#undef HAVE_LIBOPENJPEG
-
-/* Define to 1 if you have the png library (-lpng) */
-#undef HAVE_LIBPNG
-
-/* Define to 1 if you have the <math.h> header file. */
-#undef HAVE_MATH_H
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
-#undef HAVE_NDIR_H
-
-/* NETCDF enabled */
-#undef HAVE_NETCDF
-
-/* Define to 1 if you have the <stdarg.h> header file. */
-#undef HAVE_STDARG_H
-
-/* Define to 1 if you have the <stddef.h> header file. */
-#undef HAVE_STDDEF_H
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
-   */
-#undef HAVE_SYS_DIR_H
-
-/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
-   */
-#undef HAVE_SYS_NDIR_H
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#undef HAVE_SYS_PARAM_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the `vprintf' function. */
-#undef HAVE_VPRINTF
-
-/* 1-> ieee big endian float/double 0->no ieee big endian float/double */
-#undef IEEE_BE
-
-/* 1-> ieee little endian float/double 0->no ieee little endian float/double
-   */
-#undef IEEE_LE
-
-/* 1-> big endian 0->little endian */
-#undef IS_BIG_ENDIAN
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
-   */
-#undef LT_OBJDIR
-
-/* memory management */
-#undef MANAGE_MEM
-
-/* 1->OpenMP packing 0->single thread packing */
-#undef OMP_PACKING
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* posix_memalign present */
-#undef POSIX_MEMALIGN
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#undef RETSIGTYPE
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* vectorised code */
-#undef VECTOR
-
-/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
-   `char[]'. */
-#undef YYTEXT_POINTER
-
-/* Enable large inode numbers on Mac OS X 10.5.  */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-#undef _FILE_OFFSET_BITS
-
-/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
-#undef _LARGEFILE_SOURCE
-
-/* Define for large files, on AIX-style hosts. */
-#undef _LARGE_FILES
-
-/* Needs to be undefined on some AIX */
-#undef _LARGE_FILE_API
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
diff --git a/src/dumper.class b/src/dumper.class
index ea2840e..e0c879c 100644
--- a/src/dumper.class
+++ b/src/dumper.class
@@ -15,7 +15,7 @@ static void footer         (grib_dumper*,grib_handle*);
 
 typedef struct grib_dumper_NAME {
     grib_dumper          dumper;  
-MEMBERS
+MEMBERS 
 } grib_dumper_NAME;
 
 extern grib_dumper_class* SUPER;
diff --git a/src/eccodes.c b/src/eccodes.c
index 0015aec..07bf933 100644
--- a/src/eccodes.c
+++ b/src/eccodes.c
@@ -159,7 +159,7 @@ grib_handle* codes_handle_new_from_message_copy(grib_context* c, const void* dat
 {
     return grib_handle_new_from_message_copy(c,data,data_len);
 }
-grib_handle* codes_handle_new_from_samples (grib_context* c, const char* res_name)
+grib_handle* codes_grib_handle_new_from_samples (grib_context* c, const char* res_name)
 {
     return grib_handle_new_from_samples(c, res_name);
 }
@@ -251,9 +251,9 @@ grib_iterator* codes_grib_iterator_new(grib_handle* h, unsigned long flags,int*
 {
     return grib_iterator_new(h,flags,error);
 }
-int codes_grib_get_data(grib_handle *h, double *lats, double *lons, double *values, size_t *size)
+int codes_grib_get_data(grib_handle *h, double *lats, double *lons, double *values)
 {
-    return grib_get_data(h,lats,lons,values,size);
+    return grib_get_data(h,lats,lons,values);
 }
 int codes_grib_iterator_next(grib_iterator *i, double* lat,double* lon,double* value)
 {
@@ -389,6 +389,12 @@ int codes_set_long_array(grib_handle* h, const char* key, const long* vals, size
 {
     return grib_set_long_array(h,key,vals,length);
 }
+
+int codes_set_string_array(grib_handle *h, const char *key, const char **vals, size_t length)
+{
+    return grib_set_string_array(h, key, vals, length);
+}
+
 int codes_set_values(grib_handle* h,grib_values*  grib_values , size_t arg_count)
 {
     return grib_set_values(h,grib_values,arg_count);
@@ -405,7 +411,6 @@ void codes_dump_content(grib_handle* h,FILE* out,const char* mode, unsigned long
 {
     grib_dump_content(h, out, mode, option_flags, arg);
 }
-
 /* GTS, GRIBEX */
 /******************************************************************************/
 void codes_gts_header_off(grib_context* c)
diff --git a/src/eccodes.h b/src/eccodes.h
index 4e6d933..eb53f24 100644
--- a/src/eccodes.h
+++ b/src/eccodes.h
@@ -9,9 +9,9 @@
  */
 
 /*! \file eccodes.h
-  \brief eccodes C header file
+  \brief The ecCodes C header file
 
-  This is the only file that must be included to use the eccodes library
+  This is the only file that must be included to use the ecCodes library
   from C.
 */
 
@@ -60,43 +60,107 @@ Log mode for information for processing information
 #define CODES_UTIL_SET_SPEC_FLAGS_ONLY_PACKING GRIB_UTIL_SET_SPEC_FLAGS_ONLY_PACKING
 
 /* Dump option flags*/
-#define CODES_DUMP_FLAG_READ_ONLY    GRIB_DUMP_FLAG_READ_ONLY   
-#define CODES_DUMP_FLAG_DUMP_OK      GRIB_DUMP_FLAG_DUMP_OK     
-#define CODES_DUMP_FLAG_VALUES       GRIB_DUMP_FLAG_VALUES      
-#define CODES_DUMP_FLAG_CODED        GRIB_DUMP_FLAG_CODED       
-#define CODES_DUMP_FLAG_OCTECT       GRIB_DUMP_FLAG_OCTECT      
-#define CODES_DUMP_FLAG_ALIASES      GRIB_DUMP_FLAG_ALIASES     
-#define CODES_DUMP_FLAG_TYPE         GRIB_DUMP_FLAG_TYPE        
-#define CODES_DUMP_FLAG_HEXADECIMAL  GRIB_DUMP_FLAG_HEXADECIMAL 
-#define CODES_DUMP_FLAG_NO_DATA      GRIB_DUMP_FLAG_NO_DATA     
-#define CODES_DUMP_FLAG_ALL_DATA     GRIB_DUMP_FLAG_ALL_DATA     
-#define CODES_DUMP_FLAG_ALL_ATTRIBUTES     GRIB_DUMP_FLAG_ALL_ATTRIBUTES     
+#define CODES_DUMP_FLAG_READ_ONLY    GRIB_DUMP_FLAG_READ_ONLY
+#define CODES_DUMP_FLAG_DUMP_OK      GRIB_DUMP_FLAG_DUMP_OK
+#define CODES_DUMP_FLAG_VALUES       GRIB_DUMP_FLAG_VALUES
+#define CODES_DUMP_FLAG_CODED        GRIB_DUMP_FLAG_CODED
+#define CODES_DUMP_FLAG_OCTECT       GRIB_DUMP_FLAG_OCTECT
+#define CODES_DUMP_FLAG_ALIASES      GRIB_DUMP_FLAG_ALIASES
+#define CODES_DUMP_FLAG_TYPE         GRIB_DUMP_FLAG_TYPE
+#define CODES_DUMP_FLAG_HEXADECIMAL  GRIB_DUMP_FLAG_HEXADECIMAL
+#define CODES_DUMP_FLAG_NO_DATA      GRIB_DUMP_FLAG_NO_DATA
+#define CODES_DUMP_FLAG_ALL_DATA     GRIB_DUMP_FLAG_ALL_DATA
+#define CODES_DUMP_FLAG_ALL_ATTRIBUTES     GRIB_DUMP_FLAG_ALL_ATTRIBUTES
 
 /* codes_nearest flags */
-#define CODES_NEAREST_SAME_GRID   GRIB_NEAREST_SAME_GRID  
-#define CODES_NEAREST_SAME_DATA   GRIB_NEAREST_SAME_DATA  
-#define CODES_NEAREST_SAME_POINT  GRIB_NEAREST_SAME_POINT 
+#define CODES_NEAREST_SAME_GRID   GRIB_NEAREST_SAME_GRID
+#define CODES_NEAREST_SAME_DATA   GRIB_NEAREST_SAME_DATA
+#define CODES_NEAREST_SAME_POINT  GRIB_NEAREST_SAME_POINT
 
+/*! Iteration is carried out on all the keys available in the message
+\ingroup keys_iterator
+\see codes_keys_iterator_new
+*/
 #define CODES_KEYS_ITERATOR_ALL_KEYS               GRIB_KEYS_ITERATOR_ALL_KEYS
+
+/*! read only keys are skipped by keys iterator.
+\ingroup keys_iterator
+\see codes_keys_iterator_new
+*/
 #define CODES_KEYS_ITERATOR_SKIP_READ_ONLY         GRIB_KEYS_ITERATOR_SKIP_READ_ONLY
+
+/*! optional keys are skipped by keys iterator.
+\ingroup keys_iterator
+\see codes_keys_iterator_new */
 #define CODES_KEYS_ITERATOR_SKIP_OPTIONAL          GRIB_KEYS_ITERATOR_SKIP_OPTIONAL
+
+/*! edition specific keys are skipped by keys iterator.
+\ingroup keys_iterator
+\see codes_keys_iterator_new */
 #define CODES_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC  GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC
+
+/*! coded keys are skipped by keys iterator.
+\ingroup keys_iterator
+\see codes_keys_iterator_new */
 #define CODES_KEYS_ITERATOR_SKIP_CODED             GRIB_KEYS_ITERATOR_SKIP_CODED
+
+/*! computed keys are skipped by keys iterator.
+\ingroup keys_iterator
+\see codes_keys_iterator_new */
 #define CODES_KEYS_ITERATOR_SKIP_COMPUTED          GRIB_KEYS_ITERATOR_SKIP_COMPUTED
+
+/*! duplicates of a key are skipped by keys iterator.
+\ingroup keys_iterator
+\see codes_keys_iterator_new */
 #define CODES_KEYS_ITERATOR_SKIP_DUPLICATES        GRIB_KEYS_ITERATOR_SKIP_DUPLICATES
+
+/*! function keys are skipped by keys iterator.
+\ingroup keys_iterator
+\see codes_keys_iterator_new */
 #define CODES_KEYS_ITERATOR_SKIP_FUNCTION          GRIB_KEYS_ITERATOR_SKIP_FUNCTION
 
 
 typedef struct grib_values            codes_values;
 typedef struct grib_key_value_list    codes_key_value_list;
+
+/*! Codes handle,   structure giving access to parsed values by keys
+    \ingroup codes_handle
+    \struct codes_handle
+*/
 typedef struct grib_handle            codes_handle;
+
+/*! GRIB multi field handle,   structure used to build multi fields messages.
+    \ingroup codes_handle
+    \struct codes_multi_handle
+ */
 typedef struct grib_multi_handle      codes_multi_handle;
+
+/*! Codes context,  structure containing the memory methods, the parsers and the formats.
+    \ingroup codes_context
+    \struct codes_context
+*/
 typedef struct grib_context           codes_context;
+
+/*! Codes iterator, structure supporting a geographic iteration of values in a GRIB message.
+    \ingroup iterators
+    \struct codes_iterator
+*/
 typedef struct grib_iterator          codes_iterator;
+
+/*! Codes nearest, structure used to find the nearest points of a latitude longitude point in a GRIB message.
+    \ingroup iterators
+    \struct codes_nearest
+*/
 typedef struct grib_nearest           codes_nearest;
 typedef struct grib_box               codes_box;
 typedef struct grib_points            codes_points;
+
+/*! Codes keys iterator. Iterator over keys.
+    \ingroup keys_iterator
+    \struct codes_keys_iterator
+*/
 typedef struct grib_keys_iterator     codes_keys_iterator;
+
 typedef struct grib_fieldset          codes_fieldset;
 typedef struct grib_order_by          codes_order_by;
 typedef struct grib_where             codes_where;
@@ -106,7 +170,6 @@ typedef struct grib_iarray            codes_iarray;
 typedef struct grib_vdarray           codes_vdarray;
 typedef struct grib_vsarray           codes_vsarray;
 typedef struct grib_viarray           codes_viarray;
-typedef struct grib_index             codes_index;
 typedef struct grib_string_list       codes_string_list;
 typedef struct grib_util_packing_spec codes_util_packing_spec;
 typedef struct grib_util_grid_spec    codes_util_grid_spec;
@@ -121,11 +184,17 @@ codes_handle* codes_fieldset_next_handle(codes_fieldset* set,int* err);
 int  codes_fieldset_count(codes_fieldset *set);
 int  codes_values_check(codes_handle* h, codes_values* values, int count);
 
-/*! \defgroup codes_index The codes_index
+/*! \defgroup codes_index The indexing feature
 The codes_index is the structure giving indexed access to messages in a file.
  */
 /*! @{*/
 
+/*! index structure to access messages in a file.
+ * \ingroup codes_index
+ * \struct codes_index
+*/
+typedef struct grib_index             codes_index;
+
 /**
  *  Create a new index form a file. The file is indexed with the keys in argument.
  *
@@ -133,6 +202,7 @@ The codes_index is the structure giving indexed access to messages in a file.
  * @param filename    : name of the file of messages to be indexed
  * @param keys        : comma separated list of keys for the index.
  *    The type of the key can be explicitly declared appending :l for long,
+ *    (or alternatively :i)
  *    :d for double, :s for string to the key name. If the type is not
  *    declared explicitly, the native type is assumed.
  * @param err         :  0 if OK, integer value on error
@@ -146,6 +216,7 @@ codes_index* codes_index_new_from_file(codes_context* c, char* filename,const ch
  * @param c           : context  (NULL for default context)
  * @param keys        : comma separated list of keys for the index.
  *    The type of the key can be explicitly declared appending :l for long,
+ *    (or alternatively :i)
  *    :d for double, :s for string to the key name. If the type is not
  *    declared explicitly, the native type is assumed.
  * @param err         :  0 if OK, integer value on error
@@ -154,7 +225,7 @@ codes_index* codes_index_new_from_file(codes_context* c, char* filename,const ch
 codes_index* codes_index_new(codes_context* c, const char* keys,int *err);
 
 /**
- *  Indexes the file given in argument in the index given in argument. 
+ *  Indexes the file given in argument in the index given in argument.
  *
  * @param index       : index
  * @param filename    : name of the file of messages to be indexed
@@ -265,8 +336,8 @@ void codes_index_delete(codes_index* index);
 
 /*! @} */
 
-/*! \defgroup codes_handle The codes_handle
-The codes_handle is the structure giving access to parsed grib values by keys.
+/*! \defgroup codes_handle The message handle
+The codes_handle is the structure giving access to parsed message values by keys.
 */
 /*! @{*/
 /**
@@ -322,11 +393,11 @@ grib_handle* codes_bufr_handle_new_from_file(grib_context* c, FILE* f, int* erro
 
 
 /**
-*  Write a coded message in a file.     
+*  Write a coded message to a file.
 *
 * @param h           : codes_handle to be written
-* @param file        : name of the file 
-* @param mode        : mode 
+* @param file        : name of the output file
+* @param mode        : mode
 * @return            0 if OK, integer value on error
 */
 int codes_write_message(codes_handle* h,const char* file,const char* mode);
@@ -372,15 +443,24 @@ codes_handle* codes_handle_new_from_message_copy(codes_context* c, const void* d
 
 
 /**
- *  Create a handle from a message contained in a samples directory.
+ *  Create a handle from a GRIB message contained in a samples directory.
  *  The message is copied at the creation of the handle
  *
  * @param c           : the context from which the handle will be created (NULL for default context)
  * @param res_name    : the resource name
  * @return            the new handle, NULL if the resource is invalid or a problem is encountered
  */
-codes_handle* codes_handle_new_from_samples (codes_context* c, const char* res_name)  ;
+codes_handle* codes_grib_handle_new_from_samples (codes_context* c, const char* res_name)  ;
 
+/**
+ *  Create a handle from a BUFR message contained in a samples directory.
+ *  The message is copied at the creation of the handle
+ *
+ * @param c           : the context from which the handle will be created (NULL for default context)
+ * @param res_name    : the resource name
+ * @return            the new handle, NULL if the resource is invalid or a problem is encountered
+ */
+codes_handle* codes_bufr_handle_new_from_samples (codes_context* c, const char* res_name)  ;
 
 
 /**
@@ -401,8 +481,8 @@ codes_handle* codes_handle_clone(codes_handle* h)                 ;
 int codes_handle_delete(codes_handle* h);
 
 /**
- *  Create an empty multi field handle.
- *  Remember always to delete the multi handle when it is not needed any more to avoid
+ *  Create an empty multi-field GRIB handle.
+ *  Remember always to delete the multi-handle when it is not needed any more to avoid
  *  memory leaks.
  *
  * @param c           : the context from which the handle will be created (NULL for default context)
@@ -411,31 +491,31 @@ codes_multi_handle* codes_grib_multi_handle_new(codes_context* c);
 
 /**
  *  Append the sections starting with start_section of the message pointed by h at
- *  the end of the multi field handle mh.
- *  Remember always to delete the multi handle when it is not needed any more to avoid
+ *  the end of the multi-field GRIB handle mh.
+ *  Remember always to delete the multi-handle when it is not needed any more to avoid
  *  memory leaks.
  *
  * @param h           : The handle from which the sections are copied.
  * @param start_section : section number. Starting from this section all the sections to the end of the message will be copied.
- * @param mh           : The multi field handle on which the sections are appended.
+ * @param mh          : The multi-field handle on which the sections are appended.
  * @return            0 if OK, integer value on error
  */
 int codes_grib_multi_handle_append(codes_handle* h,int start_section,codes_multi_handle* mh);
 
 /**
- * Delete multi field handle.
+ * Delete multi-field GRIB handle.
  *
- * @param mh           : The multi field handle to be deleted.
+ * @param mh          : The multi-field handle to be deleted.
  * @return            0 if OK, integer value on error
  */
 int codes_grib_multi_handle_delete(codes_multi_handle* mh);
 
 /**
- *  Write a multi field handle in a file.
- *  Remember always to delete the multi handle when it is not needed any more to avoid
+ *  Write a multi-field GRIB handle in a file.
+ *  Remember always to delete the multi-handle when it is not needed any more to avoid
  *  memory leaks.
  *
- * @param mh           : The multi field handle to be written.
+ * @param mh          : The multi-field GRIB handle to be written.
  * @param f            : File on which the file handle is written.
  * @return            0 if OK, integer value on error
  */
@@ -448,7 +528,7 @@ int codes_grib_multi_handle_write(codes_multi_handle* mh,FILE* f);
 /**
 * getting the message attached to a handle
 *
-* @param h              : the grib handle to which the buffer should be gathered
+* @param h              : the handle to which the buffer should be gathered
 * @param message        : the pointer to be set to the handle's data
 * @param message_length : On exit, the message size in number of bytes
 * @return            0 if OK, integer value on error
@@ -459,7 +539,7 @@ int codes_get_message(codes_handle* h ,const void** message, size_t *message_len
 /**
 * getting a copy of the message attached to a handle
 *
-* @param h              : the grib handle to which the buffer should be returned
+* @param h              : the handle to which the buffer should be returned
 * @param message        : the pointer to the data buffer to be filled
 * @param message_length : On entry, the size in number of bytes of the allocated empty message.
 *                         On exit, the actual message length in number of bytes
@@ -472,7 +552,7 @@ int codes_get_message_copy(codes_handle* h,  void* message,size_t *message_lengt
 /*! @{ */
 
 /*!
-* \brief Create a new iterator from a handle, using current geometry and values.
+* \brief Create a new iterator from a GRIB handle, using current geometry and values.
 *
 * \param h           : the handle from which the iterator will be created
 * \param flags       : flags for future use.
@@ -492,7 +572,7 @@ codes_iterator* codes_grib_iterator_new(codes_handle* h, unsigned long flags, in
 * @param values      : returned array of data values
 * @return            0 if OK, integer value on error
 */
-int codes_grib_get_data(codes_handle *h, double *lats, double *lons, double *values, size_t *size);
+int codes_grib_get_data(codes_handle *h, double *lats, double *lons, double *values);
 
 /**
 * Get the next value from an iterator.
@@ -753,7 +833,7 @@ int codes_get_long_array(codes_handle* h, const char* key, long* vals, size_t *l
 * @return          0 if OK, integer value on error
 */
 int codes_copy_namespace(codes_handle* dest, const char* name, codes_handle* src);
-  
+
 /**
 *  Set a long value from a key. If several keys of the same name are present, the last one is set
 *  @see  codes_get_long
@@ -830,6 +910,18 @@ int codes_set_force_double_array(codes_handle* h, const char* key, const double*
 * @return            0 if OK, integer value on error
 */
 int codes_set_long_array(codes_handle* h, const char* key, const long* vals, size_t length);
+
+/**
+*  Set a string array from a key. If several keys of the same name are present, the last one is set
+*  @see  codes_get_long_array
+*
+* @param h           : the handle to set the data to
+* @param key         : the key to be searched
+* @param vals        : the address of a string array where the data will be read
+* @param length      : a size_t that contains the length of the array on input
+* @return            0 if OK, integer value on error
+*/
+int codes_set_string_array(codes_handle *h, const char *key, const char **vals, size_t length);
 /*! @} */
 
 
@@ -838,7 +930,7 @@ int codes_set_long_array(codes_handle* h, const char* key, const long* vals, siz
 *
 * @param h            : the handle to be printed
 * @param out          : output file handle
-* @param mode         : available dump modes are: debug wmo c_code
+* @param mode         : Examples of available dump modes: debug wmo
 * @param option_flags : all the CODES_DUMP_FLAG_x flags can be used
 * @param arg          : used to provide a format to output data (experimental)
 */
@@ -866,7 +958,7 @@ void codes_dump_action_tree(codes_context* c, FILE* f) ;
  grib_print_proc
  grib_data_read_proc
  grib_data_write_proc
- grib_data_tell_proc 
+ grib_data_tell_proc
  grib_data_seek_proc
  grib_data_eof_proc
 */
@@ -903,7 +995,7 @@ void codes_gts_header_off(codes_context* c);
 
 /**
 *  Set the GRIBEX mode on.
-*  Grib files will be compatible with GRIBEX.
+*  GRIB files will be compatible with GRIBEX.
 *
 * @param c           : the context
 */
@@ -941,21 +1033,21 @@ void codes_context_set_definitions_path(grib_context* c, const char* path);
 void codes_context_set_samples_path(grib_context* c, const char* path);
 
 /**
-*  Turn on support for multiple fields in single grib messages
+*  Turn on support for multiple fields in single GRIB messages
 *
 * @param c            : the context to be modified
 */
 void codes_grib_multi_support_on(codes_context* c);
 
 /**
-*  Turn off support for multiple fields in single grib messages
+*  Turn off support for multiple fields in single GRIB messages
 *
 * @param c            : the context to be modified
 */
 void codes_grib_multi_support_off(codes_context* c);
 
 /**
-*  Reset file handle in multiple field support mode
+*  Reset file handle in multiple GRIB field support mode
 *
 * @param c            : the context to be modified
 * @param f            : the file pointer
@@ -983,7 +1075,6 @@ const char* codes_get_git_sha1(void);
 /**
 *  Prints the API version
 *
-*
 */
 void codes_print_api_version(FILE* out);
 
@@ -1086,7 +1177,7 @@ int codes_points_get_values(codes_handle* h, codes_points* points, double* val);
 #define CODES_UTIL_GRID_SPEC_REGULAR_GG GRIB_UTIL_GRID_SPEC_REGULAR_GG
 #define CODES_UTIL_GRID_SPEC_ROTATED_GG GRIB_UTIL_GRID_SPEC_ROTATED_GG
 #define CODES_UTIL_GRID_SPEC_REDUCED_GG GRIB_UTIL_GRID_SPEC_REDUCED_GG
-#define CODES_UTIL_GRID_SPEC_SH         GRIB_UTIL_GRID_SPEC_SH        
+#define CODES_UTIL_GRID_SPEC_SH         GRIB_UTIL_GRID_SPEC_SH
 #define CODES_UTIL_GRID_SPEC_REDUCED_LL GRIB_UTIL_GRID_SPEC_REDUCED_LL
 #define CODES_UTIL_GRID_SPEC_POLAR_STEREOGRAPHIC GRIB_UTIL_GRID_SPEC_POLAR_STEREOGRAPHIC
 
@@ -1262,7 +1353,8 @@ Error codes returned by the eccodes functions.
 #define CODES_UNSUPPORTED_EDITION GRIB_UNSUPPORTED_EDITION
 /** Value out of coding range */
 #define CODES_OUT_OF_RANGE        GRIB_OUT_OF_RANGE
-
+/** Size of bitmap is incorrect */
+#define CODES_WRONG_BITMAP_SIZE   GRIB_WRONG_BITMAP_SIZE
 
 /*! @}*/
 #endif
diff --git a/src/eccodes_version.h b/src/eccodes_version.h
deleted file mode 100644
index eb1e85b..0000000
--- a/src/eccodes_version.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2005-2016 ECMWF.
- *
- * This software is licensed under the terms of the Apache Licence Version 2.0
- * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
- *
- * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
- * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
- */
-
-#ifndef eccodes_version_H
-#define eccodes_version_H
-
-#define ECCODES_VERSION_STR      "0.16.0"
-
-#define ECCODES_MAJOR_VERSION    0
-#define ECCODES_MINOR_VERSION    16
-#define ECCODES_REVISION_VERSION 0
-#define ECCODES_VERSION (ECCODES_MAJOR_VERSION*10000+ECCODES_MINOR_VERSION*100+ECCODES_REVISION_VERSION)
-
-#endif /* eccodes_version_H */
diff --git a/src/grib_accessor.c b/src/grib_accessor.c
index 7fa1f3b..4b9ee51 100644
--- a/src/grib_accessor.c
+++ b/src/grib_accessor.c
@@ -78,6 +78,7 @@ int grib_is_missing_internal(grib_accessor* a)
     Assert(0);
     return 0;
 }
+
 int grib_pack_double(grib_accessor* a, const double* v, size_t *len )
 {
     grib_accessor_class *c = a->cclass;
@@ -496,7 +497,7 @@ void grib_accessor_delete(grib_context *ct, grib_accessor* a)
     while(c)
     {
         grib_accessor_class *s = c->super ? *(c->super) : NULL;
-        grib_context_log(ct,GRIB_LOG_DEBUG,"destroy %s ==> %s",c->name,a->name);
+        /*grib_context_log(ct,GRIB_LOG_DEBUG,"destroy %s ==> %s",c->name,a->name);*/
         if(c->destroy) {
             c->destroy(ct,a);
         }
@@ -662,7 +663,7 @@ int grib_accessor_clear_attributes(grib_accessor* a)
     }
     return 0;
 }
-*/
+ */
 
 int grib_accessor_add_attribute(grib_accessor* a,grib_accessor* attr,int nest_if_clash)
 {
@@ -674,8 +675,8 @@ int grib_accessor_add_attribute(grib_accessor* a,grib_accessor* attr,int nest_if
     same=_grib_accessor_get_attribute(a,attr->name,&id);
 
     if (same) {
-      if (nest_if_clash==0) return GRIB_ATTRIBUTE_CLASH;
-      aloc=same;
+        if (nest_if_clash==0) return GRIB_ATTRIBUTE_CLASH;
+        aloc=same;
     }
 
     for (id=0;id<MAX_ACCESSOR_ATTRIBUTES;id++) {
@@ -805,7 +806,7 @@ grib_accessors_list* grib_accessors_list_last(grib_accessors_list* al)
       last=next;
       next=last->next;
     }
-    */
+     */
     return al->last;
 }
 
@@ -829,8 +830,8 @@ void grib_accessors_list_delete(grib_context* c,grib_accessors_list* al)
 
     while (al) {
         tmp=al->next;
+        /*grib_accessor_delete(c, al->accessor);*/
         grib_context_free(c,al);
         al=tmp;
     }
-
 }
diff --git a/src/grib_accessor_class.c b/src/grib_accessor_class.c
index 105ac3a..b3ab70b 100644
--- a/src/grib_accessor_class.c
+++ b/src/grib_accessor_class.c
@@ -13,7 +13,7 @@
 /*     grib level     */
 
 
-/* This file is generated my ./make_class.pl */
+/* This file is generated by ./make_class.pl */
 #include "grib_accessor_class.h"
 
 #if GRIB_PTHREADS
@@ -51,7 +51,8 @@ struct table_entry
     grib_accessor_class   **cclass;
 };
 
-static GRIB_INLINE int grib_inline_strcmp(const char* a,const char* b) {
+static GRIB_INLINE int grib_inline_strcmp(const char* a,const char* b)
+{
     if (*a != *b) return 1;
     while((*a!=0 && *b!=0) &&  *(a) == *(b) ) {a++;b++;}
     return (*a==0 && *b==0) ? 0 : 1;
@@ -59,7 +60,7 @@ static GRIB_INLINE int grib_inline_strcmp(const char* a,const char* b) {
 
 static struct table_entry table[] =
 {
-/* This file is generated my ./make_class.pl */
+/* This file is generated by ./make_class.pl */
 #include "grib_accessor_factory.h"
 };
 
@@ -89,7 +90,7 @@ grib_section* grib_create_root_section(const grib_context *context, grib_handle
     s->aclength = NULL;
     s->owner    = NULL;
     s->block    = (grib_block_of_accessors*)
-            grib_context_malloc_clear(context, sizeof(grib_block_of_accessors));
+                    grib_context_malloc_clear(context, sizeof(grib_block_of_accessors));
     grib_context_log(context, GRIB_LOG_DEBUG, "Creating root section");
     return s;
 }
@@ -110,7 +111,7 @@ static GRIB_INLINE grib_accessor_class* get_class(grib_context* c,char* type)
         }
     }
     grib_context_log(c, GRIB_LOG_ERROR, "ecCodes Version: %s\nDefinition files path: %s\n",
-                    ECCODES_VERSION_STR, c->grib_definition_files_path);
+            ECCODES_VERSION_STR, c->grib_definition_files_path);
     grib_context_log(c,GRIB_LOG_FATAL,"unable to create class %s",type);
     return NULL;
 }
@@ -199,15 +200,15 @@ grib_accessor* grib_accessor_factory(grib_section* p, grib_action* creator,
 
 static void link_same_attributes(grib_accessor* a,grib_accessor* b)
 {
-  int i=0;
-  int idx=0;
-  grib_accessor* bAttribute=NULL;
-  if (a==NULL || b==NULL) return;
-  while (a->attributes[i] && i<MAX_ACCESSOR_ATTRIBUTES) {
-    bAttribute=_grib_accessor_get_attribute(b,a->attributes[i]->name,&idx);
-    if (bAttribute) a->attributes[i]->same=bAttribute;
-    i++;
-  }
+    int i=0;
+    int idx=0;
+    grib_accessor* bAttribute=NULL;
+    if (a==NULL || b==NULL) return;
+    while (a->attributes[i] && i<MAX_ACCESSOR_ATTRIBUTES) {
+        bAttribute=_grib_accessor_get_attribute(b,a->attributes[i]->name,&idx);
+        if (bAttribute) a->attributes[i]->same=bAttribute;
+        i++;
+    }
 }
 
 void grib_push_accessor(grib_accessor* a, grib_block_of_accessors* l)
@@ -314,8 +315,8 @@ int grib_section_adjust_sizes(grib_section* s,int update,int depth)
         }
 
         if(s->owner) {
-          grib_context_log(s->owner->context,GRIB_LOG_DEBUG,"grib_section_adjust_sizes: updating owner (%s->length old=%ld new=%ld)",s->owner->name,(long)s->owner->length,(long)length);
-          s->owner->length = length;
+            grib_context_log(s->owner->context,GRIB_LOG_DEBUG,"grib_section_adjust_sizes: updating owner (%s->length old=%ld new=%ld)",s->owner->name,(long)s->owner->length,(long)length);
+            s->owner->length = length;
         }
         s->length = length;
     }
diff --git a/src/grib_accessor_class.h b/src/grib_accessor_class.h
index 60a8e22..101a58a 100644
--- a/src/grib_accessor_class.h
+++ b/src/grib_accessor_class.h
@@ -16,9 +16,12 @@ extern grib_accessor_class* grib_accessor_class_bufr_data;
 extern grib_accessor_class* grib_accessor_class_bufr_data_array;
 extern grib_accessor_class* grib_accessor_class_bufr_data_element;
 extern grib_accessor_class* grib_accessor_class_bufr_elements_table;
+extern grib_accessor_class* grib_accessor_class_bufr_extract_area_subsets;
+extern grib_accessor_class* grib_accessor_class_bufr_extract_datetime_subsets;
 extern grib_accessor_class* grib_accessor_class_bufr_extract_subsets;
 extern grib_accessor_class* grib_accessor_class_bufr_group;
 extern grib_accessor_class* grib_accessor_class_bufr_has_delayed_replication;
+extern grib_accessor_class* grib_accessor_class_bufr_simple_thinning;
 extern grib_accessor_class* grib_accessor_class_bufr_string_values;
 extern grib_accessor_class* grib_accessor_class_bufrdc_expanded_descriptors;
 extern grib_accessor_class* grib_accessor_class_bytes;
diff --git a/src/grib_accessor_class_bits.c b/src/grib_accessor_class_bits.c
index 70aa442..6b8e8c3 100644
--- a/src/grib_accessor_class_bits.c
+++ b/src/grib_accessor_class_bits.c
@@ -150,6 +150,10 @@ static void init_class(grib_accessor_class* c)
 
 /* END_CLASS_IMP */
 
+#ifdef ECCODES_ON_WINDOWS
+#define round(a) ( (a) >=0 ? ((a)+0.5) : ((a)-0.5) )
+#endif
+
 static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
     grib_accessor_bits* self = (grib_accessor_bits*)a;
@@ -221,7 +225,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t *len)
     p  = h->buffer->data + grib_byte_offset(x);
     *val=grib_decode_unsigned_long(p,&start,length);
 
-    *val=(*val+self->referenceValue)/self->scale;
+    *val=((long)*val+self->referenceValue)/self->scale;
 
     *len=1;
 
@@ -246,7 +250,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
 
     p=h->buffer->data + grib_byte_offset(x);
 
-    lval= *val *self->scale - self->referenceValue;
+    lval= round(*val * self->scale) - self->referenceValue;
     return grib_encode_unsigned_longb(p,lval,&start,length);
 
 }
diff --git a/src/grib_accessor_class_bufr_data_array.c b/src/grib_accessor_class_bufr_data_array.c
index b20b13a..e80d1b0 100644
--- a/src/grib_accessor_class_bufr_data_array.c
+++ b/src/grib_accessor_class_bufr_data_array.c
@@ -61,8 +61,7 @@
    MEMBERS    = long* inputShortReplications
    MEMBERS    = int nInputShortReplications
    MEMBERS    = int iInputShortReplications
-   MEMBERS    = int start
-   MEMBERS    = int end
+   MEMBERS    = grib_iarray* iss_list
 
    END_CLASS_DEF
 
@@ -133,8 +132,7 @@ typedef struct grib_accessor_bufr_data_array {
 	long* inputShortReplications;
 	int nInputShortReplications;
 	int iInputShortReplications;
-	int start;
-	int end;
+	grib_iarray* iss_list;
 } grib_accessor_bufr_data_array;
 
 extern grib_accessor_class* grib_accessor_class_gen;
@@ -224,6 +222,13 @@ static void init_class(grib_accessor_class* c)
 #define round(a) ( (a) >=0 ? ((a)+0.5) : ((a)-0.5) )
 #endif
 
+/* Set the error code, if it is bad and we should fail (default case), return */
+/* variable 'err' is assumed to be pointer to int */
+/* If BUFRDC mode is enabled, then we tolerate problems like wrong data section length */
+#define CHECK_END_DATA_RETURN(ctx,b,size)     {*err=check_end_data(ctx,b,size); if (*err!=0 && ctx->bufrdc_mode==0) return; }
+#define CHECK_END_DATA_RETURN_0(ctx,b,size)   {*err=check_end_data(ctx,b,size); if (*err!=0 && ctx->bufrdc_mode==0) return 0; }
+#define CHECK_END_DATA_RETURN_ERR(ctx,b,size) {*err=check_end_data(ctx,b,size); if (*err!=0 && ctx->bufrdc_mode==0) return *err; }
+
 static int process_elements(grib_accessor* a,int flag,long onlySubset,long startSubset,long endSubset);
 
 typedef int (*codec_element_proc) (grib_context* c,grib_accessor_bufr_data_array* self,int subsetIndex, grib_buffer* b,unsigned char* data,long *pos,int i,bufr_descriptor* descriptor,long elementIndex,grib_darray* dval,grib_sarray* sval); 
@@ -420,31 +425,37 @@ static void decode_string_array(grib_context* c,unsigned char* data,long* pos, b
     grib_sarray* sa=grib_sarray_new(c,self->numberOfSubsets,10);
 
     modifiedWidth= bd->width;
-    /* modifiedReference= bd->reference; */
-    /*modifiedFactor= bd->factor;*/
 
     sval=(char*)grib_context_malloc_clear(c,modifiedWidth/8+1);
-    *err=check_end_data(c,self,modifiedWidth);
-    if (*err) return ;
+    CHECK_END_DATA_RETURN(c,self,modifiedWidth);
+    if (*err) {
+      grib_sarray_push(c,sa,sval);
+      grib_vsarray_push(c,self->stringValues,sa);
+      return;
+    }
     grib_decode_string(data,pos,modifiedWidth/8,sval);
-    /* clean_string(sval,modifiedWidth/8); */
-    *err=check_end_data(c,self,6);
-    if (*err) return ;
+    CHECK_END_DATA_RETURN(c,self,6);
+    if (*err) {
+      grib_sarray_push(c,sa,sval);
+      grib_vsarray_push(c,self->stringValues,sa);
+      return;
+    }
     width=grib_decode_unsigned_long(data,pos,6);
     if (width) {
-        grib_context_free(c,sval);
-        *err=check_end_data(c,self,width*8*self->numberOfSubsets);
-        if (*err) return ;
-        for (j=0;j<self->numberOfSubsets;j++) {
-            sval=(char*)grib_context_malloc_clear(c,width+1);
-            grib_decode_string(data,pos,width,sval);
-            /* clean_string(sval,width); */
-            grib_sarray_push(c,sa,sval);
-        }
-    } else {
-        /* for (j=0;j<self->numberOfSubsets;j++) { */
+        CHECK_END_DATA_RETURN(c,self,width*8*self->numberOfSubsets);
+      if (*err) {
         grib_sarray_push(c,sa,sval);
-        /* } */
+        grib_vsarray_push(c,self->stringValues,sa);
+        return;
+      }
+      grib_context_free(c,sval);
+      for (j=0;j<self->numberOfSubsets;j++) {
+        sval=(char*)grib_context_malloc_clear(c,width+1);
+        grib_decode_string(data,pos,width,sval);
+        grib_sarray_push(c,sa,sval);
+      }
+    } else {
+      grib_sarray_push(c,sa,sval);
     }
     grib_vsarray_push(c,self->stringValues,sa);
 }
@@ -465,16 +476,32 @@ static grib_darray* decode_double_array(grib_context* c,unsigned char* data,long
     modifiedFactor= bd->factor;
     modifiedWidth= bd->width;
 
-    *err=check_end_data(c,self,modifiedWidth+6);
-    if (*err) return NULL;
+    CHECK_END_DATA_RETURN_0(c,self,modifiedWidth+6);
+    if (*err) {
+      dval=GRIB_MISSING_DOUBLE;
+      lval=0;
+      grib_context_log(c, GRIB_LOG_DEBUG," modifiedWidth=%ld lval=%ld dval=%g", modifiedWidth,lval,dval);
+      ret=grib_darray_new(c,100,100);
+      grib_darray_push(c,ret,dval);
+      *err=0;
+      return ret;
+    }
     lval=grib_decode_unsigned_long(data,pos,modifiedWidth);
     localReference=(long)lval+modifiedReference;
     localWidth=grib_decode_unsigned_long(data,pos,6);
     grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tlocalWidth=%ld",localWidth);
     ret=grib_darray_new(c,100,100);
     if (localWidth) {
-        *err=check_end_data(c,self,localWidth*self->numberOfSubsets);
-        if (*err) return NULL;
+        CHECK_END_DATA_RETURN_0(c,self,localWidth*self->numberOfSubsets);
+        if (*err) {
+          dval=GRIB_MISSING_DOUBLE;
+          lval=0;
+          grib_context_log(c, GRIB_LOG_DEBUG," modifiedWidth=%ld lval=%ld dval=%g", modifiedWidth,lval,dval);
+          ret=grib_darray_new(c,100,100);
+          grib_darray_push(c,ret,dval);
+          *err=0;
+          return ret;
+        }
         for (j=0;j<self->numberOfSubsets;j++) {
             lval=grib_decode_unsigned_long(data,pos,localWidth);
             if (grib_is_all_bits_one(lval,localWidth) && canBeMissing) {
@@ -500,12 +527,13 @@ static grib_darray* decode_double_array(grib_context* c,unsigned char* data,long
 static int encode_string_array(grib_context* c,grib_buffer* buff,long* pos, bufr_descriptor* bd,
         grib_accessor_bufr_data_array* self,grib_sarray* stringValues)
 {
-    int err=0,end,start,n;
-    int j,modifiedWidth,width;
+    int err=0,n;
+    int k,j,modifiedWidth,width;
+
+    if (self->iss_list==NULL) return GRIB_INTERNAL_ERROR;
+
+    n=grib_iarray_used_size(self->iss_list);
 
-    start=self->start;
-    end=self->end;
-    n=end-start;
     if (n<=0) return GRIB_NO_VALUES;
 
     if (grib_sarray_used_size(stringValues)==1) n=1;
@@ -523,28 +551,40 @@ static int encode_string_array(grib_context* c,grib_buffer* buff,long* pos, bufr
     grib_encode_unsigned_longb(buff->data,width/8,pos,6);
     if (width) {
         grib_buffer_set_ulength_bits(c,buff,buff->ulength_bits+width*n);
-        for (j=start;j<end;j++) {
-            grib_encode_string(buff->data,pos,width/8,stringValues->v[j]);
+        for (j=0;j<n;j++) {
+            k=self->iss_list->v[j];
+            grib_encode_string(buff->data,pos,width/8,stringValues->v[k]);
         }
     }
     return err;
 }
 
+static void set_missing_long_to_double(grib_darray* dvalues)
+{
+    size_t i,n=grib_darray_used_size(dvalues);
+    for (i=0;i<n;i++) {
+        if (dvalues->v[i]==GRIB_MISSING_LONG) dvalues->v[i]=GRIB_MISSING_DOUBLE;
+    }
+}
+
 static int encode_double_array(grib_context* c,grib_buffer* buff,long* pos, bufr_descriptor* bd,
         grib_accessor_bufr_data_array* self,grib_darray* dvalues)
 {
     int err=0;
-    int j;
+    int j,i;
     unsigned long lval;
     long localReference=0,localWidth=0,modifiedWidth,modifiedReference;
     long reference,allone;
     double localRange,modifiedFactor,inverseFactor;
-    size_t start,ii;
+    size_t ii;
     int nvals = 0;
     double min,max,maxAllowed,minAllowed;
     double* v=NULL;
+    double* values=NULL;
     int thereIsAMissing=0;
 
+    if (self->iss_list==NULL) return GRIB_INTERNAL_ERROR;
+
     modifiedReference= bd->reference;
     modifiedFactor= bd->factor;
     inverseFactor= grib_power(bd->scale,10);
@@ -553,10 +593,11 @@ static int encode_double_array(grib_context* c,grib_buffer* buff,long* pos, bufr
     maxAllowed=(grib_power(modifiedWidth,2)+modifiedReference)*modifiedFactor;
     minAllowed=modifiedReference*modifiedFactor;
 
-    start=self->start;
-    nvals=self->end - self->start;
+    nvals=grib_iarray_used_size(self->iss_list);
     if (nvals<=0) return GRIB_NO_VALUES;
 
+    set_missing_long_to_double(dvalues);
+
     v=dvalues->v;
 
     /* is constant */
@@ -575,7 +616,9 @@ static int encode_double_array(grib_context* c,grib_buffer* buff,long* pos, bufr
     }
 
     if (nvals>grib_darray_used_size(dvalues)) return GRIB_ARRAY_TOO_SMALL;
-    v=dvalues->v+start;
+    values=grib_context_malloc_clear(c,sizeof(double)*nvals);
+    for (i=0;i<nvals;i++) values[i]=dvalues->v[self->iss_list->v[i]];
+    v=values;
 
     /* encoding only one value out of many*/
     if (nvals==1) {
@@ -645,16 +688,18 @@ static int encode_double_array(grib_context* c,grib_buffer* buff,long* pos, bufr
 
     if (localWidth) {
         grib_buffer_set_ulength_bits(c,buff,buff->ulength_bits+nvals*localWidth);
-        for (j=self->start;j<self->end;j++) {
-            if (dvalues->v[j]==GRIB_MISSING_DOUBLE) {
+        for (j=0;j<nvals;j++) {
+            if (values[j]==GRIB_MISSING_DOUBLE) {
                 grib_set_bits_on(buff->data,pos,localWidth);
             } else {
-                lval=round(dvalues->v[j]*inverseFactor)-reference;
+                lval=round(values[j]*inverseFactor)-reference;
                 grib_encode_unsigned_longb(buff->data,lval,pos,localWidth);
             }
         }
     }
 
+    grib_context_free(c,values);
+
     return err;
 }
 
@@ -709,9 +754,9 @@ static char* decode_string_value(grib_context* c,unsigned char* data,long* pos,
 
     len= bd->width / 8;
 
-    *err=check_end_data(c,self,bd->width);
-    if (*err) return NULL;
+    CHECK_END_DATA_RETURN_0(c,self,bd->width);
     sval=(char*)grib_context_malloc_clear(c,len+1);
+    if (*err) {*err=0; return sval;}
     grib_decode_string(data,pos,len,sval);
 
     /* clean_string(sval,len); */
@@ -734,8 +779,9 @@ static double decode_double_value(grib_context* c,unsigned char* data,long* pos,
     modifiedFactor= bd->factor;
     modifiedWidth= bd->width;
 
-    *err=check_end_data(c,self,modifiedWidth);
-    if (*err) return dval;
+    CHECK_END_DATA_RETURN_0(c,self,modifiedWidth);
+    if (*err) {*err=0; return GRIB_MISSING_DOUBLE;}
+
     lval=grib_decode_unsigned_long(data,pos,modifiedWidth);
     if (grib_is_all_bits_one(lval,modifiedWidth) && canBeMissing) {
         dval=GRIB_MISSING_DOUBLE;
@@ -804,32 +850,40 @@ static int decode_element(grib_context* c,grib_accessor_bufr_data_array* self,in
 static int decode_replication(grib_context* c,grib_accessor_bufr_data_array* self,int subsetIndex,
         grib_buffer* buff,unsigned char* data,long *pos,int i,long elementIndex,grib_darray* dval,long* numberOfRepetitions)
 {
-    int err=0;
+    int ret=0;
+    int *err;
     int localReference,width;
     bufr_descriptor** descriptors=0;
+    err=&ret;
     descriptors=self->expanded->v;
     grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: -%ld- \tcode=%6.6ld width=%ld ",
             i,self->expanded->v[i]->code,self->expanded->v[i]->width);
     if (self->compressedData) {
         grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication localReference width=%ld", descriptors[i]->width);
-        err=check_end_data(c,self,descriptors[i]->width+6);
-        if (err) return err;
-        localReference=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+descriptors[i]->reference;
-        grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication localWidth width=6");
-        width=grib_decode_unsigned_long(data,pos,6);
-        if (width) {
+        CHECK_END_DATA_RETURN_ERR(c,self,descriptors[i]->width+6);
+        if (*err) {
+          *numberOfRepetitions=0;
+        } else {
+          localReference=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+descriptors[i]->reference;
+          grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication localWidth width=6");
+          width=grib_decode_unsigned_long(data,pos,6);
+          if (width) {
             /* delayed replication number is not constant. NOT IMPLEMENTED */
             return GRIB_NOT_IMPLEMENTED;
-        } else {
+          } else {
             *numberOfRepetitions=localReference*descriptors[i]->factor;
             grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication value=%ld",*numberOfRepetitions);
+          }
         }
     } else {
-        err=check_end_data(c,self,descriptors[i]->width);
-        if (err) return err;
-        *numberOfRepetitions=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+
-                descriptors[i]->reference*descriptors[i]->factor;
-        grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication value=%ld",*numberOfRepetitions);
+        CHECK_END_DATA_RETURN_ERR(c,self,descriptors[i]->width);
+        if (*err) { 
+          *numberOfRepetitions=0;
+        } else {
+          *numberOfRepetitions=grib_decode_unsigned_long(data,pos,descriptors[i]->width)+
+            descriptors[i]->reference*descriptors[i]->factor;
+          grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data decoding: \tdelayed replication value=%ld",*numberOfRepetitions);
+        }
     }
     if (self->compressedData) {
         dval=grib_darray_new(c,1,100);
@@ -838,7 +892,7 @@ static int decode_replication(grib_context* c,grib_accessor_bufr_data_array* sel
     } else {
         grib_darray_push(c,dval,(double)(*numberOfRepetitions));
     }
-    return err;
+    return ret;
 }
 
 static int encode_new_bitmap(grib_context* c,grib_buffer* buff,long *pos,int idx,grib_accessor_bufr_data_array* self)
@@ -997,6 +1051,10 @@ static int encode_element(grib_context* c,grib_accessor_bufr_data_array* self,in
                     grib_context_log(c,GRIB_LOG_ERROR,"%g ",self->numericValues->v[elementIndex]->v[i]);
             }
         } else {
+            if (self->numericValues->v[subsetIndex] == NULL) {
+                grib_context_log(c,GRIB_LOG_ERROR,"Invalid subset index %d (number of subsets=%ld)", subsetIndex, self->numberOfSubsets);
+                return GRIB_INVALID_ARGUMENT;
+            }
             err=encode_double_value(c,buff,pos,bd,self,self->numericValues->v[subsetIndex]->v[elementIndex]);
             if (err) {
                 grib_context_log(c,GRIB_LOG_ERROR,"encoding %s=%g",bd->shortName,self->numericValues->v[subsetIndex]->v[elementIndex]);
@@ -1032,6 +1090,7 @@ static int build_bitmap(grib_accessor_bufr_data_array *self,unsigned char* data,
     int err=0;
 
     switch (descriptors[iBitmapOperator]->code) {
+    case 222000:
     case 223000:
     case 236000:
         cancel_bitmap(self);
@@ -1040,13 +1099,13 @@ static int build_bitmap(grib_accessor_bufr_data_array *self,unsigned char* data,
         /*looking for another bitmap and pointing before it.
           This behaviour is not documented in the Manual on codes it is copied from BUFRDC
           ECC-243
-        */
+         */
         while (iel>0) {
-          while ( descriptors[edi[iel]]->code!=236000 && descriptors[edi[iel]]->code!=222000 && descriptors[edi[iel]]->code!=223000 && iel!=0) iel--;
-          if (iel!=0) {
-            while (descriptors[edi[iel]]->code>=100000 && iel!=0) iel--;
-            bitmapEndElementsDescriptorsIndex=iel;
-          }
+            while ( descriptors[edi[iel]]->code!=236000 && descriptors[edi[iel]]->code!=222000 && descriptors[edi[iel]]->code!=223000 && iel!=0) iel--;
+            if (iel!=0) {
+                while (descriptors[edi[iel]]->code>=100000 && iel!=0) iel--;
+                bitmapEndElementsDescriptorsIndex=iel;
+            }
         }
 
         i=iBitmapOperator+1;
@@ -1095,6 +1154,33 @@ static int build_bitmap(grib_accessor_bufr_data_array *self,unsigned char* data,
     return GRIB_SUCCESS;
 }
 
+static int consume_bitmap(grib_accessor_bufr_data_array *self,int iBitmapOperator)
+{
+    int bitmapSize=0,iDelayedReplication;
+    int i;
+    bufr_descriptor** descriptors=self->expanded->v;
+
+    i=iBitmapOperator+1;
+    if (descriptors[i]->code==101000)  {
+        iDelayedReplication=iBitmapOperator+2;
+        switch (descriptors[iDelayedReplication]->code) {
+        case 31001:
+            bitmapSize=self->inputReplications[self->iInputReplications];
+            break;
+        case 31002:
+            bitmapSize=self->inputExtendedReplications[self->iInputExtendedReplications];
+            break;
+        default :
+            Assert(0);
+        }
+    } else if (descriptors[i]->code==31031){
+        bitmapSize=0;
+        while (descriptors[i]->code==31031) {bitmapSize++;i++;}
+    }
+    self->bitmapCurrent+=bitmapSize;
+    return GRIB_SUCCESS;
+}
+
 static int build_bitmap_new_data(grib_accessor_bufr_data_array *self,unsigned char* data,long* pos,int iel,grib_iarray* elementsDescriptorsIndex,int iBitmapOperator)
 {
     int bitmapSize=0,iDelayedReplication=0;
@@ -1104,13 +1190,25 @@ static int build_bitmap_new_data(grib_accessor_bufr_data_array *self,unsigned ch
     grib_context* c=a->context;
     bufr_descriptor** descriptors=self->expanded->v;
     long* edi=elementsDescriptorsIndex->v;
-    /* int iel=grib_iarray_used_size(elementsDescriptorsIndex)-1; */
 
     switch (descriptors[iBitmapOperator]->code) {
+    case 222000:
+    case 223000:
     case 236000:
-        cancel_bitmap(self);
         while (descriptors[edi[iel]]->code>=100000) iel--;
         bitmapEndElementsDescriptorsIndex=iel;
+        /*looking for another bitmap and pointing before it.
+          This behaviour is not documented in the Manual on codes it is copied from BUFRDC
+          ECC-243
+         */
+        while (iel>0) {
+            while ( descriptors[edi[iel]]->code!=236000 && descriptors[edi[iel]]->code!=222000 && descriptors[edi[iel]]->code!=223000 && iel!=0) iel--;
+            if (iel!=0) {
+                while (descriptors[edi[iel]]->code>=100000 && iel!=0) iel--;
+                bitmapEndElementsDescriptorsIndex=iel;
+            }
+        }
+
         i=iBitmapOperator+1;
         if (descriptors[i]->code==101000)  {
             iDelayedReplication=iBitmapOperator+2;
@@ -1135,7 +1233,7 @@ static int build_bitmap_new_data(grib_accessor_bufr_data_array *self,unsigned ch
             iel--;
         }
         self->bitmapStartElementsDescriptorsIndex=iel;
-        restart_bitmap(self);
+        self->bitmapCurrentElementsDescriptorsIndex=iel-1;
         break;
     default :
         grib_context_log(c,GRIB_LOG_ERROR,"unsupported operator %d\n",
@@ -1156,6 +1254,7 @@ static int get_next_bitmap_descriptor_index_new_bitmap(grib_accessor_bufr_data_a
 
     if (self->compressedData) {
         DebugAssert(i<self->nInputBitmap);
+        if (i>=self->nInputBitmap) return GRIB_WRONG_BITMAP_SIZE;
         while (self->inputBitmap[i]==1) {
             self->bitmapCurrent++;
             self->bitmapCurrentElementsDescriptorsIndex++;
@@ -1165,7 +1264,7 @@ static int get_next_bitmap_descriptor_index_new_bitmap(grib_accessor_bufr_data_a
             i++;
         }
     } else {
-        DebugAssert(i<self->nInputBitmap);
+        if (i>=self->nInputBitmap) return GRIB_WRONG_BITMAP_SIZE;
         while (self->inputBitmap[i]==1) {
             self->bitmapCurrent++;
             self->bitmapCurrentElementsDescriptorsIndex++;
@@ -1338,7 +1437,8 @@ static void set_creator_name(grib_action* creator,int code)
         creator->name = (char*)"associatedField";
         break;
     default :
-        creator->name = (char*)"operator";
+        if (code > 204999 && code < 206000) creator->name =  (char*)"text";
+        else creator->name = (char*)"operator";
         break;
     }
 }
@@ -1378,7 +1478,7 @@ static grib_accessor* create_accessor_from_descriptor(grib_accessor* a,grib_acce
         creator.name=grib_context_strdup(a->context,self->expanded->v[idx]->shortName);
         elementAccessor = grib_accessor_factory(section, &creator, 0, NULL);
         if (self->canBeMissing[idx]) elementAccessor->flags |= GRIB_ACCESSOR_FLAG_CAN_BE_MISSING;
-        if (self->expanded->v[idx]->code == 31000 || self->expanded->v[idx]->code == 31001 || self->expanded->v[idx]->code == 31002)
+        if (self->expanded->v[idx]->code == 31000 || self->expanded->v[idx]->code == 31001 || self->expanded->v[idx]->code == 31002 || self->expanded->v[idx]->code == 31031)
             elementAccessor->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
         accessor_bufr_data_element_set_index(elementAccessor,ide);
         accessor_bufr_data_element_set_descriptors(elementAccessor,self->expanded);
@@ -1429,7 +1529,7 @@ static grib_accessor* create_accessor_from_descriptor(grib_accessor* a,grib_acce
         break;
     case 2:
         set_creator_name(&creator,self->expanded->v[idx]->code);
-        if (bufr_descriptor_is_marker(self->expanded->v[idx])) {
+        if (bufr_descriptor_is_marker(self->expanded->v[idx]) ) {
             elementAccessor = grib_accessor_factory(section, &creator, 0, NULL);
             if (self->canBeMissing[idx]) elementAccessor->flags |= GRIB_ACCESSOR_FLAG_CAN_BE_MISSING;
             accessor_bufr_data_element_set_index(elementAccessor,ide);
@@ -1573,24 +1673,33 @@ static void grib_convert_to_attribute(grib_accessor* a)
     }
 }
 
-static void set_subset_start_end(grib_accessor_bufr_data_array *self,long *onlySubset,long *startSubset,long *endSubset,long *ret_start,long *ret_end)
+grib_iarray* set_subset_list(grib_context* c,grib_accessor_bufr_data_array *self,long onlySubset,long startSubset,long endSubset,long* subsetList,size_t subsetListSize)
 {
-    if (*startSubset>0 && *endSubset>=*startSubset) {
-        *ret_start=*startSubset-1;
-        *ret_end= *endSubset;
-    } else if (*onlySubset>0) {
-        *ret_start=*onlySubset-1;
-        *ret_end= *onlySubset;
-    } else {
-        *ret_start=0;
-        *ret_end= self->numberOfSubsets;
+    grib_iarray* list=grib_iarray_new(c,self->numberOfSubsets,10);
+    long s;
+
+    if (startSubset>0) {
+        s=startSubset;
+        while (s<=endSubset) {
+            grib_iarray_push(list,s-1);
+            s++;
+        }
     }
-    self->start=*ret_start;
-    self->end=*ret_end;
-    if (self->compressedData==1) {
-        *ret_start=0;
-        *ret_end=1;
+
+    if (onlySubset>0)
+        grib_iarray_push(list,onlySubset-1);
+
+    if (subsetList && subsetList[0]>0) {
+        for (s=0;s<subsetListSize;s++)
+            grib_iarray_push(list,subsetList[s]-1);
     }
+
+    if (grib_iarray_used_size(list)==0) {
+        for (s=0;s<self->numberOfSubsets;s++)
+            grib_iarray_push(list,s);
+    }
+
+    return list;
 }
 
 static int bitmap_ref_skip(grib_accessors_list* al,int* err)
@@ -1628,8 +1737,8 @@ static int bitmap_init(bitmap_s* bitmap,grib_accessors_list* bitmapStart,int bit
     int ret=0,i;
     bitmap->cursor=bitmapStart->next;
     if (bitmap->referredElementStart!=NULL) {
-      bitmap->referredElement=bitmap->referredElementStart;
-      return ret;
+        bitmap->referredElement=bitmap->referredElementStart;
+        return ret;
     }
     bitmap->referredElement=bitmapStart;
     while (bitmap_ref_skip(bitmap->referredElement,&ret)) bitmap->referredElement=bitmap->referredElement->prev;
@@ -1641,17 +1750,18 @@ static int bitmap_init(bitmap_s* bitmap,grib_accessors_list* bitmapStart,int bit
     return ret;
 }
 
-static grib_accessor* accessor_or_attribute_with_same_name(grib_accessor* a,const char* name) {
-  if (grib_accessor_has_attributes(a)==0) {
-    return a;
-  } else {
-    grib_accessor* ok=a;
-    grib_accessor* next;
-    while ((next=grib_accessor_get_attribute(ok,name))!=NULL) {
-      ok=next;
+static grib_accessor* accessor_or_attribute_with_same_name(grib_accessor* a,const char* name)
+{
+    if (grib_accessor_has_attributes(a)==0) {
+        return a;
+    } else {
+        grib_accessor* ok=a;
+        grib_accessor* next;
+        while ((next=grib_accessor_get_attribute(ok,name))!=NULL) {
+            ok=next;
+        }
+        return ok;
     }
-    return ok;
-  }
 }
 
 static int create_keys(grib_accessor* a,long onlySubset,long startSubset,long endSubset)
@@ -1777,10 +1887,16 @@ static int create_keys(grib_accessor* a,long onlySubset,long startSubset,long en
                 bitmapIndex++;
                 groupNumber++;
                 incrementBitmapIndex=0;
+                if (bitmapIndex >= MAX_NUMBER_OF_BITMAPS) {
+                    grib_context_log(c, GRIB_LOG_ERROR, "Bitmap error: bitmap index=%d, max num bitmaps=%d\n", bitmapIndex, MAX_NUMBER_OF_BITMAPS);
+                    err = GRIB_DECODING_ERROR;
+                    return err;
+                }
                 bitmapStart[bitmapIndex]=grib_accessors_list_last(self->dataAccessors);
                 bitmapSize[bitmapIndex]=1;
                 if (self->expanded->v[idx-1]->code ==31002 || self->expanded->v[idx-1]->code==31001)
                     extraElement+=1;
+
                 if (bitmapGroup[bitmapIndex]) {
                     groupSection=bitmapGroup[bitmapIndex]->parent;
                     depth=bitmapDepth[bitmapIndex];
@@ -1811,6 +1927,7 @@ static int create_keys(grib_accessor* a,long onlySubset,long startSubset,long en
                 qualityPresent=1;
                 incrementBitmapIndex=1;
                 dump=1;
+                bitmap.cursor=0;
                 extraElement+=1;
             } else if (descriptor->code == 236000 || descriptor->code == 237000 ) {
                 bitmap.referredElement=NULL;
@@ -1858,15 +1975,15 @@ static int create_keys(grib_accessor* a,long onlySubset,long startSubset,long en
             }
             associatedFieldAccessor=NULL;
             if (elementFromBitmap && self->unpackMode==CODES_BUFR_UNPACK_STRUCTURE) {
-              if (descriptor->code != 33007 && descriptor->code != 223255 ) {
-                grib_accessor* newAccessor=grib_accessor_clone(elementAccessor,section,&err);
-                newAccessor->parent=groupSection;
-                newAccessor->name=grib_context_strdup(c,elementFromBitmap->name);
-                grib_push_accessor(newAccessor,groupSection->block);
-                grib_accessors_list_push(self->dataAccessors,newAccessor);
-              }
-
-              err=grib_accessor_add_attribute(accessor_or_attribute_with_same_name(elementFromBitmap,elementAccessor->name),elementAccessor,1);
+                if (descriptor->code != 33007 && descriptor->code != 223255 ) {
+                    grib_accessor* newAccessor=grib_accessor_clone(elementAccessor,section,&err);
+                    newAccessor->parent=groupSection;
+                    newAccessor->name=grib_context_strdup(c,elementFromBitmap->name);
+                    grib_push_accessor(newAccessor,groupSection->block);
+                    grib_accessors_list_push(self->dataAccessors,newAccessor);
+                }
+
+                err=grib_accessor_add_attribute(accessor_or_attribute_with_same_name(elementFromBitmap,elementAccessor->name),elementAccessor,1);
             } else if (elementAccessor) {
 
                 switch (descriptor->code) {
@@ -1962,11 +2079,13 @@ static int process_elements(grib_accessor* a,int flag,long onlySubset,long start
     long startRepetition[MAX_NESTED_REPLICATIONS]={0,};
     long numberOfNestedRepetitions=0;
     unsigned char* data=0;
+    size_t subsetListSize=0;
+    long* subsetList=0;
     int i;
     grib_iarray* elementsDescriptorsIndex=0;
 
     long pos=0,dataOffset=0;
-    long iss,end,start,elementIndex,index;
+    long iiss,iss,end,elementIndex,index;
     long numberOfDescriptors;
     long totalSize;
     bufr_descriptor** descriptors=0;
@@ -2024,6 +2143,12 @@ static int process_elements(grib_accessor* a,int flag,long onlySubset,long start
         grib_get_long(grib_handle_of_accessor(a),"extractSubset",&onlySubset);
         grib_get_long(grib_handle_of_accessor(a),"extractSubsetIntervalStart",&startSubset);
         grib_get_long(grib_handle_of_accessor(a),"extractSubsetIntervalEnd",&endSubset);
+        err=grib_get_size(grib_handle_of_accessor(a),"extractSubsetList",&subsetListSize);
+        if (err) return err;
+        if (subsetList) grib_context_free(c,subsetList);
+        subsetList=grib_context_malloc_clear(c,subsetListSize*sizeof(long));
+        err=grib_get_long_array(grib_handle_of_accessor(a),"extractSubsetList",subsetList,&subsetListSize);
+        if (err) return err;
         codec_replication=&encode_replication;
         break;
     default :
@@ -2053,10 +2178,26 @@ static int process_elements(grib_accessor* a,int flag,long onlySubset,long start
 
     numberOfDescriptors=grib_bufr_descriptors_array_used_size(self->expanded);
 
-    set_subset_start_end(self,&onlySubset,&startSubset,&endSubset,&start,&end);
+    if (self->iss_list) {
+        grib_iarray_delete(self->iss_list);
+        self->iss_list=0;
+    }
+
+    end= self->compressedData == 1 ? 1 : self->numberOfSubsets ;
 
-    for (iss=start;iss<end;iss++) {
+    if (flag!=PROCESS_DECODE) {
+        self->iss_list=set_subset_list(c,self,onlySubset,startSubset,endSubset,subsetList,subsetListSize);
+        end= self->compressedData == 1 ? 1 : grib_iarray_used_size(self->iss_list) ;
+    }
+
+    for (iiss=0;iiss<end;iiss++) {
         icount=1;
+        if (self->compressedData==0 && self->iss_list) {
+            iss=self->iss_list->v[iiss];
+        } else {
+            iss=iiss;
+        }
+
         grib_context_log(c, GRIB_LOG_DEBUG,"BUFR data processing: subsetNumber=%ld", iss+1);
 
         if (flag!=PROCESS_ENCODE) {
@@ -2081,6 +2222,7 @@ static int process_elements(grib_accessor* a,int flag,long onlySubset,long start
                     /* self->bitmapStart=grib_iarray_used_size(elementsDescriptorsIndex)-1; */
                     self->bitmapStart=elementIndex;
                 }
+
                 err=codec_element(c,self,iss,buffer,data,&pos,i,0,elementIndex,dval,sval);
                 if (err) return err;
                 elementIndex++;
@@ -2127,6 +2269,21 @@ static int process_elements(grib_accessor* a,int flag,long onlySubset,long start
                     elementIndex++;
                     break;
                 case 22:
+                    if (descriptors[i]->Y==0)  {
+                        if (flag==PROCESS_DECODE) {
+                            grib_iarray_push(elementsDescriptorsIndex,i);
+                            push_zero_element(self,dval);
+                        } else if (flag==PROCESS_ENCODE) {
+                            if (descriptors[i+1] && descriptors[i+1]->code!=236000 && descriptors[i+1]->code!=237000 )
+                                restart_bitmap(self);
+                        } else if (flag==PROCESS_NEW_DATA) {
+                            grib_iarray_push(elementsDescriptorsIndex,i);
+                            if (descriptors[i+1] && descriptors[i+1]->code!=236000 && descriptors[i+1]->code!=237000 )
+                                consume_bitmap(self,i);
+                        }
+                        elementIndex++;
+                    }
+                    break;
                 case 26:
                 case 27:
                 case 29:
@@ -2157,7 +2314,7 @@ static int process_elements(grib_accessor* a,int flag,long onlySubset,long start
                     } else {
                         if (flag!=PROCESS_ENCODE) grib_iarray_push(elementsDescriptorsIndex,i);
                         if (decoding) { 
-                          push_zero_element(self,dval);
+                            push_zero_element(self,dval);
                         }
                         elementIndex++;
                     }
@@ -2171,11 +2328,18 @@ static int process_elements(grib_accessor* a,int flag,long onlySubset,long start
                         if (flag!=PROCESS_ENCODE) grib_iarray_push(elementsDescriptorsIndex,i);
                         elementIndex++;
                     } else {
-                        if (flag!=PROCESS_ENCODE) grib_iarray_push(elementsDescriptorsIndex,i);
-                        if (decoding) {
-                          push_zero_element(self,dval);
-                          if (descriptors[i+1] && descriptors[i+1]->code!=236000 )
-                            build_bitmap(self,data,&pos,elementIndex,elementsDescriptorsIndex,i);
+                        if (flag==PROCESS_DECODE) {
+                            grib_iarray_push(elementsDescriptorsIndex,i);
+                            push_zero_element(self,dval);
+                            if (descriptors[i+1] && descriptors[i+1]->code!=236000 && descriptors[i+1]->code!=237000 )
+                                build_bitmap(self,data,&pos,elementIndex,elementsDescriptorsIndex,i);
+                        } else if (flag==PROCESS_ENCODE) {
+                            if (descriptors[i+1] && descriptors[i+1]->code!=236000 && descriptors[i+1]->code!=237000 )
+                                restart_bitmap(self);
+                        } else if (flag==PROCESS_NEW_DATA) {
+                            grib_iarray_push(elementsDescriptorsIndex,i);
+                            if (descriptors[i+1] && descriptors[i+1]->code!=236000 && descriptors[i+1]->code!=237000 )
+                                build_bitmap_new_data(self,data,&pos,elementIndex,elementsDescriptorsIndex,i);
                         }
                         elementIndex++;
                     }
@@ -2300,8 +2464,8 @@ static int process_elements(grib_accessor* a,int flag,long onlySubset,long start
         self->bitsToEndData=buffer->ulength*8;
         grib_set_bytes(grib_handle_of_accessor(a),self->bufrDataEncodedName,buffer->data,&(buffer->ulength));
         grib_buffer_delete(c,buffer);
-        if (self->numberOfSubsets != (self->end-self->start) ) {
-            grib_set_long(h,self->numberOfSubsetsName,self->end-self->start);
+        if (self->numberOfSubsets != grib_iarray_used_size(self->iss_list) ) {
+            grib_set_long(h,self->numberOfSubsetsName,grib_iarray_used_size(self->iss_list));
         }
     }
 
diff --git a/src/grib_accessor_class_bufr_data_element.c b/src/grib_accessor_class_bufr_data_element.c
index fabf353..cf2479c 100644
--- a/src/grib_accessor_class_bufr_data_element.c
+++ b/src/grib_accessor_class_bufr_data_element.c
@@ -388,12 +388,14 @@ static int pack_string(grib_accessor* a, const char* val, size_t *len)
     grib_accessor_bufr_data_element* self = (grib_accessor_bufr_data_element*)a;
 
     int ret=0,idx;
-    /*long count=0;*/
     char* s=NULL;
     grib_context* c=a->context;
 
-    /*count=self->numberOfSubsets;*/
-    idx=((int)self->numericValues->v[self->index]->v[0]/1000-1)/self->numberOfSubsets;
+    if (self->compressedData) {
+      idx=((int)self->numericValues->v[self->index]->v[0]/1000-1)/self->numberOfSubsets;
+    } else {
+      idx=(int)self->numericValues->v[self->subsetNumber]->v[self->index]/1000-1;
+    }
     grib_sarray_delete(c,self->stringValues->v[idx]);
     self->stringValues->v[idx]=grib_sarray_new(c,1,1);
     s=grib_context_strdup(c,val);
diff --git a/src/grib_accessor_class_bufr_elements_table.c b/src/grib_accessor_class_bufr_elements_table.c
index 8315ba1..f87db16 100644
--- a/src/grib_accessor_class_bufr_elements_table.c
+++ b/src/grib_accessor_class_bufr_elements_table.c
@@ -152,6 +152,8 @@ static void init(grib_accessor* a, const long len, grib_arguments* params)
     a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
 }
 
+/* From https://stackoverflow.com/questions/32506614/manipulation-of-delimiters-within-arrays */
+/* Returns an array of strings the last of which is NULL */
 char** str_split(char* a_str, const char a_delim)
 {
     char** result    = 0;
diff --git a/src/grib_accessor_class_bufr_extract_subsets.c b/src/grib_accessor_class_bufr_extract_area_subsets.c
similarity index 50%
copy from src/grib_accessor_class_bufr_extract_subsets.c
copy to src/grib_accessor_class_bufr_extract_area_subsets.c
index 6c60e2e..d898b71 100644
--- a/src/grib_accessor_class_bufr_extract_subsets.c
+++ b/src/grib_accessor_class_bufr_extract_area_subsets.c
@@ -17,14 +17,16 @@
    SUPER      = grib_accessor_class_gen
    IMPLEMENTS = init; get_native_type
    IMPLEMENTS = pack_long;
-   MEMBERS    = const char* numericValues
-   MEMBERS    = const char* pack
+   MEMBERS    = const char* doExtractSubsets
    MEMBERS    = const char* numberOfSubsets
-   MEMBERS    = const char* subset
-   MEMBERS    = grib_accessor* numericValuesAccessor
-   MEMBERS    = grib_accessor* packAccessor
-   MEMBERS    = grib_accessor* numberOfSubsetsAccessor
-   MEMBERS    = grib_accessor* subsetAccessor
+   MEMBERS    = const char* extractSubsetList
+   MEMBERS    = const char* extractAreaWestLongitude
+   MEMBERS    = const char* extractAreaEastLongitude
+   MEMBERS    = const char* extractAreaNorthLatitude
+   MEMBERS    = const char* extractAreaSouthLatitude
+   MEMBERS    = const char* extractAreaLongitudeRank
+   MEMBERS    = const char* extractAreaLatitudeRank
+   MEMBERS    = const char* extractedAreaNumberOfSubsets
    END_CLASS_DEF
 
  */
@@ -44,26 +46,28 @@ static int pack_long(grib_accessor*, const long* val,size_t *len);
 static void init(grib_accessor*,const long, grib_arguments* );
 static void init_class(grib_accessor_class*);
 
-typedef struct grib_accessor_bufr_extract_subsets {
+typedef struct grib_accessor_bufr_extract_area_subsets {
     grib_accessor          att;
 /* Members defined in gen */
-/* Members defined in bufr_extract_subsets */
-	const char* numericValues;
-	const char* pack;
+/* Members defined in bufr_extract_area_subsets */
+	const char* doExtractSubsets;
 	const char* numberOfSubsets;
-	const char* subset;
-	grib_accessor* numericValuesAccessor;
-	grib_accessor* packAccessor;
-	grib_accessor* numberOfSubsetsAccessor;
-	grib_accessor* subsetAccessor;
-} grib_accessor_bufr_extract_subsets;
+	const char* extractSubsetList;
+	const char* extractAreaWestLongitude;
+	const char* extractAreaEastLongitude;
+	const char* extractAreaNorthLatitude;
+	const char* extractAreaSouthLatitude;
+	const char* extractAreaLongitudeRank;
+	const char* extractAreaLatitudeRank;
+	const char* extractedAreaNumberOfSubsets;
+} grib_accessor_bufr_extract_area_subsets;
 
 extern grib_accessor_class* grib_accessor_class_gen;
 
-static grib_accessor_class _grib_accessor_class_bufr_extract_subsets = {
+static grib_accessor_class _grib_accessor_class_bufr_extract_area_subsets = {
     &grib_accessor_class_gen,                      /* super                     */
-    "bufr_extract_subsets",                      /* name                      */
-    sizeof(grib_accessor_bufr_extract_subsets),  /* size                      */
+    "bufr_extract_area_subsets",                      /* name                      */
+    sizeof(grib_accessor_bufr_extract_area_subsets),  /* size                      */
     0,                           /* inited */
     &init_class,                 /* init_class */
     &init,                       /* init                      */
@@ -104,7 +108,7 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_subsets = {
 };
 
 
-grib_accessor_class* grib_accessor_class_bufr_extract_subsets = &_grib_accessor_class_bufr_extract_subsets;
+grib_accessor_class* grib_accessor_class_bufr_extract_area_subsets = &_grib_accessor_class_bufr_extract_area_subsets;
 
 
 static void init_class(grib_accessor_class* c)
@@ -143,28 +147,23 @@ static void init_class(grib_accessor_class* c)
 
 /* END_CLASS_IMP */
 
-static void get_accessors(grib_accessor* a)
-{
-    grib_accessor_bufr_extract_subsets *self =(grib_accessor_bufr_extract_subsets*)a;
-    grib_handle* h=grib_handle_of_accessor(a);
-
-    if (self->packAccessor) return;
-    self->numericValuesAccessor=grib_find_accessor(h,self->numericValues);
-    self->packAccessor=grib_find_accessor(h,self->pack);
-    self->numberOfSubsetsAccessor=grib_find_accessor(h,self->numberOfSubsets);
-    self->subsetAccessor=grib_find_accessor(h,self->subset);
-}
-
 static void init(grib_accessor* a, const long len , grib_arguments* arg )
 {
     int n=0;
-    grib_accessor_bufr_extract_subsets *self =(grib_accessor_bufr_extract_subsets*)a;
+    grib_accessor_bufr_extract_area_subsets *self =(grib_accessor_bufr_extract_area_subsets*)a;
 
     a->length=0;
-    self->numericValues = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
-    self->pack = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->doExtractSubsets = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
     self->numberOfSubsets = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
-    self->subset = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->extractSubsetList = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->extractAreaWestLongitude = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->extractAreaEastLongitude = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->extractAreaNorthLatitude = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->extractAreaSouthLatitude = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->extractAreaLongitudeRank = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->extractAreaLatitudeRank = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->extractedAreaNumberOfSubsets = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+
     a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
 }
 
@@ -173,30 +172,107 @@ static int get_native_type(grib_accessor* a)
     return GRIB_TYPE_LONG;
 }
 
-#define PROCESS_DECODE     0
-#define PROCESS_NEW_DATA   1
-#define PROCESS_ENCODE     2
+static int select_area(grib_accessor* a) {
+  int ret=0;
+  long compressed=0;
+  grib_accessor_bufr_extract_area_subsets *self =(grib_accessor_bufr_extract_area_subsets*)a;
+  grib_handle* h=grib_handle_of_accessor(a);
+  grib_context* c=h->context;
+
+  ret=grib_get_long(h,"compressedData",&compressed);
+  if (ret) return ret;
+
+  if (compressed) {
+    double *lat=0;
+    double *lon=0;
+    size_t n;
+    double lonWest,lonEast,latNorth,latSouth;
+    long numberOfSubsets,i,latRank,lonRank;
+    grib_iarray* subsets;
+    long *subsets_ar=0;
+    size_t nsubsets=0;
+    char latstr[20]={0,};
+    char lonstr[20]={0,};
+
+    ret=grib_get_long(h,self->numberOfSubsets,&numberOfSubsets);
+    if (ret) return ret;
+
+    subsets=grib_iarray_new(c,numberOfSubsets,10);
+
+    ret=grib_set_long(h,"unpack",1);
+    if (ret) return ret;
+
+    ret=grib_get_long(h,self->extractAreaLongitudeRank,&lonRank);
+    if (ret) return ret;
+    sprintf(lonstr,"#%ld#longitude",lonRank);
+    ret=grib_get_long(h,self->extractAreaLatitudeRank,&latRank);
+    if (ret) return ret;
+    sprintf(latstr,"#%ld#latitude",latRank);
+
+    n=numberOfSubsets;
+    lat=grib_context_malloc_clear(c,sizeof(double)*numberOfSubsets);
+    ret=grib_get_double_array(h,latstr,lat,&n);
+    if (ret) return ret;
+    if (n!=numberOfSubsets) return GRIB_INTERNAL_ERROR;
+
+    lon=grib_context_malloc_clear(c,sizeof(double)*numberOfSubsets);
+    ret=grib_get_double_array(h,lonstr,lon,&n);
+    if (ret) return ret;
+    if (n!=numberOfSubsets) return GRIB_INTERNAL_ERROR;
+
+    ret=grib_get_double(h,self->extractAreaWestLongitude,&lonWest);
+    if (ret) return ret;
+    ret=grib_get_double(h,self->extractAreaEastLongitude,&lonEast);
+    if (ret) return ret;
+    ret=grib_get_double(h,self->extractAreaNorthLatitude,&latNorth);
+    if (ret) return ret;
+    ret=grib_get_double(h,self->extractAreaSouthLatitude,&latSouth);
+    if (ret) return ret;
+
+    for (i=0;i<numberOfSubsets;i++) {
+      /* printf("++++++ lat: %g <= %g <= %g lon: %g <= %g <= %g \n",latSouth,lat[i],latNorth,lonWest,lon[i],lonEast); */
+      if (lat[i]>=latSouth && lat[i]<=latNorth && lon[i]>=lonWest && lon[i]<=lonEast) {
+        grib_iarray_push(subsets,i+1);
+        /* printf("++++++++ %ld\n",i+1); */
+      }
+    }
+
+    nsubsets=grib_iarray_used_size(subsets);
+    ret=grib_set_long(h,self->extractedAreaNumberOfSubsets,nsubsets);
+    if (ret) return ret;
+
+    if (nsubsets!=0) {
+      subsets_ar=grib_iarray_get_array(subsets);
+      ret=grib_set_long_array(h,self->extractSubsetList,subsets_ar,nsubsets);
+      if (ret) return ret;
+
+      ret=grib_set_long(h,self->doExtractSubsets,1);
+      if (ret) return ret;
+    }
+
+    grib_context_free(c,lat);
+    grib_context_free(c,lon);
+    grib_iarray_delete(subsets);
+    subsets=0;
+
+  } else {
+    return GRIB_NOT_IMPLEMENTED;
+  }
+
+  return ret;
+}
 
 static int pack_long(grib_accessor* a, const long* val, size_t *len)
 {
     int err=0;
-    grib_accessor_bufr_extract_subsets *self =(grib_accessor_bufr_extract_subsets*)a;
-    size_t l=1;
-    long v[1];
+    grib_accessor_bufr_extract_area_subsets *self =(grib_accessor_bufr_extract_area_subsets*)a;
 
-    get_accessors(a);
-
-    v[0]=1;
-    err=grib_pack_long(self->packAccessor,v,&l);
+    if (*len==0) return GRIB_SUCCESS;
+    err=select_area(a);
     if (err) return err;
-    err=grib_unpack_long(self->subsetAccessor,v,&l);
+
+    err=grib_set_long(a->parent->h,self->doExtractSubsets,1);
     if (err) return err;
 
-    /* this does not work at the moment, we need to fix it */
-    /* err=accessor_bufr_data_array_process_elements(self->numericValuesAccessor,PROCESS_ENCODE,v[0],0,0); */
-    /* v[0]=1; */
-    /* err=grib_pack_long(self->numberOfSubsetsAccessor,v,&l); */
-    /* if (err) return err; */
-    /* err=accessor_bufr_data_array_create_keys(self->numericValuesAccessor,extractSubset,0,0); */
     return err;
 }
diff --git a/src/grib_accessor_class_bufr_extract_datetime_subsets.c b/src/grib_accessor_class_bufr_extract_datetime_subsets.c
new file mode 100644
index 0000000..574bd06
--- /dev/null
+++ b/src/grib_accessor_class_bufr_extract_datetime_subsets.c
@@ -0,0 +1,402 @@
+/*
+ * Copyright 2005-2016 ECMWF.
+ *
+ * This software is licensed under the terms of the Apache Licence Version 2.0
+ * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+ *
+ * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+ */
+
+#include "grib_api_internal.h"
+/*
+   This is used by make_class.pl
+
+   START_CLASS_DEF
+   CLASS      = accessor
+   SUPER      = grib_accessor_class_gen
+   IMPLEMENTS = init; get_native_type
+   IMPLEMENTS = pack_long;
+   MEMBERS    = const char* doExtractSubsets
+   MEMBERS    = const char* numberOfSubsets
+   MEMBERS    = const char* extractSubsetList
+   END_CLASS_DEF
+
+ */
+
+/* START_CLASS_IMP */
+
+/*
+
+Don't edit anything between START_CLASS_IMP and END_CLASS_IMP
+Instead edit values between START_CLASS_DEF and END_CLASS_DEF
+or edit "accessor.class" and rerun ./make_class.pl
+
+*/
+
+static int  get_native_type(grib_accessor*);
+static int pack_long(grib_accessor*, const long* val,size_t *len);
+static void init(grib_accessor*,const long, grib_arguments* );
+static void init_class(grib_accessor_class*);
+
+typedef struct grib_accessor_bufr_extract_datetime_subsets {
+    grib_accessor          att;
+/* Members defined in gen */
+/* Members defined in bufr_extract_datetime_subsets */
+	const char* doExtractSubsets;
+	const char* numberOfSubsets;
+	const char* extractSubsetList;
+} grib_accessor_bufr_extract_datetime_subsets;
+
+extern grib_accessor_class* grib_accessor_class_gen;
+
+static grib_accessor_class _grib_accessor_class_bufr_extract_datetime_subsets = {
+    &grib_accessor_class_gen,                      /* super                     */
+    "bufr_extract_datetime_subsets",                      /* name                      */
+    sizeof(grib_accessor_bufr_extract_datetime_subsets),  /* size                      */
+    0,                           /* inited */
+    &init_class,                 /* init_class */
+    &init,                       /* init                      */
+    0,                  /* post_init                      */
+    0,                    /* free mem                       */
+    0,                       /* describes himself         */
+    0,                /* get length of section     */
+    0,              /* get length of string      */
+    0,                /* get number of values      */
+    0,                 /* get number of bytes      */
+    0,                /* get offset to bytes           */
+    &get_native_type,            /* get native type               */
+    0,                /* get sub_section                */
+    0,               /* grib_pack procedures long      */
+    0,                 /* grib_pack procedures long      */
+    &pack_long,                  /* grib_pack procedures long      */
+    0,                /* grib_unpack procedures long    */
+    0,                /* grib_pack procedures double    */
+    0,              /* grib_unpack procedures double  */
+    0,                /* grib_pack procedures string    */
+    0,              /* grib_unpack procedures string  */
+    0,          /* grib_pack array procedures string    */
+    0,        /* grib_unpack array procedures string  */
+    0,                 /* grib_pack procedures bytes     */
+    0,               /* grib_unpack procedures bytes   */
+    0,            /* pack_expression */
+    0,              /* notify_change   */
+    0,                /* update_size   */
+    0,            /* preferred_size   */
+    0,                    /* resize   */
+    0,      /* nearest_smaller_value */
+    0,                       /* next accessor    */
+    0,                    /* compare vs. another accessor   */
+    0,     /* unpack only ith value          */
+    0,     /* unpack a subarray         */
+    0,              		/* clear          */
+    0,               		/* clone accessor          */
+};
+
+
+grib_accessor_class* grib_accessor_class_bufr_extract_datetime_subsets = &_grib_accessor_class_bufr_extract_datetime_subsets;
+
+
+static void init_class(grib_accessor_class* c)
+{
+	c->dump	=	(*(c->super))->dump;
+	c->next_offset	=	(*(c->super))->next_offset;
+	c->string_length	=	(*(c->super))->string_length;
+	c->value_count	=	(*(c->super))->value_count;
+	c->byte_count	=	(*(c->super))->byte_count;
+	c->byte_offset	=	(*(c->super))->byte_offset;
+	c->sub_section	=	(*(c->super))->sub_section;
+	c->pack_missing	=	(*(c->super))->pack_missing;
+	c->is_missing	=	(*(c->super))->is_missing;
+	c->unpack_long	=	(*(c->super))->unpack_long;
+	c->pack_double	=	(*(c->super))->pack_double;
+	c->unpack_double	=	(*(c->super))->unpack_double;
+	c->pack_string	=	(*(c->super))->pack_string;
+	c->unpack_string	=	(*(c->super))->unpack_string;
+	c->pack_string_array	=	(*(c->super))->pack_string_array;
+	c->unpack_string_array	=	(*(c->super))->unpack_string_array;
+	c->pack_bytes	=	(*(c->super))->pack_bytes;
+	c->unpack_bytes	=	(*(c->super))->unpack_bytes;
+	c->pack_expression	=	(*(c->super))->pack_expression;
+	c->notify_change	=	(*(c->super))->notify_change;
+	c->update_size	=	(*(c->super))->update_size;
+	c->preferred_size	=	(*(c->super))->preferred_size;
+	c->resize	=	(*(c->super))->resize;
+	c->nearest_smaller_value	=	(*(c->super))->nearest_smaller_value;
+	c->next	=	(*(c->super))->next;
+	c->compare	=	(*(c->super))->compare;
+	c->unpack_double_element	=	(*(c->super))->unpack_double_element;
+	c->unpack_double_subarray	=	(*(c->super))->unpack_double_subarray;
+	c->clear	=	(*(c->super))->clear;
+	c->make_clone	=	(*(c->super))->make_clone;
+}
+
+/* END_CLASS_IMP */
+
+static void init(grib_accessor* a, const long len , grib_arguments* arg )
+{
+    int n=0;
+    grib_accessor_bufr_extract_datetime_subsets *self =(grib_accessor_bufr_extract_datetime_subsets*)a;
+
+    a->length=0;
+    self->doExtractSubsets = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->numberOfSubsets = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->extractSubsetList = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+
+    a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
+}
+
+static int get_native_type(grib_accessor* a)
+{
+    return GRIB_TYPE_LONG;
+}
+
+/* Convert input date to Julian number. If date is invalid, return -1 */
+static double date_to_julian(long year,long month,long day,long hour,long minute,long second)
+{
+    double result = 0;
+    grib_datetime_to_julian(year,month,day,hour,minute,second, &result);
+
+    {
+        /* Check conversion worked by going other way */
+        long year1, month1, day1, hour1, minute1, second1;
+        grib_julian_to_datetime(result, &year1, &month1, &day1, &hour1, &minute1, &second1);
+        if (year1 != year || month1 != month || day1 != day || minute1 != minute || second1 != second)
+        {
+            result = -1; /* Failed. Invalid date*/
+        }
+    }
+    return result;
+}
+
+static int select_datetime(grib_accessor* a)
+{
+    int ret=0;
+    long compressed=0;
+    grib_accessor_bufr_extract_datetime_subsets *self =(grib_accessor_bufr_extract_datetime_subsets*)a;
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_context* c=h->context;
+
+    ret=grib_get_long(h,"compressedData",&compressed);
+    if (ret) return ret;
+
+    if (compressed) {
+        size_t n;
+        double julianStart=0, julianEnd=0, julianDT=0;
+        char start_str[80]={0,},end_str[80]={0,},datetime_str[80]={0,};
+        long yearRank,monthRank,dayRank,hourRank,minuteRank,secondRank;
+        long yearStart,monthStart,dayStart,hourStart,minuteStart,secondStart;
+        long yearEnd,monthEnd,dayEnd,hourEnd,minuteEnd,secondEnd;
+        long *year,*month,*day,*hour,*minute;
+        double *second;
+        long numberOfSubsets,i;
+        grib_iarray* subsets;
+        long *subsets_ar=0;
+        size_t nsubsets=0;
+        char yearstr[20]={0,};
+        char monthstr[20]={0,};
+        char daystr[20]={0,};
+        char hourstr[20]={0,};
+        char minutestr[20]={0,};
+        char secondstr[20]={0,};
+
+        ret=grib_get_long(h,self->numberOfSubsets,&numberOfSubsets);
+        if (ret) return ret;
+
+        subsets=grib_iarray_new(c,numberOfSubsets,10);
+
+        ret=grib_set_long(h,"unpack",1);
+        if (ret) return ret;
+
+        ret=grib_get_long(h,"extractDateTimeYearRank",&yearRank);
+        if (ret) return ret;
+        sprintf(yearstr,"#%ld#year",yearRank);
+
+        ret=grib_get_long(h,"extractDateTimeMonthRank",&monthRank);
+        if (ret) return ret;
+        sprintf(monthstr,"#%ld#month",monthRank);
+
+        ret=grib_get_long(h,"extractDateTimeDayRank",&dayRank);
+        if (ret) return ret;
+        sprintf(daystr,"#%ld#day",dayRank);
+
+        ret=grib_get_long(h,"extractDateTimeHourRank",&hourRank);
+        if (ret) return ret;
+        sprintf(hourstr,"#%ld#hour",hourRank);
+
+        ret=grib_get_long(h,"extractDateTimeMinuteRank",&minuteRank);
+        if (ret) return ret;
+        sprintf(minutestr,"#%ld#minute",minuteRank);
+
+        ret=grib_get_long(h,"extractDateTimeSecondRank",&secondRank);
+        if (ret) return ret;
+        sprintf(secondstr,"#%ld#second",secondRank);
+
+        n=numberOfSubsets;
+        year=grib_context_malloc_clear(c,sizeof(long)*numberOfSubsets);
+        ret=grib_get_long_array(h,yearstr,year,&n);
+        if (ret) return ret;
+        if (n!=numberOfSubsets) {
+            if (n==1) {
+                for (i=1;i<numberOfSubsets;i++) year[i]=year[0];
+            } else return GRIB_INTERNAL_ERROR;
+        }
+
+        n=numberOfSubsets;
+        month=grib_context_malloc_clear(c,sizeof(long)*numberOfSubsets);
+        ret=grib_get_long_array(h,monthstr,month,&n);
+        if (ret) return ret;
+        if (n!=numberOfSubsets) {
+            if (n==1) {
+                for (i=1;i<numberOfSubsets;i++) month[i]=month[0];
+            } else return GRIB_INTERNAL_ERROR;
+        }
+
+        n=numberOfSubsets;
+        day=grib_context_malloc_clear(c,sizeof(long)*numberOfSubsets);
+        ret=grib_get_long_array(h,daystr,day,&n);
+        if (ret) return ret;
+        if (n!=numberOfSubsets) {
+            if (n==1) {
+                for (i=1;i<numberOfSubsets;i++) day[i]=day[0];
+            } else return GRIB_INTERNAL_ERROR;
+        }
+
+        n=numberOfSubsets;
+        hour=grib_context_malloc_clear(c,sizeof(long)*numberOfSubsets);
+        ret=grib_get_long_array(h,hourstr,hour,&n);
+        if (ret) return ret;
+        if (n!=numberOfSubsets) {
+            if (n==1) {
+                for (i=1;i<numberOfSubsets;i++) hour[i]=hour[0];
+            } else return GRIB_INTERNAL_ERROR;
+        }
+
+        n=numberOfSubsets;
+        minute=grib_context_malloc_clear(c,sizeof(long)*numberOfSubsets);
+        ret=grib_get_long_array(h,minutestr,minute,&n);
+        if (ret) {
+            ret=0;
+            minute[0]=0;
+            n=1;
+        }
+        if (n!=numberOfSubsets) {
+            if (n==1) {
+                for (i=1;i<numberOfSubsets;i++) minute[i]=minute[0];
+            } else return GRIB_INTERNAL_ERROR;
+        }
+
+        n=numberOfSubsets;
+        second=grib_context_malloc_clear(c,sizeof(double)*numberOfSubsets);
+        ret=grib_get_double_array(h,secondstr,second,&n);
+        if (ret) {
+            ret=0;
+            second[0]=0;
+            n=1;
+        }
+        if (n!=numberOfSubsets) {
+            if (n==1) {
+                for (i=1;i<numberOfSubsets;i++) second[i]=second[0];
+            } else return GRIB_INTERNAL_ERROR;
+        }
+
+        ret=grib_get_long(h,"extractDateTimeYearStart",&yearStart);
+        if (ret) return ret;
+        ret=grib_get_long(h,"extractDateTimeMonthStart",&monthStart);
+        if (ret) return ret;
+        ret=grib_get_long(h,"extractDateTimeDayStart",&dayStart);
+        if (ret) return ret;
+        ret=grib_get_long(h,"extractDateTimeHourStart",&hourStart);
+        if (ret) return ret;
+        ret=grib_get_long(h,"extractDateTimeMinuteStart",&minuteStart);
+        if (ret) minuteStart=0;
+        ret=grib_get_long(h,"extractDateTimeSecondStart",&secondStart);
+        if (ret) secondStart=0;
+        sprintf(start_str,"%04ld/%02ld/%02ld %02ld:%02ld:%02ld",yearStart,monthStart,dayStart,hourStart,minuteStart,secondStart);
+        julianStart = date_to_julian(yearStart,monthStart,dayStart,hourStart,minuteStart,secondStart);
+        if (julianStart == -1) {
+            grib_context_log(c,GRIB_LOG_ERROR,"Invalid start date/time: %s", start_str);
+            return GRIB_INTERNAL_ERROR;
+        }
+
+        ret=grib_get_long(h,"extractDateTimeYearEnd",&yearEnd);
+        if (ret) return ret;
+        ret=grib_get_long(h,"extractDateTimeMonthEnd",&monthEnd);
+        if (ret) return ret;
+        ret=grib_get_long(h,"extractDateTimeDayEnd",&dayEnd);
+        if (ret) return ret;
+        ret=grib_get_long(h,"extractDateTimeHourEnd",&hourEnd);
+        if (ret) return ret;
+        ret=grib_get_long(h,"extractDateTimeMinuteEnd",&minuteEnd);
+        if (ret) minuteEnd=0;
+        ret=grib_get_long(h,"extractDateTimeSecondEnd",&secondEnd);
+        if (ret) secondEnd=0;
+        sprintf(end_str,"%04ld/%02ld/%02ld %02ld:%02ld:%02ld",yearEnd,monthEnd,dayEnd,hourEnd,minuteEnd,secondEnd);
+        julianEnd = date_to_julian(yearEnd,monthEnd,dayEnd,hourEnd,minuteEnd,secondEnd);
+        if (julianEnd == -1) {
+            grib_context_log(c,GRIB_LOG_ERROR,"Invalid end date/time: %s", end_str);
+            return GRIB_INTERNAL_ERROR;
+        }
+
+        if (julianEnd <= julianStart) {
+            grib_context_log(c,GRIB_LOG_ERROR,"Wrong definition of time interval: end (%s) is not after start (%s)",end_str,start_str);
+            return GRIB_INTERNAL_ERROR;
+        }
+
+        for (i=0;i<numberOfSubsets;i++) {
+            sprintf( datetime_str, "%04ld/%02ld/%02ld %02ld:%02ld:%02ld",year[i],month[i],day[i],hour[i],minute[i], (long)round(second[i]) );
+            julianDT = date_to_julian( year[i],month[i],day[i],hour[i],minute[i],(long)round(second[i]) );
+            if (julianDT == -1) {
+                grib_context_log(c,GRIB_LOG_ERROR,"Invalid date/time: %s", datetime_str);
+                return GRIB_INTERNAL_ERROR;
+            }
+
+            if (julianDT>=julianStart && julianEnd>=julianDT) {
+                grib_iarray_push(subsets,i+1);
+                /* printf("++++++++ %ld\n",i+1); */
+            }
+        }
+
+        nsubsets=grib_iarray_used_size(subsets);
+        ret=grib_set_long(h,"extractedDateTimeNumberOfSubsets",nsubsets);
+        if (ret) return ret;
+
+        if (nsubsets!=0) {
+            subsets_ar=grib_iarray_get_array(subsets);
+            ret=grib_set_long_array(h,self->extractSubsetList,subsets_ar,nsubsets);
+            if (ret) return ret;
+
+            ret=grib_set_long(h,self->doExtractSubsets,1);
+            if (ret) return ret;
+        }
+
+        grib_context_free(c,year);
+        grib_context_free(c,month);
+        grib_context_free(c,day);
+        grib_context_free(c,hour);
+        grib_context_free(c,minute);
+        grib_context_free(c,second);
+        grib_iarray_delete(subsets);
+        subsets=0;
+
+    } else {
+        return GRIB_NOT_IMPLEMENTED;
+    }
+
+    return ret;
+}
+
+static int pack_long(grib_accessor* a, const long* val, size_t *len)
+{
+    int err=0;
+    grib_accessor_bufr_extract_datetime_subsets *self =(grib_accessor_bufr_extract_datetime_subsets*)a;
+
+    if (*len==0) return GRIB_SUCCESS;
+    err=select_datetime(a);
+    if (err) return err;
+
+    err=grib_set_long(a->parent->h,self->doExtractSubsets,1);
+    if (err) return err;
+
+    return err;
+}
diff --git a/src/grib_accessor_class_bufr_extract_subsets.c b/src/grib_accessor_class_bufr_extract_subsets.c
index 6c60e2e..be3b004 100644
--- a/src/grib_accessor_class_bufr_extract_subsets.c
+++ b/src/grib_accessor_class_bufr_extract_subsets.c
@@ -19,12 +19,8 @@
    IMPLEMENTS = pack_long;
    MEMBERS    = const char* numericValues
    MEMBERS    = const char* pack
-   MEMBERS    = const char* numberOfSubsets
-   MEMBERS    = const char* subset
    MEMBERS    = grib_accessor* numericValuesAccessor
    MEMBERS    = grib_accessor* packAccessor
-   MEMBERS    = grib_accessor* numberOfSubsetsAccessor
-   MEMBERS    = grib_accessor* subsetAccessor
    END_CLASS_DEF
 
  */
@@ -50,12 +46,8 @@ typedef struct grib_accessor_bufr_extract_subsets {
 /* Members defined in bufr_extract_subsets */
 	const char* numericValues;
 	const char* pack;
-	const char* numberOfSubsets;
-	const char* subset;
 	grib_accessor* numericValuesAccessor;
 	grib_accessor* packAccessor;
-	grib_accessor* numberOfSubsetsAccessor;
-	grib_accessor* subsetAccessor;
 } grib_accessor_bufr_extract_subsets;
 
 extern grib_accessor_class* grib_accessor_class_gen;
@@ -151,8 +143,6 @@ static void get_accessors(grib_accessor* a)
     if (self->packAccessor) return;
     self->numericValuesAccessor=grib_find_accessor(h,self->numericValues);
     self->packAccessor=grib_find_accessor(h,self->pack);
-    self->numberOfSubsetsAccessor=grib_find_accessor(h,self->numberOfSubsets);
-    self->subsetAccessor=grib_find_accessor(h,self->subset);
 }
 
 static void init(grib_accessor* a, const long len , grib_arguments* arg )
@@ -163,8 +153,6 @@ static void init(grib_accessor* a, const long len , grib_arguments* arg )
     a->length=0;
     self->numericValues = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
     self->pack = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
-    self->numberOfSubsets = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
-    self->subset = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
     a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
 }
 
@@ -173,10 +161,6 @@ static int get_native_type(grib_accessor* a)
     return GRIB_TYPE_LONG;
 }
 
-#define PROCESS_DECODE     0
-#define PROCESS_NEW_DATA   1
-#define PROCESS_ENCODE     2
-
 static int pack_long(grib_accessor* a, const long* val, size_t *len)
 {
     int err=0;
@@ -189,14 +173,6 @@ static int pack_long(grib_accessor* a, const long* val, size_t *len)
     v[0]=1;
     err=grib_pack_long(self->packAccessor,v,&l);
     if (err) return err;
-    err=grib_unpack_long(self->subsetAccessor,v,&l);
-    if (err) return err;
 
-    /* this does not work at the moment, we need to fix it */
-    /* err=accessor_bufr_data_array_process_elements(self->numericValuesAccessor,PROCESS_ENCODE,v[0],0,0); */
-    /* v[0]=1; */
-    /* err=grib_pack_long(self->numberOfSubsetsAccessor,v,&l); */
-    /* if (err) return err; */
-    /* err=accessor_bufr_data_array_create_keys(self->numericValuesAccessor,extractSubset,0,0); */
     return err;
 }
diff --git a/src/grib_accessor_class_bufr_extract_subsets.c b/src/grib_accessor_class_bufr_simple_thinning.c
similarity index 63%
copy from src/grib_accessor_class_bufr_extract_subsets.c
copy to src/grib_accessor_class_bufr_simple_thinning.c
index 6c60e2e..19aa979 100644
--- a/src/grib_accessor_class_bufr_extract_subsets.c
+++ b/src/grib_accessor_class_bufr_simple_thinning.c
@@ -17,14 +17,12 @@
    SUPER      = grib_accessor_class_gen
    IMPLEMENTS = init; get_native_type
    IMPLEMENTS = pack_long;
-   MEMBERS    = const char* numericValues
-   MEMBERS    = const char* pack
+   MEMBERS    = const char* doExtractSubsets
    MEMBERS    = const char* numberOfSubsets
-   MEMBERS    = const char* subset
-   MEMBERS    = grib_accessor* numericValuesAccessor
-   MEMBERS    = grib_accessor* packAccessor
-   MEMBERS    = grib_accessor* numberOfSubsetsAccessor
-   MEMBERS    = grib_accessor* subsetAccessor
+   MEMBERS    = const char* extractSubsetList
+   MEMBERS    = const char* simpleThinningStart
+   MEMBERS    = const char* simpleThinningMissingRadius
+   MEMBERS    = const char* simpleThinningSkip
    END_CLASS_DEF
 
  */
@@ -44,26 +42,24 @@ static int pack_long(grib_accessor*, const long* val,size_t *len);
 static void init(grib_accessor*,const long, grib_arguments* );
 static void init_class(grib_accessor_class*);
 
-typedef struct grib_accessor_bufr_extract_subsets {
+typedef struct grib_accessor_bufr_simple_thinning {
     grib_accessor          att;
 /* Members defined in gen */
-/* Members defined in bufr_extract_subsets */
-	const char* numericValues;
-	const char* pack;
+/* Members defined in bufr_simple_thinning */
+	const char* doExtractSubsets;
 	const char* numberOfSubsets;
-	const char* subset;
-	grib_accessor* numericValuesAccessor;
-	grib_accessor* packAccessor;
-	grib_accessor* numberOfSubsetsAccessor;
-	grib_accessor* subsetAccessor;
-} grib_accessor_bufr_extract_subsets;
+	const char* extractSubsetList;
+	const char* simpleThinningStart;
+	const char* simpleThinningMissingRadius;
+	const char* simpleThinningSkip;
+} grib_accessor_bufr_simple_thinning;
 
 extern grib_accessor_class* grib_accessor_class_gen;
 
-static grib_accessor_class _grib_accessor_class_bufr_extract_subsets = {
+static grib_accessor_class _grib_accessor_class_bufr_simple_thinning = {
     &grib_accessor_class_gen,                      /* super                     */
-    "bufr_extract_subsets",                      /* name                      */
-    sizeof(grib_accessor_bufr_extract_subsets),  /* size                      */
+    "bufr_simple_thinning",                      /* name                      */
+    sizeof(grib_accessor_bufr_simple_thinning),  /* size                      */
     0,                           /* inited */
     &init_class,                 /* init_class */
     &init,                       /* init                      */
@@ -104,7 +100,7 @@ static grib_accessor_class _grib_accessor_class_bufr_extract_subsets = {
 };
 
 
-grib_accessor_class* grib_accessor_class_bufr_extract_subsets = &_grib_accessor_class_bufr_extract_subsets;
+grib_accessor_class* grib_accessor_class_bufr_simple_thinning = &_grib_accessor_class_bufr_simple_thinning;
 
 
 static void init_class(grib_accessor_class* c)
@@ -143,28 +139,19 @@ static void init_class(grib_accessor_class* c)
 
 /* END_CLASS_IMP */
 
-static void get_accessors(grib_accessor* a)
-{
-    grib_accessor_bufr_extract_subsets *self =(grib_accessor_bufr_extract_subsets*)a;
-    grib_handle* h=grib_handle_of_accessor(a);
-
-    if (self->packAccessor) return;
-    self->numericValuesAccessor=grib_find_accessor(h,self->numericValues);
-    self->packAccessor=grib_find_accessor(h,self->pack);
-    self->numberOfSubsetsAccessor=grib_find_accessor(h,self->numberOfSubsets);
-    self->subsetAccessor=grib_find_accessor(h,self->subset);
-}
-
 static void init(grib_accessor* a, const long len , grib_arguments* arg )
 {
     int n=0;
-    grib_accessor_bufr_extract_subsets *self =(grib_accessor_bufr_extract_subsets*)a;
+    grib_accessor_bufr_simple_thinning *self =(grib_accessor_bufr_simple_thinning*)a;
 
     a->length=0;
-    self->numericValues = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
-    self->pack = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->doExtractSubsets = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
     self->numberOfSubsets = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
-    self->subset = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->extractSubsetList = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->simpleThinningStart = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->simpleThinningMissingRadius = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+    self->simpleThinningSkip = grib_arguments_get_name(grib_handle_of_accessor(a),arg,n++);
+
     a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
 }
 
@@ -173,30 +160,72 @@ static int get_native_type(grib_accessor* a)
     return GRIB_TYPE_LONG;
 }
 
-#define PROCESS_DECODE     0
-#define PROCESS_NEW_DATA   1
-#define PROCESS_ENCODE     2
+static int apply_thinning(grib_accessor* a)
+{
+    grib_accessor_bufr_simple_thinning *self =(grib_accessor_bufr_simple_thinning*)a;
+    int ret=0;
+    long skip;
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_context* c=h->context;
+    long compressed=0,nsubsets;
+    long i;
+    grib_iarray* subsets;
+    long *subsets_ar=0;
+    long start=0,radius=0;
+
+    ret=grib_get_long(h,"compressedData",&compressed);
+    if (ret) return ret;
+    if (compressed) {
+        long numberOfSubsets=0;
+        ret=grib_get_long(h,self->numberOfSubsets,&numberOfSubsets);
+        if (ret) return ret;
+
+        ret=grib_get_long(h,self->simpleThinningStart,&start);
+        if (ret) return ret;
+
+        ret=grib_get_long(h,self->simpleThinningSkip,&skip);
+        if (ret) return ret;
+
+        ret=grib_get_long(h,self->simpleThinningMissingRadius,&radius);
+        if (ret) return ret;
+
+        subsets=grib_iarray_new(c,numberOfSubsets / skip + 1 ,10);
+        for (i=0;i<numberOfSubsets;i+=skip+1) {
+            grib_iarray_push(subsets,i+1);
+        }
+
+        nsubsets=grib_iarray_used_size(subsets);
+
+        if (nsubsets!=0) {
+            subsets_ar=grib_iarray_get_array(subsets);
+            ret=grib_set_long_array(h,self->extractSubsetList,subsets_ar,nsubsets);
+            if (ret) return ret;
+
+            ret=grib_set_long(h,"unpack",1);
+            if (ret) return ret;
+
+            ret=grib_set_long(h,self->doExtractSubsets,1);
+            if (ret) return ret;
+        }
+
+    } else {
+        return GRIB_NOT_IMPLEMENTED;
+    }
+
+    return ret;
+}
 
 static int pack_long(grib_accessor* a, const long* val, size_t *len)
 {
     int err=0;
-    grib_accessor_bufr_extract_subsets *self =(grib_accessor_bufr_extract_subsets*)a;
-    size_t l=1;
-    long v[1];
+    grib_accessor_bufr_simple_thinning *self =(grib_accessor_bufr_simple_thinning*)a;
 
-    get_accessors(a);
-
-    v[0]=1;
-    err=grib_pack_long(self->packAccessor,v,&l);
+    if (*len==0) return GRIB_SUCCESS;
+    err=apply_thinning(a);
     if (err) return err;
-    err=grib_unpack_long(self->subsetAccessor,v,&l);
+
+    err=grib_set_long(a->parent->h,self->doExtractSubsets,1);
     if (err) return err;
 
-    /* this does not work at the moment, we need to fix it */
-    /* err=accessor_bufr_data_array_process_elements(self->numericValuesAccessor,PROCESS_ENCODE,v[0],0,0); */
-    /* v[0]=1; */
-    /* err=grib_pack_long(self->numberOfSubsetsAccessor,v,&l); */
-    /* if (err) return err; */
-    /* err=accessor_bufr_data_array_create_keys(self->numericValuesAccessor,extractSubset,0,0); */
     return err;
 }
diff --git a/src/grib_accessor_class_data_ccsds_packing.c b/src/grib_accessor_class_data_ccsds_packing.c
index 117e71a..fd3a4dc 100644
--- a/src/grib_accessor_class_data_ccsds_packing.c
+++ b/src/grib_accessor_class_data_ccsds_packing.c
@@ -275,7 +275,7 @@ static int  unpack_double(grib_accessor* a, double* val, size_t *len)
     */
 
     bits8 = ((bits_per_value + 7)/8)*8;
-    size = n_vals * (bits_per_value + 7)/8;
+    size = n_vals * ((bits_per_value + 7)/8);
     decoded = grib_context_buffer_malloc_clear(a->context,size);
     if(!decoded) {
         err = GRIB_OUT_OF_MEMORY;
@@ -387,7 +387,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
             /* Make sure we can decode it again */
             double ref = 1e-100;
             grib_get_double_internal(grib_handle_of_accessor(a),self->reference_value,&ref);
-            printf("%g %g %g\n",reference_value,ref,reference_value-ref);
+            /*printf("%g %g %g\n",reference_value,ref,reference_value-ref);*/
             Assert(ref == reference_value);
         }
 
diff --git a/src/grib_accessor_class_data_g1second_order_general_extended_packing.c b/src/grib_accessor_class_data_g1second_order_general_extended_packing.c
index d3e5a3d..b2c714f 100644
--- a/src/grib_accessor_class_data_g1second_order_general_extended_packing.c
+++ b/src/grib_accessor_class_data_g1second_order_general_extended_packing.c
@@ -724,6 +724,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
         break;
     }
     if (orderOfSPD) {
+        Assert(orderOfSPD >=0 && orderOfSPD < numberOfValues);
         bias=X[orderOfSPD];
         for (i=orderOfSPD+1;i<numberOfValues;i++) {
             if ( bias > X[i] ) bias=X[i];
diff --git a/src/grib_accessor_class_data_jpeg2000_packing.c b/src/grib_accessor_class_data_jpeg2000_packing.c
index 775ca27..1293e9d 100644
--- a/src/grib_accessor_class_data_jpeg2000_packing.c
+++ b/src/grib_accessor_class_data_jpeg2000_packing.c
@@ -373,7 +373,8 @@ static int pack_double(grib_accessor* a, const double* cval, size_t *len)
     switch (ret) {
     case GRIB_CONSTANT_FIELD:
         grib_buffer_replace(a, NULL, 0,1,1);
-        return GRIB_SUCCESS;
+        err = grib_set_long_internal(grib_handle_of_accessor(a), self->number_of_values, *len);
+        return err;
         break;
     case GRIB_SUCCESS:
         break;
@@ -536,21 +537,19 @@ static int pack_double(grib_accessor* a, const double* cval, size_t *len)
 
 static int  unpack_double(grib_accessor* a, double* val, size_t *len)
 {
-    grib_context_log(a->context, GRIB_LOG_ERROR,
-            "JPEG support not enabled.");
+    grib_context_log(a->context, GRIB_LOG_ERROR, "JPEG support not enabled.");
     return GRIB_NOT_IMPLEMENTED;
 }
 
 static int pack_double(grib_accessor* a, const double* val, size_t *len)
 {
-    grib_context_log(a->context, GRIB_LOG_ERROR,
-            "JPEG support not enabled.");
+    grib_context_log(a->context, GRIB_LOG_ERROR, "JPEG support not enabled.");
     return GRIB_NOT_IMPLEMENTED;
 }
 
 #endif
 
-static int  unpack_double_element(grib_accessor* a, size_t idx, double* val)
+static int unpack_double_element(grib_accessor* a, size_t idx, double* val)
 {
     size_t size;
     double* values;
diff --git a/src/grib_accessor_class_g1step_range.c b/src/grib_accessor_class_g1step_range.c
index db2df45..e1b36e6 100644
--- a/src/grib_accessor_class_g1step_range.c
+++ b/src/grib_accessor_class_g1step_range.c
@@ -198,7 +198,7 @@ static int u2s1[] =  {
         43200,   /* (12) 12 hours */
         900,     /* (13) 15 minutes  */
         1800,    /* (14) 30 minutes */
-        1        /* (15) seconds  */
+        1        /* (15) seconds  */   /* See ECC-316 */
 };
 
 static int units_index[] = {
@@ -244,6 +244,9 @@ int grib_g1_step_get_steps(grib_accessor* a,long* start,long* theEnd)
 
     err = grib_get_long_internal(grib_handle_of_accessor(a),self->unit,&unit);
     if(err)           return err;
+    if (unit == 254) {
+        unit = 15; /* See ECC-316: WMO says 254 is for 'seconds' but we use 15! */
+    }
 
     err = grib_get_long_internal(grib_handle_of_accessor(a),self->p1,&p1);
     if(err)               return err;
@@ -321,6 +324,9 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len)
 
         if (error_on_units) {
             grib_get_long_internal(grib_handle_of_accessor(a),self->unit,&unit);
+            if (unit==254) {
+                unit=15; /* See ECC-316 */
+            }
             grib_set_long_internal(grib_handle_of_accessor(a),self->step_unit,unit);
             grib_context_log(a->context,GRIB_LOG_ERROR,
                     "unable to represent the step in %s\n                    Hint: try changing the step units",
@@ -337,7 +343,7 @@ static int unpack_string(grib_accessor* a, char* val, size_t *len)
         if(err)  return err;
     } else sprintf(stepType,"unknown");
 
-    /* Patch for olf forecast probabilities */
+    /* Patch for old forecast probabilities */
     if (self->patch_fp_precip)
     {
         start += 24;
@@ -473,6 +479,9 @@ static int pack_string(grib_accessor* a, const char* val, size_t *len)
 
     if((ret = grib_get_long_internal(h,self->unit,&unit)))
         return ret;
+    if (unit == 254) {
+        unit=15; /* See ECC-316 */
+    }
 
     if(self->step_unit!=NULL && (ret = grib_get_long_internal(h,self->step_unit,&step_unit)))
         return ret;
diff --git a/src/grib_accessor_class_g2grid.c b/src/grib_accessor_class_g2grid.c
index 6d60f8f..4e5c5a1 100644
--- a/src/grib_accessor_class_g2grid.c
+++ b/src/grib_accessor_class_g2grid.c
@@ -149,6 +149,10 @@ static void init_class(grib_accessor_class* c)
 
 /* END_CLASS_IMP */
 
+#ifdef ECCODES_ON_WINDOWS
+#define round(a) ( (a) >=0 ? ((a)+0.5) : ((a)-0.5) )
+#endif
+
 static void init(grib_accessor* a,const long l, grib_arguments* c)
 {
     grib_accessor_g2grid* self = (grib_accessor_g2grid*)a;
diff --git a/src/grib_accessor_class_gen.c b/src/grib_accessor_class_gen.c
index 6b87f52..b3cb9c7 100644
--- a/src/grib_accessor_class_gen.c
+++ b/src/grib_accessor_class_gen.c
@@ -497,7 +497,7 @@ static void destroy(grib_context* ct, grib_accessor* a)
         grib_context_free(ct,a->vvalue);
         a->vvalue=NULL;
     }
-    grib_context_log(ct,GRIB_LOG_DEBUG,"address=%p",a);
+    /*grib_context_log(ct,GRIB_LOG_DEBUG,"address=%p",a);*/
 }
 
 static grib_section* sub_section(grib_accessor* a)
diff --git a/src/grib_accessor_class_lookup.c b/src/grib_accessor_class_lookup.c
index 79585b2..13fe40d 100644
--- a/src/grib_accessor_class_lookup.c
+++ b/src/grib_accessor_class_lookup.c
@@ -141,127 +141,130 @@ static void init_class(grib_accessor_class* c)
 
 static void init(grib_accessor* a, const long len, grib_arguments *arg )
 {
-  grib_accessor_lookup* self = (grib_accessor_lookup*)a;
-  a->length = 0;
-  self->llength = len;
-  self->loffset = grib_arguments_get_long(grib_handle_of_accessor(a),arg,0);
-  a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
-  self->real_name = grib_arguments_get_expression(grib_handle_of_accessor(a),arg,1);
+    grib_accessor_lookup* self = (grib_accessor_lookup*)a;
+    a->length = 0;
+    self->llength = len;
+    self->loffset = grib_arguments_get_long(grib_handle_of_accessor(a),arg,0);
+    a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
+    self->real_name = grib_arguments_get_expression(grib_handle_of_accessor(a),arg,1);
 }
 
 static void post_init(grib_accessor* a)
 {
-  grib_accessor_lookup* self = (grib_accessor_lookup*)a; 
-  if(self->real_name )
-    grib_dependency_observe_expression(a,self->real_name );
-
+    grib_accessor_lookup* self = (grib_accessor_lookup*)a;
+    if(self->real_name ) {
+        grib_dependency_observe_expression(a,self->real_name );
+    }
 }
 
 static void dump(grib_accessor* a,grib_dumper* dumper)
 {
-  grib_accessor_lookup* self = (grib_accessor_lookup*)a;
-  unsigned char bytes[1024] = {0,};
-  char msg[1024]= {0,};
-  char buf[1024];
-  int i;
-  unsigned long v = 0;
-
-  size_t llen = self->llength;
-  grib_unpack_bytes(a, bytes, &llen); /* TODO: Unpack byte unpack the wrong offset */
+    grib_accessor_lookup* self = (grib_accessor_lookup*)a;
+    unsigned char bytes[1024] = {0,};
+    char msg[1024]= {0,};
+    char buf[1024];
+    int i;
+    unsigned long v = 0;
 
-  bytes[llen] = 0;
-  for(i = 0; i < llen; i++)
-  {
-    msg[i] = isprint(bytes[i]) ? bytes[i] : '?';
-    v <<= 8;
-    v |= bytes[i];
-  }
+    size_t llen = self->llength;
+    grib_unpack_bytes(a, bytes, &llen); /* TODO: Unpack byte unpack the wrong offset */
 
-  msg[llen] = 0;
+    bytes[llen] = 0;
+    for(i = 0; i < llen; i++)
+    {
+        msg[i] = isprint(bytes[i]) ? bytes[i] : '?';
+        v <<= 8;
+        v |= bytes[i];
+    }
 
-  sprintf(buf,"%s %lu %ld-%ld", msg, v, (long)a->offset+self->loffset, (long)self->llength);
+    msg[llen] = 0;
 
-  grib_dump_long(dumper,a,buf);
+    sprintf(buf,"%s %lu %ld-%ld", msg, v, (long)a->offset+self->loffset, (long)self->llength);
 
+    grib_dump_long(dumper,a,buf);
 }
 
-static int unpack_string(grib_accessor*a , char*  v, size_t *len){
-
-  grib_accessor_lookup* self = (grib_accessor_lookup*)a;
-  unsigned char bytes[1024] = {0,};
-  int i;
-
-  size_t llen = self->llength;
-  grib_unpack_bytes(a, bytes, &llen); /* TODO: Unpack byte unpack the wrong offset */
-
-  bytes[llen] = 0;
-  for(i = 0; i < llen; i++)
-  {
-    v[i] = isprint(bytes[i]) ? bytes[i] : '?';
-  }
-
-  v[llen] = 0;
-
-
-  return GRIB_SUCCESS;
-
+static int unpack_string(grib_accessor*a , char*  v, size_t *len)
+{
+    grib_accessor_lookup* self = (grib_accessor_lookup*)a;
+    unsigned char bytes[1024] = {0,};
+    int i;
+
+    size_t llen = self->llength;
+    grib_unpack_bytes(a, bytes, &llen); /* TODO: Unpack byte unpack the wrong offset */
+
+    bytes[llen] = 0;
+
+    for(i = 0; i < llen; i++)
+    {
+        v[i] = isprint(bytes[i]) ? bytes[i] : '?';
+    }
+
+    v[llen] = 0;
+    if (llen==1 && v[0] == '?') {
+        /* Try unpack as long */
+        size_t length = 10;
+        long lval = 0;
+        int err = unpack_long(a, &lval, &length);
+        if (!err) {
+            char str[5];
+            int conv = sprintf(str, "%ld", lval);
+            if (conv == 1) {
+                v[0] = str[0];
+            }
+        }
+    }
+
+    return GRIB_SUCCESS;
 }
 
 static int unpack_long(grib_accessor* a, long* val, size_t *len)
 {
-  grib_accessor_lookup* al = (grib_accessor_lookup*)a;
-  grib_handle *h = grib_handle_of_accessor(a);
-
-
-  long pos = (a->offset+al->loffset)*8;
+    grib_accessor_lookup* al = (grib_accessor_lookup*)a;
+    grib_handle *h = grib_handle_of_accessor(a);
 
+    long pos = (a->offset+al->loffset)*8;
 
-  if(len[0] < 1)
-  {
-    grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 );
-    len[0] = 0;
-    return GRIB_ARRAY_TOO_SMALL;
-  }
+    if(len[0] < 1)
+    {
+        grib_context_log(a->context, GRIB_LOG_ERROR, "Wrong size for %s it contains %d values ", a->name , 1 );
+        len[0] = 0;
+        return GRIB_ARRAY_TOO_SMALL;
+    }
 
-  /* This is used when reparsing or rebuilding */
-  if(h->loader) {
-    Assert(*len == 1);
-    return h->loader->lookup_long(h->context,h->loader,a->name,val);
-  }
+    /* This is used when reparsing or rebuilding */
+    if(h->loader) {
+        Assert(*len == 1);
+        return h->loader->lookup_long(h->context,h->loader,a->name,val);
+    }
 
-  val[0] = grib_decode_unsigned_long(h->buffer->data , &pos, al->llength*8);
-  len[0] = 1;
+    val[0] = grib_decode_unsigned_long(h->buffer->data , &pos, al->llength*8);
+    len[0] = 1;
 
-/* printf("lookup: %s %ld %ld\n",a->name,pos/8,val[0]); */
-
-  return GRIB_SUCCESS;
+    /*printf("###########lookup unpack_long: %s %ld %ld\n",a->name, pos/8, val[0]);*/
 
+    return GRIB_SUCCESS;
 }
 
-static int    pack_long   (grib_accessor* a, const long* val, size_t *len)
+static int pack_long(grib_accessor* a, const long* val, size_t *len)
 {
-  return GRIB_NOT_IMPLEMENTED;
+    return GRIB_NOT_IMPLEMENTED;
 }
 
-
 static long byte_count(grib_accessor* a)
 {
-  grib_accessor_lookup* al = (grib_accessor_lookup*)a;
-  return al->llength;
+    grib_accessor_lookup* al = (grib_accessor_lookup*)a;
+    return al->llength;
 }
 
 static long byte_offset(grib_accessor* a)
 {
-  grib_accessor_lookup* al = (grib_accessor_lookup*)a;
-  return al->loffset;
+    grib_accessor_lookup* al = (grib_accessor_lookup*)a;
+    return al->loffset;
 }
 
 static int notify_change(grib_accessor* self,grib_accessor* changed)
 {
-  /* Forward changes */
-  return grib_dependency_notify_change(self);
+    /* Forward changes */
+    return grib_dependency_notify_change(self);
 }
-
-
-
-
diff --git a/src/grib_accessor_class_padding.c b/src/grib_accessor_class_padding.c
index b96968d..43f9af4 100644
--- a/src/grib_accessor_class_padding.c
+++ b/src/grib_accessor_class_padding.c
@@ -161,6 +161,6 @@ static void resize(grib_accessor* a,size_t new_size)
 
 }
 
-static int value_count(grib_accessor* a,long *c){ *c=1;return 0;}
+static int value_count(grib_accessor* a,long *c){ *c=a->length; return 0;}
 static long byte_count(grib_accessor* a){ return a->length;}
 static size_t string_length(grib_accessor* a){ return (size_t)a->length;}
diff --git a/src/grib_accessor_factory.h b/src/grib_accessor_factory.h
index f825d47..e53f07c 100644
--- a/src/grib_accessor_factory.h
+++ b/src/grib_accessor_factory.h
@@ -16,9 +16,12 @@
 { "bufr_data_array", &grib_accessor_class_bufr_data_array, },
 { "bufr_data_element", &grib_accessor_class_bufr_data_element, },
 { "bufr_elements_table", &grib_accessor_class_bufr_elements_table, },
+{ "bufr_extract_area_subsets", &grib_accessor_class_bufr_extract_area_subsets, },
+{ "bufr_extract_datetime_subsets", &grib_accessor_class_bufr_extract_datetime_subsets, },
 { "bufr_extract_subsets", &grib_accessor_class_bufr_extract_subsets, },
 { "bufr_group", &grib_accessor_class_bufr_group, },
 { "bufr_has_delayed_replication", &grib_accessor_class_bufr_has_delayed_replication, },
+{ "bufr_simple_thinning", &grib_accessor_class_bufr_simple_thinning, },
 { "bufr_string_values", &grib_accessor_class_bufr_string_values, },
 { "bufrdc_expanded_descriptors", &grib_accessor_class_bufrdc_expanded_descriptors, },
 { "bytes", &grib_accessor_class_bytes, },
diff --git a/src/grib_accessor_factory_hash_list b/src/grib_accessor_factory_hash_list
index dcb564c..7214175 100644
--- a/src/grib_accessor_factory_hash_list
+++ b/src/grib_accessor_factory_hash_list
@@ -17,10 +17,13 @@ bufr_data_array, &grib_accessor_class_bufr_data_array
 bufr_data_element, &grib_accessor_class_bufr_data_element
 bufr_element, &grib_accessor_class_bufr_element
 bufr_elements_table, &grib_accessor_class_bufr_elements_table
+bufr_extract_area_subsets, &grib_accessor_class_bufr_extract_area_subsets
+bufr_extract_datetime_subsets, &grib_accessor_class_bufr_extract_datetime_subsets
 bufr_extract_subsets, &grib_accessor_class_bufr_extract_subsets
 bufr_group, &grib_accessor_class_bufr_group
 bufr_group_number, &grib_accessor_class_bufr_group_number
 bufr_has_delayed_replication, &grib_accessor_class_bufr_has_delayed_replication
+bufr_simple_thinning, &grib_accessor_class_bufr_simple_thinning
 bufr_string_values, &grib_accessor_class_bufr_string_values
 bufr_subset_number, &grib_accessor_class_bufr_subset_number
 bufr_uncompressed_data, &grib_accessor_class_bufr_uncompressed_data
diff --git a/src/grib_api.h b/src/grib_api.h
index 4b57a59..cc01906 100644
--- a/src/grib_api.h
+++ b/src/grib_api.h
@@ -169,12 +169,12 @@ struct grib_values {
 } ;
 
 
-/*! Grib handle,   structure giving access to parsed grib values by keys
+/*! Grib handle,   structure giving access to parsed message values by keys
     \ingroup grib_handle
 */
 typedef struct grib_handle    grib_handle;
 
-/*! Grib multi field handle,   structure used to build multi fields messages.
+/*! Grib multi field handle,   structure used to build multi field GRIB messages.
     \ingroup grib_handle
  */
 typedef struct grib_multi_handle    grib_multi_handle;
@@ -184,7 +184,7 @@ typedef struct grib_multi_handle    grib_multi_handle;
 */
 typedef struct grib_context   grib_context;
 
-/*! Grib iterator, structure supporting a geographic iteration of values on a grib message.
+/*! Grib iterator, structure supporting a geographic iteration of values on a GRIB message.
     \ingroup grib_iterator
 */
 typedef struct grib_iterator  grib_iterator;
@@ -221,9 +221,6 @@ typedef struct bufr_descriptor bufr_descriptor;
 typedef struct bufr_descriptors_array bufr_descriptors_array;
 
 grib_fieldset *grib_fieldset_new_from_files(grib_context *c, char *filenames[], int nfiles, char **keys, int nkeys, char *where_string, char *order_by_string, int *err);
-
-
-
 void grib_fieldset_delete(grib_fieldset* set);
 void grib_fieldset_rewind(grib_fieldset* set);
 int grib_fieldset_apply_order_by(grib_fieldset* set,const char* order_by_string);
@@ -247,6 +244,7 @@ typedef struct grib_index grib_index;
  * @param filename    : name of the file of messages to be indexed
  * @param keys        : comma separated list of keys for the index.
  *    The type of the key can be explicitly declared appending :l for long,
+ *    (or alternatively :i)
  *    :d for double, :s for string to the key name. If the type is not
  *    declared explicitly, the native type is assumed.
  * @param err         :  0 if OK, integer value on error
@@ -260,6 +258,7 @@ grib_index* grib_index_new_from_file(grib_context* c,
  * @param c           : context  (NULL for default context)
  * @param keys        : comma separated list of keys for the index.
  *    The type of the key can be explicitly declared appending :l for long,
+ *    (or alternatively :i)
  *    :d for double, :s for string to the key name. If the type is not
  *    declared explicitly, the native type is assumed.
  * @param err         :  0 if OK, integer value on error
@@ -422,6 +421,7 @@ int grib_write_message(grib_handle* h,const char* file,const char* mode);
 typedef struct grib_string_list grib_string_list;
 struct grib_string_list {
   char* value;
+  int count;
   grib_string_list* next;
 };
 
@@ -543,7 +543,7 @@ int grib_multi_handle_write(grib_multi_handle* mh,FILE* f);
 /**
 * getting the message attached to a handle
 *
-* @param h              : the grib handle to which the buffer should be gathered
+* @param h              : the handle to which the buffer should be gathered
 * @param message        : the pointer to be set to the handle's data
 * @param message_length : On exit, the message size in number of bytes
 * @return            0 if OK, integer value on error
@@ -554,7 +554,7 @@ int grib_get_message(grib_handle* h ,const void** message, size_t *message_lengt
 /**
 * getting a copy of the message attached to a handle
 *
-* @param h              : the grib handle to which the buffer should be returned
+* @param h              : the handle to which the buffer should be returned
 * @param message        : the pointer to the data buffer to be filled
 * @param message_length : On entry, the size in number of bytes of the allocated empty message.
 *                         On exit, the actual message length in number of bytes
@@ -587,7 +587,7 @@ grib_iterator*      grib_iterator_new      (grib_handle*   h, unsigned long flag
 * @param values      : returned array of data values
 * @return            0 if OK, integer value on error
 */
-int grib_get_data(grib_handle *h, double *lats, double *lons, double *values, size_t *size);
+int grib_get_data(grib_handle *h, double *lats, double *lons, double *values);
 
 /**
 * Get the next value from an iterator.
@@ -681,7 +681,7 @@ int                 grib_nearest_delete   (grib_nearest *nearest);
 * Find the nearest point of a set of points whose latitudes and longitudes
 * are given in the inlats, inlons arrays respectively.
 * If the flag is_lsm is 1 the nearest land point is returned and the
-* grib passed as handle (h) is considered a land sea mask.
+* GRIB passed as handle (h) is considered a land sea mask.
 * The land nearest point is the nearest point with land sea mask value>=0.5.
 * If no nearest land points are found the nearest value is returned.
 * If the flag is_lsm is 0 the nearest point is returned.
@@ -924,6 +924,18 @@ int grib_set_force_double_array(grib_handle* h, const char* key, const double* v
 * @return            0 if OK, integer value on error
 */
 int grib_set_long_array   (grib_handle* h, const char*  key , const long*          vals   , size_t length);
+
+/**
+*  Set a string array from a key. If several keys of the same name are present, the last one is set
+*  @see  grib_get_string_array
+*
+* @param h           : the handle to set the data to
+* @param key         : the key to be searched
+* @param vals        : the address of a string array where the data will be read
+* @param length      : a size_t that contains the length of the array on input
+* @return            0 if OK, integer value on error
+*/
+int grib_set_string_array(grib_handle* h, const char *key, const char **vals, size_t length);
 /*! @} */
 
 
@@ -932,7 +944,7 @@ int grib_set_long_array   (grib_handle* h, const char*  key , const long*
 *
 * @param h            : the handle to be printed
 * @param out          : output file handle
-* @param mode         : available dump modes are: debug wmo c_code
+* @param mode         : Examples of available dump modes: debug wmo
 * @param option_flags : all the GRIB_DUMP_FLAG_x flags can be used
 * @param arg          : used to provide a format to output data (experimental)
 */
@@ -1176,7 +1188,7 @@ void    grib_context_set_logging_proc(grib_context* c, grib_log_proc logp);
 void grib_multi_support_on(grib_context* c);
 
 /**
-*  Turn off support for multiple fields in single grib messages
+*  Turn off support for multiple fields in single GRIB messages
 *
 * @param c            : the context to be modified
 */
@@ -1224,10 +1236,10 @@ attributes or by the namespace they belong to.
 /*! Create a new iterator from a valid and initialised handle.
 *  @param h             : the handle whose keys you want to iterate
 *  @param filter_flags  : flags to filter out some of the keys through their attributes
-*  @param name_space     : if not null the iteration is carried out only on
+*  @param name_space    : if not null the iteration is carried out only on
 *                         keys belonging to the namespace passed. (NULL for all the keys)
 *  @return              keys iterator ready to iterate through keys according to filter_flags
-*                         and namespace
+*                       and namespace
 */
 grib_keys_iterator* grib_keys_iterator_new(grib_handle* h,unsigned long filter_flags, const char* name_space);
 
@@ -1649,5 +1661,7 @@ Error codes returned by the grib_api functions.
 #define GRIB_UNSUPPORTED_EDITION		-64
 /** Value out of coding range */
 #define GRIB_OUT_OF_RANGE		-65
+/** Size of bitmap is incorrect */
+#define GRIB_WRONG_BITMAP_SIZE		-66
 /*! @}*/
 #endif
diff --git a/src/grib_api_internal.h b/src/grib_api_internal.h
index 3d40116..d9d9861 100644
--- a/src/grib_api_internal.h
+++ b/src/grib_api_internal.h
@@ -187,6 +187,8 @@ extern "C" {
  #define DebugAssertAccess(array, index, size)
 #endif
 
+/* Return true if two strings are equal */
+#define STR_EQ(a, b) (strcmp ((a), (b)) == 0)
 
 #include "grib_api.h"
 
@@ -653,6 +655,7 @@ struct grib_dumper {
    unsigned long      option_flags;
    void*              arg;
    int                depth;
+   long                count;
    grib_handle*       handle;
    grib_dumper_class* cclass;
  };
@@ -1043,9 +1046,10 @@ struct grib_context
     int                             hash_array_count;
     grib_hash_array_value*          hash_array[MAX_NUM_HASH_ARRAY];
     grib_trie*                      def_files;
-    grib_string_list*                blacklist;
+    grib_string_list*               blacklist;
     int                             ieee_packing;
     int                             unpack;
+    int                             bufrdc_mode;
     FILE*                           log_stream;
     grib_trie*                      classes;
     grib_trie*                      lists;
diff --git a/src/grib_api_prototypes.h b/src/grib_api_prototypes.h
index 56abef7..71bd514 100644
--- a/src/grib_api_prototypes.h
+++ b/src/grib_api_prototypes.h
@@ -104,7 +104,7 @@ grib_action *grib_action_create_variable(grib_context *context, const char *name
 grib_action *grib_action_create_modify(grib_context *context, const char *name, long flags);
 
 /* action_class_transient_darray.c */
-grib_action *grib_action_create_transient_darray(grib_context *context, const char *name, grib_darray *darray);
+grib_action *grib_action_create_transient_darray(grib_context *context, const char *name, grib_darray *darray,int flags);
 
 /* grib_accessor.c */
 void grib_accessor_dump(grib_accessor *a, grib_dumper *f);
@@ -906,8 +906,6 @@ void grib_dump_footer(grib_dumper *d, grib_handle *h);
 
 /* grib_dumper_class_xml.c */
 
-/* grib_dumper_class_c_code.c */
-
 /* grib_dumper_class_wmo.c */
 
 /* grib_dumper_class.c */
@@ -916,6 +914,7 @@ void grib_dump_accessors_block(grib_dumper *dumper, grib_block_of_accessors *blo
 void grib_dump_accessors_list(grib_dumper *dumper, grib_accessors_list *al);
 int grib_print(grib_handle *h, const char *name, grib_dumper *d);
 void grib_dump_content(grib_handle *h, FILE *f, const char *mode, unsigned long option_flags, void *data);
+grib_dumper* grib_dump_content_with_dumper(grib_handle *h, grib_dumper* dumper,FILE *f, const char *mode, unsigned long option_flags, void *data);
 void codes_dump_bufr_flat(grib_accessors_list *al, grib_handle *h, FILE *f, const char *mode, unsigned long option_flags, void *data);
 
 /* grib_context.c */
@@ -986,8 +985,7 @@ int grib_file_pool_read(grib_context *c, FILE *fh);
 int grib_file_pool_write(FILE *fh);
 grib_file *grib_file_open(const char *filename, const char *mode, int *err);
 void grib_file_pool_delete_file(grib_file *file);
-void grib_file_close_force(const char *filename, int *err);
-void grib_file_close(const char *filename, int *err);
+void grib_file_close(const char *filename, int force, int *err);
 void grib_file_close_all(int *err);
 grib_file *grib_get_file(const char *filename, int *err);
 grib_file *grib_find_file(short id);
@@ -1005,6 +1003,7 @@ void grib_section_delete(grib_context *c, grib_section *b);
 int grib_handle_delete(grib_handle *h);
 grib_handle *grib_new_handle(grib_context *c);
 grib_handle *grib_handle_new_from_samples(grib_context *c, const char *name);
+grib_handle *codes_bufr_handle_new_from_samples(grib_context *c, const char *name);
 int grib_write_message(grib_handle *h, const char *file, const char *mode);
 grib_handle *grib_handle_clone(grib_handle *h);
 grib_handle *codes_handle_new_from_file(grib_context *c, FILE *f, ProductKind product, int *error);
@@ -1156,6 +1155,7 @@ long grib_get_decimal_scale_fact(double max, double min, long bpval, long binary
 grib_handle *grib_internal_template(grib_context *c, const char *name);
 grib_handle *grib_internal_template(grib_context *c, const char *name);
 grib_handle *grib_external_template(grib_context *c, const char *name);
+grib_handle *bufr_external_template(grib_context *c, const char *name);
 char *grib_external_template_path(grib_context *c, const char *name);
 
 /* grib_dependency.c */
@@ -1185,6 +1185,7 @@ int grib_set_missing_internal(grib_handle *h, const char *name);
 int grib_set_missing(grib_handle *h, const char *name);
 int grib_is_missing_long(grib_accessor *a, long x);
 int grib_is_missing_double(grib_accessor *a, double x);
+int grib_is_missing_string(grib_accessor* a,unsigned char* x,size_t len);
 int grib_accessor_is_missing(grib_accessor *a, int *err);
 int grib_is_missing(grib_handle *h, const char *name, int *err);
 int grib_is_defined(grib_handle *h, const char *name);
@@ -1329,7 +1330,7 @@ int compare_points(const void *a, const void *b);
 /* grib_iterator_class_lambert_conformal.c */
 
 /* grib_iterator.c */
-int grib_get_data(grib_handle *h, double *lats, double *lons, double *values, size_t *size);
+int grib_get_data(grib_handle *h, double *lats, double *lons, double *values);
 int grib_iterator_next(grib_iterator *i, double *lat, double *lon, double *value);
 int grib_iterator_has_next(grib_iterator *i);
 int grib_iterator_previous(grib_iterator *i, double *lat, double *lon, double *value);
@@ -1389,6 +1390,7 @@ char get_dir_separator_char(void);
 const char *extract_filename(const char *filepath);
 int is_gaussian_global(double lat1, double lat2, double lon1, double lon2, long num_points_equator, const double *latitudes, double angular_precision);
 char *codes_getenv(const char *name);
+int compute_key_rank(grib_handle* h, grib_string_list* keys, const char* key);
 
 /* compile.c */
 void grib_compile_flags(grib_compiler *c, long flags);
diff --git a/src/grib_box_class.c b/src/grib_box_class.c
index d559c97..cf8147d 100644
--- a/src/grib_box_class.c
+++ b/src/grib_box_class.c
@@ -12,7 +12,7 @@
 
 #define NUMBER(x) (sizeof(x)/sizeof(x[0]))
 
-/* This file is generated my ./make_class.pl */
+/* This file is generated by ./make_class.pl */
 #include "grib_box_class.h"
 
 struct table_entry
@@ -23,7 +23,7 @@ struct table_entry
 
 static struct table_entry table[] =
 {
-  /* This file is generated my ./make_class.pl */
+  /* This file is generated by ./make_class.pl */
 #include "grib_box_factory.h"
 };
 
diff --git a/src/grib_context.c b/src/grib_context.c
index 3059e18..0015b8d 100644
--- a/src/grib_context.c
+++ b/src/grib_context.c
@@ -314,11 +314,11 @@ static grib_context default_grib_context = {
 
         &default_log,                 /* logging_procedure          */
         &default_print,               /* print procedure            */
-        0,                            /* code tables                */
-        0,                            /* smart tables               */
-        0,                            /* files                      */
-        0,                            /* multigrib support on       */
-        0,                            /* multigrib support          */
+        0,                            /* grib_codetable*            */
+        0,                            /* grib_smart_table*          */
+        0,                            /* char* outfilename          */
+        0,                            /* int multi_support_on       */
+        0,                            /* grib_multi_support* multi_support*/
         0,                            /* grib_definition_files_dir  */
         0,                            /* handle_file_count          */
         0,                            /* handle_total_count         */
@@ -327,23 +327,24 @@ static grib_context default_grib_context = {
         0,                            /* gts_header_on              */
         0,                            /* gribex_mode_on             */
         0,                            /* large_constant_fields      */
-        0,                            /* keys (grib_trie*)          */
+        0,                            /* grib_itrie* keys           */
         0,                            /* keys_count                 */
-        0,                            /* concepts_index             */
+        0,                            /* grib_itrie* concepts_index */
         0,                            /* concepts_count             */
         {0,},                         /* concepts                   */
-        0,                            /* hash_array_index */
-        0,                            /* hash_array_count */
-        {0,},                         /* hash_array */
+        0,                            /* hash_array_index           */
+        0,                            /* hash_array_count           */
+        {0,},                         /* hash_array                 */
         0,                            /* def_files                  */
-        0,                            /* ieee_packing               */
-        0,                            /* unpack */
         0,                            /* blacklist                  */
+        0,                            /* ieee_packing               */
+        0,                            /* unpack                     */
+        0,                            /* bufrdc_mode                */
         0,                            /* log_stream                 */
-        0,                             /* classes */
-        0                             /* lists */
+        0,                            /* classes                    */
+        0                             /* lists                      */
 #if GRIB_PTHREADS
-        ,PTHREAD_MUTEX_INITIALIZER  /* mutex                     */
+        ,PTHREAD_MUTEX_INITIALIZER    /* mutex                      */
 #endif
 };
 
@@ -361,20 +362,22 @@ grib_context* grib_context_get_default()
 
     if(!default_grib_context.inited)
     {
-        const char * write_on_fail = NULL;
-        const char * large_constant_fields = NULL;
-        const char * no_abort = NULL;
-        const char * debug = NULL;
-        const char *gribex=NULL;
-        const char *ieee_packing=NULL;
-        const char *io_buffer_size=NULL;
-        const char *log_stream=NULL;
-        const char *no_big_group_split=NULL;
-        const char *no_spd=NULL;
-        const char *keep_matrix=NULL;
-        const char *nounpack=NULL;
+        const char* write_on_fail = NULL;
+        const char* large_constant_fields = NULL;
+        const char* no_abort = NULL;
+        const char* debug = NULL;
+        const char* gribex = NULL;
+        const char* ieee_packing = NULL;
+        const char* io_buffer_size = NULL;
+        const char* log_stream = NULL;
+        const char* no_big_group_split = NULL;
+        const char* no_spd = NULL;
+        const char* keep_matrix = NULL;
+        const char* bufrdc_mode = NULL;
+        const char* nounpack = NULL;
 
         write_on_fail = codes_getenv("ECCODES_GRIB_WRITE_ON_FAIL");
+        bufrdc_mode = codes_getenv("ECCODES_BUFRDC_MODE_ON");
         large_constant_fields = codes_getenv("ECCODES_GRIB_LARGE_CONSTANT_FIELDS");
         no_abort = codes_getenv("ECCODES_NO_ABORT");
         debug = codes_getenv("ECCODES_DEBUG");
@@ -399,7 +402,7 @@ grib_context* grib_context_get_default()
         default_grib_context.no_big_group_split = no_big_group_split ? atoi(no_big_group_split) : 0;
         default_grib_context.no_spd = no_spd ? atoi(no_spd) : 0;
         default_grib_context.keep_matrix = keep_matrix ? atoi(keep_matrix) : 1;
-   		default_grib_context.unpack = nounpack ? 0 : 1;
+        default_grib_context.unpack = nounpack ? 0 : 1;
         default_grib_context.write_on_fail  = write_on_fail ? atoi(write_on_fail) : 0;
         default_grib_context.no_abort  = no_abort ? atoi(no_abort) : 0;
         default_grib_context.debug  = debug ? atoi(debug) : 0;
@@ -469,6 +472,7 @@ grib_context* grib_context_get_default()
         default_grib_context.def_files=grib_trie_new(&(default_grib_context));
         default_grib_context.lists=grib_trie_new(&(default_grib_context));
         default_grib_context.classes=grib_trie_new(&(default_grib_context));
+        default_grib_context.bufrdc_mode = bufrdc_mode ? atoi(bufrdc_mode) : 0;
     }
 
     GRIB_MUTEX_UNLOCK(&mutex_c);
diff --git a/src/grib_date.c b/src/grib_date.c
index a370f56..e399a08 100644
--- a/src/grib_date.c
+++ b/src/grib_date.c
@@ -16,157 +16,153 @@
 
 #define ROUND(a)     ((a) >=0 ? (long)((a)+0.5) : (long) ((a)-0.5))
 int grib_julian_to_datetime(double jd,long *year,long* month,long* day,
-                            long *hour,long *minute,long *second)
+        long *hour,long *minute,long *second)
 {
-	long z,a,alpha,b,c,d,e;
-	double dday;
-	double f;
-	long s;
-
-	jd+=0.5;
-	z=(long)jd;
-	f=jd-z;
-
-	if (z < 2299161) a=z;
-	else {
-		alpha=(long)((z-1867216.25)/36524.25);
-		a=z+1+alpha-(long)(((double)alpha)/4);
-	}
-	b=a+1524;
-	c=(long)((b-122.1)/365.25);
-	d=(long)(365.25*c);
-	e=(long)(((double)(b-d))/30.6001);
-
-	dday=b-d-(long)(30.6001*e)+f;
-	*day=(long)dday;
-	dday-=*day;
+    long z,a,alpha,b,c,d,e;
+    double dday;
+    double f;
+    long s;
+
+    jd+=0.5;
+    z=(long)jd;
+    f=jd-z;
+
+    if (z < 2299161) a=z;
+    else {
+        alpha=(long)((z-1867216.25)/36524.25);
+        a=z+1+alpha-(long)(((double)alpha)/4);
+    }
+    b=a+1524;
+    c=(long)((b-122.1)/365.25);
+    d=(long)(365.25*c);
+    e=(long)(((double)(b-d))/30.6001);
+
+    dday=b-d-(long)(30.6001*e)+f;
+    *day=(long)dday;
+    dday-=*day;
 
 #if 1
-	/* ANF-CG 02.03.2012 */
-	s=ROUND((double)(dday*86400)); /* total in sec , no msec*/
-	*hour=(long)s/3600;
-	*minute=(long)((s % 3600)/60);
-	*second = (long)(s % 60);
+    /* ANF-CG 02.03.2012 */
+    s=ROUND((double)(dday*86400)); /* total in sec , no msec*/
+    *hour=(long)s/3600;
+    *minute=(long)((s % 3600)/60);
+    *second = (long)(s % 60);
 #else
-	/* Old algorithm, now replaced by above. See GRIB-180 */
-	dhour=dday*24;
-	*hour=(long)dhour;
-	dhour-=*hour;
-	dminute=dhour*60;
-	*minute=(long)dminute;
-	*second=(long)((dminute-*minute)*60);
+    /* Old algorithm, now replaced by above. See GRIB-180 */
+    dhour=dday*24;
+    *hour=(long)dhour;
+    dhour-=*hour;
+    dminute=dhour*60;
+    *minute=(long)dminute;
+    *second=(long)((dminute-*minute)*60);
 #endif
 
-	if (e<14) *month=e-1;
-	else *month=e-13;
+    if (e<14) *month=e-1;
+    else *month=e-13;
 
-	if (*month>2) *year=c-4716;
-	else *year=c-4715;
+    if (*month>2) *year=c-4716;
+    else *year=c-4715;
 
-	return GRIB_SUCCESS;
+    return GRIB_SUCCESS;
 }
 
 int grib_datetime_to_julian(long year,long month,long day,
-                            long hour,long minute,long second,double* jd)
+        long hour,long minute,long second,double* jd)
 {
-	double a,b,dday;
-	long y,m;
-
-	dday=(double)(hour*3600+minute*60+second)/86400.0+day;
-
-	if ( month < 3) {
-		y=year-1;
-		m=month+12;
-	}else {
-		y=year;
-		m=month;
-	}
-	a=(long)(((double)y)/100);
-
-	if ( y > 1582 ) b=2-a+(long)(a/4);
-	else if (y == 1582) {
-		if (m > 10) b=2-a+(long)(a/4);
-		else if (m == 10) {
-			if (day >14) b=2-a+(long)(a/4);
-			else b=0;
-		}
-		else b=0;
-	}
-	else b=0;
-
-	*jd=(long)(365.25*(y+4716))+ (long)(30.6001*(m+1))+dday+b-1524.5;
-
-	return GRIB_SUCCESS;
+    double a,b,dday;
+    long y,m;
+
+    dday=(double)(hour*3600+minute*60+second)/86400.0+day;
+
+    if ( month < 3) {
+        y=year-1;
+        m=month+12;
+    }else {
+        y=year;
+        m=month;
+    }
+    a=(long)(((double)y)/100);
+
+    if ( y > 1582 ) b=2-a+(long)(a/4);
+    else if (y == 1582) {
+        if (m > 10) b=2-a+(long)(a/4);
+        else if (m == 10) {
+            if (day >14) b=2-a+(long)(a/4);
+            else b=0;
+        }
+        else b=0;
+    }
+    else b=0;
+
+    *jd=(long)(365.25*(y+4716))+ (long)(30.6001*(m+1))+dday+b-1524.5;
+
+    return GRIB_SUCCESS;
 }
 
-
 long grib_julian_to_date(long jdate)
 {
-	long x,y,d,m,e;
-	long day,month,year;
-
-	x = 4 * jdate - 6884477;
-	y = (x / 146097) * 100;
-	e = x % 146097;
-	d = e / 4;
+    long x,y,d,m,e;
+    long day,month,year;
 
-	x = 4 * d + 3;
-	y = (x / 1461) + y;
-	e = x % 1461;
-	d = e / 4 + 1;
+    x = 4 * jdate - 6884477;
+    y = (x / 146097) * 100;
+    e = x % 146097;
+    d = e / 4;
 
-	x = 5 * d - 3;
-	m = x / 153 + 1;
-	e = x % 153;
-	d = e / 5 + 1;
+    x = 4 * d + 3;
+    y = (x / 1461) + y;
+    e = x % 1461;
+    d = e / 4 + 1;
 
-	if( m < 11 )
-		month = m + 2;
-	else
-		month = m - 10;
+    x = 5 * d - 3;
+    m = x / 153 + 1;
+    e = x % 153;
+    d = e / 5 + 1;
 
+    if( m < 11 )
+        month = m + 2;
+    else
+        month = m - 10;
 
-	day = d;
-	year = y + m / 11;
-
-	return year * 10000 + month * 100 + day;
+    day = d;
+    year = y + m / 11;
 
+    return year * 10000 + month * 100 + day;
 }
 
 long grib_date_to_julian(long ddate)
 {
-	long  m1,y1,a,b,c,d,j1;
-
-	long month,day,year;
-
-	/*Asserts(ddate > 0);*/
-
-	year = ddate / 10000;
-	ddate %= 10000;
-	month  = ddate / 100;
-	ddate %= 100;
-	day = ddate;
-
-
-	/*  if (year < 100) year = year + 1900; */
-
-	if (month > 2)
-	{
-		m1 = month - 3;
-		y1 = year;
-	}
-	else
-	{
-		m1 = month + 9;
-		y1 = year - 1;
-	}
-	a = 146097*(y1/100)/4;
-	d = y1 % 100;
-	b = 1461*d/4;
-	c = (153*m1+2)/5+day+1721119;
-	j1 = a+b+c;
-
-	return(j1);
+    long  m1,y1,a,b,c,d,j1;
+
+    long month,day,year;
+
+    /*Asserts(ddate > 0);*/
+
+    year = ddate / 10000;
+    ddate %= 10000;
+    month  = ddate / 100;
+    ddate %= 100;
+    day = ddate;
+
+    /*  if (year < 100) year = year + 1900; */
+
+    if (month > 2)
+    {
+        m1 = month - 3;
+        y1 = year;
+    }
+    else
+    {
+        m1 = month + 9;
+        y1 = year - 1;
+    }
+    a = 146097*(y1/100)/4;
+    d = y1 % 100;
+    b = 1461*d/4;
+    c = (153*m1+2)/5+day+1721119;
+    j1 = a+b+c;
+
+    return(j1);
 }
 
 /*
@@ -187,4 +183,3 @@ long grib_date_to_julian(long ddate)
    set_value(r,"STEP","%d",vstep);
    }
  */
-
diff --git a/src/grib_db.c b/src/grib_db.c
index fd89873..d55128d 100644
--- a/src/grib_db.c
+++ b/src/grib_db.c
@@ -643,7 +643,7 @@ int grib_db_load(grib_db* db,char* filename) {
    }
    if (h) grib_handle_delete(h);
 
-   grib_file_close(file->name,&err);
+   grib_file_close(file->name, 0, &err);
 
    return ret;
 }
@@ -695,7 +695,7 @@ grib_handle* grib_db_retrieve(grib_fieldset* set,int i,int* err) {
    h=grib_handle_new_from_file(set->context,field->file->handle,err);
    if (*err!=GRIB_SUCCESS) return NULL;
 
-   grib_file_close(field->file->name,err);
+   grib_file_close(field->file->name, 0, err);
 
    return h;
 }
diff --git a/src/grib_dumper_class.c b/src/grib_dumper_class.c
index 966b5ca..b377329 100644
--- a/src/grib_dumper_class.c
+++ b/src/grib_dumper_class.c
@@ -10,7 +10,7 @@
 
 #include "grib_api_internal.h"
 
-/* This file is generated my ./make_class.pl */
+/* This file is generated by ./make_class.pl */
 #include "grib_dumper_class.h"
 
 
@@ -23,7 +23,7 @@ struct table_entry
 
 static struct table_entry table[] =
 {
-  /* This file is generated my ./make_class.pl */
+  /* This file is generated by ./make_class.pl */
 #include "grib_dumper_factory.h"
 };
 
@@ -86,13 +86,30 @@ int grib_print(grib_handle* h, const char* name, grib_dumper *d ){
 void grib_dump_content(grib_handle* h, FILE* f,const char* mode,unsigned long option_flags,void *data)
 {
     grib_dumper *dumper;
-    dumper =  grib_dumper_factory(mode?mode:"serialize",h,f,option_flags,data);
+    dumper = grib_dumper_factory(mode?mode:"serialize",h,f,option_flags,data);
     grib_dump_header(dumper,h);
     grib_dump_accessors_block(dumper,h->root->block);
     grib_dump_footer(dumper,h);
     grib_dumper_delete(dumper);
 }
 
+grib_dumper* grib_dump_content_with_dumper(grib_handle* h, grib_dumper* dumper, FILE* f,const char* mode,unsigned long option_flags,void *data)
+{
+    long count=1;
+    if (dumper!=NULL) {
+      count=dumper->count;
+      count++;
+    }
+    dumper = grib_dumper_factory(mode?mode:"serialize",h,f,option_flags,data);
+    if (!dumper) return NULL;
+    dumper->count=count;
+
+    grib_dump_header(dumper,h);
+    grib_dump_accessors_block(dumper,h->root->block);
+    grib_dump_footer(dumper,h);
+    return dumper;
+}
+
 void codes_dump_bufr_flat(grib_accessors_list* al,grib_handle* h, FILE* f,const char* mode,unsigned long option_flags,void *data)
 {
     grib_dumper* dumper = NULL;
diff --git a/src/grib_dumper_class.h b/src/grib_dumper_class.h
index f67181f..531d72a 100644
--- a/src/grib_dumper_class.h
+++ b/src/grib_dumper_class.h
@@ -1,9 +1,17 @@
 /* This file is automatically generated by ./make_class.pl, do not edit */
-extern grib_dumper_class* grib_dumper_class_c_code;
+extern grib_dumper_class* grib_dumper_class_bufr_decode_C;
+extern grib_dumper_class* grib_dumper_class_bufr_decode_filter;
+extern grib_dumper_class* grib_dumper_class_bufr_decode_fortran;
+extern grib_dumper_class* grib_dumper_class_bufr_decode_python;
+extern grib_dumper_class* grib_dumper_class_bufr_encode_C;
+extern grib_dumper_class* grib_dumper_class_bufr_encode_filter;
+extern grib_dumper_class* grib_dumper_class_bufr_encode_fortran;
+extern grib_dumper_class* grib_dumper_class_bufr_encode_python;
 extern grib_dumper_class* grib_dumper_class_compare;
 extern grib_dumper_class* grib_dumper_class_debug;
 extern grib_dumper_class* grib_dumper_class_default;
 extern grib_dumper_class* grib_dumper_class_file;
+extern grib_dumper_class* grib_dumper_class_grib_encode_C;
 extern grib_dumper_class* grib_dumper_class_json;
 extern grib_dumper_class* grib_dumper_class_keys;
 extern grib_dumper_class* grib_dumper_class_serialize;
diff --git a/src/grib_dumper_class_bufr_decode_C.c b/src/grib_dumper_class_bufr_decode_C.c
new file mode 100644
index 0000000..6b0c225
--- /dev/null
+++ b/src/grib_dumper_class_bufr_decode_C.c
@@ -0,0 +1,726 @@
+/*
+ * Copyright 2005-2016 ECMWF.
+ *
+ * This software is licensed under the terms of the Apache Licence Version 2.0
+ * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+ *
+ * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+ */
+
+#include "grib_api_internal.h"
+#include <ctype.h>
+/*
+   This is used by make_class.pl
+
+   START_CLASS_DEF
+   CLASS      = dumper
+   IMPLEMENTS = dump_long;dump_bits
+   IMPLEMENTS = dump_double;dump_string;dump_string_array
+   IMPLEMENTS = dump_bytes;dump_values
+   IMPLEMENTS = dump_label;dump_section
+   IMPLEMENTS = init;destroy
+   IMPLEMENTS = header;footer
+   MEMBERS = long section_offset
+   MEMBERS = long empty
+   MEMBERS = long end
+   MEMBERS = long isLeaf
+   MEMBERS = long isAttribute
+   MEMBERS = grib_string_list* keys
+   END_CLASS_DEF
+
+ */
+
+
+/* START_CLASS_IMP */
+
+/*
+
+Don't edit anything between START_CLASS_IMP and END_CLASS_IMP
+Instead edit values between START_CLASS_DEF and END_CLASS_DEF
+or edit "dumper.class" and rerun ./make_class.pl
+
+*/
+
+static void init_class      (grib_dumper_class*);
+static int init            (grib_dumper* d);
+static int destroy         (grib_dumper*);
+static void dump_long       (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_bits       (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_double     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_string     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_string_array     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_bytes      (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_values     (grib_dumper* d, grib_accessor* a);
+static void dump_label      (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_section    (grib_dumper* d, grib_accessor* a,grib_block_of_accessors* block);
+static void header         (grib_dumper*,grib_handle*);
+static void footer         (grib_dumper*,grib_handle*);
+
+typedef struct grib_dumper_bufr_decode_C {
+    grib_dumper          dumper;  
+/* Members defined in bufr_decode_C */
+	long section_offset;
+	long empty;
+	long end;
+	long isLeaf;
+	long isAttribute;
+	grib_string_list* keys;
+} grib_dumper_bufr_decode_C;
+
+
+static grib_dumper_class _grib_dumper_class_bufr_decode_C = {
+    0,                              /* super                     */
+    "bufr_decode_C",                              /* name                      */
+    sizeof(grib_dumper_bufr_decode_C),     /* size                      */
+    0,                                   /* inited */
+    &init_class,                         /* init_class */
+    &init,                               /* init                      */
+    &destroy,                            /* free mem                       */
+    &dump_long,                          /* dump long         */
+    &dump_double,                        /* dump double    */
+    &dump_string,                        /* dump string    */
+    &dump_string_array,                        /* dump string array   */
+    &dump_label,                         /* dump labels  */
+    &dump_bytes,                         /* dump bytes  */
+    &dump_bits,                          /* dump bits   */
+    &dump_section,                       /* dump section      */
+    &dump_values,                        /* dump values   */
+    &header,                             /* header   */
+    &footer,                             /* footer   */
+};
+
+grib_dumper_class* grib_dumper_class_bufr_decode_C = &_grib_dumper_class_bufr_decode_C;
+
+/* END_CLASS_IMP */
+static void dump_attributes(grib_dumper* d, grib_accessor* a, const char* prefix);
+
+GRIB_INLINE static int grib_inline_strcmp(const char* a, const char* b)
+{
+    if (*a != *b) return 1;
+    while((*a!=0 && *b!=0) &&  *(a) == *(b) ) {a++;b++;}
+    return (*a==0 && *b==0) ? 0 : 1;
+}
+
+typedef struct string_count string_count;
+struct string_count {
+    char* value;
+    int count;
+    string_count* next;
+};
+
+static int depth=0;
+
+static void init_class      (grib_dumper_class* c){}
+
+static int init(grib_dumper* d)
+{
+    grib_dumper_bufr_decode_C *self = (grib_dumper_bufr_decode_C*)d;
+    grib_context* c=d->handle->context;
+    self->section_offset=0;
+    self->empty=1;
+    d->count=1;
+    self->isLeaf=0;
+    self->isAttribute=0;
+    self->keys=grib_context_malloc_clear(c,sizeof(grib_string_list));
+
+    return GRIB_SUCCESS;
+}
+
+static int destroy(grib_dumper* d)
+{
+    grib_dumper_bufr_decode_C *self = (grib_dumper_bufr_decode_C*)d;
+    grib_string_list* next=self->keys;
+    grib_string_list* cur=self->keys;
+    grib_context* c=d->handle->context;
+    while(next) {
+        cur=next;
+        next=next->next;
+        grib_context_free(c,cur->value);
+        grib_context_free(c,cur);
+    }
+    return GRIB_SUCCESS;
+}
+
+static char* dval_to_string(grib_context* c, double v)
+{
+    char* sval=grib_context_malloc_clear(c,sizeof(char)*40);
+    sprintf(sval,"%.18e",v);
+    return sval;
+}
+
+static void dump_values(grib_dumper* d, grib_accessor* a)
+{
+    grib_dumper_bufr_decode_C *self = (grib_dumper_bufr_decode_C*)d;
+    double value=0; size_t size = 0;
+    int err = 0;
+    int r=0;
+    long count=0;
+    char* sval;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) !=0)
+        return;
+
+    if (size <= 1) {
+        err=grib_unpack_double(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        fprintf(self->dumper.out,"\n");
+        fprintf(self->dumper.out,"  free(dValues);\n");
+        fprintf(self->dumper.out,"  dValues = (double*)malloc(%lu*sizeof(double));\n", (unsigned long)size);
+        fprintf(self->dumper.out,"  if (!dValues) { fprintf(stderr, \"Failed to allocate memory (dValues).\\n\"); return 1; }\n");
+        fprintf(self->dumper.out,"  size = %lu;\n", size);
+
+        depth-=2;
+
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"  CODES_CHECK(codes_get_double_array(h, \"#%d#%s\",dValues, &size), 0);\n", r, a->name);
+        else
+            fprintf(self->dumper.out,"  CODES_CHECK(codes_get_double_array(h, \"%s\", dValues, &size), 0);\n",a->name);
+    } else {
+        r=compute_key_rank(h,self->keys,a->name);
+        if( !grib_is_missing_double(a,value) ) {
+
+            sval=dval_to_string(c,value);
+            if (r!=0)
+                fprintf(self->dumper.out,"  CODES_CHECK(codes_get_double(h, \"#%d#%s\", &dVal), 0);\n", r, a->name);
+            else
+                fprintf(self->dumper.out,"  CODES_CHECK(codes_get_double(h, \"%s\", &dVal), 0);\n", a->name);
+
+            grib_context_free(c,sval);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_values_attribute(grib_dumper* d, grib_accessor* a, const char* prefix)
+{
+    grib_dumper_bufr_decode_C *self = (grib_dumper_bufr_decode_C*)d;
+    double value; size_t size = 0;
+    int err = 0;
+    long count=0;
+    char* sval;
+    grib_context* c=a->context;
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) !=0)
+        return;
+
+    if (size <= 1) {
+        err=grib_unpack_double(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        fprintf(self->dumper.out,"\n");
+        fprintf(self->dumper.out,"  free(dValues);\n");
+        fprintf(self->dumper.out,"  dValues = (double*)malloc(%lu*sizeof(double));\n", (unsigned long)size);
+        fprintf(self->dumper.out,"  if (!dValues) { fprintf(stderr, \"Failed to allocate memory (dValues).\\n\"); return 1; }\n");
+        fprintf(self->dumper.out,"  size = %lu\n;", size);
+
+        depth-=2;
+
+        fprintf(self->dumper.out,"  CODES_CHECK(codes_get_double_array(h, \"%s->%s\", dValues, &size), 0);\n", prefix,a->name);
+    } else {
+        /* int r=compute_key_rank(h,self->keys,a->name); */
+        if( !grib_is_missing_double(a,value) ) {
+
+            sval=dval_to_string(c,value);
+            fprintf(self->dumper.out,"  CODES_CHECK(codes_get_double(h, \"%s->%s\", &dVal), 0);\n", prefix,a->name);
+
+            grib_context_free(c,sval);
+
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix1;
+
+        prefix1=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+strlen(prefix)+5));
+        sprintf(prefix1,"%s->%s",prefix,a->name);
+
+        dump_attributes(d,a,prefix1);
+
+        grib_context_free(c,prefix1);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_long(grib_dumper* d,grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_decode_C *self = (grib_dumper_bufr_decode_C*)d;
+    long value=0; size_t size = 0;
+    int err = 0;
+    int r=0;
+    long count=0;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0  ) return;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0) {
+        if (self->isLeaf==0) {
+            char* prefix;
+            int dofree=0;
+
+            r=compute_key_rank(h,self->keys,a->name);
+            if (r!=0) {
+                prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+                dofree=1;
+                sprintf(prefix,"#%d#%s",r,a->name);
+            } else prefix=(char*)a->name;
+
+            dump_attributes(d,a,prefix);
+            if (dofree) grib_context_free(c,prefix);
+            depth-=2;
+        }
+        return;
+    }
+
+    if (size <= 1) {
+        err=grib_unpack_long(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        fprintf(self->dumper.out,"\n");
+        fprintf(self->dumper.out,"  free(iValues);\n");
+        fprintf(self->dumper.out,"  iValues = (long*)malloc(%lu*sizeof(long));\n", (unsigned long)size);
+        fprintf(self->dumper.out,"  if (!iValues) { fprintf(stderr, \"Failed to allocate memory (iValues).\\n\"); return 1; }\n");
+        fprintf(self->dumper.out,"  size = %lu;\n", size);
+
+        depth-=2;
+
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"  CODES_CHECK(codes_get_long_array(h, \"#%d#%s\", iValues, &size), 0);\n",r,a->name);
+        else
+            fprintf(self->dumper.out,"  CODES_CHECK(codes_get_long_array(h, \"%s\", iValues, &size), 0);\n",a->name);
+
+    } else {
+        r=compute_key_rank(h,self->keys,a->name);
+        if( !grib_is_missing_long(a,value) ) {
+            if (r!=0)
+                fprintf(self->dumper.out,"  CODES_CHECK(codes_get_long(h, \"#%d#%s\", &iVal), 0);\n", r,a->name);
+            else
+                fprintf(self->dumper.out,"  CODES_CHECK(codes_get_long(h, \"%s\", &iVal), 0);\n", a->name);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+    (void)err; /* TODO */
+}
+
+static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* prefix)
+{
+    grib_dumper_bufr_decode_C *self = (grib_dumper_bufr_decode_C*)d;
+    long value=0; size_t size = 0;
+    int err = 0;
+    long count=0;
+    grib_context* c=a->context;
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    if (size <= 1) {
+        err=grib_unpack_long(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        fprintf(self->dumper.out,"\n");
+        fprintf(self->dumper.out,"  free(iValues);\n");
+        fprintf(self->dumper.out,"  iValues = (long*)malloc(%lu*sizeof(long));\n", (unsigned long)size);
+        fprintf(self->dumper.out,"  if (!iValues) { fprintf(stderr, \"Failed to allocate memory (iValues).\\n\"); return 1; }\n");
+        fprintf(self->dumper.out,"  size = %lu;\n", size);
+
+        depth-=2;
+
+        fprintf(self->dumper.out,"  CODES_CHECK(codes_get_long_array(h, \"%s->%s\", iValues, &size), 0);\n", prefix,a->name);
+
+    } else {
+        /* int r=compute_key_rank(h,self->keys,a->name); */
+        if( !grib_is_missing_long(a,value) ) {
+            fprintf(self->dumper.out,"  CODES_CHECK(codes_get_long(h, \"%s->%s\", &iVal), 0);\n", prefix,a->name);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix1;
+
+        prefix1=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+strlen(prefix)+5));
+        sprintf(prefix1,"%s->%s",prefix,a->name);
+
+        dump_attributes(d,a,prefix1);
+
+        grib_context_free(c,prefix1);
+        depth-=2;
+    }
+    (void)err; /* TODO */
+}
+
+static void dump_bits(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void dump_double(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_decode_C *self = (grib_dumper_bufr_decode_C*)d;
+    double value=0; size_t size = 1;
+    int r;
+    char* sval;
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_context* c=h->context;
+
+    grib_unpack_double(a,&value,&size);
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    self->empty=0;
+
+    r=compute_key_rank(h,self->keys,a->name);
+    if( !grib_is_missing_double(a,value) ) {
+        sval=dval_to_string(c,value);
+        if (r!=0)
+            fprintf(self->dumper.out,"  CODES_CHECK(codes_get_double(h, \"#%d#%s\", &dVal), 0);\n", r,a->name);
+        else
+            fprintf(self->dumper.out,"  CODES_CHECK(codes_get_double(h, \"%s\", &dVal), 0);\n", a->name);
+
+        grib_context_free(c,sval);
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+}
+
+static void dump_string_array(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_decode_C *self = (grib_dumper_bufr_decode_C*)d;
+    char **values;
+    size_t size = 0;
+    grib_context* c=NULL;
+    int err = 0;
+    long count=0;
+    int r;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    c=a->context;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    grib_value_count(a,&count);
+    size=count;
+    if (size==1) {
+        dump_string(d,a,comment);
+        return;
+    }
+
+    fprintf(self->dumper.out,"\n");
+    fprintf(self->dumper.out,"  free(sValues);\n");
+    fprintf(self->dumper.out,"  sValues = (char**)malloc(%lu * sizeof(char*));\n", (unsigned long)size);
+    fprintf(self->dumper.out,"  if (!sValues) { fprintf(stderr, \"Failed to allocate memory (sValues).\\n\"); return 1; }\n");
+    fprintf(self->dumper.out,"  size = %lu;\n", size);
+
+    self->empty=0;
+    values=(char**)grib_context_malloc_clear(c,size*sizeof(char*));
+    if (!values) {
+        grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size);
+        return;
+    }
+
+    err = grib_unpack_string_array(a,values,&size);
+
+    if (self->isLeaf==0) {
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"  codes_get_string_array(h, \"#%d#%s\", sValues, &size);\n",r,a->name);
+        else
+            fprintf(self->dumper.out,"  codes_get_string_array(h, \"%s\", sValues, &size);\n",a->name);
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    grib_context_free(c,values);
+    (void)err; /* TODO */
+}
+
+static void dump_string(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_decode_C *self = (grib_dumper_bufr_decode_C*)d;
+    char *value=NULL;
+    char *p = NULL;
+    size_t size = 0;
+    grib_context* c=NULL;
+    int r;
+    int err = _grib_get_string_length(a,&size);
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    c=a->context;
+    if (size==0) return;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    value=(char*)grib_context_malloc_clear(c,size);
+    if (!value) {
+        grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size);
+        return;
+    }
+
+    self->empty=0;
+
+    err = grib_unpack_string(a,value,&size);
+    p=value;
+    r=compute_key_rank(h,self->keys,a->name);
+    if (grib_is_missing_string(a,(unsigned char *)value,size))
+        return;
+
+    while(*p) { if(!isprint(*p)) *p = '.'; p++; }
+
+    fprintf(self->dumper.out,"  size = 1024;\n"); /* TODO */
+    if (self->isLeaf==0) {
+        depth+=2;
+        if (r!=0)
+            fprintf(self->dumper.out,"  CODES_CHECK(codes_get_string(h, \"#%d#%s\", sVal, &size), 0);\n", r, a->name);
+        else
+            fprintf(self->dumper.out,"  CODES_CHECK(codes_get_string(h, \"%s\", sVal, &size), 0);\n", a->name);
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    grib_context_free(c,value);
+    (void)err; /* TODO */
+}
+
+static void dump_bytes(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void dump_label(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void _dump_long_array(grib_handle* h, FILE* f, const char* key, const char* print_key)
+{
+    size_t size=0;
+    if (grib_get_size(h,key,&size)==GRIB_NOT_FOUND) return;
+
+    fprintf(f,"  free(iValues);\n");
+    fprintf(f,"  iValues = (long*)malloc(%lu*sizeof(long));\n", (unsigned long)size);
+    fprintf(f,"  if (!iValues) { fprintf(stderr, \"Failed to allocate memory (iValues).\\n\"); return 1; }\n");
+    fprintf(f,"  size = %lu;", size);
+
+    fprintf(f,"  CODES_CHECK(codes_get_long_array(h, \"%s\", iValues, &size), 0);\n",print_key);
+}
+
+static void dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accessors* block)
+{
+    grib_dumper_bufr_decode_C *self = (grib_dumper_bufr_decode_C*)d;
+    if (!grib_inline_strcmp(a->name,"BUFR") ||
+            !grib_inline_strcmp(a->name,"GRIB") ||
+            !grib_inline_strcmp(a->name,"META")
+    ) {
+        grib_handle* h=grib_handle_of_accessor(a);
+        depth=2;
+        self->empty=1;
+        depth+=2;
+        _dump_long_array(h,self->dumper.out,"dataPresentIndicator","inputDataPresentIndicator");
+        _dump_long_array(h,self->dumper.out,"delayedDescriptorReplicationFactor","inputDelayedDescriptorReplicationFactor");
+        _dump_long_array(h,self->dumper.out,"shortDelayedDescriptorReplicationFactor","inputShortDelayedDescriptorReplicationFactor");
+        _dump_long_array(h,self->dumper.out,"extendedDelayedDescriptorReplicationFactor","inputExtendedDelayedDescriptorReplicationFactor");
+        grib_dump_accessors_block(d,block);
+        depth-=2;
+    } else if (!grib_inline_strcmp(a->name,"groupNumber")) {
+        if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0)
+            return;
+        self->empty=1;
+        depth+=2;
+        grib_dump_accessors_block(d,block);
+        depth-=2;
+    } else {
+        grib_dump_accessors_block(d,block);
+    }
+}
+
+static void dump_attributes(grib_dumper* d,grib_accessor* a, const char* prefix)
+{
+    int i=0;
+    grib_dumper_bufr_decode_C *self = (grib_dumper_bufr_decode_C*)d;
+    unsigned long flags;
+    while (i < MAX_ACCESSOR_ATTRIBUTES && a->attributes[i]) {
+        self->isAttribute=1;
+        if (  (d->option_flags & GRIB_DUMP_FLAG_ALL_ATTRIBUTES ) == 0
+                && (a->attributes[i]->flags & GRIB_ACCESSOR_FLAG_DUMP)== 0 )
+        {
+            i++;
+            continue;
+        }
+        self->isLeaf=a->attributes[i]->attributes[0]==NULL ? 1 : 0;
+        flags=a->attributes[i]->flags;
+        a->attributes[i]->flags |= GRIB_ACCESSOR_FLAG_DUMP;
+        switch (grib_accessor_get_native_type(a->attributes[i])) {
+        case GRIB_TYPE_LONG:
+            dump_long_attribute(d,a->attributes[i],prefix);
+            break;
+        case GRIB_TYPE_DOUBLE:
+            dump_values_attribute(d,a->attributes[i],prefix);
+            break;
+        case GRIB_TYPE_STRING:
+            break;
+        }
+        a->attributes[i]->flags=flags;
+        i++;
+    }
+    self->isLeaf=0;
+    self->isAttribute=0;
+}
+
+static void header(grib_dumper* d, grib_handle* h)
+{
+    grib_dumper_bufr_decode_C *self = (grib_dumper_bufr_decode_C*)d;
+    Assert(h->product_kind == PRODUCT_BUFR);
+
+    if (d->count<2) {
+        /* This is the first message being processed */
+        fprintf(self->dumper.out,"/* This program was automatically generated with bufr_dump -DC */\n");
+        fprintf(self->dumper.out,"/* Using ecCodes version: ");
+        grib_print_api_version(self->dumper.out);
+        fprintf(self->dumper.out, " */\n\n");
+        fprintf(self->dumper.out,"#include \"eccodes.h\"\n");
+        fprintf(self->dumper.out,"int main(int argc, char* argv[])\n");
+        fprintf(self->dumper.out,"{\n");
+        fprintf(self->dumper.out,"  size_t         size = 0;\n");
+        fprintf(self->dumper.out,"  int            err = 0;\n");
+        fprintf(self->dumper.out,"  FILE*          fin = NULL;\n");
+        fprintf(self->dumper.out,"  codes_handle*  h = NULL;\n");
+        fprintf(self->dumper.out,"  long           iVal = 0;\n");
+        fprintf(self->dumper.out,"  double         dVal = 0.0;\n");
+        fprintf(self->dumper.out,"  char           sVal[1024] = {0,};\n");
+        fprintf(self->dumper.out,"  long*          iValues = NULL;\n");
+        fprintf(self->dumper.out,"  char**         sValues = NULL;\n");
+        fprintf(self->dumper.out,"  double*        dValues = NULL;\n");
+        fprintf(self->dumper.out,"  const char*    infile_name = NULL;\n\n");
+
+        fprintf(self->dumper.out,"  if (argc != 2) {\n");
+        fprintf(self->dumper.out,"    fprintf(stderr, \"Usage: %%s BUFR_file\\n\", argv[0]);\n");
+        fprintf(self->dumper.out,"    return 1;\n");
+        fprintf(self->dumper.out,"  }\n");
+        fprintf(self->dumper.out,"  infile_name = argv[1];\n");
+        fprintf(self->dumper.out,"  fin = fopen(infile_name, \"r\");\n");
+        fprintf(self->dumper.out,"  if (!fin) {\n");
+        fprintf(self->dumper.out,"    fprintf(stderr,\"ERROR: Unable to open input BUFR file %%s\\n\", infile_name);\n");
+        fprintf(self->dumper.out,"    return 1;\n");
+        fprintf(self->dumper.out,"  }\n\n");
+    }
+
+    fprintf(self->dumper.out,"  h = codes_handle_new_from_file(NULL, fin, PRODUCT_BUFR, &err);\n");
+    fprintf(self->dumper.out,"  if (h == NULL) {\n");
+    fprintf(self->dumper.out,"    fprintf(stderr, \"ERROR: cannot create BUFR handle\\n\");\n");
+    fprintf(self->dumper.out,"    return 1;\n");
+    fprintf(self->dumper.out,"  }\n");
+    fprintf(self->dumper.out,"  CODES_CHECK(codes_set_long(h, \"unpack\", 1),0);\n\n");
+}
+
+static void footer(grib_dumper* d, grib_handle* h)
+{
+    grib_dumper_bufr_decode_C *self = (grib_dumper_bufr_decode_C*)d;
+
+    /*fprintf(self->dumper.out,"  fout = fopen(\"outfile.bufr\", \"w\");");*/
+    /*fprintf(self->dumper.out,"  if (fclose(fout)) {\n");
+    fprintf(self->dumper.out,"    fprintf(stderr, \"Failed to close file handle.\\n\");\n");
+    fprintf(self->dumper.out,"    return 1;\n");
+    fprintf(self->dumper.out,"  }\n");
+    */
+    fprintf(self->dumper.out,"\n");
+    fprintf(self->dumper.out,"  codes_handle_delete(h);\n");
+    fprintf(self->dumper.out,"  free(iValues); iValues = NULL;\n");
+    fprintf(self->dumper.out,"  free(dValues); dValues = NULL;\n");
+    fprintf(self->dumper.out,"  free(sValues); sValues = NULL;\n\n");
+}
diff --git a/src/grib_dumper_class_bufr_decode_filter.c b/src/grib_dumper_class_bufr_decode_filter.c
new file mode 100644
index 0000000..7bbcb21
--- /dev/null
+++ b/src/grib_dumper_class_bufr_decode_filter.c
@@ -0,0 +1,578 @@
+/*
+ * Copyright 2005-2016 ECMWF.
+ *
+ * This software is licensed under the terms of the Apache Licence Version 2.0
+ * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+ *
+ * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+ */
+
+#include "grib_api_internal.h"
+#include <ctype.h>
+/*
+   This is used by make_class.pl
+
+   START_CLASS_DEF
+   CLASS      = dumper
+   IMPLEMENTS = dump_long;dump_bits
+   IMPLEMENTS = dump_double;dump_string;dump_string_array
+   IMPLEMENTS = dump_bytes;dump_values
+   IMPLEMENTS = dump_label;dump_section
+   IMPLEMENTS = init;destroy
+   MEMBERS = long section_offset
+   MEMBERS = long begin
+   MEMBERS = long empty
+   MEMBERS = long end
+   MEMBERS = long isLeaf
+   MEMBERS = long isAttribute
+   MEMBERS = grib_string_list* keys
+   END_CLASS_DEF
+
+ */
+
+
+/* START_CLASS_IMP */
+
+/*
+
+Don't edit anything between START_CLASS_IMP and END_CLASS_IMP
+Instead edit values between START_CLASS_DEF and END_CLASS_DEF
+or edit "dumper.class" and rerun ./make_class.pl
+
+*/
+
+static void init_class      (grib_dumper_class*);
+static int init            (grib_dumper* d);
+static int destroy         (grib_dumper*);
+static void dump_long       (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_bits       (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_double     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_string     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_string_array     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_bytes      (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_values     (grib_dumper* d, grib_accessor* a);
+static void dump_label      (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_section    (grib_dumper* d, grib_accessor* a,grib_block_of_accessors* block);
+
+typedef struct grib_dumper_bufr_decode_filter {
+    grib_dumper          dumper;  
+/* Members defined in bufr_decode_filter */
+	long section_offset;
+	long begin;
+	long empty;
+	long end;
+	long isLeaf;
+	long isAttribute;
+	grib_string_list* keys;
+} grib_dumper_bufr_decode_filter;
+
+
+static grib_dumper_class _grib_dumper_class_bufr_decode_filter = {
+    0,                              /* super                     */
+    "bufr_decode_filter",                              /* name                      */
+    sizeof(grib_dumper_bufr_decode_filter),     /* size                      */
+    0,                                   /* inited */
+    &init_class,                         /* init_class */
+    &init,                               /* init                      */
+    &destroy,                            /* free mem                       */
+    &dump_long,                          /* dump long         */
+    &dump_double,                        /* dump double    */
+    &dump_string,                        /* dump string    */
+    &dump_string_array,                        /* dump string array   */
+    &dump_label,                         /* dump labels  */
+    &dump_bytes,                         /* dump bytes  */
+    &dump_bits,                          /* dump bits   */
+    &dump_section,                       /* dump section      */
+    &dump_values,                        /* dump values   */
+    0,                             /* header   */
+    0,                             /* footer   */
+};
+
+grib_dumper_class* grib_dumper_class_bufr_decode_filter = &_grib_dumper_class_bufr_decode_filter;
+
+/* END_CLASS_IMP */
+static void dump_attributes(grib_dumper* d,grib_accessor* a, const char* prefix);
+
+GRIB_INLINE static int grib_inline_strcmp(const char* a, const char* b)
+{
+    if (*a != *b) return 1;
+    while((*a!=0 && *b!=0) &&  *(a) == *(b) ) {a++;b++;}
+    return (*a==0 && *b==0) ? 0 : 1;
+}
+
+typedef struct string_count string_count;
+struct string_count {
+    char* value;
+    int count;
+    string_count* next;
+};
+
+static int depth=0;
+
+static void init_class      (grib_dumper_class* c){}
+
+static int init(grib_dumper* d)
+{
+    grib_dumper_bufr_decode_filter *self = (grib_dumper_bufr_decode_filter*)d;
+    grib_context* c=d->handle->context;
+    self->section_offset=0;
+    self->empty=1;
+    self->isLeaf=0;
+    self->isAttribute=0;
+    self->keys=grib_context_malloc_clear(c,sizeof(grib_string_list));
+
+    return GRIB_SUCCESS;
+}
+
+static int destroy(grib_dumper* d)
+{
+    grib_dumper_bufr_decode_filter *self = (grib_dumper_bufr_decode_filter*)d;
+    grib_string_list* next=self->keys;
+    grib_string_list* cur=self->keys;
+    grib_context* c=d->handle->context;
+    while(next) {
+        cur=next;
+        next=next->next;
+        grib_context_free(c,cur->value);
+        grib_context_free(c,cur);
+    }
+    return GRIB_SUCCESS;
+}
+
+static void dump_values(grib_dumper* d, grib_accessor* a)
+{
+    grib_dumper_bufr_decode_filter *self = (grib_dumper_bufr_decode_filter*)d;
+    double value; size_t size = 0;
+    int err = 0;
+    int r;
+    long count=0;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) !=0)
+        return;
+
+    if (size<=1) {
+        err=grib_unpack_double(a,&value,&size);
+    }
+
+    self->begin=0;
+    self->empty=0;
+
+    if (size>1) {
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"print \"#%d#%s=[#%d#%s]\";\n", r, a->name, r, a->name);
+        else
+            fprintf(self->dumper.out,"print \"%s=[%s]\";\n", a->name, a->name);
+
+    } else {
+        r=compute_key_rank(h,self->keys,a->name);
+        if( !grib_is_missing_double(a,value) ) {
+
+            if (r!=0)
+                fprintf(self->dumper.out,"print \"#%d#%s=[#%d#%s]\";\n", r, a->name, r, a->name);
+            else
+                fprintf(self->dumper.out,"print \"%s=[%s]\";\n",a->name, a->name);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_values_attribute(grib_dumper* d,grib_accessor* a, const char* prefix)
+{
+    grib_dumper_bufr_decode_filter *self = (grib_dumper_bufr_decode_filter*)d;
+    double value; size_t size = 0;
+    int err = 0;
+    long count=0;
+    grib_context* c=a->context;
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) !=0)
+        return;
+
+    if (size<=1) {
+        err=grib_unpack_double(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        fprintf(self->dumper.out,"print \"%s->%s = [%s->%s]\";\n", prefix, a->name, prefix, a->name);
+    } else {
+        if( !grib_is_missing_double(a,value) ) {
+            fprintf(self->dumper.out,"print \"%s->%s = [%s->%s]\";\n", prefix, a->name, prefix, a->name);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix1 = grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+strlen(prefix)+5));
+        sprintf(prefix1,"%s->%s",prefix,a->name);
+
+        dump_attributes(d,a,prefix1);
+
+        grib_context_free(c,prefix1);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_long(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_decode_filter *self = (grib_dumper_bufr_decode_filter*)d;
+    long value=0; size_t size = 0;
+    int err = 0;
+    int r=0;
+    long count=0;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0  ) return;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0) {
+        if (self->isLeaf==0) {
+            char* prefix;
+            int dofree=0;
+            
+            r=compute_key_rank(h,self->keys,a->name);
+            if (r!=0) {
+                prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+                dofree=1;
+                sprintf(prefix,"#%d#%s",r,a->name);
+            } else prefix=(char*)a->name;
+            
+            dump_attributes(d,a,prefix);
+            if (dofree) grib_context_free(c,prefix);
+            depth-=2;
+        }
+        return;
+    }
+
+    if (size<=1) {
+        err=grib_unpack_long(a,&value,&size);
+    }
+
+    self->begin=0;
+    self->empty=0;
+
+    if (size>1) {
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"print \"#%d#%s=[#%d#%s]\";\n", r,a->name, r,a->name);
+        else
+            fprintf(self->dumper.out,"print \"%s=[%s]\";\n", a->name, a->name);
+
+    } else {
+        r=compute_key_rank(h,self->keys,a->name);
+        if( !grib_is_missing_long(a,value) ) {
+            if (r!=0)
+                fprintf(self->dumper.out,"print \"#%d#%s=[#%d#%s]\";\n", r,a->name, r,a->name);
+            else
+                fprintf(self->dumper.out,"print \"%s=[%s]\";\n",a->name, a->name);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+    (void)err; /* TODO */
+}
+
+static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* prefix)
+{
+    grib_dumper_bufr_decode_filter *self = (grib_dumper_bufr_decode_filter*)d;
+    int err = 0;
+    grib_context* c=a->context;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    self->empty=0;
+    fprintf(self->dumper.out,"print \"%s->%s = [%s->%s]\";\n", prefix, a->name, prefix, a->name);
+
+    if (self->isLeaf==0) {
+        char* prefix1 = grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+strlen(prefix)+5));
+        sprintf(prefix1,"%s->%s",prefix,a->name);
+
+        dump_attributes(d,a,prefix1);
+
+        grib_context_free(c,prefix1);
+        depth-=2;
+    }
+    (void)err; /* TODO */
+}
+
+static void dump_bits(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void dump_double(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_decode_filter *self = (grib_dumper_bufr_decode_filter*)d;
+    double value; size_t size = 1;
+    int r;
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_context* c=h->context;
+
+    grib_unpack_double(a,&value,&size);
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    self->begin=0;
+    self->empty=0;
+
+    r=compute_key_rank(h,self->keys,a->name);
+    if( !grib_is_missing_double(a,value) ) {
+        if (r!=0)
+            fprintf(self->dumper.out,"print \"#%d#%s=[#%d#%s]\";\n", r,a->name, r,a->name);
+        else
+            fprintf(self->dumper.out,"print \"%s=[%s]\";\n", a->name, a->name);
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+}
+
+static void dump_string_array(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_decode_filter *self = (grib_dumper_bufr_decode_filter*)d;
+    size_t size = 0;
+    grib_context* c=NULL;
+    int err = 0;
+    long count=0;
+    int r=0;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    c=a->context;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    grib_value_count(a,&count);
+    size=count;
+    if (size==1) {
+        dump_string(d,a,comment);
+        return;
+    }
+
+    self->begin=0;
+
+    if (self->isLeaf==0) {
+        depth+=2;
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"print \"#%d#%s=[#%d#%s]\";\n", r,a->name, r,a->name);
+        else
+            fprintf(self->dumper.out,"print \"%s=[%s]\";\n", a->name, a->name);
+    }
+
+    self->empty=0;
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_string(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_decode_filter *self = (grib_dumper_bufr_decode_filter*)d;
+    char *value=NULL;
+    char *p = NULL;
+    size_t size = 0;
+    grib_context* c=NULL;
+    int r;
+    int err = _grib_get_string_length(a,&size);
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    c=a->context;
+    if (size==0) return;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    value=(char*)grib_context_malloc_clear(c,size);
+    if (!value) {
+        grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size);
+        return;
+    }
+
+    else self->begin=0;
+
+    self->empty=0;
+
+    err = grib_unpack_string(a,value,&size);
+    p=value;
+    r=compute_key_rank(h,self->keys,a->name);
+    if (grib_is_missing_string(a,(unsigned char *)value,size))
+        return;
+
+    while(*p) { if(!isprint(*p)) *p = '.'; p++; }
+
+    if (self->isLeaf==0) {
+        depth+=2;
+        if (r!=0)
+            fprintf(self->dumper.out,"print \"#%d#%s=[#%d#%s]\";\n", r,a->name, r,a->name);
+        else
+            fprintf(self->dumper.out,"print \"%s=[%s]\";\n", a->name, a->name);
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    grib_context_free(c,value);
+    (void)err; /* TODO */
+}
+
+static void dump_bytes(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void dump_label(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void _dump_long_array(grib_handle* h, FILE* f, const char* key, const char* print_key)
+{
+    size_t size=0;
+    if (grib_get_size(h,key,&size)==GRIB_NOT_FOUND) return;
+
+    fprintf(f,"print \"%s=[%s]\";\n", print_key, print_key);
+}
+
+static void dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accessors* block)
+{
+    grib_dumper_bufr_decode_filter *self = (grib_dumper_bufr_decode_filter*)d;
+    if (!grib_inline_strcmp(a->name,"BUFR") ||
+            !grib_inline_strcmp(a->name,"GRIB") ||
+            !grib_inline_strcmp(a->name,"META")
+    ) {
+        grib_handle* h=grib_handle_of_accessor(a);
+        depth=2;
+        self->begin=1;
+        self->empty=1;
+        depth+=2;
+        _dump_long_array(h,self->dumper.out,"dataPresentIndicator","inputDataPresentIndicator");
+        _dump_long_array(h,self->dumper.out,"delayedDescriptorReplicationFactor","inputDelayedDescriptorReplicationFactor");
+        _dump_long_array(h,self->dumper.out,"shortDelayedDescriptorReplicationFactor","inputShortDelayedDescriptorReplicationFactor");
+        _dump_long_array(h,self->dumper.out,"extendedDelayedDescriptorReplicationFactor","inputExtendedDelayedDescriptorReplicationFactor");
+        grib_dump_accessors_block(d,block);
+        depth-=2;
+    } else if (!grib_inline_strcmp(a->name,"groupNumber")) {
+        if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0)
+            return;
+        self->begin=1;
+        self->empty=1;
+        depth+=2;
+        grib_dump_accessors_block(d,block);
+        depth-=2;
+    } else {
+        grib_dump_accessors_block(d,block);
+    }
+}
+
+static void dump_attributes(grib_dumper* d,grib_accessor* a, const char* prefix)
+{
+    int i=0;
+    grib_dumper_bufr_decode_filter *self = (grib_dumper_bufr_decode_filter*)d;
+    unsigned long flags;
+    while (i < MAX_ACCESSOR_ATTRIBUTES && a->attributes[i]) {
+        self->isAttribute=1;
+        if (  (d->option_flags & GRIB_DUMP_FLAG_ALL_ATTRIBUTES ) == 0
+                && (a->attributes[i]->flags & GRIB_ACCESSOR_FLAG_DUMP)== 0 )
+        {
+            i++;
+            continue;
+        }
+        self->isLeaf=a->attributes[i]->attributes[0]==NULL ? 1 : 0;
+        /* fprintf(self->dumper.out,","); */
+        /* fprintf(self->dumper.out,"\n%-*s",depth," "); */
+        /* fprintf(out,"\"%s\" : ",a->attributes[i]->name); */
+        flags=a->attributes[i]->flags;
+        a->attributes[i]->flags |= GRIB_ACCESSOR_FLAG_DUMP;
+        switch (grib_accessor_get_native_type(a->attributes[i])) {
+        case GRIB_TYPE_LONG:
+            dump_long_attribute(d,a->attributes[i],prefix);
+            break;
+        case GRIB_TYPE_DOUBLE:
+            dump_values_attribute(d,a->attributes[i],prefix);
+            break;
+        case GRIB_TYPE_STRING:
+            break;
+        }
+        a->attributes[i]->flags=flags;
+        i++;
+    }
+    self->isLeaf=0;
+    self->isAttribute=0;
+}
diff --git a/src/grib_dumper_class_bufr_decode_fortran.c b/src/grib_dumper_class_bufr_decode_fortran.c
new file mode 100644
index 0000000..f80885d
--- /dev/null
+++ b/src/grib_dumper_class_bufr_decode_fortran.c
@@ -0,0 +1,639 @@
+/*
+ * Copyright 2005-2016 ECMWF.
+ *
+ * This software is licensed under the terms of the Apache Licence Version 2.0
+ * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+ *
+ * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+ */
+
+#include "grib_api_internal.h"
+#include <ctype.h>
+/*
+   This is used by make_class.pl
+
+   START_CLASS_DEF
+   CLASS      = dumper
+   IMPLEMENTS = dump_long;dump_bits
+   IMPLEMENTS = dump_double;dump_string;dump_string_array
+   IMPLEMENTS = dump_bytes;dump_values
+   IMPLEMENTS = dump_label;dump_section
+   IMPLEMENTS = init;destroy
+   IMPLEMENTS = header;footer
+   MEMBERS = long section_offset
+   MEMBERS = long empty
+   MEMBERS = long end
+   MEMBERS = long isLeaf
+   MEMBERS = long isAttribute
+   MEMBERS = grib_string_list* keys
+   END_CLASS_DEF
+
+ */
+
+
+/* START_CLASS_IMP */
+
+/*
+
+Don't edit anything between START_CLASS_IMP and END_CLASS_IMP
+Instead edit values between START_CLASS_DEF and END_CLASS_DEF
+or edit "dumper.class" and rerun ./make_class.pl
+
+*/
+
+static void init_class      (grib_dumper_class*);
+static int init            (grib_dumper* d);
+static int destroy         (grib_dumper*);
+static void dump_long       (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_bits       (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_double     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_string     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_string_array     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_bytes      (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_values     (grib_dumper* d, grib_accessor* a);
+static void dump_label      (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_section    (grib_dumper* d, grib_accessor* a,grib_block_of_accessors* block);
+static void header         (grib_dumper*,grib_handle*);
+static void footer         (grib_dumper*,grib_handle*);
+
+typedef struct grib_dumper_bufr_decode_fortran {
+    grib_dumper          dumper;  
+/* Members defined in bufr_decode_fortran */
+	long section_offset;
+	long empty;
+	long end;
+	long isLeaf;
+	long isAttribute;
+	grib_string_list* keys;
+} grib_dumper_bufr_decode_fortran;
+
+
+static grib_dumper_class _grib_dumper_class_bufr_decode_fortran = {
+    0,                              /* super                     */
+    "bufr_decode_fortran",                              /* name                      */
+    sizeof(grib_dumper_bufr_decode_fortran),     /* size                      */
+    0,                                   /* inited */
+    &init_class,                         /* init_class */
+    &init,                               /* init                      */
+    &destroy,                            /* free mem                       */
+    &dump_long,                          /* dump long         */
+    &dump_double,                        /* dump double    */
+    &dump_string,                        /* dump string    */
+    &dump_string_array,                        /* dump string array   */
+    &dump_label,                         /* dump labels  */
+    &dump_bytes,                         /* dump bytes  */
+    &dump_bits,                          /* dump bits   */
+    &dump_section,                       /* dump section      */
+    &dump_values,                        /* dump values   */
+    &header,                             /* header   */
+    &footer,                             /* footer   */
+};
+
+grib_dumper_class* grib_dumper_class_bufr_decode_fortran = &_grib_dumper_class_bufr_decode_fortran;
+
+/* END_CLASS_IMP */
+static void dump_attributes(grib_dumper* d, grib_accessor* a, const char* prefix);
+
+GRIB_INLINE static int grib_inline_strcmp(const char* a, const char* b)
+{
+    if (*a != *b) return 1;
+    while((*a!=0 && *b!=0) &&  *(a) == *(b) ) {a++;b++;}
+    return (*a==0 && *b==0) ? 0 : 1;
+}
+
+typedef struct string_count string_count;
+struct string_count {
+    char* value;
+    int count;
+    string_count* next;
+};
+
+static int depth=0;
+
+static void init_class      (grib_dumper_class* c){}
+
+static int init(grib_dumper* d)
+{
+    grib_dumper_bufr_decode_fortran *self = (grib_dumper_bufr_decode_fortran*)d;
+    grib_context* c=d->handle->context;
+    self->section_offset=0;
+    self->empty=1;
+    d->count=1;
+    self->isLeaf=0;
+    self->isAttribute=0;
+    self->keys=grib_context_malloc_clear(c,sizeof(grib_string_list));
+
+    return GRIB_SUCCESS;
+}
+
+static int destroy(grib_dumper* d)
+{
+    grib_dumper_bufr_decode_fortran *self = (grib_dumper_bufr_decode_fortran*)d;
+    grib_string_list* next=self->keys;
+    grib_string_list* cur=self->keys;
+    grib_context* c=d->handle->context;
+    while(next) {
+        cur=next;
+        next=next->next;
+        grib_context_free(c,cur->value);
+        grib_context_free(c,cur);
+    }
+    return GRIB_SUCCESS;
+}
+
+static void dump_values(grib_dumper* d, grib_accessor* a)
+{
+    grib_dumper_bufr_decode_fortran *self = (grib_dumper_bufr_decode_fortran*)d;
+    double value; size_t size = 0;
+    int err = 0;
+    int r=0;
+    long count=0;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) !=0)
+        return;
+
+    if (size<=1) {
+        err=grib_unpack_double(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        depth-=2;
+
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"  call codes_get(ibufr, '#%d#%s', rValues)\n",r,a->name);
+        else
+            fprintf(self->dumper.out,"  call codes_get(ibufr, '%s', rValues)\n",a->name);
+    } else {
+        r=compute_key_rank(h,self->keys,a->name);
+        if( !grib_is_missing_double(a,value) ) {
+            if (r!=0)
+                fprintf(self->dumper.out,"  call codes_get(ibufr, '#%d#%s', rVal)\n", r, a->name);
+            else
+                fprintf(self->dumper.out,"  call codes_get(ibufr, '%s', rVal)\n", a->name);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_values_attribute(grib_dumper* d, grib_accessor* a, const char* prefix)
+{
+    grib_dumper_bufr_decode_fortran *self = (grib_dumper_bufr_decode_fortran*)d;
+    double value=0; size_t size = 0;
+    int err = 0;
+    long count=0;
+    grib_context* c=a->context;
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) !=0)
+        return;
+
+    if (size <= 1) {
+        err=grib_unpack_double(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        fprintf(self->dumper.out,"  call codes_get(ibufr, '%s->%s', rValues)\n",prefix,a->name);
+    } else {
+        if( !grib_is_missing_double(a,value) ) {
+            fprintf(self->dumper.out,"  call codes_get(ibufr, '%s->%s', rVal)\n", prefix, a->name);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix1;
+
+        prefix1=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+strlen(prefix)+5));
+        sprintf(prefix1,"%s->%s",prefix,a->name);
+
+        dump_attributes(d,a,prefix1);
+
+        grib_context_free(c,prefix1);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_long(grib_dumper* d,grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_decode_fortran *self = (grib_dumper_bufr_decode_fortran*)d;
+    long value; size_t size = 0;
+    int err = 0;
+    int r=0;
+    long count=0;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0  ) return;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0) {
+        if (self->isLeaf==0) {
+            char* prefix;
+            int dofree=0;
+
+            r=compute_key_rank(h,self->keys,a->name);
+            if (r!=0) {
+                prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+                dofree=1;
+                sprintf(prefix,"#%d#%s",r,a->name);
+            } else prefix=(char*)a->name;
+
+            dump_attributes(d,a,prefix);
+            if (dofree) grib_context_free(c,prefix);
+            depth-=2;
+        }
+        return;
+    }
+
+    if (size <= 1) {
+        err=grib_unpack_long(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        depth-=2;
+        fprintf(self->dumper.out,"  if(allocated(iValues)) deallocate(iValues)\n");
+
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"  call codes_get(ibufr, '#%d#%s', iValues)\n", r,a->name);
+        else
+            fprintf(self->dumper.out,"  call codes_get(ibufr, '%s', iValues)\n", a->name);
+
+    } else {
+        r=compute_key_rank(h,self->keys,a->name);
+        if( !grib_is_missing_long(a,value) ) {
+            if (r!=0)
+                fprintf(self->dumper.out,"  call codes_get(ibufr, '#%d#%s', iVal)\n", r, a->name);
+            else
+                fprintf(self->dumper.out,"  call codes_get(ibufr, '%s', iVal)\n", a->name);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+    (void)err; /* TODO */
+}
+
+static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* prefix)
+{
+    grib_dumper_bufr_decode_fortran *self = (grib_dumper_bufr_decode_fortran*)d;
+    long value; size_t size = 0;
+    int err = 0;
+    long count=0;
+    grib_context* c=a->context;
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    if (size <= 1) {
+        err=grib_unpack_long(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        depth-=2;
+        fprintf(self->dumper.out,"  if(allocated(iValues)) deallocate(iValues)\n");
+
+        fprintf(self->dumper.out,"  call codes_get(ibufr, '%s->%s', iValues)\n", prefix, a->name);
+
+    } else {
+        if( !grib_is_missing_long(a,value) ) {
+            fprintf(self->dumper.out,"  call codes_get(ibufr, '%s->%s', iVal)\n", prefix, a->name);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix1;
+
+        prefix1=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+strlen(prefix)+5));
+        sprintf(prefix1,"%s->%s",prefix,a->name);
+
+        dump_attributes(d,a,prefix1);
+
+        grib_context_free(c,prefix1);
+        depth-=2;
+    }
+    (void)err; /* TODO */
+}
+
+static void dump_bits(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void dump_double(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_decode_fortran *self = (grib_dumper_bufr_decode_fortran*)d;
+    double value; size_t size = 1;
+    int r;
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_context* c=h->context;
+
+    grib_unpack_double(a,&value,&size);
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    self->empty=0;
+
+    r=compute_key_rank(h,self->keys,a->name);
+    if( !grib_is_missing_double(a,value) ) {
+        if (r!=0)
+            fprintf(self->dumper.out,"  call codes_get(ibufr,'#%d#%s', rVal)\n",r,a->name);
+        else
+            fprintf(self->dumper.out,"  call codes_get(ibufr,'%s', rVal)\n",a->name);
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+}
+
+static void dump_string_array(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_decode_fortran *self = (grib_dumper_bufr_decode_fortran*)d;
+    size_t size = 0;
+    grib_context* c=NULL;
+    int err = 0;
+    long count=0;
+    int r;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    c=a->context;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    grib_value_count(a,&count);
+    size=count;
+    if (size==1) {
+        dump_string(d,a,comment);
+        return;
+    }
+
+    fprintf(self->dumper.out,"  if(allocated(sValues)) deallocate(sValues)\n");
+    fprintf(self->dumper.out,"  allocate(sValues(%lu))\n", (unsigned long)size);
+
+    self->empty=0;
+
+    if (self->isLeaf==0) {
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"  call codes_get_string_array(ibufr,'#%d#%s',sValues)\n",r,a->name);
+        else
+            fprintf(self->dumper.out,"  call codes_get_string_array(ibufr,'%s',sValues)\n",a->name);
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_string(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_decode_fortran *self = (grib_dumper_bufr_decode_fortran*)d;
+    char *value=NULL;
+    char *p = NULL;
+    size_t size = 0;
+    grib_context* c=NULL;
+    int r;
+    int err = _grib_get_string_length(a,&size);
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    c=a->context;
+    if (size==0) return;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    value=(char*)grib_context_malloc_clear(c,size);
+    if (!value) {
+        grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size);
+        return;
+    }
+
+    self->empty=0;
+
+    err = grib_unpack_string(a,value,&size);
+    p=value;
+    r=compute_key_rank(h,self->keys,a->name);
+    if (grib_is_missing_string(a,(unsigned char *)value,size))
+        return;
+
+    while(*p) { if(!isprint(*p)) *p = '.'; p++; }
+
+    if (self->isLeaf==0) {
+        depth+=2;
+        if (r!=0)
+            fprintf(self->dumper.out,"  call codes_get(ibufr, '#%d#%s', sVal)\n", r,a->name);
+        else
+            fprintf(self->dumper.out,"  call codes_get(ibufr, '%s', sVal)\n", a->name);
+    }
+    /*fprintf(self->dumper.out,"\'%s\')\n",value);*/
+
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    grib_context_free(c,value);
+    (void)err; /* TODO */
+}
+
+static void dump_bytes(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void dump_label(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void _dump_long_array(grib_handle* h, FILE* f, const char* key, const char* print_key)
+{
+    size_t size=0;
+    if (grib_get_size(h,key,&size)==GRIB_NOT_FOUND) return;
+
+    fprintf(f,"  call codes_get(ibufr, '%s', iValues)\n",print_key);
+}
+
+static void dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accessors* block)
+{
+    grib_dumper_bufr_decode_fortran *self = (grib_dumper_bufr_decode_fortran*)d;
+    if (!grib_inline_strcmp(a->name,"BUFR") ||
+            !grib_inline_strcmp(a->name,"GRIB") ||
+            !grib_inline_strcmp(a->name,"META")
+    ) {
+        grib_handle* h=grib_handle_of_accessor(a);
+        depth=2;
+        self->empty=1;
+        depth+=2;
+        _dump_long_array(h,self->dumper.out,"dataPresentIndicator","inputDataPresentIndicator");
+        _dump_long_array(h,self->dumper.out,"delayedDescriptorReplicationFactor","inputDelayedDescriptorReplicationFactor");
+        _dump_long_array(h,self->dumper.out,"shortDelayedDescriptorReplicationFactor","inputShortDelayedDescriptorReplicationFactor");
+        _dump_long_array(h,self->dumper.out,"extendedDelayedDescriptorReplicationFactor","inputExtendedDelayedDescriptorReplicationFactor");
+        grib_dump_accessors_block(d,block);
+        depth-=2;
+    } else if (!grib_inline_strcmp(a->name,"groupNumber")) {
+        if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0)
+            return;
+        self->empty=1;
+        depth+=2;
+        grib_dump_accessors_block(d,block);
+        depth-=2;
+    } else {
+        grib_dump_accessors_block(d,block);
+    }
+}
+
+static void dump_attributes(grib_dumper* d,grib_accessor* a, const char* prefix)
+{
+    int i=0;
+    grib_dumper_bufr_decode_fortran *self = (grib_dumper_bufr_decode_fortran*)d;
+    unsigned long flags;
+    while (i < MAX_ACCESSOR_ATTRIBUTES && a->attributes[i]) {
+        self->isAttribute=1;
+        if (  (d->option_flags & GRIB_DUMP_FLAG_ALL_ATTRIBUTES ) == 0
+                && (a->attributes[i]->flags & GRIB_ACCESSOR_FLAG_DUMP)== 0 )
+        {
+            i++;
+            continue;
+        }
+        self->isLeaf=a->attributes[i]->attributes[0]==NULL ? 1 : 0;
+        flags=a->attributes[i]->flags;
+        a->attributes[i]->flags |= GRIB_ACCESSOR_FLAG_DUMP;
+        switch (grib_accessor_get_native_type(a->attributes[i])) {
+        case GRIB_TYPE_LONG:
+            dump_long_attribute(d,a->attributes[i],prefix);
+            break;
+        case GRIB_TYPE_DOUBLE:
+            dump_values_attribute(d,a->attributes[i],prefix);
+            break;
+        case GRIB_TYPE_STRING:
+            break;
+        }
+        a->attributes[i]->flags=flags;
+        i++;
+    }
+    self->isLeaf=0;
+    self->isAttribute=0;
+}
+
+static void header(grib_dumper* d, grib_handle* h)
+{
+    grib_dumper_bufr_decode_fortran *self = (grib_dumper_bufr_decode_fortran*)d;
+
+    if (d->count<2) {
+        /* This is the first message being processed */
+        fprintf(self->dumper.out,"!  This program was automatically generated with bufr_dump -Dfortran\n");
+        fprintf(self->dumper.out,"!  Using ecCodes version: ");
+        grib_print_api_version(self->dumper.out);
+        fprintf(self->dumper.out, "\n\n");
+        fprintf(self->dumper.out,"program bufr_decode\n");
+        fprintf(self->dumper.out,"  use eccodes\n");
+        fprintf(self->dumper.out,"  implicit none\n");
+        fprintf(self->dumper.out,"  integer, parameter                                      :: max_strsize = 200\n");
+        fprintf(self->dumper.out,"  integer                                                 :: iret\n");
+        fprintf(self->dumper.out,"  integer                                                 :: ifile\n");
+        fprintf(self->dumper.out,"  integer                                                 :: ibufr\n");
+        fprintf(self->dumper.out,"  integer(kind=4)                                         :: iVal\n");
+        fprintf(self->dumper.out,"  real(kind=8)                                            :: rVal\n");
+        fprintf(self->dumper.out,"  character(len=max_strsize)                              :: sVal\n");
+        fprintf(self->dumper.out,"  integer(kind=4), dimension(:), allocatable              :: iValues\n");
+        fprintf(self->dumper.out,"  character(len=max_strsize) , dimension(:),allocatable   :: sValues\n");
+        fprintf(self->dumper.out,"  real(kind=8), dimension(:), allocatable                 :: rValues\n\n");
+        fprintf(self->dumper.out,"  character(len=max_strsize)                              :: infile_name\n");
+        fprintf(self->dumper.out,"  call getarg(1, infile_name)\n");
+        fprintf(self->dumper.out,"  call codes_open_file(ifile, infile_name, 'r')\n\n");
+    }
+    fprintf(self->dumper.out,"  ! Message number %ld\n  ! -----------------\n", d->count);
+    fprintf(self->dumper.out,"  write(*,*) 'Decoding message number %ld'\n", d->count);
+    fprintf(self->dumper.out,"  call codes_bufr_new_from_file(ifile, ibufr)\n");
+    fprintf(self->dumper.out,"  call codes_set(ibufr, 'unpack', 1)\n");
+}
+
+static void footer(grib_dumper* d, grib_handle* h)
+{
+    grib_dumper_bufr_decode_fortran *self = (grib_dumper_bufr_decode_fortran*)d;
+    /*fprintf(self->dumper.out,"  call codes_close_file(ifile)\n");*/
+    fprintf(self->dumper.out,"  call codes_release(ibufr)\n");
+}
diff --git a/src/grib_dumper_class_bufr_decode_python.c b/src/grib_dumper_class_bufr_decode_python.c
new file mode 100644
index 0000000..b9cd750
--- /dev/null
+++ b/src/grib_dumper_class_bufr_decode_python.c
@@ -0,0 +1,640 @@
+/*
+ * Copyright 2005-2016 ECMWF.
+ *
+ * This software is licensed under the terms of the Apache Licence Version 2.0
+ * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+ *
+ * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+ */
+
+#include "grib_api_internal.h"
+#include <ctype.h>
+/*
+   This is used by make_class.pl
+
+   START_CLASS_DEF
+   CLASS      = dumper
+   IMPLEMENTS = dump_long;dump_bits
+   IMPLEMENTS = dump_double;dump_string;dump_string_array
+   IMPLEMENTS = dump_bytes;dump_values
+   IMPLEMENTS = dump_label;dump_section
+   IMPLEMENTS = init;destroy
+   IMPLEMENTS = header;footer
+   MEMBERS = long section_offset
+   MEMBERS = long empty
+   MEMBERS = long end
+   MEMBERS = long isLeaf
+   MEMBERS = long isAttribute
+   MEMBERS = grib_string_list* keys
+   END_CLASS_DEF
+
+ */
+
+
+/* START_CLASS_IMP */
+
+/*
+
+Don't edit anything between START_CLASS_IMP and END_CLASS_IMP
+Instead edit values between START_CLASS_DEF and END_CLASS_DEF
+or edit "dumper.class" and rerun ./make_class.pl
+
+*/
+
+static void init_class      (grib_dumper_class*);
+static int init            (grib_dumper* d);
+static int destroy         (grib_dumper*);
+static void dump_long       (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_bits       (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_double     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_string     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_string_array     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_bytes      (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_values     (grib_dumper* d, grib_accessor* a);
+static void dump_label      (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_section    (grib_dumper* d, grib_accessor* a,grib_block_of_accessors* block);
+static void header         (grib_dumper*,grib_handle*);
+static void footer         (grib_dumper*,grib_handle*);
+
+typedef struct grib_dumper_bufr_decode_python {
+    grib_dumper          dumper;  
+/* Members defined in bufr_decode_python */
+	long section_offset;
+	long empty;
+	long end;
+	long isLeaf;
+	long isAttribute;
+	grib_string_list* keys;
+} grib_dumper_bufr_decode_python;
+
+
+static grib_dumper_class _grib_dumper_class_bufr_decode_python = {
+    0,                              /* super                     */
+    "bufr_decode_python",                              /* name                      */
+    sizeof(grib_dumper_bufr_decode_python),     /* size                      */
+    0,                                   /* inited */
+    &init_class,                         /* init_class */
+    &init,                               /* init                      */
+    &destroy,                            /* free mem                       */
+    &dump_long,                          /* dump long         */
+    &dump_double,                        /* dump double    */
+    &dump_string,                        /* dump string    */
+    &dump_string_array,                        /* dump string array   */
+    &dump_label,                         /* dump labels  */
+    &dump_bytes,                         /* dump bytes  */
+    &dump_bits,                          /* dump bits   */
+    &dump_section,                       /* dump section      */
+    &dump_values,                        /* dump values   */
+    &header,                             /* header   */
+    &footer,                             /* footer   */
+};
+
+grib_dumper_class* grib_dumper_class_bufr_decode_python = &_grib_dumper_class_bufr_decode_python;
+
+/* END_CLASS_IMP */
+static void dump_attributes(grib_dumper* d,grib_accessor* a, const char* prefix);
+
+GRIB_INLINE static int grib_inline_strcmp(const char* a, const char* b)
+{
+    if (*a != *b) return 1;
+    while((*a!=0 && *b!=0) &&  *(a) == *(b) ) {a++;b++;}
+    return (*a==0 && *b==0) ? 0 : 1;
+}
+
+typedef struct string_count string_count;
+struct string_count {
+    char* value;
+    int count;
+    string_count* next;
+};
+
+static int depth=0;
+
+static void init_class      (grib_dumper_class* c){}
+
+static int init(grib_dumper* d)
+{
+    grib_dumper_bufr_decode_python *self = (grib_dumper_bufr_decode_python*)d;
+    grib_context* c=d->handle->context;
+    self->section_offset=0;
+    self->empty=1;
+    d->count=1;
+    self->isLeaf=0;
+    self->isAttribute=0;
+    self->keys=grib_context_malloc_clear(c,sizeof(grib_string_list));
+
+    return GRIB_SUCCESS;
+}
+
+static int destroy(grib_dumper* d)
+{
+    grib_dumper_bufr_decode_python *self = (grib_dumper_bufr_decode_python*)d;
+    grib_string_list* next=self->keys;
+    grib_string_list* cur=self->keys;
+    grib_context* c=d->handle->context;
+    while(next) {
+        cur=next;
+        next=next->next;
+        grib_context_free(c,cur->value);
+        grib_context_free(c,cur);
+    }
+    return GRIB_SUCCESS;
+}
+
+static char* dval_to_string(const grib_context* c,double v)
+{
+    char* sval=grib_context_malloc_clear(c,sizeof(char)*40);
+    sprintf(sval,"%.18e",v);
+    return sval;
+}
+
+static void dump_values(grib_dumper* d,grib_accessor* a)
+{
+    grib_dumper_bufr_decode_python *self = (grib_dumper_bufr_decode_python*)d;
+    double value = 0; size_t size = 0;
+    int err = 0;
+    int r=0;
+    long count=0;
+    char* sval = NULL;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) !=0)
+        return;
+
+    if (size <= 1) {
+        err=grib_unpack_double(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        depth-=2;
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"    dVals = codes_get_array(ibufr, '#%d#%s')\n",r,a->name);
+        else
+            fprintf(self->dumper.out,"    dVals = codes_get_array(ibufr, '%s')\n",a->name);
+    } else {
+        r=compute_key_rank(h,self->keys,a->name);
+        if( !grib_is_missing_double(a,value) ) {
+
+            sval=dval_to_string(c,value);
+            if (r!=0)
+                fprintf(self->dumper.out,"    dVal = codes_get(ibufr, '#%d#%s')\n",r,a->name);
+            else
+                fprintf(self->dumper.out,"    dVal = codes_get(ibufr, '%s')\n",a->name);
+
+            grib_context_free(c,sval);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_values_attribute(grib_dumper* d,grib_accessor* a, const char* prefix)
+{
+    grib_dumper_bufr_decode_python *self = (grib_dumper_bufr_decode_python*)d;
+    double value; size_t size = 0;
+    int err = 0;
+    long count=0;
+    char* sval;
+    grib_context* c=a->context;
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) !=0)
+        return;
+
+    if (size <= 1) {
+        err=grib_unpack_double(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        depth-=2;
+        fprintf(self->dumper.out,"    dVals = codes_get_array(ibufr, '%s->%s')\n", prefix,a->name);
+    } else {
+        /* int r=compute_key_rank(h,self->keys,a->name); */
+        if( !grib_is_missing_double(a,value) ) {
+
+            sval=dval_to_string(c,value);
+            fprintf(self->dumper.out,"    dVal = codes_get(ibufr, '%s->%s')\n", prefix,a->name);
+
+            grib_context_free(c,sval);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix1;
+
+        prefix1=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+strlen(prefix)+5));
+        sprintf(prefix1,"%s->%s",prefix,a->name);
+
+        dump_attributes(d,a,prefix1);
+
+        grib_context_free(c,prefix1);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_long(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_decode_python *self = (grib_dumper_bufr_decode_python*)d;
+    long value=0; size_t size = 0;
+    int err = 0;
+    int r=0;
+    long count=0;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0  ) return;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0) {
+        if (self->isLeaf==0) {
+            char* prefix;
+            int dofree=0;
+
+            r=compute_key_rank(h,self->keys,a->name);
+            if (r!=0) {
+                prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+                dofree=1;
+                sprintf(prefix,"#%d#%s",r,a->name);
+            } else prefix=(char*)a->name;
+
+            dump_attributes(d,a,prefix);
+            if (dofree) grib_context_free(c,prefix);
+            depth-=2;
+        }
+        return;
+    }
+
+    if (size <= 1) {
+        err=grib_unpack_long(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        depth-=2;
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"    iValues = codes_get_array(ibufr, '#%d#%s')\n",r,a->name);
+        else
+            fprintf(self->dumper.out,"    iValues = codes_get_array(ibufr, '%s')\n",a->name);
+
+    } else {
+        r=compute_key_rank(h,self->keys,a->name);
+        if( !grib_is_missing_long(a,value) ) {
+            if (r!=0)
+                fprintf(self->dumper.out,"    iVal = codes_get(ibufr, '#%d#%s')\n",r,a->name);
+            else
+                fprintf(self->dumper.out,"    iVal = codes_get(ibufr, '%s')\n",a->name);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+    (void)err; /* TODO */
+}
+
+static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* prefix)
+{
+    grib_dumper_bufr_decode_python *self = (grib_dumper_bufr_decode_python*)d;
+    long value=0; size_t size = 0;
+    int err = 0;
+    long count=0;
+    grib_context* c=a->context;
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    if (size <= 1) {
+        err=grib_unpack_long(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        depth-=2;
+        fprintf(self->dumper.out,"    iVals = codes_get_array(ibufr, '%s->%s')\n",prefix,a->name);
+    } else {
+        if( !grib_is_missing_long(a,value) ) {
+            fprintf(self->dumper.out,"    iVal = codes_get(ibufr, '%s->%s')\n",prefix,a->name);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix1;
+
+        prefix1=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+strlen(prefix)+5));
+        sprintf(prefix1,"%s->%s",prefix,a->name);
+
+        dump_attributes(d,a,prefix1);
+
+        grib_context_free(c,prefix1);
+        depth-=2;
+    }
+    (void)err; /* TODO */
+}
+
+static void dump_bits(grib_dumper* d,grib_accessor* a,const char* comment)
+{
+}
+
+static void dump_double(grib_dumper* d,grib_accessor* a,const char* comment)
+{
+    grib_dumper_bufr_decode_python *self = (grib_dumper_bufr_decode_python*)d;
+    double value=0; size_t size = 1;
+    int r;
+    char* sval = NULL;
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_context* c=h->context;
+
+    grib_unpack_double(a,&value,&size);
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    self->empty=0;
+
+    r=compute_key_rank(h,self->keys,a->name);
+    if( !grib_is_missing_double(a,value) ) {
+        sval=dval_to_string(c,value);
+        if (r!=0)
+            fprintf(self->dumper.out,"    dVal = codes_get(ibufr, '#%d#%s')\n",r,a->name);
+        else
+            fprintf(self->dumper.out,"    dVal = codes_get(ibufr, '%s')\n",a->name);
+
+        grib_context_free(c,sval);
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+}
+
+static void dump_string_array(grib_dumper* d,grib_accessor* a,const char* comment)
+{
+    grib_dumper_bufr_decode_python *self = (grib_dumper_bufr_decode_python*)d;
+    size_t size = 0;
+    grib_context* c=NULL;
+    int err = 0;
+    long count=0;
+    int r=0;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    c=a->context;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    grib_value_count(a,&count);
+    size=count;
+    if (size==1) {
+        dump_string(d,a,comment);
+        return;
+    }
+
+    self->empty=0;
+
+    if (self->isLeaf==0) {
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"    sVals = codes_get_string_array(ibufr, '#%d#%s')\n",r,a->name);
+        else
+            fprintf(self->dumper.out,"    sVals = codes_get_string_array(ibufr, '%s')\n",a->name);
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment)
+{
+    grib_dumper_bufr_decode_python *self = (grib_dumper_bufr_decode_python*)d;
+    char *value=NULL;
+    char *p = NULL;
+    size_t size = 0;
+    grib_context* c=NULL;
+    int r;
+    int err = _grib_get_string_length(a,&size);
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    c=a->context;
+    if (size==0) return;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    value=(char*)grib_context_malloc_clear(c,size);
+    if (!value) {
+        grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size);
+        return;
+    }
+
+    self->empty=0;
+
+    err = grib_unpack_string(a,value,&size);
+    p=value;
+    r=compute_key_rank(h,self->keys,a->name);
+    if (grib_is_missing_string(a,(unsigned char *)value,size))
+        return;
+
+    while(*p) { if(!isprint(*p)) *p = '.'; p++; }
+
+    if (self->isLeaf==0) {
+        depth+=2;
+        if (r!=0)
+            fprintf(self->dumper.out,"    sVal = codes_get(ibufr, '#%d#%s')\n", r,a->name);
+        else
+            fprintf(self->dumper.out,"    sVal = codes_get(ibufr, '%s')\n", a->name);
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    grib_context_free(c,value);
+    (void)err; /* TODO */
+}
+
+static void dump_bytes(grib_dumper* d,grib_accessor* a,const char* comment)
+{
+}
+
+static void dump_label(grib_dumper* d,grib_accessor* a,const char* comment)
+{
+}
+
+static void _dump_long_array(grib_handle* h, FILE* f, const char* key, const char* print_key)
+{
+    size_t size=0;
+    if (grib_get_size(h,key,&size)==GRIB_NOT_FOUND) return;
+
+    fprintf(f,"    iVals = codes_get_array(ibufr, '%s')\n",print_key);
+}
+
+static void dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accessors* block)
+{
+    grib_dumper_bufr_decode_python *self = (grib_dumper_bufr_decode_python*)d;
+    if (!grib_inline_strcmp(a->name,"BUFR") ||
+            !grib_inline_strcmp(a->name,"GRIB") ||
+            !grib_inline_strcmp(a->name,"META")
+    ) {
+        grib_handle* h=grib_handle_of_accessor(a);
+        depth=2;
+        self->empty=1;
+        depth+=2;
+        _dump_long_array(h,self->dumper.out,"dataPresentIndicator","inputDataPresentIndicator");
+        _dump_long_array(h,self->dumper.out,"delayedDescriptorReplicationFactor","inputDelayedDescriptorReplicationFactor");
+        _dump_long_array(h,self->dumper.out,"shortDelayedDescriptorReplicationFactor","inputShortDelayedDescriptorReplicationFactor");
+        _dump_long_array(h,self->dumper.out,"extendedDelayedDescriptorReplicationFactor","inputExtendedDelayedDescriptorReplicationFactor");
+        grib_dump_accessors_block(d,block);
+        depth-=2;
+    } else if (!grib_inline_strcmp(a->name,"groupNumber")) {
+        if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0)
+            return;
+        self->empty=1;
+        depth+=2;
+        grib_dump_accessors_block(d,block);
+        depth-=2;
+    } else {
+        grib_dump_accessors_block(d,block);
+    }
+}
+
+static void dump_attributes(grib_dumper* d,grib_accessor* a, const char* prefix)
+{
+    int i=0;
+    grib_dumper_bufr_decode_python *self = (grib_dumper_bufr_decode_python*)d;
+    unsigned long flags;
+    while (i < MAX_ACCESSOR_ATTRIBUTES && a->attributes[i]) {
+        self->isAttribute=1;
+        if (  (d->option_flags & GRIB_DUMP_FLAG_ALL_ATTRIBUTES ) == 0
+                && (a->attributes[i]->flags & GRIB_ACCESSOR_FLAG_DUMP)== 0 )
+        {
+            i++;
+            continue;
+        }
+        self->isLeaf=a->attributes[i]->attributes[0]==NULL ? 1 : 0;
+        flags=a->attributes[i]->flags;
+        a->attributes[i]->flags |= GRIB_ACCESSOR_FLAG_DUMP;
+        switch (grib_accessor_get_native_type(a->attributes[i])) {
+        case GRIB_TYPE_LONG:
+            dump_long_attribute(d,a->attributes[i],prefix);
+            break;
+        case GRIB_TYPE_DOUBLE:
+            dump_values_attribute(d,a->attributes[i],prefix);
+            break;
+        case GRIB_TYPE_STRING:
+            break;
+        }
+        a->attributes[i]->flags=flags;
+        i++;
+    }
+    self->isLeaf=0;
+    self->isAttribute=0;
+}
+
+static void header(grib_dumper* d, grib_handle* h)
+{
+    grib_dumper_bufr_decode_python *self = (grib_dumper_bufr_decode_python*)d;
+
+    if (d->count<2) {
+        /* This is the first message being processed */
+        fprintf(self->dumper.out, "#  This program was automatically generated with bufr_dump -Dpython\n");
+        fprintf(self->dumper.out, "#  Using ecCodes version: ");
+        grib_print_api_version(self->dumper.out);
+        fprintf(self->dumper.out, "\n\n");
+        fprintf(self->dumper.out,"import traceback\n");
+        fprintf(self->dumper.out,"import sys\n");
+        fprintf(self->dumper.out,"from eccodes import *\n\n\n");
+        fprintf(self->dumper.out,"def bufr_decode(input_file):\n");
+        fprintf(self->dumper.out,"    f = open(input_file)\n");
+    }
+    fprintf(self->dumper.out,"    # Message number %ld\n    # -----------------\n", d->count);
+    fprintf(self->dumper.out,"    print 'Decoding message number %ld'\n", d->count);
+    fprintf(self->dumper.out,"    ibufr = codes_bufr_new_from_file(f)\n");
+    fprintf(self->dumper.out,"    codes_set(ibufr, 'unpack', 1)\n");
+
+}
+
+static void footer(grib_dumper* d, grib_handle* h)
+{
+    grib_dumper_bufr_decode_python *self = (grib_dumper_bufr_decode_python*)d;
+    fprintf(self->dumper.out,"    codes_release(ibufr)\n");
+}
diff --git a/src/grib_dumper_class_bufr_encode_C.c b/src/grib_dumper_class_bufr_encode_C.c
new file mode 100644
index 0000000..9a8ce8d
--- /dev/null
+++ b/src/grib_dumper_class_bufr_encode_C.c
@@ -0,0 +1,830 @@
+/*
+ * Copyright 2005-2016 ECMWF.
+ *
+ * This software is licensed under the terms of the Apache Licence Version 2.0
+ * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+ *
+ * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+ */
+
+#include "grib_api_internal.h"
+#include <ctype.h>
+/*
+   This is used by make_class.pl
+
+   START_CLASS_DEF
+   CLASS      = dumper
+   IMPLEMENTS = dump_long;dump_bits
+   IMPLEMENTS = dump_double;dump_string;dump_string_array
+   IMPLEMENTS = dump_bytes;dump_values
+   IMPLEMENTS = dump_label;dump_section
+   IMPLEMENTS = init;destroy
+   IMPLEMENTS = header;footer
+   MEMBERS = long section_offset
+   MEMBERS = long empty
+   MEMBERS = long end
+   MEMBERS = long isLeaf
+   MEMBERS = long isAttribute
+   MEMBERS = grib_string_list* keys
+   END_CLASS_DEF
+
+ */
+
+
+/* START_CLASS_IMP */
+
+/*
+
+Don't edit anything between START_CLASS_IMP and END_CLASS_IMP
+Instead edit values between START_CLASS_DEF and END_CLASS_DEF
+or edit "dumper.class" and rerun ./make_class.pl
+
+*/
+
+static void init_class      (grib_dumper_class*);
+static int init            (grib_dumper* d);
+static int destroy         (grib_dumper*);
+static void dump_long       (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_bits       (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_double     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_string     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_string_array     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_bytes      (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_values     (grib_dumper* d, grib_accessor* a);
+static void dump_label      (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_section    (grib_dumper* d, grib_accessor* a,grib_block_of_accessors* block);
+static void header         (grib_dumper*,grib_handle*);
+static void footer         (grib_dumper*,grib_handle*);
+
+typedef struct grib_dumper_bufr_encode_C {
+    grib_dumper          dumper;  
+/* Members defined in bufr_encode_C */
+	long section_offset;
+	long empty;
+	long end;
+	long isLeaf;
+	long isAttribute;
+	grib_string_list* keys;
+} grib_dumper_bufr_encode_C;
+
+
+static grib_dumper_class _grib_dumper_class_bufr_encode_C = {
+    0,                              /* super                     */
+    "bufr_encode_C",                              /* name                      */
+    sizeof(grib_dumper_bufr_encode_C),     /* size                      */
+    0,                                   /* inited */
+    &init_class,                         /* init_class */
+    &init,                               /* init                      */
+    &destroy,                            /* free mem                       */
+    &dump_long,                          /* dump long         */
+    &dump_double,                        /* dump double    */
+    &dump_string,                        /* dump string    */
+    &dump_string_array,                        /* dump string array   */
+    &dump_label,                         /* dump labels  */
+    &dump_bytes,                         /* dump bytes  */
+    &dump_bits,                          /* dump bits   */
+    &dump_section,                       /* dump section      */
+    &dump_values,                        /* dump values   */
+    &header,                             /* header   */
+    &footer,                             /* footer   */
+};
+
+grib_dumper_class* grib_dumper_class_bufr_encode_C = &_grib_dumper_class_bufr_encode_C;
+
+/* END_CLASS_IMP */
+static void dump_attributes(grib_dumper* d, grib_accessor* a, const char* prefix);
+
+GRIB_INLINE static int grib_inline_strcmp(const char* a, const char* b)
+{
+    if (*a != *b) return 1;
+    while((*a!=0 && *b!=0) &&  *(a) == *(b) ) {a++;b++;}
+    return (*a==0 && *b==0) ? 0 : 1;
+}
+
+typedef struct string_count string_count;
+struct string_count {
+    char* value;
+    int count;
+    string_count* next;
+};
+
+static int depth=0;
+
+static void init_class      (grib_dumper_class* c){}
+
+static int init(grib_dumper* d)
+{
+    grib_dumper_bufr_encode_C *self = (grib_dumper_bufr_encode_C*)d;
+    grib_context* c=d->handle->context;
+    self->section_offset=0;
+    self->empty=1;
+    d->count=1;
+    self->isLeaf=0;
+    self->isAttribute=0;
+    self->keys=grib_context_malloc_clear(c,sizeof(grib_string_list));
+
+    return GRIB_SUCCESS;
+}
+
+static int destroy(grib_dumper* d)
+{
+    grib_dumper_bufr_encode_C *self = (grib_dumper_bufr_encode_C*)d;
+    grib_string_list* next=self->keys;
+    grib_string_list* cur=self->keys;
+    grib_context* c=d->handle->context;
+    while(next) {
+        cur=next;
+        next=next->next;
+        grib_context_free(c,cur->value);
+        grib_context_free(c,cur);
+    }
+    return GRIB_SUCCESS;
+}
+
+static char* dval_to_string(grib_context* c, double v)
+{
+    char* sval=grib_context_malloc_clear(c,sizeof(char)*40);
+    sprintf(sval,"%.18e",v);
+    return sval;
+}
+
+static void dump_values(grib_dumper* d, grib_accessor* a)
+{
+    grib_dumper_bufr_encode_C *self = (grib_dumper_bufr_encode_C*)d;
+    double value; size_t size = 0;
+    double *values=NULL;
+    int err = 0;
+    int i,r,icount;
+    int cols=2;
+    long count=0;
+    char* sval;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) !=0)
+        return;
+
+    if (size>1) {
+        values=(double*)grib_context_malloc_clear(c,sizeof(double)*size);
+        err=grib_unpack_double(a,values,&size);
+    } else {
+        err=grib_unpack_double(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        fprintf(self->dumper.out,"  free(rvalues); rvalues = NULL;\n\n");
+        fprintf(self->dumper.out,"  rvalues = (double*)malloc(%lu*sizeof(double));\n", (unsigned long)size);
+        fprintf(self->dumper.out,"  if (!rvalues) { fprintf(stderr, \"Failed to allocate memory (rvalues).\\n\"); return 1; }\n");
+        fprintf(self->dumper.out,"  size = %lu;", size);
+
+        icount=0;
+        for (i=0; i<size-1; ++i) {
+            if (icount>cols || i==0) {fprintf(self->dumper.out,"\n  ");icount=0;}
+            sval=dval_to_string(c,values[i]);
+            fprintf(self->dumper.out,"rvalues[%d]=%s; ", i, sval);
+            grib_context_free(c,sval);
+            icount++;
+        }
+        if (icount>cols || i==0) {fprintf(self->dumper.out,"\n  ");icount=0;}
+        sval=dval_to_string(c,values[i]);
+        fprintf(self->dumper.out,"rvalues[%d]=%s;", i,sval);
+        grib_context_free(c,sval);
+
+        depth-=2;
+        fprintf(self->dumper.out,"\n");
+        grib_context_free(c,values);
+
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"  CODES_CHECK(codes_set_double_array(h, \"#%d#%s\",rvalues, size), 0);\n", r, a->name);
+        else
+            fprintf(self->dumper.out,"  CODES_CHECK(codes_set_double_array(h, \"%s\", rvalues, size), 0);\n",a->name);
+    } else {
+        r=compute_key_rank(h,self->keys,a->name);
+        if( !grib_is_missing_double(a,value) ) {
+
+            sval=dval_to_string(c,value);
+            if (r!=0)
+                fprintf(self->dumper.out,"  CODES_CHECK(codes_set_double(h, \"#%d#%s\", %s), 0);\n", r, a->name, sval);
+            else
+                fprintf(self->dumper.out,"  CODES_CHECK(codes_set_double(h, \"%s\", %s), 0);\n", a->name, sval);
+
+            grib_context_free(c,sval);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_values_attribute(grib_dumper* d, grib_accessor* a, const char* prefix)
+{
+    grib_dumper_bufr_encode_C *self = (grib_dumper_bufr_encode_C*)d;
+    double value; size_t size = 0;
+    double *values=NULL;
+    int err = 0;
+    int i,icount;
+    int cols=2;
+    long count=0;
+    char* sval;
+    grib_context* c=a->context;
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) !=0)
+        return;
+
+    if (size>1) {
+        values=(double*)grib_context_malloc_clear(c,sizeof(double)*size);
+        err=grib_unpack_double(a,values,&size);
+    } else {
+        err=grib_unpack_double(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        fprintf(self->dumper.out,"  free(rvalues); rvalues = NULL;\n");
+        fprintf(self->dumper.out,"  rvalues = (double*)malloc(%lu*sizeof(double));\n", (unsigned long)size);
+        fprintf(self->dumper.out,"  if (!rvalues) { fprintf(stderr, \"Failed to allocate memory (rvalues).\\n\"); return 1; }\n");
+        fprintf(self->dumper.out,"  size = %lu;", size);
+
+        icount=0;
+        for (i=0; i<size-1; ++i) {
+            if (icount>cols || i==0) {fprintf(self->dumper.out,"\n  ");icount=0;}
+            sval=dval_to_string(c,values[i]);
+            fprintf(self->dumper.out,"rvalues[%d]=%s; ", i, sval);
+            grib_context_free(c,sval);
+            icount++;
+        }
+        if (icount>cols || i==0) {fprintf(self->dumper.out,"\n  ");icount=0;}
+        sval=dval_to_string(c,values[i]);
+        fprintf(self->dumper.out,"rvalues[%d]=%s;", i,sval);
+        grib_context_free(c,sval);
+
+        depth-=2;
+        fprintf(self->dumper.out,"\n");
+        grib_context_free(c,values);
+
+        fprintf(self->dumper.out,"  CODES_CHECK(codes_set_double_array(h, \"%s->%s\", rvalues, size), 0);\n", prefix,a->name);
+    } else {
+        /* int r=compute_key_rank(h,self->keys,a->name); */
+        if( !grib_is_missing_double(a,value) ) {
+
+            sval=dval_to_string(c,value);
+            fprintf(self->dumper.out,"  CODES_CHECK(codes_set_double(h, \"%s->%s\", %s), 0);\n", prefix,a->name, sval);
+
+            grib_context_free(c,sval);
+
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix1;
+
+        prefix1=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+strlen(prefix)+5));
+        sprintf(prefix1,"%s->%s",prefix,a->name);
+
+        dump_attributes(d,a,prefix1);
+
+        grib_context_free(c,prefix1);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_long(grib_dumper* d,grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_encode_C *self = (grib_dumper_bufr_encode_C*)d;
+    long value; size_t size = 0;
+    long *values=NULL;
+    int err = 0;
+    int i,r,icount;
+    int cols=4;
+    long count=0;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0  ) return;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0) {
+        if (self->isLeaf==0) {
+            char* prefix;
+            int dofree=0;
+
+            r=compute_key_rank(h,self->keys,a->name);
+            if (r!=0) {
+                prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+                dofree=1;
+                sprintf(prefix,"#%d#%s",r,a->name);
+            } else prefix=(char*)a->name;
+
+            dump_attributes(d,a,prefix);
+            if (dofree) grib_context_free(c,prefix);
+            depth-=2;
+        }
+        return;
+    }
+
+    if (size>1) {
+        values=(long*)grib_context_malloc_clear(a->context,sizeof(long)*size);
+        err=grib_unpack_long(a,values,&size);
+    } else {
+        err=grib_unpack_long(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        fprintf(self->dumper.out,"  free(ivalues); ivalues = NULL;\n\n");
+        fprintf(self->dumper.out,"  ivalues = (long*)malloc(%lu*sizeof(long));\n", (unsigned long)size);
+        fprintf(self->dumper.out,"  if (!ivalues) { fprintf(stderr, \"Failed to allocate memory (ivalues).\\n\"); return 1; }\n");
+        fprintf(self->dumper.out,"  size = %lu;", size);
+
+        icount=0;
+        for (i=0;i<size-1;i++) {
+            if (icount>cols || i==0) {fprintf(self->dumper.out,"\n  ");icount=0;}
+            fprintf(self->dumper.out,"ivalues[%d]=%ld; ", i, values[i]);
+            icount++;
+        }
+        if (icount>cols || i==0) {fprintf(self->dumper.out,"\n  ");icount=0;}
+        fprintf(self->dumper.out,"ivalues[%d]=%ld;", i, values[i]);
+
+        depth-=2;
+        fprintf(self->dumper.out,"\n");
+        grib_context_free(a->context,values);
+
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"  CODES_CHECK(codes_set_long_array(h, \"#%d#%s\", ivalues, size), 0);\n",r,a->name);
+        else
+            fprintf(self->dumper.out,"  CODES_CHECK(codes_set_long_array(h, \"%s\", ivalues, size), 0);\n",a->name);
+
+    } else {
+        r=compute_key_rank(h,self->keys,a->name);
+        if( !grib_is_missing_long(a,value) ) {
+            if (r!=0)
+                fprintf(self->dumper.out,"  CODES_CHECK(codes_set_long(h, \"#%d#%s\", ", r,a->name);
+            else
+                fprintf(self->dumper.out,"  CODES_CHECK(codes_set_long(h, \"%s\", ", a->name);
+
+            fprintf(self->dumper.out,"%ld), 0);\n",value);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+    (void)err; /* TODO */
+}
+
+static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* prefix)
+{
+    grib_dumper_bufr_encode_C *self = (grib_dumper_bufr_encode_C*)d;
+    long value; size_t size = 0;
+    long *values=NULL;
+    int err = 0;
+    int i,icount;
+    int cols=4;
+    long count=0;
+    grib_context* c=a->context;
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    if (size>1) {
+        values=(long*)grib_context_malloc_clear(a->context,sizeof(long)*size);
+        err=grib_unpack_long(a,values,&size);
+    } else {
+        err=grib_unpack_long(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        fprintf(self->dumper.out,"  free(ivalues); ivalues = NULL;\n");
+        fprintf(self->dumper.out,"  ivalues = (long*)malloc(%lu*sizeof(long));\n", (unsigned long)size);
+        fprintf(self->dumper.out,"  if (!ivalues) { fprintf(stderr, \"Failed to allocate memory (ivalues).\\n\"); return 1; }\n");
+        fprintf(self->dumper.out,"  size = %lu;", size);
+
+        icount=0;
+        for (i=0;i<size-1;i++) {
+            if (icount>cols || i==0) {fprintf(self->dumper.out,"\n  ");icount=0;}
+            fprintf(self->dumper.out,"ivalues[%d]=%ld; ", i, values[i]);
+            icount++;
+        }
+        if (icount>cols || i==0) {fprintf(self->dumper.out,"\n  ");icount=0;}
+        fprintf(self->dumper.out,"ivalues[%d]=%ld;", i, values[i]);
+
+        depth-=2;
+        fprintf(self->dumper.out,"\n");
+        grib_context_free(a->context,values);
+
+        fprintf(self->dumper.out,"  CODES_CHECK(codes_set_long_array(h, \"%s->%s\", ivalues, size), 0);\n", prefix,a->name);
+
+    } else {
+        /* int r=compute_key_rank(h,self->keys,a->name); */
+        if( !grib_is_missing_long(a,value) ) {
+            fprintf(self->dumper.out,"  CODES_CHECK(codes_set_long(h, \"%s->%s\", ", prefix,a->name);
+            fprintf(self->dumper.out,"%ld), 0);\n",value);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix1;
+
+        prefix1=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+strlen(prefix)+5));
+        sprintf(prefix1,"%s->%s",prefix,a->name);
+
+        dump_attributes(d,a,prefix1);
+
+        grib_context_free(c,prefix1);
+        depth-=2;
+    }
+    (void)err; /* TODO */
+}
+
+static void dump_bits(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void dump_double(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_encode_C *self = (grib_dumper_bufr_encode_C*)d;
+    double value; size_t size = 1;
+    int r;
+    char* sval;
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_context* c=h->context;
+
+    grib_unpack_double(a,&value,&size);
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    self->empty=0;
+
+    r=compute_key_rank(h,self->keys,a->name);
+    if( !grib_is_missing_double(a,value) ) {
+        sval=dval_to_string(c,value);
+        if (r!=0)
+            fprintf(self->dumper.out,"  codes_set_double(h, \"#%d#%s\", %s);\n", r,a->name, sval);
+        else
+            fprintf(self->dumper.out,"  codes_set_double(h, \"%s\", %s);\n", a->name, sval);
+
+        grib_context_free(c,sval);
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+}
+
+static void dump_string_array(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_encode_C *self = (grib_dumper_bufr_encode_C*)d;
+    char **values;
+    size_t size = 0,i=0;
+    grib_context* c=NULL;
+    int err = 0;
+    long count=0;
+    int r;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    c=a->context;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    grib_value_count(a,&count);
+    size=count;
+    if (size==1) {
+        dump_string(d,a,comment);
+        return;
+    }
+
+    fprintf(self->dumper.out,"  free(svalues);\n");
+    fprintf(self->dumper.out,"  svalues = (char**)malloc(%lu * sizeof(char*));\n", (unsigned long)size);
+    fprintf(self->dumper.out,"  if (!svalues) { fprintf(stderr, \"Failed to allocate memory (svalues).\\n\"); return 1; }\n");
+    fprintf(self->dumper.out,"  size = %lu;\n", size);
+
+    self->empty=0;
+    values=(char**)grib_context_malloc_clear(c,size*sizeof(char*));
+    if (!values) {
+        grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size);
+        return;
+    }
+
+    err = grib_unpack_string_array(a,values,&size);
+    for  (i=0;i<size-1;i++) {
+        fprintf(self->dumper.out,"  svalues[%lu]=\"%s\"; \n", i, values[i]);
+    }
+    fprintf(self->dumper.out,"  svalues[%lu]=\"%s\";\n", i, values[i]);
+
+    if (self->isLeaf==0) {
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"  codes_set_string_array(h, \"#%d#%s\", (const char **)svalues, size);\n",r,a->name);
+        else
+            fprintf(self->dumper.out,"  codes_set_string_array(h, \"%s\", (const char **)svalues, size);\n",a->name);
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    grib_context_free(c,values);
+    (void)err; /* TODO */
+}
+
+static void dump_string(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_encode_C *self = (grib_dumper_bufr_encode_C*)d;
+    char *value=NULL;
+    char *p = NULL;
+    size_t size = 0;
+    grib_context* c=NULL;
+    int r;
+    int err = _grib_get_string_length(a,&size);
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    c=a->context;
+    if (size==0) return;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    value=(char*)grib_context_malloc_clear(c,size);
+    if (!value) {
+        grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size);
+        return;
+    }
+
+    self->empty=0;
+
+    err = grib_unpack_string(a,value,&size);
+    p=value;
+    r=compute_key_rank(h,self->keys,a->name);
+    if (grib_is_missing_string(a,(unsigned char *)value,size))
+        return;
+
+    while(*p) { if(!isprint(*p)) *p = '.'; p++; }
+
+    if (self->isLeaf==0) {
+        depth+=2;
+        if (r!=0)
+            fprintf(self->dumper.out,"  codes_set_string(h, \"#%d#%s\", ", r, a->name);
+        else
+            fprintf(self->dumper.out,"  codes_set_string(h, \"%s\", ", a->name);
+    }
+    fprintf(self->dumper.out,"\"%s\", &size);\n",value);
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    grib_context_free(c,value);
+    (void)err; /* TODO */
+}
+
+static void dump_bytes(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void dump_label(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void _dump_long_array(grib_handle* h, FILE* f, const char* key, const char* print_key)
+{
+    long* val;
+    size_t size=0,i;
+    int cols=9,icount=0;
+
+    if (grib_get_size(h,key,&size)==GRIB_NOT_FOUND) return;
+
+    fprintf(f,"  free(ivalues); ivalues = NULL;\n");
+    fprintf(f,"  ivalues = (long*)malloc(%lu*sizeof(long));\n", (unsigned long)size);
+    fprintf(f,"  if (!ivalues) { fprintf(stderr, \"Failed to allocate memory (ivalues).\\n\"); return 1; }\n");
+    fprintf(f,"  size = %lu;", size);
+
+    val=grib_context_malloc_clear(h->context,sizeof(long)*size);
+    grib_get_long_array(h,key,val,&size);
+    for (i=0;i<size-1;i++) {
+        if (icount>cols || i==0) {fprintf(f,"\n  ");icount=0;}
+        fprintf(f,"ivalues[%lu]=%ld; ", i, val[i]);
+        icount++;
+    }
+    if (icount>cols) {fprintf(f,"\n  ");}
+    fprintf(f,"ivalues[%lu]=%ld;\n", size-1, val[size-1]);
+
+    grib_context_free(h->context,val);
+    fprintf(f,"  CODES_CHECK(codes_set_long_array(h, \"%s\", ivalues, size), 0);\n",print_key);
+}
+
+static void dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accessors* block)
+{
+    grib_dumper_bufr_encode_C *self = (grib_dumper_bufr_encode_C*)d;
+    if (!grib_inline_strcmp(a->name,"BUFR") ||
+            !grib_inline_strcmp(a->name,"GRIB") ||
+            !grib_inline_strcmp(a->name,"META")
+    ) {
+        grib_handle* h=grib_handle_of_accessor(a);
+        depth=2;
+        self->empty=1;
+        depth+=2;
+        _dump_long_array(h,self->dumper.out,"dataPresentIndicator","inputDataPresentIndicator");
+        _dump_long_array(h,self->dumper.out,"delayedDescriptorReplicationFactor","inputDelayedDescriptorReplicationFactor");
+        _dump_long_array(h,self->dumper.out,"shortDelayedDescriptorReplicationFactor","inputShortDelayedDescriptorReplicationFactor");
+        _dump_long_array(h,self->dumper.out,"extendedDelayedDescriptorReplicationFactor","inputExtendedDelayedDescriptorReplicationFactor");
+        grib_dump_accessors_block(d,block);
+        depth-=2;
+    } else if (!grib_inline_strcmp(a->name,"groupNumber")) {
+        if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0)
+            return;
+        self->empty=1;
+        depth+=2;
+        grib_dump_accessors_block(d,block);
+        depth-=2;
+    } else {
+        grib_dump_accessors_block(d,block);
+    }
+}
+
+static void dump_attributes(grib_dumper* d,grib_accessor* a, const char* prefix)
+{
+    int i=0;
+    grib_dumper_bufr_encode_C *self = (grib_dumper_bufr_encode_C*)d;
+    unsigned long flags;
+    while (i < MAX_ACCESSOR_ATTRIBUTES && a->attributes[i]) {
+        self->isAttribute=1;
+        if (  (d->option_flags & GRIB_DUMP_FLAG_ALL_ATTRIBUTES ) == 0
+                && (a->attributes[i]->flags & GRIB_ACCESSOR_FLAG_DUMP)== 0 )
+        {
+            i++;
+            continue;
+        }
+        self->isLeaf=a->attributes[i]->attributes[0]==NULL ? 1 : 0;
+        flags=a->attributes[i]->flags;
+        a->attributes[i]->flags |= GRIB_ACCESSOR_FLAG_DUMP;
+        switch (grib_accessor_get_native_type(a->attributes[i])) {
+        case GRIB_TYPE_LONG:
+            dump_long_attribute(d,a->attributes[i],prefix);
+            break;
+        case GRIB_TYPE_DOUBLE:
+            dump_values_attribute(d,a->attributes[i],prefix);
+            break;
+        case GRIB_TYPE_STRING:
+            break;
+        }
+        a->attributes[i]->flags=flags;
+        i++;
+    }
+    self->isLeaf=0;
+    self->isAttribute=0;
+}
+
+static void header(grib_dumper* d, grib_handle* h)
+{
+    grib_dumper_bufr_encode_C *self = (grib_dumper_bufr_encode_C*)d;
+    char sampleName[200]={0};
+    long localSectionPresent,edition,bufrHeaderCentre,isSatellite;
+
+    Assert(h->product_kind == PRODUCT_BUFR);
+
+    grib_get_long(h,"localSectionPresent",&localSectionPresent);
+    grib_get_long(h,"bufrHeaderCentre",&bufrHeaderCentre);
+    grib_get_long(h,"edition",&edition);
+
+    if (localSectionPresent && bufrHeaderCentre==98 ) {
+        grib_get_long(h,"isSatellite",&isSatellite);
+        if (isSatellite)
+            sprintf(sampleName,"BUFR%ld_local_satellite",edition);
+        else
+            sprintf(sampleName,"BUFR%ld_local",edition);
+    } else {
+        sprintf(sampleName,"BUFR%ld",edition);
+    }
+
+    if (d->count<2) {
+        fprintf(self->dumper.out,"/* This program was automatically generated with bufr_dump -EC */\n");
+        fprintf(self->dumper.out,"/* Using ecCodes version: ");
+        grib_print_api_version(self->dumper.out);
+        fprintf(self->dumper.out, " */\n\n");
+        fprintf(self->dumper.out,"#include \"eccodes.h\"\n");
+        fprintf(self->dumper.out,"int main()\n");
+        fprintf(self->dumper.out,"{\n");
+        fprintf(self->dumper.out,"  size_t         size=0;\n");
+        fprintf(self->dumper.out,"  const void*    buffer = NULL;\n");
+        fprintf(self->dumper.out,"  FILE*          fout = NULL;\n");
+        fprintf(self->dumper.out,"  codes_handle*  h = NULL;\n");
+        fprintf(self->dumper.out,"  long*          ivalues = NULL;\n");
+        fprintf(self->dumper.out,"  char**         svalues = NULL;\n");
+        fprintf(self->dumper.out,"  double*        rvalues = NULL;\n");
+        fprintf(self->dumper.out,"  const char*    sampleName = \"%s\";\n\n", sampleName);
+    }
+
+    fprintf(self->dumper.out,"  h = codes_bufr_handle_new_from_samples(NULL, sampleName);\n");
+    fprintf(self->dumper.out,"  if (h == NULL) {\n");
+    fprintf(self->dumper.out,"    fprintf(stderr, \"ERROR creating BUFR from %%s\\n\", sampleName);\n");
+    fprintf(self->dumper.out,"    return 1;\n");
+    fprintf(self->dumper.out,"  }\n");
+}
+
+static void footer(grib_dumper* d, grib_handle* h)
+{
+    grib_dumper_bufr_encode_C *self = (grib_dumper_bufr_encode_C*)d;
+    fprintf(self->dumper.out,"\n  codes_set_long(h, \"pack\", 1);\n");
+    if (d->count==1)
+        fprintf(self->dumper.out,"  fout = fopen(\"outfile.bufr\", \"w\");\n");
+    else
+        fprintf(self->dumper.out,"  fout = fopen(\"outfile.bufr\", \"a\");\n");
+
+    /*fprintf(self->dumper.out,"  fout = fopen(\"outfile.bufr\", \"w\");");*/
+    fprintf(self->dumper.out,"  if (!fout) {\n");
+    fprintf(self->dumper.out,"    fprintf(stderr, \"Failed to open output file.\\n\");\n");
+    fprintf(self->dumper.out,"    return 1;\n");
+    fprintf(self->dumper.out,"  }\n");
+    fprintf(self->dumper.out,"  CODES_CHECK(codes_get_message(h,&buffer,&size),0);\n");
+    fprintf(self->dumper.out,"  if (fwrite(buffer,1,size,fout) != size) {\n");
+    fprintf(self->dumper.out,"    fprintf(stderr, \"Failed to write data.\\n\");\n");
+    fprintf(self->dumper.out,"    return 1;\n");
+    fprintf(self->dumper.out,"  }\n");
+    fprintf(self->dumper.out,"  if (fclose(fout)!=0) {\n");
+    fprintf(self->dumper.out,"    fprintf(stderr, \"Failed to close file handle.\\n\");\n");
+    fprintf(self->dumper.out,"    return 1;\n");
+    fprintf(self->dumper.out,"  }\n");
+    fprintf(self->dumper.out,"  \n");
+    fprintf(self->dumper.out,"  codes_handle_delete(h);\n");
+    fprintf(self->dumper.out,"  free(ivalues); ivalues = NULL;\n");
+    fprintf(self->dumper.out,"  free(rvalues); rvalues = NULL;\n");
+    fprintf(self->dumper.out,"  free(svalues); svalues = NULL;\n\n");
+}
diff --git a/src/grib_dumper_class_bufr_encode_filter.c b/src/grib_dumper_class_bufr_encode_filter.c
new file mode 100644
index 0000000..3136115
--- /dev/null
+++ b/src/grib_dumper_class_bufr_encode_filter.c
@@ -0,0 +1,719 @@
+/*
+ * Copyright 2005-2016 ECMWF.
+ *
+ * This software is licensed under the terms of the Apache Licence Version 2.0
+ * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+ *
+ * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+ */
+
+#include "grib_api_internal.h"
+#include <ctype.h>
+/*
+   This is used by make_class.pl
+
+   START_CLASS_DEF
+   CLASS      = dumper
+   IMPLEMENTS = dump_long;dump_bits
+   IMPLEMENTS = dump_double;dump_string;dump_string_array
+   IMPLEMENTS = dump_bytes;dump_values
+   IMPLEMENTS = dump_label;dump_section
+   IMPLEMENTS = init;destroy
+   MEMBERS = long section_offset
+   MEMBERS = long begin
+   MEMBERS = long empty
+   MEMBERS = long end
+   MEMBERS = long isLeaf
+   MEMBERS = long isAttribute
+   MEMBERS = grib_string_list* keys
+   END_CLASS_DEF
+
+ */
+
+
+/* START_CLASS_IMP */
+
+/*
+
+Don't edit anything between START_CLASS_IMP and END_CLASS_IMP
+Instead edit values between START_CLASS_DEF and END_CLASS_DEF
+or edit "dumper.class" and rerun ./make_class.pl
+
+*/
+
+static void init_class      (grib_dumper_class*);
+static int init            (grib_dumper* d);
+static int destroy         (grib_dumper*);
+static void dump_long       (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_bits       (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_double     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_string     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_string_array     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_bytes      (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_values     (grib_dumper* d, grib_accessor* a);
+static void dump_label      (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_section    (grib_dumper* d, grib_accessor* a,grib_block_of_accessors* block);
+
+typedef struct grib_dumper_bufr_encode_filter {
+    grib_dumper          dumper;  
+/* Members defined in bufr_encode_filter */
+	long section_offset;
+	long begin;
+	long empty;
+	long end;
+	long isLeaf;
+	long isAttribute;
+	grib_string_list* keys;
+} grib_dumper_bufr_encode_filter;
+
+
+static grib_dumper_class _grib_dumper_class_bufr_encode_filter = {
+    0,                              /* super                     */
+    "bufr_encode_filter",                              /* name                      */
+    sizeof(grib_dumper_bufr_encode_filter),     /* size                      */
+    0,                                   /* inited */
+    &init_class,                         /* init_class */
+    &init,                               /* init                      */
+    &destroy,                            /* free mem                       */
+    &dump_long,                          /* dump long         */
+    &dump_double,                        /* dump double    */
+    &dump_string,                        /* dump string    */
+    &dump_string_array,                        /* dump string array   */
+    &dump_label,                         /* dump labels  */
+    &dump_bytes,                         /* dump bytes  */
+    &dump_bits,                          /* dump bits   */
+    &dump_section,                       /* dump section      */
+    &dump_values,                        /* dump values   */
+    0,                             /* header   */
+    0,                             /* footer   */
+};
+
+grib_dumper_class* grib_dumper_class_bufr_encode_filter = &_grib_dumper_class_bufr_encode_filter;
+
+/* END_CLASS_IMP */
+static void dump_attributes(grib_dumper* d,grib_accessor* a, const char* prefix);
+
+GRIB_INLINE static int grib_inline_strcmp(const char* a, const char* b)
+{
+    if (*a != *b) return 1;
+    while((*a!=0 && *b!=0) &&  *(a) == *(b) ) {a++;b++;}
+    return (*a==0 && *b==0) ? 0 : 1;
+}
+
+typedef struct string_count string_count;
+struct string_count {
+    char* value;
+    int count;
+    string_count* next;
+};
+
+static int depth=0;
+
+static void init_class      (grib_dumper_class* c){}
+
+static int init(grib_dumper* d)
+{
+    grib_dumper_bufr_encode_filter *self = (grib_dumper_bufr_encode_filter*)d;
+    grib_context* c=d->handle->context;
+    self->section_offset=0;
+    self->empty=1;
+    self->isLeaf=0;
+    self->isAttribute=0;
+    self->keys=grib_context_malloc_clear(c,sizeof(grib_string_list));
+
+    return GRIB_SUCCESS;
+}
+
+static int destroy(grib_dumper* d)
+{
+    grib_dumper_bufr_encode_filter *self = (grib_dumper_bufr_encode_filter*)d;
+    grib_string_list* next=self->keys;
+    grib_string_list* cur=self->keys;
+    grib_context* c=d->handle->context;
+    while(next) {
+        cur=next;
+        next=next->next;
+        grib_context_free(c,cur->value);
+        grib_context_free(c,cur);
+    }
+    return GRIB_SUCCESS;
+}
+
+static void dump_values(grib_dumper* d, grib_accessor* a)
+{
+    grib_dumper_bufr_encode_filter *self = (grib_dumper_bufr_encode_filter*)d;
+    double value; size_t size = 0;
+    double *values=NULL;
+    int err = 0;
+    int i,r;
+    int cols=9;
+    long count=0;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) !=0)
+        return;
+
+    if (size>1) {
+        values=(double*)grib_context_malloc_clear(c,sizeof(double)*size);
+        err=grib_unpack_double(a,values,&size);
+    } else {
+        err=grib_unpack_double(a,&value,&size);
+    }
+
+    self->begin=0;
+    self->empty=0;
+
+    if (size>1) {
+        int icount=0;
+
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"set #%d#%s=",r,a->name);
+        else
+            fprintf(self->dumper.out,"set %s=",a->name);
+
+        fprintf(self->dumper.out,"{");
+
+        for (i=0; i<size-1; ++i) {
+            if (icount>cols || i==0) {fprintf(self->dumper.out,"\n      ");icount=0;}
+            fprintf(self->dumper.out,"%.18e, ", values[i]);
+            icount++;
+        }
+        if (icount>cols || i==0) {fprintf(self->dumper.out,"\n      ");icount=0;}
+        fprintf(self->dumper.out, "%.18e",values[i]);
+
+        depth-=2;
+        fprintf(self->dumper.out,"};\n");
+        grib_context_free(c,values);
+    } else {
+        r=compute_key_rank(h,self->keys,a->name);
+        if( !grib_is_missing_double(a,value) ) {
+
+            if (r!=0)
+                fprintf(self->dumper.out,"set #%d#%s=",r,a->name);
+            else
+                fprintf(self->dumper.out,"set %s=",a->name);
+
+            fprintf(self->dumper.out,"%.18e;\n",value);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_values_attribute(grib_dumper* d,grib_accessor* a, const char* prefix)
+{
+    grib_dumper_bufr_encode_filter *self = (grib_dumper_bufr_encode_filter*)d;
+    double value; size_t size = 0;
+    double *values=NULL;
+    int err = 0;
+    int i,icount;
+    int cols=2;
+    long count=0;
+    grib_context* c=a->context;
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) !=0)
+        return;
+
+    if (size>1) {
+        values=(double*)grib_context_malloc_clear(c,sizeof(double)*size);
+        err=grib_unpack_double(a,values,&size);
+    } else {
+        err=grib_unpack_double(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        fprintf(self->dumper.out,"set %s->%s = {", prefix, a->name);
+        icount=0;
+        for (i=0; i<size-1; ++i) {
+            if (icount>cols || i==0) {fprintf(self->dumper.out,"\n      ");icount=0;}
+            fprintf(self->dumper.out,"%.18e, ", values[i]);
+            icount++;
+        }
+        if (icount>cols || i==0) {fprintf(self->dumper.out,"\n      ");icount=0;}
+        fprintf(self->dumper.out,"%.18e", values[i]);
+
+        depth-=2;
+        fprintf(self->dumper.out,"};\n");
+        grib_context_free(c,values);
+    } else {
+        /* int r=compute_key_rank(h,self->keys,a->name); */
+        if( !grib_is_missing_double(a,value) ) {
+            fprintf(self->dumper.out,"set %s->%s = %.18e;\n", prefix, a->name, value);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix1;
+
+        prefix1=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+strlen(prefix)+5));
+        sprintf(prefix1,"%s->%s",prefix,a->name);
+
+        dump_attributes(d,a,prefix1);
+
+        grib_context_free(c,prefix1);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_long(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_encode_filter *self = (grib_dumper_bufr_encode_filter*)d;
+    long value; size_t size = 0;
+    long *values=NULL;
+    int err = 0;
+    int i,r,icount;
+    int cols=9;
+    long count=0;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0  ) return;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0) {
+        if (self->isLeaf==0) {
+            char* prefix;
+            int dofree=0;
+            
+            r=compute_key_rank(h,self->keys,a->name);
+            if (r!=0) {
+                prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+                dofree=1;
+                sprintf(prefix,"#%d#%s",r,a->name);
+            } else prefix=(char*)a->name;
+            
+            dump_attributes(d,a,prefix);
+            if (dofree) grib_context_free(c,prefix);
+            depth-=2;
+        }
+        return;
+    }
+
+    if (size>1) {
+        values=(long*)grib_context_malloc_clear(a->context,sizeof(long)*size);
+        err=grib_unpack_long(a,values,&size);
+    } else {
+        err=grib_unpack_long(a,&value,&size);
+    }
+
+    self->begin=0;
+    self->empty=0;
+
+    if (size>1) {
+        icount=0;
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"set #%d#%s=",r,a->name);
+        else
+            fprintf(self->dumper.out,"set %s=",a->name);
+
+        fprintf(self->dumper.out,"{");
+
+        for (i=0;i<size-1;i++) {
+            if (icount>cols || i==0) {fprintf(self->dumper.out,"\n      ");icount=0;}
+            fprintf(self->dumper.out,"%ld, ",values[i]);
+            icount++;
+        }
+        if (icount>cols || i==0) {fprintf(self->dumper.out,"\n      ");icount=0;}
+        fprintf(self->dumper.out,"%ld ",values[i]);
+
+        depth-=2;
+        fprintf(self->dumper.out,"};\n");
+        grib_context_free(a->context,values);
+    } else {
+        r=compute_key_rank(h,self->keys,a->name);
+        if( !grib_is_missing_long(a,value) ) {
+            if (r!=0)
+                fprintf(self->dumper.out,"set #%d#%s=",r,a->name);
+            else
+                fprintf(self->dumper.out,"set %s=",a->name);
+
+            fprintf(self->dumper.out,"%ld;\n",value);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+    (void)err; /* TODO */
+}
+
+static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* prefix)
+{
+    grib_dumper_bufr_encode_filter *self = (grib_dumper_bufr_encode_filter*)d;
+    long value; size_t size = 0;
+    long *values=NULL;
+    int err = 0;
+    int i,icount;
+    int cols=4;
+    long count=0;
+    grib_context* c=a->context;
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    if (size>1) {
+        values=(long*)grib_context_malloc_clear(a->context,sizeof(long)*size);
+        err=grib_unpack_long(a,values,&size);
+    } else {
+        err=grib_unpack_long(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        fprintf(self->dumper.out,"set %s->%s = {", prefix, a->name);
+        icount=0;
+        for (i=0;i<size-1;i++) {
+            if (icount>cols || i==0) {fprintf(self->dumper.out,"\n      ");icount=0;}
+            fprintf(self->dumper.out,"%ld, ",values[i]);
+            icount++;
+        }
+        if (icount>cols || i==0) {fprintf(self->dumper.out,"\n      ");icount=0;}
+        fprintf(self->dumper.out,"%ld ",values[i]);
+        depth-=2;
+        fprintf(self->dumper.out,"};\n");
+        grib_context_free(a->context,values);
+
+    } else {
+        /* int r=compute_key_rank(h,self->keys,a->name); */
+        if( !grib_is_missing_long(a,value) ) {
+            fprintf(self->dumper.out,"set %s->%s = ",prefix,a->name);
+            fprintf(self->dumper.out,"%ld ;\n",value);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix1;
+
+        prefix1=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+strlen(prefix)+5));
+        sprintf(prefix1,"%s->%s",prefix,a->name);
+
+        dump_attributes(d,a,prefix1);
+
+        grib_context_free(c,prefix1);
+        depth-=2;
+    }
+    (void)err; /* TODO */
+}
+
+static void dump_bits(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void dump_double(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_encode_filter *self = (grib_dumper_bufr_encode_filter*)d;
+    double value; size_t size = 1;
+    int r;
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_context* c=h->context;
+
+    grib_unpack_double(a,&value,&size);
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    self->begin=0;
+    self->empty=0;
+
+    r=compute_key_rank(h,self->keys,a->name);
+    if( !grib_is_missing_double(a,value) ) {
+        if (r!=0)
+            fprintf(self->dumper.out,"set #%d#%s=",r,a->name);
+        else
+            fprintf(self->dumper.out,"set %s=",a->name);
+
+        fprintf(self->dumper.out,"%.18e;\n",value);
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+}
+
+static void dump_string_array(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_encode_filter *self = (grib_dumper_bufr_encode_filter*)d;
+    char **values=NULL;
+    size_t size = 0,i=0;
+    grib_context* c=NULL;
+    int err = 0;
+    long count=0;
+    int r=0;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    c=a->context;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    grib_value_count(a,&count);
+    size=count;
+    if (size==1) {
+        dump_string(d,a,comment);
+        return;
+    }
+
+    self->begin=0;
+
+    if (self->isLeaf==0) {
+        depth+=2;
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"set #%d#%s=",r,a->name);
+        else
+            fprintf(self->dumper.out,"set %s=",a->name);
+    }
+
+    self->empty=0;
+
+    values=(char**)grib_context_malloc_clear(c,size*sizeof(char*));
+    if (!values) {
+        grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size);
+        return;
+    }
+
+    err = grib_unpack_string_array(a,values,&size);
+
+    fprintf(self->dumper.out, "{");
+    depth+=2;
+    for  (i=0;i<size-1;i++) {
+        fprintf(self->dumper.out,"    \"%s\",\n",values[i]);
+    }
+    fprintf(self->dumper.out,"    \"%s\"\n",values[i]);
+
+    depth-=2;
+
+    fprintf(self->dumper.out, "};\n");
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    grib_context_free(c,values);
+    (void)err; /* TODO */
+}
+
+static void dump_string(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_encode_filter *self = (grib_dumper_bufr_encode_filter*)d;
+    char *value=NULL;
+    char *p = NULL;
+    size_t size = 0;
+    grib_context* c=NULL;
+    int r;
+    int err = _grib_get_string_length(a,&size);
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    c=a->context;
+    if (size==0) return;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    value=(char*)grib_context_malloc_clear(c,size);
+    if (!value) {
+        grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size);
+        return;
+    }
+
+    else self->begin=0;
+
+    self->empty=0;
+
+    err = grib_unpack_string(a,value,&size);
+    p=value;
+    r=compute_key_rank(h,self->keys,a->name);
+    if (grib_is_missing_string(a,(unsigned char *)value,size))
+        return;
+
+    while(*p) { if(!isprint(*p)) *p = '.'; p++; }
+
+    if (self->isLeaf==0) {
+        depth+=2;
+        if (r!=0)
+            fprintf(self->dumper.out,"set #%d#%s=",r,a->name);
+        else
+            fprintf(self->dumper.out,"set %s=",a->name);
+    }
+    fprintf(self->dumper.out,"\"%s\";\n",value);
+
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    grib_context_free(c,value);
+    (void)err; /* TODO */
+}
+
+static void dump_bytes(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void dump_label(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void _dump_long_array(grib_handle* h, FILE* f, const char* key, const char* print_key)
+{
+    long* val;
+    size_t size=0,i;
+    int cols=9,icount=0;
+
+    if (grib_get_size(h,key,&size)==GRIB_NOT_FOUND) return;
+
+    val=grib_context_malloc_clear(h->context,sizeof(long)*size);
+    grib_get_long_array(h,key,val,&size);
+    fprintf(f,"set %s= {",print_key);
+    for (i=0;i<size-1;i++) {
+        if (icount>cols || i==0) {fprintf(f,"\n      ");icount=0;}
+        fprintf(f,"%ld, ",val[i]);
+        icount++;
+    }
+    if (icount>cols) {fprintf(f,"\n      ");}
+    fprintf(f,"%ld};\n",val[size-1]);
+
+    grib_context_free(h->context,val);
+}
+
+static void dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accessors* block)
+{
+    grib_dumper_bufr_encode_filter *self = (grib_dumper_bufr_encode_filter*)d;
+    if (!grib_inline_strcmp(a->name,"BUFR") ||
+            !grib_inline_strcmp(a->name,"GRIB") ||
+            !grib_inline_strcmp(a->name,"META")
+    ) {
+        grib_handle* h=grib_handle_of_accessor(a);
+        depth=2;
+        self->begin=1;
+        self->empty=1;
+        depth+=2;
+        _dump_long_array(h,self->dumper.out,"dataPresentIndicator","inputDataPresentIndicator");
+        _dump_long_array(h,self->dumper.out,"delayedDescriptorReplicationFactor","inputDelayedDescriptorReplicationFactor");
+        _dump_long_array(h,self->dumper.out,"shortDelayedDescriptorReplicationFactor","inputShortDelayedDescriptorReplicationFactor");
+        _dump_long_array(h,self->dumper.out,"extendedDelayedDescriptorReplicationFactor","inputExtendedDelayedDescriptorReplicationFactor");
+        grib_dump_accessors_block(d,block);
+        depth-=2;
+    } else if (!grib_inline_strcmp(a->name,"groupNumber")) {
+        if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0)
+            return;
+        self->begin=1;
+        self->empty=1;
+        depth+=2;
+        grib_dump_accessors_block(d,block);
+        depth-=2;
+    } else {
+        grib_dump_accessors_block(d,block);
+    }
+}
+
+static void dump_attributes(grib_dumper* d,grib_accessor* a, const char* prefix)
+{
+    int i=0;
+    grib_dumper_bufr_encode_filter *self = (grib_dumper_bufr_encode_filter*)d;
+    unsigned long flags;
+    while (i < MAX_ACCESSOR_ATTRIBUTES && a->attributes[i]) {
+        self->isAttribute=1;
+        if (  (d->option_flags & GRIB_DUMP_FLAG_ALL_ATTRIBUTES ) == 0
+                && (a->attributes[i]->flags & GRIB_ACCESSOR_FLAG_DUMP)== 0 )
+        {
+            i++;
+            continue;
+        }
+        self->isLeaf=a->attributes[i]->attributes[0]==NULL ? 1 : 0;
+        /* fprintf(self->dumper.out,","); */
+        /* fprintf(self->dumper.out,"\n%-*s",depth," "); */
+        /* fprintf(out,"\"%s\" : ",a->attributes[i]->name); */
+        flags=a->attributes[i]->flags;
+        a->attributes[i]->flags |= GRIB_ACCESSOR_FLAG_DUMP;
+        switch (grib_accessor_get_native_type(a->attributes[i])) {
+        case GRIB_TYPE_LONG:
+            dump_long_attribute(d,a->attributes[i],prefix);
+            break;
+        case GRIB_TYPE_DOUBLE:
+            dump_values_attribute(d,a->attributes[i],prefix);
+            break;
+        case GRIB_TYPE_STRING:
+            break;
+        }
+        a->attributes[i]->flags=flags;
+        i++;
+    }
+    self->isLeaf=0;
+    self->isAttribute=0;
+}
diff --git a/src/grib_dumper_class_bufr_encode_fortran.c b/src/grib_dumper_class_bufr_encode_fortran.c
new file mode 100644
index 0000000..e9b2659
--- /dev/null
+++ b/src/grib_dumper_class_bufr_encode_fortran.c
@@ -0,0 +1,822 @@
+/*
+ * Copyright 2005-2016 ECMWF.
+ *
+ * This software is licensed under the terms of the Apache Licence Version 2.0
+ * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+ *
+ * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+ */
+
+#include "grib_api_internal.h"
+#include <ctype.h>
+/*
+   This is used by make_class.pl
+
+   START_CLASS_DEF
+   CLASS      = dumper
+   IMPLEMENTS = dump_long;dump_bits
+   IMPLEMENTS = dump_double;dump_string;dump_string_array
+   IMPLEMENTS = dump_bytes;dump_values
+   IMPLEMENTS = dump_label;dump_section
+   IMPLEMENTS = init;destroy
+   IMPLEMENTS = header;footer
+   MEMBERS = long section_offset
+   MEMBERS = long empty
+   MEMBERS = long end
+   MEMBERS = long isLeaf
+   MEMBERS = long isAttribute
+   MEMBERS = grib_string_list* keys
+   END_CLASS_DEF
+
+ */
+
+
+/* START_CLASS_IMP */
+
+/*
+
+Don't edit anything between START_CLASS_IMP and END_CLASS_IMP
+Instead edit values between START_CLASS_DEF and END_CLASS_DEF
+or edit "dumper.class" and rerun ./make_class.pl
+
+*/
+
+static void init_class      (grib_dumper_class*);
+static int init            (grib_dumper* d);
+static int destroy         (grib_dumper*);
+static void dump_long       (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_bits       (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_double     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_string     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_string_array     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_bytes      (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_values     (grib_dumper* d, grib_accessor* a);
+static void dump_label      (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_section    (grib_dumper* d, grib_accessor* a,grib_block_of_accessors* block);
+static void header         (grib_dumper*,grib_handle*);
+static void footer         (grib_dumper*,grib_handle*);
+
+typedef struct grib_dumper_bufr_encode_fortran {
+    grib_dumper          dumper;  
+/* Members defined in bufr_encode_fortran */
+	long section_offset;
+	long empty;
+	long end;
+	long isLeaf;
+	long isAttribute;
+	grib_string_list* keys;
+} grib_dumper_bufr_encode_fortran;
+
+
+static grib_dumper_class _grib_dumper_class_bufr_encode_fortran = {
+    0,                              /* super                     */
+    "bufr_encode_fortran",                              /* name                      */
+    sizeof(grib_dumper_bufr_encode_fortran),     /* size                      */
+    0,                                   /* inited */
+    &init_class,                         /* init_class */
+    &init,                               /* init                      */
+    &destroy,                            /* free mem                       */
+    &dump_long,                          /* dump long         */
+    &dump_double,                        /* dump double    */
+    &dump_string,                        /* dump string    */
+    &dump_string_array,                        /* dump string array   */
+    &dump_label,                         /* dump labels  */
+    &dump_bytes,                         /* dump bytes  */
+    &dump_bits,                          /* dump bits   */
+    &dump_section,                       /* dump section      */
+    &dump_values,                        /* dump values   */
+    &header,                             /* header   */
+    &footer,                             /* footer   */
+};
+
+grib_dumper_class* grib_dumper_class_bufr_encode_fortran = &_grib_dumper_class_bufr_encode_fortran;
+
+/* END_CLASS_IMP */
+static void dump_attributes(grib_dumper* d, grib_accessor* a, const char* prefix);
+
+GRIB_INLINE static int grib_inline_strcmp(const char* a, const char* b)
+{
+    if (*a != *b) return 1;
+    while((*a!=0 && *b!=0) &&  *(a) == *(b) ) {a++;b++;}
+    return (*a==0 && *b==0) ? 0 : 1;
+}
+
+typedef struct string_count string_count;
+struct string_count {
+    char* value;
+    int count;
+    string_count* next;
+};
+
+static int depth=0;
+
+static void init_class      (grib_dumper_class* c){}
+
+static int init(grib_dumper* d)
+{
+    grib_dumper_bufr_encode_fortran *self = (grib_dumper_bufr_encode_fortran*)d;
+    grib_context* c=d->handle->context;
+    self->section_offset=0;
+    self->empty=1;
+    d->count=1;
+    self->isLeaf=0;
+    self->isAttribute=0;
+    self->keys=grib_context_malloc_clear(c,sizeof(grib_string_list));
+
+    return GRIB_SUCCESS;
+}
+
+static int destroy(grib_dumper* d)
+{
+    grib_dumper_bufr_encode_fortran *self = (grib_dumper_bufr_encode_fortran*)d;
+    grib_string_list* next=self->keys;
+    grib_string_list* cur=self->keys;
+    grib_context* c=d->handle->context;
+    while(next) {
+        cur=next;
+        next=next->next;
+        grib_context_free(c,cur->value);
+        grib_context_free(c,cur);
+    }
+    return GRIB_SUCCESS;
+}
+
+static char* dval_to_string(grib_context* c, double v)
+{
+    char* sval=grib_context_malloc_clear(c,sizeof(char)*40);
+    char* p;
+    sprintf(sval,"%.18e",v);
+    p=sval;
+    while (*p !=0 ) {
+        if (*p == 'e') *p='d';
+        p++;
+    }
+    return sval;
+}
+
+static void dump_values(grib_dumper* d, grib_accessor* a)
+{
+    grib_dumper_bufr_encode_fortran *self = (grib_dumper_bufr_encode_fortran*)d;
+    double value; size_t size = 0;
+    double *values=NULL;
+    int err = 0;
+    int i,r,icount;
+    int cols=2;
+    long count=0;
+    char* sval;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) !=0)
+        return;
+
+    if (size>1) {
+        values=(double*)grib_context_malloc_clear(c,sizeof(double)*size);
+        err=grib_unpack_double(a,values,&size);
+    } else {
+        err=grib_unpack_double(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+
+        fprintf(self->dumper.out,"  if(allocated(rvalues)) deallocate(rvalues)\n");
+        fprintf(self->dumper.out,"  allocate(rvalues(%lu))\n", (unsigned long)size);
+
+        fprintf(self->dumper.out,"  rvalues=(/");
+
+        icount=0;
+        for (i=0; i<size-1; ++i) {
+            if (icount>cols || i==0) {fprintf(self->dumper.out,"  &\n      ");icount=0;}
+            sval=dval_to_string(c,values[i]);
+            fprintf(self->dumper.out,"%s, ", sval);
+            grib_context_free(c,sval);
+            icount++;
+        }
+        if (icount>cols || i==0) {fprintf(self->dumper.out,"  &\n      ");icount=0;}
+        sval=dval_to_string(c,values[i]);
+        fprintf(self->dumper.out,"%s", sval);
+        grib_context_free(c,sval);
+
+        depth-=2;
+        fprintf(self->dumper.out,"/)\n");
+        grib_context_free(c,values);
+
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"  call codes_set(ibufr,'#%d#%s',rvalues)\n",r,a->name);
+        else
+            fprintf(self->dumper.out,"  call codes_set(ibufr,'%s',rvalues)\n",a->name);
+    } else {
+        r=compute_key_rank(h,self->keys,a->name);
+        if( !grib_is_missing_double(a,value) ) {
+
+            sval=dval_to_string(c,value);
+            if (r!=0)
+                fprintf(self->dumper.out,"  call codes_set(ibufr,'#%d#%s',%s)\n",r,a->name,sval);
+            else
+                fprintf(self->dumper.out,"  call codes_set(ibufr,'%s',%s)\n",a->name,sval);
+
+            grib_context_free(c,sval);
+
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_values_attribute(grib_dumper* d, grib_accessor* a, const char* prefix)
+{
+    grib_dumper_bufr_encode_fortran *self = (grib_dumper_bufr_encode_fortran*)d;
+    double value; size_t size = 0;
+    double *values=NULL;
+    int err = 0;
+    int i,icount;
+    int cols=2;
+    long count=0;
+    char* sval;
+    grib_context* c=a->context;
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) !=0)
+        return;
+
+    if (size>1) {
+        values=(double*)grib_context_malloc_clear(c,sizeof(double)*size);
+        err=grib_unpack_double(a,values,&size);
+    } else {
+        err=grib_unpack_double(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+
+        fprintf(self->dumper.out,"  if(allocated(rvalues)) deallocate(rvalues)\n");
+        fprintf(self->dumper.out,"  allocate(rvalues(%lu))\n", (unsigned long)size);
+
+        fprintf(self->dumper.out,"  rvalues=(/");
+
+        icount=0;
+        for (i=0; i<size-1; ++i) {
+            if (icount>cols || i==0) {fprintf(self->dumper.out,"  &\n      ");icount=0;}
+            sval=dval_to_string(c,values[i]);
+            fprintf(self->dumper.out,"%s, ", sval);
+            grib_context_free(c,sval);
+            icount++;
+        }
+        if (icount>cols || i==0) {fprintf(self->dumper.out,"  &\n      ");icount=0;}
+        sval=dval_to_string(c,values[i]);
+        fprintf(self->dumper.out,"%s", sval);
+        grib_context_free(c,sval);
+
+        depth-=2;
+        fprintf(self->dumper.out,"/)\n");
+        grib_context_free(c,values);
+
+        fprintf(self->dumper.out,"  call codes_set(ibufr,'%s->%s' &\n,rvalues)\n",prefix,a->name);
+    } else {
+        if( !grib_is_missing_double(a,value) ) {
+
+            sval=dval_to_string(c,value);
+            fprintf(self->dumper.out,"  call codes_set(ibufr,'%s->%s' &\n,%s)\n",prefix,a->name,sval);
+
+            grib_context_free(c,sval);
+
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix1;
+
+        prefix1=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+strlen(prefix)+5));
+        sprintf(prefix1,"%s->%s",prefix,a->name);
+
+        dump_attributes(d,a,prefix1);
+
+        grib_context_free(c,prefix1);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_long(grib_dumper* d,grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_encode_fortran *self = (grib_dumper_bufr_encode_fortran*)d;
+    long value; size_t size = 0;
+    long *values=NULL;
+    int err = 0;
+    int i,r,icount;
+    int cols=4;
+    long count=0;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0  ) return;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0) {
+        if (self->isLeaf==0) {
+            char* prefix;
+            int dofree=0;
+
+            r=compute_key_rank(h,self->keys,a->name);
+            if (r!=0) {
+                prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+                dofree=1;
+                sprintf(prefix,"#%d#%s",r,a->name);
+            } else prefix=(char*)a->name;
+
+            dump_attributes(d,a,prefix);
+            if (dofree) grib_context_free(c,prefix);
+            depth-=2;
+        }
+        return;
+    }
+
+    if (size>1) {
+        values=(long*)grib_context_malloc_clear(a->context,sizeof(long)*size);
+        err=grib_unpack_long(a,values,&size);
+    } else {
+        err=grib_unpack_long(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        fprintf(self->dumper.out,"  if(allocated(ivalues)) deallocate(ivalues)\n");
+        fprintf(self->dumper.out,"  allocate(ivalues(%lu))\n", (unsigned long)size);
+
+        fprintf(self->dumper.out,"  ivalues=(/");
+        icount=0;
+        for (i=0;i<size-1;i++) {
+            if (icount>cols || i==0) {fprintf(self->dumper.out,"  &\n      ");icount=0;}
+            fprintf(self->dumper.out,"%ld, ",values[i]);
+            icount++;
+        }
+        if (icount>cols || i==0) {fprintf(self->dumper.out,"  &\n      ");icount=0;}
+        fprintf(self->dumper.out,"%ld ",values[i]);
+
+        depth-=2;
+        fprintf(self->dumper.out,"/)\n");
+        grib_context_free(a->context,values);
+
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"  call codes_set(ibufr,'#%d#%s',ivalues)\n",r,a->name);
+        else
+            fprintf(self->dumper.out,"  call codes_set(ibufr,'%s',ivalues)\n",a->name);
+
+    } else {
+        r=compute_key_rank(h,self->keys,a->name);
+        if( !grib_is_missing_long(a,value) ) {
+            if (r!=0)
+                fprintf(self->dumper.out,"  call codes_set(ibufr,'#%d#%s',",r,a->name);
+            else
+                fprintf(self->dumper.out,"  call codes_set(ibufr,'%s',",a->name);
+
+            fprintf(self->dumper.out,"%ld)\n",value);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+    (void)err; /* TODO */
+}
+
+static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* prefix)
+{
+    grib_dumper_bufr_encode_fortran *self = (grib_dumper_bufr_encode_fortran*)d;
+    long value; size_t size = 0;
+    long *values=NULL;
+    int err = 0;
+    int i,icount;
+    int cols=4;
+    long count=0;
+    grib_context* c=a->context;
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    if (size>1) {
+        values=(long*)grib_context_malloc_clear(a->context,sizeof(long)*size);
+        err=grib_unpack_long(a,values,&size);
+    } else {
+        err=grib_unpack_long(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        fprintf(self->dumper.out,"  if(allocated(ivalues)) deallocate(ivalues)\n");
+        fprintf(self->dumper.out,"  allocate(ivalues(%lu))\n", (unsigned long)size);
+
+        fprintf(self->dumper.out,"  ivalues=(/");
+        icount=0;
+        for (i=0;i<size-1;i++) {
+            if (icount>cols || i==0) {fprintf(self->dumper.out,"  &\n      ");icount=0;}
+            fprintf(self->dumper.out,"%ld, ",values[i]);
+            icount++;
+        }
+        if (icount>cols || i==0) {fprintf(self->dumper.out,"  &\n      ");icount=0;}
+        fprintf(self->dumper.out,"%ld ",values[i]);
+
+        depth-=2;
+        fprintf(self->dumper.out,"/)\n");
+        grib_context_free(a->context,values);
+
+        fprintf(self->dumper.out,"  call codes_set(ibufr,'%s->%s' &\n,ivalues)\n",prefix,a->name);
+
+    } else {
+        /* int r=compute_key_rank(h,self->keys,a->name); */
+        if( !grib_is_missing_long(a,value) ) {
+            fprintf(self->dumper.out,"  call codes_set(ibufr,'%s->%s'&\n,",prefix,a->name);
+            fprintf(self->dumper.out,"%ld)\n",value);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix1;
+
+        prefix1=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+strlen(prefix)+5));
+        sprintf(prefix1,"%s->%s",prefix,a->name);
+
+        dump_attributes(d,a,prefix1);
+
+        grib_context_free(c,prefix1);
+        depth-=2;
+    }
+    (void)err; /* TODO */
+}
+
+static void dump_bits(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void dump_double(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_encode_fortran *self = (grib_dumper_bufr_encode_fortran*)d;
+    double value; size_t size = 1;
+    int r;
+    char* sval;
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_context* c=h->context;
+
+    grib_unpack_double(a,&value,&size);
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    self->empty=0;
+
+    r=compute_key_rank(h,self->keys,a->name);
+    if( !grib_is_missing_double(a,value) ) {
+        sval=dval_to_string(c,value);
+        if (r!=0)
+            fprintf(self->dumper.out,"  call codes_set(ibufr,'#%d#%s',%s)\n",r,a->name,sval);
+        else
+            fprintf(self->dumper.out,"  call codes_set(ibufr,'%s',%s)\n",a->name,sval);
+
+        grib_context_free(c,sval);
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+}
+
+static void dump_string_array(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_encode_fortran *self = (grib_dumper_bufr_encode_fortran*)d;
+    char **values;
+    size_t size = 0,i=0;
+    grib_context* c=NULL;
+    int err = 0;
+    long count=0;
+    int r;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    c=a->context;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    grib_value_count(a,&count);
+    size=count;
+    if (size==1) {
+        dump_string(d,a,comment);
+        return;
+    }
+
+    fprintf(self->dumper.out,"  if(allocated(svalues)) deallocate(svalues)\n");
+    fprintf(self->dumper.out,"  allocate(svalues(%lu))\n", (unsigned long)size);
+
+    fprintf(self->dumper.out,"  svalues=(/");
+
+    self->empty=0;
+
+    values=(char**)grib_context_malloc_clear(c,size*sizeof(char*));
+    if (!values) {
+        grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size);
+        return;
+    }
+
+    err = grib_unpack_string_array(a,values,&size);
+
+    for  (i=0;i<size-1;i++) {
+        fprintf(self->dumper.out,"    \"%s\", &\n",values[i]);
+    }
+    fprintf(self->dumper.out,"    \"%s\" /)\n",values[i]);
+
+    if (self->isLeaf==0) {
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"  call codes_set_string_array(ibufr,'#%d#%s',svalues)\n",r,a->name);
+        else
+            fprintf(self->dumper.out,"  call codes_set_string_array(ibufr,'%s',svalues)\n",a->name);
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    grib_context_free(c,values);
+    (void)err; /* TODO */
+}
+
+static void dump_string(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_encode_fortran *self = (grib_dumper_bufr_encode_fortran*)d;
+    char *value=NULL;
+    char *p = NULL;
+    size_t size = 0;
+    grib_context* c=NULL;
+    int r;
+    int err = _grib_get_string_length(a,&size);
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    c=a->context;
+    if (size==0) return;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    value=(char*)grib_context_malloc_clear(c,size);
+    if (!value) {
+        grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size);
+        return;
+    }
+
+    self->empty=0;
+
+    err = grib_unpack_string(a,value,&size);
+    p=value;
+    r=compute_key_rank(h,self->keys,a->name);
+    if (grib_is_missing_string(a,(unsigned char *)value,size))
+        return;
+
+    while(*p) { if(!isprint(*p)) *p = '.'; p++; }
+
+    if (self->isLeaf==0) {
+        depth+=2;
+        if (r!=0)
+            fprintf(self->dumper.out,"  call codes_set(ibufr,'#%d#%s',",r,a->name);
+        else
+            fprintf(self->dumper.out,"  call codes_set(ibufr,'%s',",a->name);
+    }
+    fprintf(self->dumper.out,"\'%s\')\n",value);
+
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    grib_context_free(c,value);
+    (void)err; /* TODO */
+}
+
+static void dump_bytes(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void dump_label(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+}
+
+static void _dump_long_array(grib_handle* h, FILE* f, const char* key, const char* print_key)
+{
+    long* val;
+    size_t size=0,i;
+    int cols=9,icount=0;
+
+    if (grib_get_size(h,key,&size)==GRIB_NOT_FOUND) return;
+
+    fprintf(f,"  if(allocated(ivalues)) deallocate(ivalues)\n");
+    fprintf(f,"  allocate(ivalues(%lu))\n", (unsigned long)size);
+
+    fprintf(f,"  ivalues=(/ ");
+
+    val=grib_context_malloc_clear(h->context,sizeof(long)*size);
+    grib_get_long_array(h,key,val,&size);
+    for (i=0;i<size-1;i++) {
+        if (icount>cols || i==0) {fprintf(f,"  &\n      ");icount=0;}
+        fprintf(f,"%ld, ",val[i]);
+        icount++;
+    }
+    if (icount>cols) {fprintf(f,"  &\n      ");}
+    fprintf(f,"%ld /)\n",val[size-1]);
+
+    grib_context_free(h->context,val);
+    fprintf(f,"  call codes_set(ibufr,'%s',ivalues)\n",print_key);
+}
+
+static void dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accessors* block)
+{
+    grib_dumper_bufr_encode_fortran *self = (grib_dumper_bufr_encode_fortran*)d;
+    if (!grib_inline_strcmp(a->name,"BUFR") ||
+            !grib_inline_strcmp(a->name,"GRIB") ||
+            !grib_inline_strcmp(a->name,"META")
+    ) {
+        grib_handle* h=grib_handle_of_accessor(a);
+        depth=2;
+        self->empty=1;
+        depth+=2;
+        _dump_long_array(h,self->dumper.out,"dataPresentIndicator","inputDataPresentIndicator");
+        _dump_long_array(h,self->dumper.out,"delayedDescriptorReplicationFactor","inputDelayedDescriptorReplicationFactor");
+        _dump_long_array(h,self->dumper.out,"shortDelayedDescriptorReplicationFactor","inputShortDelayedDescriptorReplicationFactor");
+        _dump_long_array(h,self->dumper.out,"extendedDelayedDescriptorReplicationFactor","inputExtendedDelayedDescriptorReplicationFactor");
+        grib_dump_accessors_block(d,block);
+        depth-=2;
+    } else if (!grib_inline_strcmp(a->name,"groupNumber")) {
+        if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0)
+            return;
+        self->empty=1;
+        depth+=2;
+        grib_dump_accessors_block(d,block);
+        depth-=2;
+    } else {
+        grib_dump_accessors_block(d,block);
+    }
+}
+
+static void dump_attributes(grib_dumper* d,grib_accessor* a, const char* prefix)
+{
+    int i=0;
+    grib_dumper_bufr_encode_fortran *self = (grib_dumper_bufr_encode_fortran*)d;
+    unsigned long flags;
+    while (i < MAX_ACCESSOR_ATTRIBUTES && a->attributes[i]) {
+        self->isAttribute=1;
+        if (  (d->option_flags & GRIB_DUMP_FLAG_ALL_ATTRIBUTES ) == 0
+                && (a->attributes[i]->flags & GRIB_ACCESSOR_FLAG_DUMP)== 0 )
+        {
+            i++;
+            continue;
+        }
+        self->isLeaf=a->attributes[i]->attributes[0]==NULL ? 1 : 0;
+        flags=a->attributes[i]->flags;
+        a->attributes[i]->flags |= GRIB_ACCESSOR_FLAG_DUMP;
+        switch (grib_accessor_get_native_type(a->attributes[i])) {
+        case GRIB_TYPE_LONG:
+            dump_long_attribute(d,a->attributes[i],prefix);
+            break;
+        case GRIB_TYPE_DOUBLE:
+            dump_values_attribute(d,a->attributes[i],prefix);
+            break;
+        case GRIB_TYPE_STRING:
+            break;
+        }
+        a->attributes[i]->flags=flags;
+        i++;
+    }
+    self->isLeaf=0;
+    self->isAttribute=0;
+}
+
+static void header(grib_dumper* d, grib_handle* h)
+{
+    grib_dumper_bufr_encode_fortran *self = (grib_dumper_bufr_encode_fortran*)d;
+    char sampleName[200]={0};
+    long localSectionPresent,edition,bufrHeaderCentre,isSatellite;
+
+    grib_get_long(h,"localSectionPresent",&localSectionPresent);
+    grib_get_long(h,"bufrHeaderCentre",&bufrHeaderCentre);
+    grib_get_long(h,"edition",&edition);
+
+    if (localSectionPresent && bufrHeaderCentre==98 ) {
+        grib_get_long(h,"isSatellite",&isSatellite);
+        if (isSatellite)
+            sprintf(sampleName,"BUFR%ld_local_satellite",edition);
+        else
+            sprintf(sampleName,"BUFR%ld_local",edition);
+    } else {
+        sprintf(sampleName,"BUFR%ld",edition);
+    }
+
+    if (d->count<2) {
+        fprintf(self->dumper.out,"!  This program was automatically generated with bufr_dump -Efortran\n");
+        fprintf(self->dumper.out,"!  Using ecCodes version: ");
+        grib_print_api_version(self->dumper.out);
+        fprintf(self->dumper.out, "\n\n");
+        fprintf(self->dumper.out,"program bufr_encode\n");
+        fprintf(self->dumper.out,"  use eccodes\n");
+        fprintf(self->dumper.out,"  implicit none\n");
+        fprintf(self->dumper.out,"  integer                                       :: iret\n");
+        fprintf(self->dumper.out,"  integer                                       :: outfile\n");
+        fprintf(self->dumper.out,"  integer                                       :: ibufr\n");
+        fprintf(self->dumper.out,"  integer(kind=4), dimension(:), allocatable    :: ivalues\n");
+        fprintf(self->dumper.out,"  integer, parameter  :: max_strsize = 100\n");
+        fprintf(self->dumper.out,"  character(len=max_strsize) , dimension(:),allocatable   :: svalues\n");
+        fprintf(self->dumper.out,"  real(kind=8), dimension(:), allocatable       :: rvalues\n");
+    }
+    fprintf(self->dumper.out,"  call codes_bufr_new_from_samples(ibufr,'%s',iret)\n",sampleName);
+    fprintf(self->dumper.out,"  if (iret/=CODES_SUCCESS) then\n");
+    fprintf(self->dumper.out,"    print *,'ERROR creating BUFR from %s'\n",sampleName);
+    fprintf(self->dumper.out,"    stop 1\n");
+    fprintf(self->dumper.out,"  endif\n");
+}
+
+static void footer(grib_dumper* d, grib_handle* h)
+{
+    grib_dumper_bufr_encode_fortran *self = (grib_dumper_bufr_encode_fortran*)d;
+    fprintf(self->dumper.out,"  call codes_set(ibufr,'pack',1)\n");
+    if (d->count==1)
+        fprintf(self->dumper.out,"  call codes_open_file(outfile,'outfile.bufr','w')\n");
+    else
+        fprintf(self->dumper.out,"  call codes_open_file(outfile,'outfile.bufr','a')\n");
+
+    fprintf(self->dumper.out,"  call codes_write(ibufr,outfile)\n");
+    fprintf(self->dumper.out,"  call codes_close_file(outfile)\n");
+    fprintf(self->dumper.out,"  call codes_release(ibufr)\n");
+    fprintf(self->dumper.out,"  if(allocated(ivalues)) deallocate(ivalues)\n");
+    fprintf(self->dumper.out,"  if(allocated(rvalues)) deallocate(rvalues)\n");
+    fprintf(self->dumper.out,"  if(allocated(svalues)) deallocate(svalues)\n");
+}
diff --git a/src/grib_dumper_class_bufr_encode_python.c b/src/grib_dumper_class_bufr_encode_python.c
new file mode 100644
index 0000000..26abceb
--- /dev/null
+++ b/src/grib_dumper_class_bufr_encode_python.c
@@ -0,0 +1,789 @@
+/*
+ * Copyright 2005-2016 ECMWF.
+ *
+ * This software is licensed under the terms of the Apache Licence Version 2.0
+ * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+ *
+ * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+ * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+ */
+
+#include "grib_api_internal.h"
+#include <ctype.h>
+/*
+   This is used by make_class.pl
+
+   START_CLASS_DEF
+   CLASS      = dumper
+   IMPLEMENTS = dump_long;dump_bits
+   IMPLEMENTS = dump_double;dump_string;dump_string_array
+   IMPLEMENTS = dump_bytes;dump_values
+   IMPLEMENTS = dump_label;dump_section
+   IMPLEMENTS = init;destroy
+   IMPLEMENTS = header;footer
+   MEMBERS = long section_offset
+   MEMBERS = long empty
+   MEMBERS = long end
+   MEMBERS = long isLeaf
+   MEMBERS = long isAttribute
+   MEMBERS = grib_string_list* keys
+   END_CLASS_DEF
+
+ */
+
+
+/* START_CLASS_IMP */
+
+/*
+
+Don't edit anything between START_CLASS_IMP and END_CLASS_IMP
+Instead edit values between START_CLASS_DEF and END_CLASS_DEF
+or edit "dumper.class" and rerun ./make_class.pl
+
+*/
+
+static void init_class      (grib_dumper_class*);
+static int init            (grib_dumper* d);
+static int destroy         (grib_dumper*);
+static void dump_long       (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_bits       (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_double     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_string     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_string_array     (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_bytes      (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_values     (grib_dumper* d, grib_accessor* a);
+static void dump_label      (grib_dumper* d, grib_accessor* a,const char* comment);
+static void dump_section    (grib_dumper* d, grib_accessor* a,grib_block_of_accessors* block);
+static void header         (grib_dumper*,grib_handle*);
+static void footer         (grib_dumper*,grib_handle*);
+
+typedef struct grib_dumper_bufr_encode_python {
+    grib_dumper          dumper;  
+/* Members defined in bufr_encode_python */
+	long section_offset;
+	long empty;
+	long end;
+	long isLeaf;
+	long isAttribute;
+	grib_string_list* keys;
+} grib_dumper_bufr_encode_python;
+
+
+static grib_dumper_class _grib_dumper_class_bufr_encode_python = {
+    0,                              /* super                     */
+    "bufr_encode_python",                              /* name                      */
+    sizeof(grib_dumper_bufr_encode_python),     /* size                      */
+    0,                                   /* inited */
+    &init_class,                         /* init_class */
+    &init,                               /* init                      */
+    &destroy,                            /* free mem                       */
+    &dump_long,                          /* dump long         */
+    &dump_double,                        /* dump double    */
+    &dump_string,                        /* dump string    */
+    &dump_string_array,                        /* dump string array   */
+    &dump_label,                         /* dump labels  */
+    &dump_bytes,                         /* dump bytes  */
+    &dump_bits,                          /* dump bits   */
+    &dump_section,                       /* dump section      */
+    &dump_values,                        /* dump values   */
+    &header,                             /* header   */
+    &footer,                             /* footer   */
+};
+
+grib_dumper_class* grib_dumper_class_bufr_encode_python = &_grib_dumper_class_bufr_encode_python;
+
+/* END_CLASS_IMP */
+static void dump_attributes(grib_dumper* d,grib_accessor* a, const char* prefix);
+
+GRIB_INLINE static int grib_inline_strcmp(const char* a, const char* b)
+{
+    if (*a != *b) return 1;
+    while((*a!=0 && *b!=0) &&  *(a) == *(b) ) {a++;b++;}
+    return (*a==0 && *b==0) ? 0 : 1;
+}
+
+typedef struct string_count string_count;
+struct string_count {
+    char* value;
+    int count;
+    string_count* next;
+};
+
+static int depth=0;
+
+static void init_class      (grib_dumper_class* c){}
+
+static int init(grib_dumper* d)
+{
+    grib_dumper_bufr_encode_python *self = (grib_dumper_bufr_encode_python*)d;
+    grib_context* c=d->handle->context;
+    self->section_offset=0;
+    self->empty=1;
+    d->count=1;
+    self->isLeaf=0;
+    self->isAttribute=0;
+    self->keys=grib_context_malloc_clear(c,sizeof(grib_string_list));
+
+    return GRIB_SUCCESS;
+}
+
+static int destroy(grib_dumper* d)
+{
+    grib_dumper_bufr_encode_python *self = (grib_dumper_bufr_encode_python*)d;
+    grib_string_list* next=self->keys;
+    grib_string_list* cur=self->keys;
+    grib_context* c=d->handle->context;
+    while(next) {
+        cur=next;
+        next=next->next;
+        grib_context_free(c,cur->value);
+        grib_context_free(c,cur);
+    }
+    return GRIB_SUCCESS;
+}
+
+static char* dval_to_string(const grib_context* c,double v)
+{
+    char* sval=grib_context_malloc_clear(c,sizeof(char)*40);
+    sprintf(sval,"%.18e",v);
+    return sval;
+}
+
+static void dump_values(grib_dumper* d,grib_accessor* a)
+{
+    grib_dumper_bufr_encode_python *self = (grib_dumper_bufr_encode_python*)d;
+    double value; size_t size = 0;
+    double *values=NULL;
+    int err = 0;
+    int i,r,icount;
+    int cols=2;
+    long count=0;
+    char* sval;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) !=0)
+        return;
+
+    if (size>1) {
+        values=(double*)grib_context_malloc_clear(c,sizeof(double)*size);
+        err=grib_unpack_double(a,values,&size);
+    } else {
+        err=grib_unpack_double(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        fprintf(self->dumper.out,"    rvalues = (");
+
+        icount=0;
+        for (i=0; i<size-1; ++i) {
+            if (icount>cols || i==0) {fprintf(self->dumper.out,"\n        ");icount=0;}
+            sval=dval_to_string(c,values[i]);
+            fprintf(self->dumper.out,"%s, ", sval);
+            grib_context_free(c,sval);
+            icount++;
+        }
+        if (icount>cols || i==0) {fprintf(self->dumper.out,"\n        ");icount=0;}
+        sval=dval_to_string(c,values[i]);
+        fprintf(self->dumper.out,"%s", sval);
+        grib_context_free(c,sval);
+
+        depth-=2;
+        /* Note: In python to make a tuple with one element, you need the trailing comma */
+        fprintf(self->dumper.out,",)\n");
+        grib_context_free(c,values);
+
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"    codes_set_array(ibufr, '#%d#%s', rvalues)\n",r,a->name);
+        else
+            fprintf(self->dumper.out,"    codes_set_array(ibufr, '%s', rvalues)\n",a->name);
+    } else {
+        r=compute_key_rank(h,self->keys,a->name);
+        if( !grib_is_missing_double(a,value) ) {
+
+            sval=dval_to_string(c,value);
+            if (r!=0)
+                fprintf(self->dumper.out,"    codes_set(ibufr, '#%d#%s', %s)\n",r,a->name,sval);
+            else
+                fprintf(self->dumper.out,"    codes_set(ibufr, '%s', %s)\n",a->name,sval);
+
+            grib_context_free(c,sval);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_values_attribute(grib_dumper* d,grib_accessor* a, const char* prefix)
+{
+    grib_dumper_bufr_encode_python *self = (grib_dumper_bufr_encode_python*)d;
+    double value; size_t size = 0;
+    double *values=NULL;
+    int err = 0;
+    int i,icount;
+    int cols=2;
+    long count=0;
+    char* sval;
+    grib_context* c=a->context;
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) !=0)
+        return;
+
+    if (size>1) {
+        values=(double*)grib_context_malloc_clear(c,sizeof(double)*size);
+        err=grib_unpack_double(a,values,&size);
+    } else {
+        err=grib_unpack_double(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+
+        fprintf(self->dumper.out,"    rvalues = (");
+
+        icount=0;
+        for (i=0; i<size-1; ++i) {
+            if (icount>cols || i==0) {fprintf(self->dumper.out,"\n      ");icount=0;}
+            sval=dval_to_string(c,values[i]);
+            fprintf(self->dumper.out,"%s, ", sval);
+            grib_context_free(c,sval);
+            icount++;
+        }
+        if (icount>cols || i==0) {fprintf(self->dumper.out,"\n      ");icount=0;}
+        sval=dval_to_string(c,values[i]);
+        fprintf(self->dumper.out,"%s", sval);
+        grib_context_free(c,sval);
+
+        depth-=2;
+        /* Note: In python to make a tuple with one element, you need the trailing comma */
+        fprintf(self->dumper.out,",)\n");
+        grib_context_free(c,values);
+
+        fprintf(self->dumper.out,"    codes_set_array(ibufr, '%s->%s' \n, rvalues)\n",prefix,a->name);
+    } else {
+        /* int r=compute_key_rank(h,self->keys,a->name); */
+        if( !grib_is_missing_double(a,value) ) {
+
+            sval=dval_to_string(c,value);
+            fprintf(self->dumper.out,"    codes_set(ibufr, '%s->%s' \n,%s)\n",prefix,a->name,sval);
+
+            grib_context_free(c,sval);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix1;
+
+        prefix1=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+strlen(prefix)+5));
+        sprintf(prefix1,"%s->%s",prefix,a->name);
+
+        dump_attributes(d,a,prefix1);
+
+        grib_context_free(c,prefix1);
+        depth-=2;
+    }
+
+    (void)err; /* TODO */
+}
+
+static void dump_long(grib_dumper* d, grib_accessor* a, const char* comment)
+{
+    grib_dumper_bufr_encode_python *self = (grib_dumper_bufr_encode_python*)d;
+    long value; size_t size = 0;
+    long *values=NULL;
+    int err = 0;
+    int i,r,icount;
+    int cols=4;
+    long count=0;
+    grib_context* c=a->context;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0  ) return;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0) {
+        if (self->isLeaf==0) {
+            char* prefix;
+            int dofree=0;
+
+            r=compute_key_rank(h,self->keys,a->name);
+            if (r!=0) {
+                prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+                dofree=1;
+                sprintf(prefix,"#%d#%s",r,a->name);
+            } else prefix=(char*)a->name;
+
+            dump_attributes(d,a,prefix);
+            if (dofree) grib_context_free(c,prefix);
+            depth-=2;
+        }
+        return;
+    }
+
+    if (size>1) {
+        values=(long*)grib_context_malloc_clear(a->context,sizeof(long)*size);
+        err=grib_unpack_long(a,values,&size);
+    } else {
+        err=grib_unpack_long(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        fprintf(self->dumper.out,"    ivalues = (");
+        icount=0;
+        for (i=0;i<size-1;i++) {
+            if (icount>cols || i==0) {fprintf(self->dumper.out,"\n        ");icount=0;}
+            fprintf(self->dumper.out,"%ld, ",values[i]);
+            icount++;
+        }
+        if (icount>cols || i==0) {fprintf(self->dumper.out,"\n        ");icount=0;}
+        fprintf(self->dumper.out,"%ld",values[i]);
+
+        depth-=2;
+        /* Note: In python to make a tuple with one element, you need the trailing comma */
+        fprintf(self->dumper.out,",)\n");
+        grib_context_free(a->context,values);
+
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"    codes_set_array(ibufr, '#%d#%s', ivalues)\n",r,a->name);
+        else
+            fprintf(self->dumper.out,"    codes_set_array(ibufr, '%s', ivalues)\n",a->name);
+
+    } else {
+        r=compute_key_rank(h,self->keys,a->name);
+        if( !grib_is_missing_long(a,value) ) {
+            if (r!=0)
+                fprintf(self->dumper.out,"    codes_set(ibufr, '#%d#%s', ",r,a->name);
+            else
+                fprintf(self->dumper.out,"    codes_set(ibufr, '%s', ",a->name);
+
+            fprintf(self->dumper.out,"%ld)\n",value);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+    (void)err; /* TODO */
+}
+
+static void dump_long_attribute(grib_dumper* d, grib_accessor* a, const char* prefix)
+{
+    grib_dumper_bufr_encode_python *self = (grib_dumper_bufr_encode_python*)d;
+    long value; size_t size = 0;
+    long *values=NULL;
+    int err = 0;
+    int i,icount;
+    int cols=4;
+    long count=0;
+    grib_context* c=a->context;
+
+    grib_value_count(a,&count);
+    size=count;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    if (size>1) {
+        values=(long*)grib_context_malloc_clear(a->context,sizeof(long)*size);
+        err=grib_unpack_long(a,values,&size);
+    } else {
+        err=grib_unpack_long(a,&value,&size);
+    }
+
+    self->empty=0;
+
+    if (size>1) {
+        fprintf(self->dumper.out,"    ivalues = (");
+        icount=0;
+        for (i=0;i<size-1;i++) {
+            if (icount>cols || i==0) {fprintf(self->dumper.out,"  \n      ");icount=0;}
+            fprintf(self->dumper.out,"%ld, ",values[i]);
+            icount++;
+        }
+        if (icount>cols || i==0) {fprintf(self->dumper.out,"  \n      ");icount=0;}
+        fprintf(self->dumper.out,"%ld ",values[i]);
+
+        depth-=2;
+        /* Note: In python to make a tuple with one element, you need the trailing comma */
+        fprintf(self->dumper.out,",)\n");
+        grib_context_free(a->context,values);
+
+        fprintf(self->dumper.out,"    codes_set_array(ibufr, '%s->%s' \n,ivalues)\n",prefix,a->name);
+
+    } else {
+        /* int r=compute_key_rank(h,self->keys,a->name); */
+        if( !grib_is_missing_long(a,value) ) {
+            fprintf(self->dumper.out,"    codes_set(ibufr, '%s->%s'\n,",prefix,a->name);
+            fprintf(self->dumper.out,"%ld)\n",value);
+        }
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix1;
+
+        prefix1=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+strlen(prefix)+5));
+        sprintf(prefix1,"%s->%s",prefix,a->name);
+
+        dump_attributes(d,a,prefix1);
+
+        grib_context_free(c,prefix1);
+        depth-=2;
+    }
+    (void)err; /* TODO */
+}
+
+static void dump_bits(grib_dumper* d,grib_accessor* a,const char* comment)
+{
+}
+
+static void dump_double(grib_dumper* d,grib_accessor* a,const char* comment)
+{
+    grib_dumper_bufr_encode_python *self = (grib_dumper_bufr_encode_python*)d;
+    double value; size_t size = 1;
+    int r;
+    char* sval;
+    grib_handle* h=grib_handle_of_accessor(a);
+    grib_context* c=h->context;
+
+    grib_unpack_double(a,&value,&size);
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    self->empty=0;
+
+    r=compute_key_rank(h,self->keys,a->name);
+    if( !grib_is_missing_double(a,value) ) {
+        sval=dval_to_string(c,value);
+        if (r!=0)
+            fprintf(self->dumper.out,"    codes_set(ibufr, '#%d#%s', %s)\n",r,a->name,sval);
+        else
+            fprintf(self->dumper.out,"    codes_set(ibufr, '%s', %s)\n",a->name,sval);
+
+        grib_context_free(c,sval);
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+}
+
+static void dump_string_array(grib_dumper* d,grib_accessor* a,const char* comment)
+{
+    grib_dumper_bufr_encode_python *self = (grib_dumper_bufr_encode_python*)d;
+    char **values;
+    size_t size = 0,i=0;
+    grib_context* c=NULL;
+    int err = 0;
+    long count=0;
+    int r=0;
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    c=a->context;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    grib_value_count(a,&count);
+    size=count;
+    if (size==1) {
+        dump_string(d,a,comment);
+        return;
+    }
+
+    fprintf(self->dumper.out,"    svalues = (");
+
+    self->empty=0;
+
+    values=(char**)grib_context_malloc_clear(c,size*sizeof(char*));
+    if (!values) {
+        grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size);
+        return;
+    }
+
+    err = grib_unpack_string_array(a,values,&size);
+
+    for  (i=0;i<size-1;i++) {
+        fprintf(self->dumper.out,"    \"%s\", \n",values[i]);
+    }
+    fprintf(self->dumper.out,"    \"%s\", )\n",values[i]);
+
+    if (self->isLeaf==0) {
+        if ((r=compute_key_rank(h,self->keys,a->name))!=0)
+            fprintf(self->dumper.out,"    codes_set_string_array(ibufr, '#%d#%s', svalues)\n",r,a->name);
+        else
+            fprintf(self->dumper.out,"    codes_set_string_array(ibufr, '%s', svalues)\n",a->name);
+    }
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    grib_context_free(c,values);
+    (void)err; /* TODO */
+}
+
+static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment)
+{
+    grib_dumper_bufr_encode_python *self = (grib_dumper_bufr_encode_python*)d;
+    char *value=NULL;
+    char *p = NULL;
+    size_t size = 0;
+    grib_context* c=NULL;
+    int r;
+    int err = _grib_get_string_length(a,&size);
+    grib_handle* h=grib_handle_of_accessor(a);
+
+    c=a->context;
+    if (size==0) return;
+
+    if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0 || (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0)
+        return;
+
+    value=(char*)grib_context_malloc_clear(c,size);
+    if (!value) {
+        grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size);
+        return;
+    }
+
+    self->empty=0;
+
+    err = grib_unpack_string(a,value,&size);
+    p=value;
+    r=compute_key_rank(h,self->keys,a->name);
+    if (grib_is_missing_string(a,(unsigned char *)value,size))
+        return;
+
+    while(*p) { if(!isprint(*p)) *p = '.'; p++; }
+
+    if (self->isLeaf==0) {
+        depth+=2;
+        if (r!=0)
+            fprintf(self->dumper.out,"    codes_set(ibufr, '#%d#%s',",r,a->name);
+        else
+            fprintf(self->dumper.out,"    codes_set(ibufr, '%s',",a->name);
+    }
+    fprintf(self->dumper.out,"\'%s\')\n",value);
+
+
+    if (self->isLeaf==0) {
+        char* prefix;
+        int dofree=0;
+
+        if (r!=0) {
+            prefix=grib_context_malloc_clear(c,sizeof(char)*(strlen(a->name)+10));
+            dofree=1;
+            sprintf(prefix,"#%d#%s",r,a->name);
+        } else prefix=(char*)a->name;
+
+        dump_attributes(d,a,prefix);
+        if (dofree) grib_context_free(c,prefix);
+        depth-=2;
+    }
+
+    grib_context_free(c,value);
+    (void)err; /* TODO */
+}
+
+static void dump_bytes(grib_dumper* d,grib_accessor* a,const char* comment)
+{
+}
+
+static void dump_label(grib_dumper* d,grib_accessor* a,const char* comment)
+{
+}
+
+static void _dump_long_array(grib_handle* h, FILE* f, const char* key, const char* print_key)
+{
+    long* val;
+    size_t size=0,i;
+    int cols=9,icount=0;
+
+    if (grib_get_size(h,key,&size)==GRIB_NOT_FOUND) return;
+
+    fprintf(f,"    ivalues = (");
+
+    val=grib_context_malloc_clear(h->context,sizeof(long)*size);
+    grib_get_long_array(h,key,val,&size);
+    for (i=0;i<size-1;i++) {
+        if (icount>cols || i==0) {fprintf(f,"  \n      ");icount=0;}
+        fprintf(f,"%ld, ",val[i]);
+        icount++;
+    }
+    if (icount>cols) {fprintf(f,"  \n      ");}
+    /* Note: In python to make a tuple with one element, you need the trailing comma */
+    fprintf(f,"%ld ,)\n",val[size-1]);
+
+    grib_context_free(h->context,val);
+    fprintf(f,"    codes_set_array(ibufr, '%s', ivalues)\n",print_key);
+}
+
+static void dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accessors* block)
+{
+    grib_dumper_bufr_encode_python *self = (grib_dumper_bufr_encode_python*)d;
+    if (!grib_inline_strcmp(a->name,"BUFR") ||
+            !grib_inline_strcmp(a->name,"GRIB") ||
+            !grib_inline_strcmp(a->name,"META")
+    ) {
+        grib_handle* h=grib_handle_of_accessor(a);
+        depth=2;
+        self->empty=1;
+        depth+=2;
+        _dump_long_array(h,self->dumper.out,"dataPresentIndicator","inputDataPresentIndicator");
+        _dump_long_array(h,self->dumper.out,"delayedDescriptorReplicationFactor","inputDelayedDescriptorReplicationFactor");
+        _dump_long_array(h,self->dumper.out,"shortDelayedDescriptorReplicationFactor","inputShortDelayedDescriptorReplicationFactor");
+        _dump_long_array(h,self->dumper.out,"extendedDelayedDescriptorReplicationFactor","inputExtendedDelayedDescriptorReplicationFactor");
+        grib_dump_accessors_block(d,block);
+        depth-=2;
+    } else if (!grib_inline_strcmp(a->name,"groupNumber")) {
+        if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0)
+            return;
+        self->empty=1;
+        depth+=2;
+        grib_dump_accessors_block(d,block);
+        depth-=2;
+    } else {
+        grib_dump_accessors_block(d,block);
+    }
+}
+
+static void dump_attributes(grib_dumper* d,grib_accessor* a, const char* prefix)
+{
+    int i=0;
+    grib_dumper_bufr_encode_python *self = (grib_dumper_bufr_encode_python*)d;
+    unsigned long flags;
+    while (i < MAX_ACCESSOR_ATTRIBUTES && a->attributes[i]) {
+        self->isAttribute=1;
+        if (  (d->option_flags & GRIB_DUMP_FLAG_ALL_ATTRIBUTES ) == 0
+                && (a->attributes[i]->flags & GRIB_ACCESSOR_FLAG_DUMP)== 0 )
+        {
+            i++;
+            continue;
+        }
+        self->isLeaf=a->attributes[i]->attributes[0]==NULL ? 1 : 0;
+        flags=a->attributes[i]->flags;
+        a->attributes[i]->flags |= GRIB_ACCESSOR_FLAG_DUMP;
+        switch (grib_accessor_get_native_type(a->attributes[i])) {
+        case GRIB_TYPE_LONG:
+            dump_long_attribute(d,a->attributes[i],prefix);
+            break;
+        case GRIB_TYPE_DOUBLE:
+            dump_values_attribute(d,a->attributes[i],prefix);
+            break;
+        case GRIB_TYPE_STRING:
+            break;
+        }
+        a->attributes[i]->flags=flags;
+        i++;
+    }
+    self->isLeaf=0;
+    self->isAttribute=0;
+}
+
+static void header(grib_dumper* d, grib_handle* h)
+{
+    grib_dumper_bufr_encode_python *self = (grib_dumper_bufr_encode_python*)d;
+    char sampleName[200]={0};
+    long localSectionPresent,edition,bufrHeaderCentre,isSatellite;
+
+    grib_get_long(h,"localSectionPresent",&localSectionPresent);
+    grib_get_long(h,"bufrHeaderCentre",&bufrHeaderCentre);
+    grib_get_long(h,"edition",&edition);
+
+    if (localSectionPresent && bufrHeaderCentre==98 ) {
+        grib_get_long(h,"isSatellite",&isSatellite);
+        if (isSatellite)
+            sprintf(sampleName,"BUFR%ld_local_satellite",edition);
+        else
+            sprintf(sampleName,"BUFR%ld_local",edition);
+    } else {
+        sprintf(sampleName,"BUFR%ld",edition);
+    }
+
+    if (d->count<2) {
+        /* This is the first message being processed */
+        fprintf(self->dumper.out, "#  This program was automatically generated with bufr_dump -Epython\n");
+        fprintf(self->dumper.out, "#  Using ecCodes version: ");
+        grib_print_api_version(self->dumper.out);
+        fprintf(self->dumper.out, "\n\n");
+        fprintf(self->dumper.out,"import traceback\n");
+        fprintf(self->dumper.out,"import sys\n");
+        fprintf(self->dumper.out,"from eccodes import *\n\n\n");
+        fprintf(self->dumper.out,"def bufr_encode():\n");
+    }
+    fprintf(self->dumper.out,"    ibufr = codes_bufr_new_from_samples('%s')\n",sampleName);
+}
+
+static void footer(grib_dumper* d, grib_handle* h)
+{
+    grib_dumper_bufr_encode_python *self = (grib_dumper_bufr_encode_python*)d;
+    fprintf(self->dumper.out,"    codes_set(ibufr, 'pack', 1)\n");
+    if (d->count==1)
+        fprintf(self->dumper.out,"    outfile = open('outfile.bufr', 'w')\n");
+    else
+        fprintf(self->dumper.out,"    outfile = open('outfile.bufr', 'a')\n");
+
+    fprintf(self->dumper.out,"    codes_write(ibufr, outfile)\n");
+    /*fprintf(self->dumper.out,"    codes_close_file(outfile)\n");*/
+    fprintf(self->dumper.out,"    codes_release(ibufr)\n");
+}
diff --git a/src/grib_dumper_class_debug.c b/src/grib_dumper_class_debug.c
index 2f6eb90..f4a6f05 100644
--- a/src/grib_dumper_class_debug.c
+++ b/src/grib_dumper_class_debug.c
@@ -95,11 +95,11 @@ static int  init(grib_dumper* d)
     return GRIB_SUCCESS;
 }
 
-static int  destroy  (grib_dumper* d){
+static int  destroy  (grib_dumper* d)
+{
     return GRIB_SUCCESS;
 }
 
-
 static void aliases(grib_dumper* d,grib_accessor* a)
 {
     int i;
@@ -350,7 +350,7 @@ static void dump_values(grib_dumper* d,grib_accessor* a)
         dump_double(d,a,NULL);
         return ;
     }
-    buf = (double*)grib_context_malloc(d->handle->context,size * sizeof(double));
+    buf = (double*)grib_context_malloc_clear(d->handle->context,size * sizeof(double));
 
     set_begin_end(d,a);
 
@@ -359,8 +359,7 @@ static void dump_values(grib_dumper* d,grib_accessor* a)
     aliases(d,a);
     fprintf(self->dumper.out," {");
 
-    if(!buf)
-    {
+    if(!buf) {
         if(size == 0)
             fprintf(self->dumper.out,"}\n");
         else
@@ -371,7 +370,6 @@ static void dump_values(grib_dumper* d,grib_accessor* a)
     fprintf(self->dumper.out,"\n");
 
     err =  grib_unpack_double(a,buf,&size);
-
     if(err){
         grib_context_free(d->handle->context,buf);
         fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_debug::dump_values]\n}",err,grib_get_error_message(err));
@@ -383,7 +381,6 @@ static void dump_values(grib_dumper* d,grib_accessor* a)
         size = 100;
     }
 
-
     k = 0;
     while(k < size)
     {
@@ -402,10 +399,8 @@ static void dump_values(grib_dumper* d,grib_accessor* a)
         fprintf(self->dumper.out,"%d %g\n",k,buf[k]);
 
 #endif
-
     }
-    if(more)
-    {
+    if(more) {
         for(i = 0; i < d->depth + 3 ; i++) fprintf(self->dumper.out," ");
         fprintf(self->dumper.out,"... %d more values\n",more);
     }
@@ -450,7 +445,8 @@ static void dump_section(grib_dumper* d,grib_accessor* a,grib_block_of_accessors
     fprintf(self->dumper.out,"<===== %s %s\n",a->creator->op, a->name);
 }
 
-static void set_begin_end(grib_dumper* d,grib_accessor* a) {
+static void set_begin_end(grib_dumper* d,grib_accessor* a)
+{
     grib_dumper_debug *self = (grib_dumper_debug*)d;
     if ((d->option_flags & GRIB_DUMP_FLAG_OCTECT) != 0) {
 
diff --git a/src/grib_dumper_class_c_code.c b/src/grib_dumper_class_grib_encode_C.c
similarity index 90%
rename from src/grib_dumper_class_c_code.c
rename to src/grib_dumper_class_grib_encode_C.c
index eaaba47..6c1bb4d 100644
--- a/src/grib_dumper_class_c_code.c
+++ b/src/grib_dumper_class_grib_encode_C.c
@@ -51,17 +51,17 @@ static void dump_section    (grib_dumper* d, grib_accessor* a,grib_block_of_acce
 static void header         (grib_dumper*,grib_handle*);
 static void footer         (grib_dumper*,grib_handle*);
 
-typedef struct grib_dumper_c_code {
+typedef struct grib_dumper_grib_encode_C {
     grib_dumper          dumper;  
-/* Members defined in c_code */
+/* Members defined in grib_encode_C */
 	int cr;
-} grib_dumper_c_code;
+} grib_dumper_grib_encode_C;
 
 
-static grib_dumper_class _grib_dumper_class_c_code = {
+static grib_dumper_class _grib_dumper_class_grib_encode_C = {
     0,                              /* super                     */
-    "c_code",                              /* name                      */
-    sizeof(grib_dumper_c_code),     /* size                      */
+    "grib_encode_C",                              /* name                      */
+    sizeof(grib_dumper_grib_encode_C),     /* size                      */
     0,                                   /* inited */
     &init_class,                         /* init_class */
     &init,                               /* init                      */
@@ -79,14 +79,14 @@ static grib_dumper_class _grib_dumper_class_c_code = {
     &footer,                             /* footer   */
 };
 
-grib_dumper_class* grib_dumper_class_c_code = &_grib_dumper_class_c_code;
+grib_dumper_class* grib_dumper_class_grib_encode_C = &_grib_dumper_class_grib_encode_C;
 
 /* END_CLASS_IMP */
 static void init_class      (grib_dumper_class* c){}
 
 static int  init(grib_dumper* d)
 {
-  /* grib_dumper_c_code *self = (grib_dumper_c_code*)d; */
+  /* grib_dumper_grib_encode_C *self = (grib_dumper_grib_encode_C*)d; */
   return GRIB_SUCCESS;
 }
 
@@ -129,7 +129,7 @@ static void pcomment(FILE* f,long value,const char* p)
 
 static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment)
 {
-  grib_dumper_c_code *self = (grib_dumper_c_code*)d;
+  grib_dumper_grib_encode_C *self = (grib_dumper_grib_encode_C*)d;
   long value; size_t size = 1;
   int err = grib_unpack_long(a,&value,&size);
 
@@ -157,7 +157,7 @@ static int test_bit(long a, long b) {return a&(1<<b);}
 
 static void dump_bits(grib_dumper* d,grib_accessor* a,const char* comment)
 {
-  grib_dumper_c_code *self = (grib_dumper_c_code*)d;
+  grib_dumper_grib_encode_C *self = (grib_dumper_grib_encode_C*)d;
   long value; size_t size = 1;
   int err = grib_unpack_long(a,&value,&size);
   int i;
@@ -196,7 +196,7 @@ static void dump_bits(grib_dumper* d,grib_accessor* a,const char* comment)
 
 static void dump_double(grib_dumper* d,grib_accessor* a,const char* comment)
 {
-  grib_dumper_c_code *self = (grib_dumper_c_code*)d;
+  grib_dumper_grib_encode_C *self = (grib_dumper_grib_encode_C*)d;
   double value; size_t size = 1;
   int err = grib_unpack_double(a,&value,&size);
   if(a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY)
@@ -217,7 +217,7 @@ static void dump_double(grib_dumper* d,grib_accessor* a,const char* comment)
 
 static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment)
 {
-  grib_dumper_c_code *self = (grib_dumper_c_code*)d;
+  grib_dumper_grib_encode_C *self = (grib_dumper_grib_encode_C*)d;
   char value[1024]; size_t size = sizeof(value);
   int err = grib_unpack_string(a,value,&size);
 
@@ -241,7 +241,7 @@ static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment)
 
 static void dump_bytes(grib_dumper* d,grib_accessor* a,const char* comment)
 {
-  grib_dumper_c_code *self = (grib_dumper_c_code*)d;
+  grib_dumper_grib_encode_C *self = (grib_dumper_grib_encode_C*)d;
   int err =0;
   size_t size = a->length;
   unsigned char* buf;
@@ -265,7 +265,7 @@ static void dump_bytes(grib_dumper* d,grib_accessor* a,const char* comment)
   err = grib_unpack_bytes(a,buf,&size);
   if(err){
     grib_context_free(d->handle->context,buf);
-    fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_c_code::dump_bytes]\n}",err,grib_get_error_message(err));
+    fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_grib_encode_C::dump_bytes]\n}",err,grib_get_error_message(err));
     return ;
   }
 
@@ -295,7 +295,7 @@ static void dump_bytes(grib_dumper* d,grib_accessor* a,const char* comment)
 
 static void dump_values(grib_dumper* d,grib_accessor* a)
 {
-  grib_dumper_c_code *self = (grib_dumper_c_code*)d;
+  grib_dumper_grib_encode_C *self = (grib_dumper_grib_encode_C*)d;
   int k,err =0;
   double*  buf = NULL;
   int type=0;
@@ -372,13 +372,13 @@ static void dump_values(grib_dumper* d,grib_accessor* a)
 
 static void dump_label(grib_dumper* d,grib_accessor* a,const char* comment)
 {
-  grib_dumper_c_code *self = (grib_dumper_c_code*)d;
+  grib_dumper_grib_encode_C *self = (grib_dumper_grib_encode_C*)d;
   fprintf(self->dumper.out,"\n    /* %s */\n\n",a->name);
 }
 
 static void dump_section(grib_dumper* d,grib_accessor* a,grib_block_of_accessors* block)
 {
-  /*grib_dumper_c_code *self = (grib_dumper_c_code*)d;*/
+  /*grib_dumper_grib_encode_C *self = (grib_dumper_grib_encode_C*)d;*/
   grib_dump_accessors_block(d,block);
 }
 
@@ -386,7 +386,7 @@ static void header(grib_dumper* d,grib_handle* h)
 {
   long edition=0;
   int ret=0;
-  grib_dumper_c_code *self = (grib_dumper_c_code*)d;
+  grib_dumper_grib_encode_C *self = (grib_dumper_grib_encode_C*)d;
     ret=grib_get_long(h,"editionNumber",&edition);
   if (ret != GRIB_SUCCESS) {
     grib_context_log(h->context,GRIB_LOG_ERROR,"Unable to get edition number.");
@@ -427,7 +427,7 @@ static void header(grib_dumper* d,grib_handle* h)
 
 static void footer(grib_dumper* d,grib_handle* h)
 {
-  grib_dumper_c_code *self = (grib_dumper_c_code*)d;
+  grib_dumper_grib_encode_C *self = (grib_dumper_grib_encode_C*)d;
 
   fprintf(self->dumper.out,
 
diff --git a/src/grib_dumper_factory.h b/src/grib_dumper_factory.h
index 5833770..7f1be63 100644
--- a/src/grib_dumper_factory.h
+++ b/src/grib_dumper_factory.h
@@ -1,9 +1,19 @@
 /* This file is automatically generated by ./make_class.pl, do not edit */
-{ "c_code", &grib_dumper_class_c_code, },
-{ "debug", &grib_dumper_class_debug, },
-{ "default", &grib_dumper_class_default, },
-{ "json", &grib_dumper_class_json, },
-{ "keys", &grib_dumper_class_keys, },
-{ "serialize", &grib_dumper_class_serialize, },
-{ "wmo", &grib_dumper_class_wmo, },
-{ "xml", &grib_dumper_class_xml, },
+{ "bufr_decode_C",       &grib_dumper_class_bufr_decode_C, },
+{ "bufr_decode_filter",  &grib_dumper_class_bufr_decode_filter, },
+{ "bufr_decode_fortran", &grib_dumper_class_bufr_decode_fortran, },
+{ "bufr_decode_python",  &grib_dumper_class_bufr_decode_python, },
+
+{ "bufr_encode_C",       &grib_dumper_class_bufr_encode_C, },
+{ "bufr_encode_filter",  &grib_dumper_class_bufr_encode_filter, },
+{ "bufr_encode_fortran", &grib_dumper_class_bufr_encode_fortran, },
+{ "bufr_encode_python",  &grib_dumper_class_bufr_encode_python, },
+
+{ "debug",               &grib_dumper_class_debug, },
+{ "default",             &grib_dumper_class_default, },
+{ "grib_encode_C",       &grib_dumper_class_grib_encode_C, },
+{ "json",                &grib_dumper_class_json, },
+{ "keys",                &grib_dumper_class_keys, },
+{ "serialize",           &grib_dumper_class_serialize, },
+{ "wmo",                 &grib_dumper_class_wmo, },
+{ "xml",                 &grib_dumper_class_xml, },
diff --git a/src/grib_errors.c b/src/grib_errors.c
index 31540cd..831f4fd 100644
--- a/src/grib_errors.c
+++ b/src/grib_errors.c
@@ -69,6 +69,7 @@ static const char *errors[] = {
 "Attribute not found.",		/* -63 GRIB_ATTRIBUTE_NOT_FOUND */
 "Edition not supported.",		/* -64 GRIB_UNSUPPORTED_EDITION */
 "Value out of coding range",		/* -65 GRIB_OUT_OF_RANGE */
+"Size of bitmap is incorrect",		/* -66 GRIB_WRONG_BITMAP_SIZE */
 "Value mismatch",		/* 1 GRIB_VALUE_MISMATCH */
 "double values are different",		/* 2 GRIB_DOUBLE_VALUE_MISMATCH */
 "long values are different",		/* 3 GRIB_LONG_VALUE_MISMATCH */
@@ -88,33 +89,35 @@ static const char *errors[] = {
 
 const char* grib_get_error_message(int code)
 {
-    code = -code;
-    if(code <0 || code >= NUMBER(errors)) {
-        static char mess[80];
-        sprintf(mess,"Unknown error %d",code);
-        return mess;
+  code = -code;
+  if(code <0 || code >= NUMBER(errors)) {
+    static char mess[80];
+    sprintf(mess,"Unknown error %d",code);
+    return mess;
     }
-    return errors[code];
+  return errors[code];
 }
 
 void grib_check(const char* call,const char*  file,int line,int e,const char* msg)
 {
-    grib_context* c=grib_context_get_default();
+	grib_context* c=grib_context_get_default();
     if(e) {
-        if (file) {
-            fprintf(stderr,"%s at line %d: %s failed: %s",
-                    file,line, call,grib_get_error_message(e));
-            if (msg) fprintf(stderr," (%s)",msg);
-            printf("\n");
-        } else {
-            grib_context_log(c,GRIB_LOG_ERROR,"%s",grib_get_error_message(e));
-        }
+		if (file) {
+			fprintf(stderr,"%s at line %d: %s failed: %s",
+				file,line, call,grib_get_error_message(e));
+			if (msg) fprintf(stderr," (%s)",msg);
+			printf("\n");
+		} else {
+			grib_context_log(c,GRIB_LOG_ERROR,"%s",grib_get_error_message(e));
+		}
         exit(e);
     }
 }
 
+
 void grib_fail(const char* expr,const char* file,int line,int silent) {
-    if (!silent)
-        fprintf(stderr,"%s at line %d: assertion failure Assert(%s)\n",file,line,expr);
-    abort();
+	 if (!silent)
+   fprintf(stderr,"%s at line %d: assertion failure Assert(%s)\n",file,line,expr);
+   abort();
 }
+
diff --git a/src/grib_errors.txt b/src/grib_errors.txt
index 30d076f..367f30c 100644
--- a/src/grib_errors.txt
+++ b/src/grib_errors.txt
@@ -71,3 +71,4 @@ GRIB_TOO_MANY_ATTRIBUTES      Too many attributes. Increase MAX_ACCESSOR_ATTRIBU
 GRIB_ATTRIBUTE_NOT_FOUND      Attribute not found.
 GRIB_UNSUPPORTED_EDITION      Edition not supported.
 GRIB_OUT_OF_RANGE             Value out of coding range
+GRIB_WRONG_BITMAP_SIZE        Size of bitmap is incorrect
diff --git a/src/grib_expression_class_is_in_dict.c b/src/grib_expression_class_is_in_dict.c
index e12a625..21d0e92 100644
--- a/src/grib_expression_class_is_in_dict.c
+++ b/src/grib_expression_class_is_in_dict.c
@@ -72,9 +72,9 @@ static grib_expression_class _grib_expression_class_is_in_dict = {
     &init_class,                 /* init_class */
     0,                     /* constructor               */
     0,                  /* destructor                */
-    &print,
-    &compile,
-    &add_dependency,
+    &print,                 
+    &compile,                 
+    &add_dependency,       
 
 	&native_type,
 	&get_name,
diff --git a/src/grib_expression_class_is_in_list.c b/src/grib_expression_class_is_in_list.c
index cf1bfbd..ec21a0d 100644
--- a/src/grib_expression_class_is_in_list.c
+++ b/src/grib_expression_class_is_in_list.c
@@ -74,9 +74,9 @@ static grib_expression_class _grib_expression_class_is_in_list = {
     &init_class,                 /* init_class */
     0,                     /* constructor               */
     &destroy,                  /* destructor                */
-    &print,
-    &compile,
-    &add_dependency,
+    &print,                 
+    &compile,                 
+    &add_dependency,       
 
 	&native_type,
 	&get_name,
diff --git a/src/grib_fieldset.c b/src/grib_fieldset.c
index 7823841..61d5e19 100644
--- a/src/grib_fieldset.c
+++ b/src/grib_fieldset.c
@@ -634,7 +634,7 @@ int grib_fieldset_add(grib_fieldset* set,char* filename)
     }
     if (h) grib_handle_delete(h);
 
-    grib_file_close(file->name,&err);
+    grib_file_close(file->name, 0, &err);
 
     grib_fieldset_rewind(set);
 
@@ -697,7 +697,7 @@ grib_handle* grib_fieldset_retrieve(grib_fieldset* set,int i,int* err)
     h=grib_handle_new_from_file(set->context,field->file->handle,err);
     if (*err!=GRIB_SUCCESS) return NULL;
 
-    grib_file_close(field->file->name,err);
+    grib_file_close(field->file->name, 0, err);
 
     return h;
 }
@@ -800,6 +800,11 @@ static void grib_fieldset_delete_fields(grib_fieldset* set)
     for (i=0;i<set->size;i++) {
         if (!set->fields[i]) continue;
         set->fields[i]->file->refcount--;
+        /* See GRIB-1010: force file close */
+        {
+            /* int err = 0; */
+            /* grib_file_close(set->fields[i]->file->name, 1, &err); */
+        }
         grib_context_free(set->context,set->fields[i]);
     }
     grib_context_free(set->context,set->fields);
diff --git a/src/grib_filepool.c b/src/grib_filepool.c
index 7c5af31..b20a19a 100644
--- a/src/grib_filepool.c
+++ b/src/grib_filepool.c
@@ -285,31 +285,16 @@ void grib_file_pool_delete_file(grib_file* file) {
 
 }
 
-void grib_file_close_force(const char* filename,int* err)
-{
-    grib_file* file=NULL;
-
-    /* fprintf(stderr,"++++ closing file %s\n",filename); */
-    GRIB_MUTEX_INIT_ONCE(&once,&init);
-    GRIB_MUTEX_LOCK(&mutex1);
-    file=grib_get_file(filename,err);
-    fclose(file->handle);
-    if (file->buffer) {
-        free(file->buffer);
-        file->buffer=0;
-    }
-    file->handle=NULL;
-    file_pool.number_of_opened_files--;
-    GRIB_MUTEX_UNLOCK(&mutex1);
-}
-
-void grib_file_close(const char* filename,int* err)
+void grib_file_close(const char* filename, int force, int* err)
 {
     grib_file* file=NULL;
 
     /* Performance: keep the files open to avoid opening and closing files when writing the output. */
     /* So only call fclose() when too many files are open */
-    if ( file_pool.number_of_opened_files > GRIB_MAX_OPENED_FILES ) {
+    int do_close = (file_pool.number_of_opened_files > GRIB_MAX_OPENED_FILES);
+    if (force == 1) do_close=1; /* Can be overridden with the force argument */
+
+    if ( do_close ) {
         /*printf("++ closing file %s\n",filename);*/
         GRIB_MUTEX_INIT_ONCE(&once,&init);
         GRIB_MUTEX_LOCK(&mutex1);
diff --git a/src/grib_handle.c b/src/grib_handle.c
index 387ceda..610c1ce 100644
--- a/src/grib_handle.c
+++ b/src/grib_handle.c
@@ -145,7 +145,8 @@ int grib_handle_delete ( grib_handle* h )
         grib_dependency *d = h->dependencies;
         grib_dependency *n;
 
-        Assert ( h->kid == NULL );
+        if ( h->kid != NULL )
+            return GRIB_INTERNAL_ERROR;
 
         while ( d )
         {
@@ -262,6 +263,29 @@ grib_handle* grib_handle_new_from_samples ( grib_context* c, const char* name )
     return g;
 }
 
+grib_handle* codes_bufr_handle_new_from_samples ( grib_context* c, const char* name )
+{
+    grib_handle* g = 0;
+    if ( c == NULL ) c = grib_context_get_default();
+    grib_context_set_handle_file_count(c,0);
+    grib_context_set_handle_total_count(c,0);
+
+    /*
+       g = grib_internal_template(c,name);
+       if(g) return g;
+     */
+    if (c->debug) {
+        printf("ECCODES DEBUG: grib_handle_new_from_samples '%s'\n", name);
+    }
+
+    g=bufr_external_template ( c,name );
+    if ( !g )
+        grib_context_log ( c,GRIB_LOG_ERROR,"Unable to load sample file %s.tmpl\n                    in %s",
+                name, c->grib_samples_path );
+
+    return g;
+}
+
 int grib_write_message(grib_handle* h,const char* file,const char* mode)
 {
     FILE* fh=0;
@@ -480,7 +504,7 @@ static grib_handle* grib_handle_new_multi ( grib_context* c,unsigned char** data
                     if ( !gm->bitmap_section )
                     {
                         grib_context_log ( c, GRIB_LOG_ERROR,
-                                "grib_handle_new_from_file : cannot create handle, missing bitmap\n" );
+                                "grib_handle_new_multi : cannot create handle, missing bitmap\n" );
                         return NULL;
                     }
                     gm->sections[secnum]= gm->bitmap_section;
@@ -536,7 +560,7 @@ static grib_handle* grib_handle_new_multi ( grib_context* c,unsigned char** data
     if ( !gl )
     {
         *error = GRIB_DECODING_ERROR;
-        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_file : cannot create handle \n" );
+        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_multi: cannot create handle \n" );
         return NULL;
     }
 
@@ -637,7 +661,7 @@ static grib_handle* grib_handle_new_from_file_multi ( grib_context* c, FILE* f,i
                 {
                     if ( !gm->bitmap_section )
                     {
-                        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_file : cannot create handle, missing bitmap\n" );
+                        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_file_multi: cannot create handle, missing bitmap\n" );
                         grib_context_free ( c,data );
                         return NULL;
                     }
@@ -693,7 +717,7 @@ static grib_handle* grib_handle_new_from_file_multi ( grib_context* c, FILE* f,i
     if ( !gl )
     {
         *error = GRIB_DECODING_ERROR;
-        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_file : cannot create handle \n" );
+        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_file_multi: cannot create handle \n" );
         grib_context_free ( c,data );
         return NULL;
     }
@@ -740,7 +764,7 @@ grib_handle* grib_new_from_file ( grib_context* c, FILE* f,int headers_only,int
     return h;
 }
 
-grib_handle* gts_new_from_file ( grib_context* c, FILE* f,int *error )
+grib_handle* gts_new_from_file( grib_context* c, FILE* f,int *error )
 {
     void *data = NULL;
     size_t olen = 0;
@@ -764,7 +788,7 @@ grib_handle* gts_new_from_file ( grib_context* c, FILE* f,int *error )
     if ( !gl )
     {
         *error = GRIB_DECODING_ERROR;
-        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_file : cannot create handle \n" );
+        grib_context_log ( c, GRIB_LOG_ERROR, "gts_new_from_file: cannot create handle \n" );
         grib_context_free ( c,data );
         return NULL;
     }
@@ -778,7 +802,7 @@ grib_handle* gts_new_from_file ( grib_context* c, FILE* f,int *error )
     return gl;
 }
 
-grib_handle* taf_new_from_file ( grib_context* c, FILE* f,int *error )
+grib_handle* taf_new_from_file( grib_context* c, FILE* f,int *error )
 {
     void *data = NULL;
     size_t olen = 0;
@@ -802,7 +826,7 @@ grib_handle* taf_new_from_file ( grib_context* c, FILE* f,int *error )
     if ( !gl )
     {
         *error = GRIB_DECODING_ERROR;
-        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_file : cannot create handle \n" );
+        grib_context_log ( c, GRIB_LOG_ERROR, "taf_new_from_file: cannot create handle \n" );
         grib_context_free ( c,data );
         return NULL;
     }
@@ -816,7 +840,7 @@ grib_handle* taf_new_from_file ( grib_context* c, FILE* f,int *error )
     return gl;
 }
 
-grib_handle* metar_new_from_file ( grib_context* c, FILE* f,int *error )
+grib_handle* metar_new_from_file( grib_context* c, FILE* f,int *error )
 {
     void *data = NULL;
     size_t olen = 0;
@@ -840,7 +864,7 @@ grib_handle* metar_new_from_file ( grib_context* c, FILE* f,int *error )
     if ( !gl )
     {
         *error = GRIB_DECODING_ERROR;
-        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_file : cannot create handle \n" );
+        grib_context_log ( c, GRIB_LOG_ERROR, "metar_new_from_file: cannot create handle \n" );
         grib_context_free ( c,data );
         return NULL;
     }
@@ -854,7 +878,7 @@ grib_handle* metar_new_from_file ( grib_context* c, FILE* f,int *error )
     return gl;
 }
 
-grib_handle* bufr_new_from_file ( grib_context* c, FILE* f,int *error )
+grib_handle* bufr_new_from_file( grib_context* c, FILE* f,int *error )
 {
     void *data = NULL;
     size_t olen = 0;
@@ -878,7 +902,7 @@ grib_handle* bufr_new_from_file ( grib_context* c, FILE* f,int *error )
     if ( !gl )
     {
         *error = GRIB_DECODING_ERROR;
-        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_file : cannot create handle \n" );
+        grib_context_log ( c, GRIB_LOG_ERROR, "bufr_new_from_file: cannot create handle \n" );
         grib_context_free ( c,data );
         return NULL;
     }
@@ -892,7 +916,7 @@ grib_handle* bufr_new_from_file ( grib_context* c, FILE* f,int *error )
     return gl;
 }
 
-grib_handle* any_new_from_file ( grib_context* c, FILE* f,int *error )
+grib_handle* any_new_from_file( grib_context* c, FILE* f,int *error )
 {
     void *data = NULL;
     size_t olen = 0;
@@ -916,7 +940,7 @@ grib_handle* any_new_from_file ( grib_context* c, FILE* f,int *error )
     if ( !gl )
     {
         *error = GRIB_DECODING_ERROR;
-        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_file : cannot create handle \n" );
+        grib_context_log ( c, GRIB_LOG_ERROR, "any_new_from_file : cannot create handle\n" );
         grib_context_free ( c,data );
         return NULL;
     }
@@ -981,7 +1005,7 @@ static grib_handle* grib_handle_new_from_file_no_multi ( grib_context* c,FILE* f
     if ( !gl )
     {
         *error = GRIB_DECODING_ERROR;
-        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_file : cannot create handle \n" );
+        grib_context_log ( c, GRIB_LOG_ERROR, "grib_handle_new_from_file_no_multi: cannot create handle\n" );
         grib_context_free ( c,data );
         return NULL;
     }
@@ -1190,17 +1214,17 @@ int grib_get_message ( grib_handle* h,const void** msg,size_t* size )
 int grib_get_message_headers ( grib_handle* h,const void** msg,size_t* size )
 {
     int ret=0;
-    size_t endOfHeadersMaker;
+    size_t endOfHeadersMarker;
     *msg  =  h->buffer->data;
     *size =  h->buffer->ulength;
 
-    if ((ret=grib_get_offset(h,"endOfHeadersMaker",&endOfHeadersMaker))!=GRIB_SUCCESS) {
+    if ((ret=grib_get_offset(h,"endOfHeadersMarker",&endOfHeadersMarker))!=GRIB_SUCCESS) {
         grib_context_log(h->context,GRIB_LOG_FATAL,
-                "grib_get_message_headers unable to get offset of endOfHeadersMaker");
+                "grib_get_message_headers unable to get offset of endOfHeadersMarker");
         return ret;
     }
 
-    *size=endOfHeadersMaker;
+    *size=endOfHeadersMarker;
 
     return ret;
 }
diff --git a/src/grib_hash_keys.c b/src/grib_hash_keys.c
index e6c80ce..9af0680 100644
--- a/src/grib_hash_keys.c
+++ b/src/grib_hash_keys.c
@@ -1,5 +1,5 @@
 /* C code produced by gperf version 3.0.4 */
-/* Command-line: gperf -I -t -G -H hash_keys -N grib_keys_hash_get -m 3 ../tests/keys  */
+/* Command-line: gperf -I -t -G -H hash_keys -N grib_keys_hash_get -m 3 keys  */
 /* Computed positions: -k'1-16,19-20,23,25,27,$' */
 
 #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -29,25 +29,25 @@
 error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf at gnu.org>."
 #endif
 
-#line 1 "../tests/keys"
+#line 1 "keys"
 
 #include "grib_api_internal.h"
-#line 4 "../tests/keys"
+#line 4 "keys"
 struct grib_keys_hash { char* name; int id;};
 #include <string.h>
 
-#define TOTAL_KEYWORDS 2017
+#define TOTAL_KEYWORDS 2137
 #define MIN_WORD_LENGTH 1
 #define MAX_WORD_LENGTH 74
 #define MIN_HASH_VALUE 5
-#define MAX_HASH_VALUE 20361
-/* maximum key range = 20357, duplicates = 0 */
+#define MAX_HASH_VALUE 22970
+/* maximum key range = 22966, duplicates = 0 */
 
 #ifdef __GNUC__
-
+__inline
 #else
 #ifdef __cplusplus
-
+inline
 #endif
 #endif
 static unsigned int
@@ -55,32 +55,32 @@ hash_keys (const char *str, unsigned int len)
 {
   static unsigned short asso_values[] =
     {
-      20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362,
-      20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362,
-      20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362,
-      20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362,
-      20362, 20362,     4, 20362, 20362,     2, 20362, 20362,    11,  1319,
-       1216,  1927,  1478,  1817,  1476,  1865,    30,    44,     3,     2,
-          4, 20362, 20362, 20362, 20362,  1298,  3645,   716,   162,   914,
-        543,   823,  4074,  1166,  1458,   399,   107,  1826,  1209,   163,
-        121,    58,   529,   132,   854,  3435,   137,  2214,   949,  2626,
-         52,     2,     3, 20362,     2,   471, 20362,     2,   371,    27,
-         29,     3,    86,   105,    64,    14,  1725,  2964,    34,     6,
-          2,    32,     7,   324,     4,     5,     4,    56,   150,    41,
-        117,   682,   578,    19,  1945,     8, 20362, 20362, 20362, 20362,
-      20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362,
-      20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362,
-      20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362,
-      20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362,
-      20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362,
-      20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362,
-      20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362,
-      20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362,
-      20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362,
-      20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362,
-      20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362,
-      20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362,
-      20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362, 20362
+      22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971,
+      22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971,
+      22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971,
+      22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971,
+      22971, 22971,     3, 22971, 22971,     3, 22971, 22971,     7,  1381,
+       1683,  1529,  1106,   894,   559,  1912,    52,     5,     2,     2,
+          3, 22971, 22971, 22971, 22971,   525,  3795,   639,   172,   884,
+        320,  2058,  3370,  1244,  1333,   519,    78,  1866,   777,   132,
+        172,    84,   432,   115,  1610,  3610,    43,  2496,  1236,  3063,
+         78,     2,     2, 22971,     2,  1873, 22971,     4,   300,    11,
+          2,     7,    82,    53,   113,     7,  1623,  2107,    41,     8,
+          2,    11,    27,   647,    17,    14,     3,    89,   151,     6,
+        233,   972,  1010,   372,   898,    24, 22971, 22971, 22971, 22971,
+      22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971,
+      22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971,
+      22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971,
+      22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971,
+      22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971,
+      22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971,
+      22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971,
+      22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971,
+      22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971,
+      22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971,
+      22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971,
+      22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971,
+      22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971, 22971
     };
   register int hval = len;
 
@@ -162,5324 +162,6128 @@ hash_keys (const char *str, unsigned int len)
 static struct grib_keys_hash wordlist[] =
   {
     {""}, {""}, {""}, {""}, {""},
-#line 1110 "../tests/keys"
-    {"n",1105},
-    {""}, {""},
-#line 1113 "../tests/keys"
-    {"na",1108},
-#line 1805 "../tests/keys"
-    {"t",1800},
-    {""},
-#line 1122 "../tests/keys"
-    {"nnn",1117},
-#line 1136 "../tests/keys"
-    {"nt",1131},
-#line 1009 "../tests/keys"
-    {"m",1004},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1114 "../tests/keys"
-    {"name",1109},
-    {""}, {""},
-#line 671 "../tests/keys"
-    {"eps",666},
-    {""}, {""},
-#line 1012 "../tests/keys"
-    {"mars",1007},
-#line 1083 "../tests/keys"
-    {"min",1078},
-#line 1118 "../tests/keys"
-    {"names",1113},
-#line 1747 "../tests/keys"
-    {"spare",1742},
-#line 1770 "../tests/keys"
-    {"step",1765},
-    {""},
-#line 1380 "../tests/keys"
-    {"param",1375},
-    {""},
-#line 1836 "../tests/keys"
-    {"time",1831},
-    {""},
-#line 1779 "../tests/keys"
-    {"stream",1774},
-    {""}, {""},
-#line 1426 "../tests/keys"
-    {"present",1421},
-#line 327 "../tests/keys"
-    {"cat",322},
-    {""}, {""},
-#line 1277 "../tests/keys"
-    {"one",1272},
-    {""},
-#line 568 "../tests/keys"
-    {"date",563},
-    {""}, {""},
-#line 1383 "../tests/keys"
-    {"parameter",1378},
-    {""}, {""}, {""},
-#line 343 "../tests/keys"
-    {"centre",338},
-#line 1731 "../tests/keys"
-    {"sort",1726},
-#line 1289 "../tests/keys"
-    {"oper",1284},
-#line 1390 "../tests/keys"
-    {"parameters",1385},
-#line 677 "../tests/keys"
-    {"error",672},
-    {""},
-#line 666 "../tests/keys"
-    {"enorm",661},
-    {""}, {""},
-#line 809 "../tests/keys"
-    {"ident",804},
-#line 1119 "../tests/keys"
-    {"nd",1114},
-#line 626 "../tests/keys"
-    {"ed",621},
-#line 1814 "../tests/keys"
-    {"td",1809},
-#line 1643 "../tests/keys"
-    {"sd",1638},
-    {""}, {""},
-#line 1845 "../tests/keys"
-    {"timerepres",1840},
-    {""}, {""},
-#line 1499 "../tests/keys"
-    {"rectime",1494},
-    {""},
-#line 534 "../tests/keys"
-    {"core",529},
-#line 1862 "../tests/keys"
-    {"true",1857},
-#line 1416 "../tests/keys"
-    {"points",1411},
-    {""},
-#line 1413 "../tests/keys"
-    {"pl",1408},
-    {""},
-#line 508 "../tests/keys"
-    {"const",503},
-#line 1295 "../tests/keys"
-    {"opttime",1290},
-    {""},
-#line 276 "../tests/keys"
-    {"assertion",271},
-#line 364 "../tests/keys"
-    {"class",359},
-    {""}, {""},
-#line 1825 "../tests/keys"
-    {"three",1820},
-#line 1769 "../tests/keys"
-    {"status",1764},
-    {""},
-#line 1409 "../tests/keys"
-    {"phase",1404},
-#line 854 "../tests/keys"
-    {"iteration",849},
-#line 1913 "../tests/keys"
-    {"units",1908},
-    {""},
-#line 610 "../tests/keys"
-    {"domain",605},
-#line 1085 "../tests/keys"
-    {"minute",1080},
-#line 1456 "../tests/keys"
-    {"process",1451},
-#line 1664 "../tests/keys"
-    {"section",1659},
-    {""}, {""},
-#line 1768 "../tests/keys"
-    {"statistics",1763},
-    {""}, {""},
-#line 1479 "../tests/keys"
-    {"radials",1474},
-#line 1395 "../tests/keys"
-    {"partitions",1390},
-    {""},
-#line 362 "../tests/keys"
-    {"char",357},
-#line 912 "../tests/keys"
-    {"leadtime",907},
-#line 627 "../tests/keys"
-    {"edition",622},
-    {""}, {""},
-#line 787 "../tests/keys"
-    {"hdate",782},
-    {""},
-#line 1871 "../tests/keys"
-    {"two",1866},
-    {""},
-#line 822 "../tests/keys"
-    {"instrument",817},
-#line 1847 "../tests/keys"
-    {"total",1842},
-    {""},
-#line 1084 "../tests/keys"
-    {"minimum",1079},
-#line 597 "../tests/keys"
-    {"dimension",592},
-#line 1422 "../tests/keys"
-    {"precision",1417},
-#line 1125 "../tests/keys"
-    {"normal",1120},
-#line 1480 "../tests/keys"
-    {"radius",1475},
-    {""}, {""},
-#line 1485 "../tests/keys"
-    {"range",1480},
-    {""},
-#line 100 "../tests/keys"
-    {"Lap",95},
-    {""}, {""}, {""},
-#line 548 "../tests/keys"
-    {"count",543},
-    {""}, {""},
-#line 1644 "../tests/keys"
-    {"second",1639},
-    {""}, {""},
-#line 105 "../tests/keys"
-    {"Latin",100},
-    {""},
-#line 709 "../tests/keys"
-    {"false",704},
-    {""},
-#line 600 "../tests/keys"
-    {"direction",595},
-#line 1505 "../tests/keys"
-    {"refdate",1500},
-    {""},
-#line 1097 "../tests/keys"
-    {"model",1092},
-#line 716 "../tests/keys"
-    {"file",711},
-#line 1082 "../tests/keys"
-    {"million",1077},
-    {""},
-#line 1506 "../tests/keys"
-    {"reference",1501},
-    {""}, {""},
-#line 1778 "../tests/keys"
-    {"stepZero",1773},
-#line 506 "../tests/keys"
-    {"consensus",501},
-    {""}, {""}, {""},
-#line 1693 "../tests/keys"
-    {"section8",1688},
-    {""},
-#line 879 "../tests/keys"
-    {"latitude",874},
-    {""}, {""}, {""},
-#line 539 "../tests/keys"
-    {"correction",534},
-#line 606 "../tests/keys"
-    {"discipline",601},
-    {""},
-#line 795 "../tests/keys"
-    {"hour",790},
-#line 909 "../tests/keys"
-    {"latitudes",904},
-    {""},
-#line 1032 "../tests/keys"
-    {"marsParam",1027},
-#line 943 "../tests/keys"
-    {"local",938},
-    {""},
-#line 1457 "../tests/keys"
-    {"product",1452},
-#line 1816 "../tests/keys"
-    {"temperature",1811},
-#line 848 "../tests/keys"
-    {"isSens",843},
-#line 1080 "../tests/keys"
-    {"method",1075},
-    {""},
-#line 360 "../tests/keys"
-    {"channel",355},
-    {""},
-#line 1103 "../tests/keys"
-    {"month",1098},
-#line 1036 "../tests/keys"
-    {"marsStep",1031},
-#line 1300 "../tests/keys"
-    {"origin",1295},
-    {""},
-#line 1762 "../tests/keys"
-    {"startStep",1757},
-    {""}, {""},
-#line 1037 "../tests/keys"
-    {"marsStream",1032},
-#line 768 "../tests/keys"
-    {"grid",763},
-#line 1495 "../tests/keys"
-    {"realPart",1490},
-#line 812 "../tests/keys"
-    {"identifier",807},
-    {""},
-#line 1414 "../tests/keys"
-    {"platform",1409},
-    {""},
-#line 42 "../tests/keys"
-    {"Dstart",37},
-#line 34 "../tests/keys"
-    {"Di",29},
-    {""},
-#line 658 "../tests/keys"
-    {"endStep",653},
-    {""}, {""}, {""}, {""},
-#line 630 "../tests/keys"
-    {"eight",625},
-#line 673 "../tests/keys"
-    {"epsPoint",668},
-    {""}, {""},
-#line 633 "../tests/keys"
-    {"eleven",628},
-#line 563 "../tests/keys"
-    {"dataStream",558},
-    {""}, {""}, {""},
-#line 1016 "../tests/keys"
-    {"marsDir",1011},
-    {""}, {""},
-#line 750 "../tests/keys"
-    {"g",745},
-    {""},
-#line 1290 "../tests/keys"
-    {"operStream",1285},
-#line 328 "../tests/keys"
-    {"categories",323},
-    {""}, {""},
-#line 1045 "../tests/keys"
-    {"masterDir",1040},
-    {""},
-#line 555 "../tests/keys"
-    {"dataDate",550},
-#line 1056 "../tests/keys"
-    {"maximum",1051},
-    {""}, {""},
-#line 801 "../tests/keys"
-    {"hundred",796},
-    {""}, {""},
-#line 1247 "../tests/keys"
-    {"offset",1242},
-#line 1949 "../tests/keys"
-    {"varno",1944},
-    {""},
-#line 1519 "../tests/keys"
-    {"representationMode",1514},
-    {""},
-#line 1824 "../tests/keys"
-    {"thousand",1819},
-#line 274 "../tests/keys"
-    {"anoffset",269},
-    {""}, {""},
-#line 1245 "../tests/keys"
-    {"oceanStream",1240},
-#line 1928 "../tests/keys"
-    {"upperLimit",1923},
-    {""},
-#line 1522 "../tests/keys"
-    {"reserved",1517},
-#line 713 "../tests/keys"
-    {"fcperiod",708},
-#line 927 "../tests/keys"
-    {"levels",922},
-    {""},
-#line 730 "../tests/keys"
-    {"flags",725},
-#line 179 "../tests/keys"
-    {"P",174},
-#line 2009 "../tests/keys"
-    {"xLast",2004},
-#line 1055 "../tests/keys"
-    {"max",1050},
-    {""},
-#line 1017 "../tests/keys"
-    {"marsDomain",1012},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 814 "../tests/keys"
-    {"ifsParam",809},
-#line 632 "../tests/keys"
-    {"elevation",627},
-    {""}, {""}, {""},
-#line 926 "../tests/keys"
-    {"levelist",921},
-    {""},
-#line 1937 "../tests/keys"
-    {"values",1932},
-    {""},
-#line 923 "../tests/keys"
-    {"level",918},
-#line 1033 "../tests/keys"
-    {"marsQuantile",1028},
-#line 615 "../tests/keys"
-    {"dx",610},
+#line 1200 "keys"
+    {"n",1195},
+    {""},
+#line 1914 "keys"
+    {"t",1909},
+#line 1209 "keys"
+    {"nd",1204},
+#line 1923 "keys"
+    {"td",1918},
+#line 1226 "keys"
+    {"nt",1221},
+#line 1212 "keys"
+    {"nnn",1207},
+#line 1203 "keys"
+    {"na",1198},
+#line 662 "keys"
+    {"ed",657},
+    {""}, {""}, {""},
+#line 1096 "keys"
+    {"m",1091},
+    {""}, {""},
+#line 1748 "keys"
+    {"sd",1743},
+#line 580 "keys"
+    {"data",575},
+#line 1171 "keys"
+    {"min",1166},
+    {""},
+#line 352 "keys"
+    {"cat",347},
+    {""}, {""},
+#line 597 "keys"
+    {"date",592},
+    {""},
+#line 884 "keys"
+    {"ident",879},
+#line 1372 "keys"
+    {"one",1367},
+    {""},
+#line 1204 "keys"
+    {"name",1199},
+    {""},
+#line 1985 "keys"
+    {"two",1980},
+    {""},
+#line 1949 "keys"
+    {"time",1944},
     {""}, {""}, {""}, {""}, {""},
-#line 595 "../tests/keys"
-    {"diagnostic",590},
-    {""},
-#line 1004 "../tests/keys"
-    {"lowerLimit",999},
-#line 553 "../tests/keys"
-    {"crcrlf",548},
-    {""}, {""},
-#line 1826 "../tests/keys"
-    {"threshold",1821},
-    {""},
-#line 278 "../tests/keys"
-    {"average",273},
-#line 1986 "../tests/keys"
-    {"windPresent",1981},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1051 "../tests/keys"
-    {"matchSort",1046},
-#line 567 "../tests/keys"
-    {"dataValues",562},
-    {""},
-#line 972 "../tests/keys"
-    {"longitude",967},
-#line 712 "../tests/keys"
-    {"fcmonth",707},
-    {""},
-#line 696 "../tests/keys"
-    {"expver",691},
-#line 562 "../tests/keys"
-    {"dataSelection",557},
-#line 500 "../tests/keys"
-    {"conceptDir",495},
-    {""},
-#line 1987 "../tests/keys"
-    {"windSpeed",1982},
-#line 1001 "../tests/keys"
-    {"longitudes",996},
-#line 1310 "../tests/keys"
-    {"padding",1305},
+#line 646 "keys"
+    {"domain",641},
+    {""}, {""}, {""}, {""},
+#line 1167 "keys"
+    {"metadata",1162},
+#line 663 "keys"
+    {"edition",658},
+#line 533 "keys"
+    {"const",528},
+    {""}, {""},
+#line 1838 "keys"
+    {"sort",1833},
+    {""},
+#line 1208 "keys"
+    {"names",1203},
+#line 1749 "keys"
+    {"second",1744},
+    {""},
+#line 559 "keys"
+    {"core",554},
+#line 703 "keys"
+    {"enorm",698},
+    {""},
+#line 368 "keys"
+    {"centre",363},
+#line 1099 "keys"
+    {"mars",1094},
+    {""}, {""},
+#line 1769 "keys"
+    {"section",1764},
+#line 708 "keys"
+    {"eps",703},
+    {""},
+#line 1887 "keys"
+    {"stream",1882},
+    {""}, {""}, {""},
+#line 630 "keys"
+    {"dimension",625},
+#line 938 "keys"
+    {"iteration",933},
+#line 1477 "keys"
+    {"param",1472},
+#line 1598 "keys"
+    {"rectime",1593},
+    {""}, {""}, {""},
+#line 633 "keys"
+    {"direction",628},
+    {""},
+#line 1390 "keys"
+    {"opttime",1385},
+#line 1854 "keys"
+    {"spare",1849},
+#line 1878 "keys"
+    {"step",1873},
+#line 1384 "keys"
+    {"oper",1379},
+#line 1513 "keys"
+    {"points",1508},
+#line 841 "keys"
+    {"grid",836},
+    {""},
+#line 1523 "keys"
+    {"present",1518},
+    {""}, {""},
+#line 295 "keys"
+    {"assertion",290},
+#line 714 "keys"
+    {"error",709},
+    {""}, {""},
+#line 996 "keys"
+    {"leadtime",991},
+#line 1582 "keys"
+    {"range",1577},
+    {""}, {""}, {""}, {""}, {""},
+#line 117 "keys"
+    {"Latin",112},
+    {""},
+#line 390 "keys"
+    {"class",385},
+#line 1876 "keys"
+    {"statistics",1871},
+#line 1395 "keys"
+    {"origin",1390},
+    {""},
+#line 822 "keys"
+    {"g",817},
+#line 1960 "keys"
+    {"total",1955},
+#line 564 "keys"
+    {"correction",559},
+#line 1576 "keys"
+    {"radials",1571},
+#line 1510 "keys"
+    {"pl",1505},
+    {""}, {""},
+#line 1519 "keys"
+    {"precision",1514},
+#line 1186 "keys"
+    {"model",1181},
+    {""}, {""}, {""},
+#line 1492 "keys"
+    {"partitions",1487},
+#line 1480 "keys"
+    {"parameter",1475},
+    {""},
+#line 1553 "keys"
+    {"process",1548},
+    {""},
+#line 573 "keys"
+    {"count",568},
+    {""},
+#line 1170 "keys"
+    {"million",1165},
+#line 1976 "keys"
+    {"true",1971},
+    {""},
+#line 1173 "keys"
+    {"minute",1168},
+#line 1215 "keys"
+    {"normal",1210},
+    {""},
+#line 1487 "keys"
+    {"parameters",1482},
+    {""},
+#line 2029 "keys"
+    {"units",2024},
+#line 628 "keys"
+    {"diagnostic",623},
+#line 1604 "keys"
+    {"refdate",1599},
+    {""},
+#line 1958 "keys"
+    {"timerepres",1953},
+#line 112 "keys"
+    {"Lap",107},
+    {""},
+#line 861 "keys"
+    {"hdate",856},
+#line 639 "keys"
+    {"discipline",634},
+    {""},
+#line 1172 "keys"
+    {"minimum",1167},
+    {""}, {""},
+#line 1877 "keys"
+    {"status",1872},
+#line 787 "keys"
+    {"file",782},
+    {""}, {""}, {""},
+#line 1168 "keys"
+    {"method",1163},
+#line 1577 "keys"
+    {"radius",1572},
+#line 1028 "keys"
+    {"local",1023},
+    {""}, {""},
+#line 1407 "keys"
+    {"padding",1402},
+#line 353 "keys"
+    {"categories",348},
+#line 1936 "keys"
+    {"three",1931},
+#line 780 "keys"
+    {"false",775},
+#line 832 "keys"
+    {"gg",827},
+    {""}, {""}, {""},
+#line 902 "keys"
+    {"instrument",897},
+#line 387 "keys"
+    {"char",382},
+#line 1798 "keys"
+    {"section8",1793},
+#line 887 "keys"
+    {"identifier",882},
+    {""},
+#line 1554 "keys"
+    {"product",1549},
+#line 963 "keys"
+    {"latitude",958},
+    {""},
+#line 1605 "keys"
+    {"reference",1600},
+#line 784 "keys"
+    {"fcperiod",779},
+    {""}, {""},
+#line 1506 "keys"
+    {"phase",1501},
+#line 127 "keys"
+    {"LoV",122},
+#line 929 "keys"
+    {"isSens",924},
+    {""}, {""}, {""},
+#line 1886 "keys"
+    {"stepZero",1881},
+    {""},
+#line 592 "keys"
+    {"dataStream",587},
+#line 2107 "keys"
+    {"windSpeed",2102},
+#line 531 "keys"
+    {"consensus",526},
+#line 36 "keys"
+    {"Di",31},
+    {""}, {""},
+#line 666 "keys"
+    {"eight",661},
+    {""},
+#line 993 "keys"
+    {"latitudes",988},
+    {""}, {""}, {""},
+#line 695 "keys"
+    {"endStep",690},
+#line 1091 "keys"
+    {"lowerLimit",1086},
+    {""}, {""},
+#line 2065 "keys"
+    {"varno",2060},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1342 "keys"
+    {"offset",1337},
+#line 1511 "keys"
+    {"platform",1506},
+    {""}, {""},
+#line 1826 "keys"
+    {"signature",1821},
+#line 802 "keys"
+    {"flags",797},
+#line 583 "keys"
+    {"dataDate",578},
+#line 1124 "keys"
+    {"marsStream",1119},
+#line 293 "keys"
+    {"anoffset",288},
+    {""},
+#line 2068 "keys"
+    {"version",2063},
+    {""}, {""}, {""},
+#line 44 "keys"
+    {"Dstart",39},
+#line 669 "keys"
+    {"eleven",664},
+    {""}, {""}, {""},
+#line 1340 "keys"
+    {"oceanStream",1335},
+#line 385 "keys"
+    {"channel",380},
+#line 1870 "keys"
+    {"startStep",1865},
+#line 1123 "keys"
+    {"marsStep",1118},
+#line 1059 "keys"
+    {"longitude",1054},
+#line 1621 "keys"
+    {"reserved",1616},
+    {""},
+#line 1385 "keys"
+    {"operStream",1380},
+#line 596 "keys"
+    {"dataValues",591},
+    {""},
+#line 797 "keys"
+    {"flag",792},
+    {""}, {""},
+#line 1225 "keys"
+    {"notDecoded",1220},
+#line 876 "keys"
+    {"hundred",871},
+    {""},
+#line 587 "keys"
+    {"dataOrigin",582},
+#line 668 "keys"
+    {"elevation",663},
+    {""}, {""}, {""},
+#line 1935 "keys"
+    {"thousand",1930},
+    {""}, {""},
+#line 870 "keys"
+    {"hour",865},
+    {""},
+#line 1088 "keys"
+    {"longitudes",1083},
+#line 710 "keys"
+    {"epsPoint",705},
+#line 1193 "keys"
+    {"month",1188},
+#line 2106 "keys"
+    {"windPresent",2101},
+#line 298 "keys"
+    {"average",293},
+    {""},
+#line 1104 "keys"
+    {"marsDomain",1099},
+    {""}, {""}, {""},
+#line 1103 "keys"
+    {"marsDir",1098},
+#line 302 "keys"
+    {"avg",297},
+#line 1119 "keys"
+    {"marsParam",1114},
+    {""},
+#line 578 "keys"
+    {"crcrlf",573},
+    {""}, {""}, {""}, {""},
+#line 591 "keys"
+    {"dataSelection",586},
+    {""}, {""},
+#line 1132 "keys"
+    {"masterDir",1127},
+#line 1594 "keys"
+    {"realPart",1589},
+    {""},
+#line 803 "keys"
+    {"floatVal",798},
+    {""}, {""},
+#line 1011 "keys"
+    {"levels",1006},
+#line 1010 "keys"
+    {"levelist",1005},
+#line 2044 "keys"
+    {"upperLimit",2039},
+    {""}, {""}, {""},
+#line 1979 "keys"
+    {"truncateLaplacian",1974},
+    {""}, {""}, {""},
+#line 1618 "keys"
+    {"representationMode",1613},
+    {""},
+#line 1007 "keys"
+    {"level",1002},
+    {""},
+#line 525 "keys"
+    {"conceptDir",520},
+#line 665 "keys"
+    {"efiOrder",660},
+#line 1138 "keys"
+    {"matchSort",1133},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1466 "../tests/keys"
-    {"pv",1461},
+#line 1389 "keys"
+    {"optionalData",1384},
+    {""}, {""},
+#line 2096 "keys"
+    {"windDirection",2091},
+    {""}, {""},
+#line 283 "keys"
+    {"aerosolpacking",278},
+#line 1925 "keys"
+    {"temperature",1920},
+#line 306 "keys"
+    {"band",301},
+    {""}, {""}, {""}, {""}, {""},
+#line 1049 "keys"
+    {"localSecond",1044},
+    {""}, {""}, {""},
+#line 889 "keys"
+    {"ifsParam",884},
+    {""},
+#line 2053 "keys"
+    {"values",2048},
+    {""}, {""},
+#line 1035 "keys"
+    {"localDir",1030},
+#line 1613 "keys"
+    {"referenceValue",1608},
+#line 1563 "keys"
+    {"pv",1558},
+#line 1937 "keys"
+    {"threshold",1932},
+#line 625 "keys"
+    {"deletePV",620},
+#line 785 "keys"
+    {"fgDate",780},
+    {""}, {""},
+#line 518 "keys"
+    {"coefsSecond",513},
+    {""}, {""},
+#line 2129 "keys"
+    {"xLast",2124},
+    {""},
+#line 814 "keys"
+    {"forecastperiod",809},
+    {""}, {""},
+#line 194 "keys"
+    {"P",189},
+    {""}, {""},
+#line 674 "keys"
+    {"endDescriptors",669},
+    {""},
+#line 783 "keys"
+    {"fcmonth",778},
+#line 1804 "keys"
+    {"sectionPosition",1799},
+    {""},
+#line 1006 "keys"
+    {"lev",1001},
+    {""}, {""},
+#line 1211 "keys"
+    {"nlev",1206},
+    {""},
+#line 1587 "keys"
+    {"rdbtime",1582},
+    {""}, {""},
+#line 711 "keys"
+    {"epsStatistics",706},
+    {""}, {""},
+#line 1606 "keys"
+    {"referenceDate",1601},
+    {""}, {""},
+#line 388 "keys"
+    {"charValues",383},
+    {""}, {""}, {""}, {""},
+#line 1143 "keys"
+    {"maximum",1138},
+#line 927 "keys"
+    {"isSatellite",922},
+#line 1959 "keys"
+    {"topLevel",1954},
+#line 1120 "keys"
+    {"marsQuantile",1115},
+#line 926 "keys"
+    {"isOctahedral",921},
+#line 1115 "keys"
+    {"marsLevel",1110},
+    {""}, {""}, {""}, {""},
+#line 335 "keys"
+    {"bitmap",330},
+    {""},
+#line 2086 "keys"
+    {"waveDomain",2081},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 759 "../tests/keys"
-    {"gg",754},
-#line 629 "../tests/keys"
-    {"efiOrder",624},
-    {""}, {""},
-#line 950 "../tests/keys"
-    {"localDir",945},
-    {""},
-#line 674 "../tests/keys"
-    {"epsStatistics",669},
-#line 846 "../tests/keys"
-    {"isSatellite",841},
-    {""},
-#line 698 "../tests/keys"
-    {"extraDim",693},
-    {""}, {""},
-#line 638 "../tests/keys"
-    {"endDescriptors",633},
+#line 586 "keys"
+    {"dataLength",581},
+#line 516 "keys"
+    {"codedValues",511},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1830 "keys"
+    {"siteLatitude",1825},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1753 "keys"
+    {"secondLatitude",1748},
+    {""}, {""}, {""},
+#line 1114 "keys"
+    {"marsLatitude",1109},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1874 "keys"
+    {"statisticalProcess",1869},
+#line 1361 "keys"
+    {"offsetSection0",1356},
     {""},
-#line 1865 "../tests/keys"
-    {"truncateLaplacian",1860},
-    {""}, {""}, {""}, {""},
-#line 725 "../tests/keys"
-    {"flag",720},
+#line 910 "keys"
+    {"internalVersion",905},
     {""}, {""}, {""},
-#line 922 "../tests/keys"
-    {"lev",917},
+#line 109 "keys"
+    {"LaD",104},
     {""}, {""},
-#line 1121 "../tests/keys"
-    {"nlev",1116},
-    {""}, {""}, {""}, {""}, {""},
-#line 363 "../tests/keys"
-    {"charValues",358},
-    {""},
-#line 558 "../tests/keys"
-    {"dataOrigin",553},
-    {""}, {""}, {""},
-#line 1976 "../tests/keys"
-    {"windDirection",1971},
-#line 695 "../tests/keys"
-    {"expoffset",690},
-#line 1028 "../tests/keys"
-    {"marsLevel",1023},
-    {""}, {""}, {""}, {""},
-#line 1135 "../tests/keys"
-    {"notDecoded",1130},
-    {""}, {""},
-#line 282 "../tests/keys"
-    {"avg",277},
-    {""},
-#line 742 "../tests/keys"
-    {"forecastperiod",737},
-    {""}, {""},
-#line 344 "../tests/keys"
-    {"centreDescription",339},
-#line 714 "../tests/keys"
-    {"fgDate",709},
-    {""},
-#line 731 "../tests/keys"
-    {"floatVal",726},
-    {""},
-#line 1294 "../tests/keys"
-    {"optionalData",1289},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1846 "../tests/keys"
-    {"topLevel",1841},
-#line 182 "../tests/keys"
-    {"PLPresent",177},
-    {""}, {""},
-#line 1507 "../tests/keys"
-    {"referenceDate",1502},
-#line 1699 "../tests/keys"
-    {"sectionPosition",1694},
-#line 1027 "../tests/keys"
-    {"marsLatitude",1022},
-    {""}, {""},
-#line 740 "../tests/keys"
-    {"forecastSteps",735},
-    {""}, {""}, {""}, {""},
-#line 557 "../tests/keys"
-    {"dataLength",552},
-#line 1725 "../tests/keys"
-    {"siteLatitude",1720},
-#line 43 "../tests/keys"
-    {"Dx",38},
-#line 1513 "../tests/keys"
-    {"referenceStep",1508},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1514 "../tests/keys"
-    {"referenceValue",1509},
-#line 264 "../tests/keys"
-    {"aerosolpacking",259},
-    {""}, {""},
-#line 184 "../tests/keys"
-    {"PVPresent",179},
-    {""}, {""},
-#line 115 "../tests/keys"
-    {"LoV",110},
-#line 314 "../tests/keys"
-    {"bitmap",309},
-#line 1521 "../tests/keys"
-    {"representativeMember",1516},
-#line 1468 "../tests/keys"
-    {"qfe",1463},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1966 "../tests/keys"
-    {"waveDomain",1961},
-#line 1035 "../tests/keys"
-    {"marsStartStep",1030},
-    {""}, {""}, {""}, {""},
-#line 1648 "../tests/keys"
-    {"secondLatitude",1643},
-#line 1595 "../tests/keys"
-    {"satelliteSeries",1590},
-    {""}, {""},
-#line 97 "../tests/keys"
-    {"LaD",92},
-#line 286 "../tests/keys"
-    {"band",281},
-    {""}, {""}, {""},
-#line 1490 "../tests/keys"
-    {"rdbtime",1485},
-#line 1712 "../tests/keys"
-    {"sequences",1707},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1757 "../tests/keys"
-    {"standardParallel",1752},
-#line 1477 "../tests/keys"
-    {"quantile",1472},
-    {""},
-#line 1137 "../tests/keys"
-    {"number",1132},
-    {""}, {""}, {""}, {""},
-#line 1471 "../tests/keys"
-    {"qnh",1466},
-#line 1266 "../tests/keys"
-    {"offsetSection0",1261},
-    {""},
-#line 1120 "../tests/keys"
-    {"neitherPresent",1115},
-    {""}, {""},
-#line 910 "../tests/keys"
-    {"latitudesList",905},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 963 "../tests/keys"
-    {"localSecond",958},
-#line 499 "../tests/keys"
-    {"computeStatistics",494},
-    {""},
-#line 1766 "../tests/keys"
-    {"statisticalProcess",1761},
-#line 584 "../tests/keys"
-    {"defaultParameter",579},
-    {""}, {""}, {""},
-#line 830 "../tests/keys"
-    {"internalVersion",825},
-#line 592 "../tests/keys"
-    {"deletePV",587},
-    {""},
-#line 736 "../tests/keys"
-    {"forecastPeriod",731},
-    {""}, {""},
-#line 817 "../tests/keys"
-    {"indicatorOfParameter",812},
-#line 720 "../tests/keys"
-    {"firstLatitude",715},
-    {""},
-#line 676 "../tests/keys"
-    {"epsStatisticsPoint",671},
-    {""},
-#line 1238 "../tests/keys"
-    {"numericValues",1233},
-    {""},
-#line 1767 "../tests/keys"
-    {"statisticalProcessesList",1762},
-    {""},
-#line 608 "../tests/keys"
-    {"distinctLatitudes",603},
-#line 493 "../tests/keys"
-    {"coefsSecond",488},
-    {""},
-#line 1274 "../tests/keys"
-    {"offsetSection8",1269},
-    {""}, {""},
-#line 823 "../tests/keys"
-    {"instrumentIdentifier",818},
+#line 843 "keys"
+    {"gridDefinition",838},
     {""},
-#line 955 "../tests/keys"
-    {"localLatitude",950},
-    {""}, {""},
-#line 872 "../tests/keys"
-    {"laplacianOperator",867},
-    {""}, {""}, {""},
-#line 1002 "../tests/keys"
-    {"longitudesList",997},
+#line 893 "keys"
+    {"indicatorOfParameter",888},
+#line 812 "keys"
+    {"forecastSteps",807},
+#line 1089 "keys"
+    {"longitudesList",1084},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 888 "keys"
+    {"ieeeFloats",883},
+#line 1227 "keys"
+    {"number",1222},
+    {""}, {""},
+#line 199 "keys"
+    {"PVPresent",194},
+    {""}, {""},
+#line 1875 "keys"
+    {"statisticalProcessesList",1870},
+    {""}, {""},
+#line 369 "keys"
+    {"centreDescription",364},
+    {""}, {""},
+#line 1612 "keys"
+    {"referenceStep",1607},
+#line 994 "keys"
+    {"latitudesList",989},
+    {""}, {""}, {""},
+#line 524 "keys"
+    {"computeStatistics",519},
+    {""},
+#line 734 "keys"
+    {"expver",729},
+    {""},
+#line 736 "keys"
+    {"extraDim",731},
+    {""}, {""},
+#line 651 "keys"
+    {"dx",646},
+    {""},
+#line 1865 "keys"
+    {"standardParallel",1860},
+    {""}, {""}, {""}, {""},
+#line 1033 "keys"
+    {"localDefinition",1028},
+#line 733 "keys"
+    {"expoffset",728},
+    {""}, {""},
+#line 1142 "keys"
+    {"max",1137},
+    {""}, {""},
+#line 197 "keys"
+    {"PLPresent",192},
+    {""},
+#line 1122 "keys"
+    {"marsStartStep",1117},
+#line 808 "keys"
+    {"forecastPeriod",803},
+#line 886 "keys"
+    {"identificationOfOriginatingGeneratingCentre",881},
+#line 1078 "keys"
+    {"longitudeOfStretchingPole",1073},
+    {""}, {""},
+#line 584 "keys"
+    {"dataFlag",579},
+#line 1698 "keys"
+    {"satelliteSeries",1693},
+    {""}, {""}, {""},
+#line 833 "keys"
+    {"global",828},
+#line 1831 "keys"
+    {"siteLongitude",1826},
+#line 517 "keys"
+    {"coefsFirst",512},
+    {""},
+#line 804 "keys"
+    {"floatValues",799},
+    {""},
+#line 1624 "keys"
+    {"reservedOctet",1619},
+    {""},
+#line 558 "keys"
+    {"coordinatesPresent",553},
+#line 1116 "keys"
+    {"marsLevelist",1111},
+#line 1079 "keys"
+    {"longitudeOfStretchingPoleInDegrees",1074},
+#line 358 "keys"
+    {"ccsdsFlags",353},
+#line 211 "keys"
+    {"SecondLatitude",206},
+#line 1117 "keys"
+    {"marsLongitude",1112},
+    {""}, {""},
+#line 1369 "keys"
+    {"offsetSection8",1364},
+    {""}, {""},
+#line 1040 "keys"
+    {"localLatitude",1035},
+    {""}, {""}, {""},
+#line 359 "keys"
+    {"ccsdsRsi",354},
+    {""}, {""}, {""}, {""},
+#line 1921 "keys"
+    {"tablesVersion",1916},
+    {""},
+#line 641 "keys"
+    {"distinctLatitudes",636},
+#line 1043 "keys"
+    {"localLongitude",1038},
+    {""}, {""},
+#line 792 "keys"
+    {"firstLatitude",787},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 789 "keys"
+    {"firstDimension",784},
+#line 512 "keys"
+    {"codeFigure",507},
+#line 1030 "keys"
+    {"localDecimalScaleFactor",1025},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 2031 "keys"
+    {"unitsDecimalScaleFactor",2026},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 394 "keys"
+    {"climatologicalRegime",389},
+#line 1121 "keys"
+    {"marsRange",1116},
+#line 1180 "keys"
+    {"missingValue",1175},
+#line 852 "keys"
+    {"groupSplitting",847},
+    {""}, {""},
+#line 1549 "keys"
+    {"probPoint",1544},
+#line 1891 "keys"
+    {"stringValues",1886},
+    {""},
+#line 1881 "keys"
+    {"stepRange",1876},
+    {""}, {""},
+#line 1620 "keys"
+    {"representativeMember",1615},
+    {""}, {""},
+#line 909 "keys"
+    {"integerValues",904},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 2033 "keys"
+    {"unitsFactor",2028},
+#line 713 "keys"
+    {"epsStatisticsPoint",708},
+    {""}, {""}, {""},
+#line 1719 "keys"
+    {"scaledDirections",1714},
+    {""},
+#line 1037 "keys"
+    {"localFlag",1032},
+#line 617 "keys"
+    {"defaultParameter",612},
+    {""}, {""},
+#line 18 "keys"
+    {"Adelta",13},
+#line 287 "keys"
+    {"angleDivisor",282},
     {""}, {""}, {""},
-#line 829 "../tests/keys"
-    {"integerValues",824},
-    {""}, {""}, {""}, {""},
-#line 1525 "../tests/keys"
-    {"reservedOctet",1520},
-#line 491 "../tests/keys"
-    {"codedValues",486},
-    {""},
-#line 1092 "../tests/keys"
-    {"missingValue",1087},
-    {""},
-#line 1030 "../tests/keys"
-    {"marsLongitude",1025},
+#line 1092 "keys"
+    {"lowerRange",1087},
     {""}, {""}, {""}, {""}, {""},
-#line 702 "../tests/keys"
-    {"extraValues",697},
+#line 2128 "keys"
+    {"xFirst",2123},
     {""}, {""},
-#line 1726 "../tests/keys"
-    {"siteLongitude",1721},
-    {""}, {""},
-#line 717 "../tests/keys"
-    {"firstDimension",712},
-#line 1029 "../tests/keys"
-    {"marsLevelist",1024},
-    {""}, {""},
-#line 948 "../tests/keys"
-    {"localDefinition",943},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1473 "../tests/keys"
-    {"qnhPresent",1468},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 732 "../tests/keys"
-    {"floatValues",727},
-    {""},
-#line 770 "../tests/keys"
-    {"gridDefinition",765},
-#line 196 "../tests/keys"
-    {"SecondLatitude",191},
+#line 962 "keys"
+    {"latLonValues",957},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1983 "keys"
+    {"tubeDomain",1978},
+#line 1333 "keys"
+    {"numericValues",1328},
+    {""}, {""},
+#line 693 "keys"
+    {"endOfProduct",688},
+#line 829 "keys"
+    {"generatingProcessIdentificationNumber",824},
+    {""}, {""},
+#line 830 "keys"
+    {"generatingProcessIdentifier",825},
+#line 740 "keys"
+    {"extraValues",735},
+    {""}, {""},
+#line 903 "keys"
+    {"instrumentIdentifier",898},
     {""}, {""}, {""}, {""}, {""},
-#line 533 "../tests/keys"
-    {"coordinatesPresent",528},
+#line 847 "keys"
+    {"gridDescriptionSectionPresent",842},
+#line 210 "keys"
+    {"SPD",205},
+#line 1975 "keys"
+    {"treatmentOfMissingData",1970},
+    {""}, {""},
+#line 1210 "keys"
+    {"neitherPresent",1205},
     {""},
-#line 268 "../tests/keys"
-    {"angleDivisor",263},
-#line 1635 "../tests/keys"
-    {"scanPosition",1630},
-#line 1469 "../tests/keys"
-    {"qfePresent",1464},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 45 "keys"
+    {"Dx",40},
     {""},
-#line 195 "../tests/keys"
-    {"SPD",190},
+#line 341 "keys"
+    {"bottomLevel",336},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 916 "../tests/keys"
-    {"lengthDescriptors",911},
-    {""}, {""},
-#line 958 "../tests/keys"
-    {"localLongitude",953},
-#line 1260 "../tests/keys"
-    {"offsetDescriptors",1255},
-    {""},
-#line 906 "../tests/keys"
-    {"latitudeSexagesimal",901},
-#line 1452 "../tests/keys"
-    {"probPoint",1447},
     {""}, {""}, {""}, {""}, {""},
-#line 1721 "../tests/keys"
-    {"short_name",1716},
-    {""},
-#line 1915 "../tests/keys"
-    {"unitsDecimalScaleFactor",1910},
-    {""}, {""},
-#line 701 "../tests/keys"
-    {"extraLocalSectionPresent",696},
-#line 1861 "../tests/keys"
-    {"treatmentOfMissingData",1856},
-    {""},
-#line 1716 "../tests/keys"
-    {"setLocalDefinition",1711},
-    {""}, {""}, {""},
-#line 760 "../tests/keys"
-    {"global",755},
-    {""}, {""}, {""},
-#line 1503 "../tests/keys"
-    {"rectimeSecond",1498},
-#line 1812 "../tests/keys"
-    {"tablesVersion",1807},
-    {""}, {""}, {""},
-#line 1707 "../tests/keys"
-    {"section_8",1702},
-    {""}, {""}, {""},
-#line 1615 "../tests/keys"
-    {"scaledDirections",1610},
+#line 739 "keys"
+    {"extraLocalSectionPresent",734},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 495 "../tests/keys"
-    {"complexPacking",490},
-    {""}, {""},
-#line 878 "../tests/keys"
-    {"latLonValues",873},
-    {""}, {""},
-#line 359 "../tests/keys"
-    {"changingPrecision",354},
+#line 706 "keys"
+    {"ensembleSize",701},
     {""},
-#line 873 "../tests/keys"
-    {"laplacianOperatorIsSet",868},
-#line 775 "../tests/keys"
-    {"gridPointPosition",770},
-    {""}, {""}, {""},
-#line 964 "../tests/keys"
-    {"localSection",959},
-    {""},
-#line 2022 "../tests/keys"
-    {"zero",2017},
-    {""}, {""},
-#line 945 "../tests/keys"
-    {"localDecimalScaleFactor",940},
-#line 1715 "../tests/keys"
-    {"setDecimalPrecision",1710},
-#line 813 "../tests/keys"
-    {"ieeeFloats",808},
-    {""},
-#line 669 "../tests/keys"
-    {"ensembleSize",664},
+#line 915 "keys"
+    {"isAuto",910},
     {""},
-#line 483 "../tests/keys"
-    {"clusteringMethod",478},
-#line 334 "../tests/keys"
-    {"ccsdsRsi",329},
-#line 1869 "../tests/keys"
-    {"tubeDomain",1864},
-#line 92 "../tests/keys"
-    {"KS",87},
+#line 849 "keys"
+    {"gridPointPosition",844},
+#line 817 "keys"
+    {"freeFormData",812},
+#line 526 "keys"
+    {"conceptsLocalDirAll",521},
     {""},
-#line 700 "../tests/keys"
-    {"extraLocalSectionNumber",695},
-#line 656 "../tests/keys"
-    {"endOfProduct",651},
-    {""},
-#line 1034 "../tests/keys"
-    {"marsRange",1029},
-    {""},
-#line 1773 "../tests/keys"
-    {"stepRange",1768},
+#line 370 "keys"
+    {"centreForLocal",365},
     {""}, {""},
-#line 1134 "../tests/keys"
-    {"nosigPresent",1129},
-#line 970 "../tests/keys"
-    {"local_use",965},
+#line 863 "keys"
+    {"heightLevelName",858},
     {""}, {""},
-#line 368 "../tests/keys"
-    {"climatologicalRegime",363},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""},
-#line 275 "../tests/keys"
-    {"applicationIdentifier",270},
+#line 1819 "keys"
+    {"setDecimalPrecision",1814},
     {""}, {""},
-#line 778 "../tests/keys"
-    {"groupSplitting",773},
-#line 2008 "../tests/keys"
-    {"xFirst",2003},
-#line 1301 "../tests/keys"
-    {"originalParameterNumber",1296},
-#line 2017 "../tests/keys"
-    {"year",2012},
+#line 1165 "keys"
+    {"meaningOfVerticalCoordinate",1160},
+#line 2045 "keys"
+    {"upperRange",2040},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 520 "keys"
+    {"complexPacking",515},
     {""}, {""}, {""},
-#line 1873 "../tests/keys"
-    {"type",1868},
-#line 785 "../tests/keys"
-    {"gts_header",780},
+#line 384 "keys"
+    {"changingPrecision",379},
+    {""}, {""},
+#line 1355 "keys"
+    {"offsetDescriptors",1350},
     {""},
-#line 501 "../tests/keys"
-    {"conceptsLocalDirAll",496},
-    {""}, {""}, {""}, {""},
-#line 1054 "../tests/keys"
-    {"matrixOfValues",1049},
-    {""}, {""}, {""}, {""}, {""},
-#line 1803 "../tests/keys"
-    {"system",1798},
-    {""}, {""}, {""},
-#line 1133 "../tests/keys"
-    {"northernLatitudeOfDomain",1128},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1834 "../tests/keys"
-    {"tigge_name",1829},
-#line 581 "../tests/keys"
-    {"decimalPrecision",576},
-    {""},
-#line 1929 "../tests/keys"
-    {"upperRange",1924},
-#line 849 "../tests/keys"
-    {"is_tigge",844},
-    {""}, {""},
-#line 991 "../tests/keys"
-    {"longitudeOfStretchingPole",986},
-#line 811 "../tests/keys"
-    {"identificationOfOriginatingGeneratingCentre",806},
-#line 492 "../tests/keys"
-    {"coefsFirst",487},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1467 "../tests/keys"
-    {"pvlLocation",1462},
-#line 498 "../tests/keys"
-    {"computeLaplacianOperator",493},
-#line 992 "../tests/keys"
-    {"longitudeOfStretchingPoleInDegrees",987},
-    {""},
-#line 757 "../tests/keys"
-    {"generatingProcessIdentifier",752},
-#line 1073 "../tests/keys"
-    {"meanSize",1068},
-    {""},
-#line 1832 "../tests/keys"
-    {"tiggeSection",1827},
-    {""}, {""}, {""}, {""},
-#line 756 "../tests/keys"
-    {"generatingProcessIdentificationNumber",751},
-    {""},
-#line 1917 "../tests/keys"
-    {"unitsFactor",1912},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1005 "../tests/keys"
-    {"lowerRange",1000},
+#line 1820 "keys"
+    {"setLocalDefinition",1815},
     {""}, {""}, {""}, {""}, {""},
-#line 871 "../tests/keys"
-    {"landtype",866},
-    {""},
-#line 1741 "../tests/keys"
-    {"southernLatitudeOfDomain",1736},
-    {""},
-#line 774 "../tests/keys"
-    {"gridDescriptionSectionPresent",769},
+#line 956 "keys"
+    {"laplacianOperator",951},
     {""}, {""}, {""},
-#line 281 "../tests/keys"
-    {"averagingPeriod",276},
+#line 1337 "keys"
+    {"observedData",1332},
     {""}, {""},
-#line 1666 "../tests/keys"
-    {"section0Pointer",1661},
-#line 802 "../tests/keys"
-    {"iDirectionIncrement",797},
+#line 921 "keys"
+    {"isConstant",916},
     {""}, {""},
-#line 320 "../tests/keys"
-    {"bottomLevel",315},
-    {""}, {""}, {""},
-#line 1013 "../tests/keys"
-    {"marsClass",1008},
-    {""}, {""}, {""},
-#line 333 "../tests/keys"
-    {"ccsdsFlags",328},
+#line 1373 "keys"
+    {"oneConstant",1368},
     {""},
-#line 91 "../tests/keys"
-    {"K",86},
-#line 841 "../tests/keys"
-    {"isConstant",836},
-    {""}, {""}, {""},
-#line 1695 "../tests/keys"
-    {"section8Pointer",1690},
-    {""}, {""}, {""}, {""},
-#line 2016 "../tests/keys"
-    {"yLast",2011},
-    {""}, {""}, {""}, {""},
-#line 784 "../tests/keys"
-    {"gts_ddhh00",779},
-#line 1458 "../tests/keys"
-    {"productDefinition",1453},
-#line 779 "../tests/keys"
-    {"groupSplittingMethodUsed",774},
+#line 1000 "keys"
+    {"lengthDescriptors",995},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1069 "keys"
+    {"longitudeOfIcosahedronPole",1064},
     {""}, {""},
-#line 273 "../tests/keys"
-    {"angularPrecision",268},
+#line 509 "keys"
+    {"clusteringMethod",504},
     {""}, {""}, {""}, {""},
-#line 1645 "../tests/keys"
-    {"secondDimension",1640},
+#line 853 "keys"
+    {"groupSplittingMethodUsed",848},
     {""}, {""}, {""}, {""},
-#line 485 "../tests/keys"
-    {"codeFigure",480},
-    {""}, {""}, {""}, {""},
-#line 556 "../tests/keys"
-    {"dataFlag",551},
-    {""},
-#line 575 "../tests/keys"
-    {"datumSize",570},
-#line 1749 "../tests/keys"
-    {"spatialProcessing",1744},
+#line 694 "keys"
+    {"endOfRange",689},
     {""},
-#line 614 "../tests/keys"
-    {"dummyc",609},
+#line 581 "keys"
+    {"dataAccessors",576},
+    {""}, {""}, {""},
+#line 1565 "keys"
+    {"qfe",1560},
+    {""}, {""}, {""},
+#line 342 "keys"
+    {"boustrophedonic",337},
+#line 102 "keys"
+    {"KS",97},
+#line 612 "keys"
+    {"decimalScaleFactor",607},
     {""}, {""}, {""}, {""}, {""},
-#line 1242 "../tests/keys"
-    {"observedData",1237},
-    {""}, {""}, {""}, {""},
-#line 321 "../tests/keys"
-    {"boustrophedonic",316},
-    {""}, {""}, {""}, {""},
-#line 1000 "../tests/keys"
-    {"longitudeSexagesimal",995},
-#line 1278 "../tests/keys"
-    {"oneConstant",1273},
-#line 354 "../tests/keys"
-    {"changeDecimalPrecision",349},
+#line 738 "keys"
+    {"extraLocalSectionNumber",733},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 906 "keys"
+    {"integerScaleFactor",901},
+#line 73 "keys"
+    {"FirstLatitude",68},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 721 "keys"
+    {"expandedDescriptors",716},
+    {""},
+#line 1100 "keys"
+    {"marsClass",1095},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""},
-#line 895 "../tests/keys"
-    {"latitudeOfSouthernPole",890},
+#line 184 "keys"
+    {"Ni",179},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 898 "keys"
+    {"inputDataPresentIndicator",893},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""},
-#line 596 "../tests/keys"
-    {"diagnosticNumber",591},
-    {""}, {""},
-#line 1385 "../tests/keys"
-    {"parameterCode",1380},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1421 "../tests/keys"
-    {"preProcessingParameter",1416},
+#line 186 "keys"
+    {"Nr",181},
+    {""},
+#line 1574 "keys"
+    {"quantile",1569},
+    {""}, {""}, {""}, {""},
+#line 301 "keys"
+    {"averagingPeriod",296},
+#line 1816 "keys"
+    {"sequences",1811},
     {""}, {""}, {""},
-#line 317 "../tests/keys"
-    {"bitsPerValue",312},
+#line 957 "keys"
+    {"laplacianOperatorIsSet",952},
+#line 1141 "keys"
+    {"matrixOfValues",1136},
+#line 289 "keys"
+    {"angleOfRotation",284},
+    {""}, {""},
+#line 1482 "keys"
+    {"parameterCode",1477},
+    {""}, {""},
+#line 1827 "keys"
+    {"significanceOfReferenceTime",1822},
     {""},
-#line 928 "../tests/keys"
-    {"levtype",923},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1459 "../tests/keys"
-    {"productDefinitionTemplateNumber",1454},
+#line 1223 "keys"
+    {"northernLatitudeOfDomain",1218},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 990 "keys"
+    {"latitudeSexagesimal",985},
+#line 1090 "keys"
+    {"longitudinalDirectionGridLength",1085},
     {""},
-#line 345 "../tests/keys"
-    {"centreForLocal",340},
+#line 1331 "keys"
+    {"numberOfVerticalPoints",1326},
     {""},
-#line 1078 "../tests/keys"
-    {"meaningOfVerticalCoordinate",1073},
+#line 180 "keys"
+    {"NV",175},
     {""}, {""},
-#line 1296 "../tests/keys"
-    {"orderOfSPD",1291},
-#line 982 "../tests/keys"
-    {"longitudeOfIcosahedronPole",977},
-    {""}, {""}, {""}, {""}, {""},
-#line 585 "../tests/keys"
-    {"defaultSequence",580},
-    {""}, {""}, {""}, {""},
-#line 1003 "../tests/keys"
-    {"longitudinalDirectionGridLength",998},
-    {""}, {""}, {""},
-#line 1022 "../tests/keys"
-    {"marsGrid",1017},
-#line 565 "../tests/keys"
-    {"dataTime",560},
-    {""},
-#line 952 "../tests/keys"
-    {"localFlag",947},
-#line 1722 "../tests/keys"
-    {"significanceOfReferenceTime",1717},
-#line 745 "../tests/keys"
-    {"freeFormData",740},
+#line 629 "keys"
+    {"diagnosticNumber",624},
     {""}, {""}, {""}, {""}, {""},
-#line 481 "../tests/keys"
-    {"clusterSize",476},
-    {""},
-#line 657 "../tests/keys"
-    {"endOfRange",652},
-    {""},
-#line 1460 "../tests/keys"
-    {"productDefinitionTemplateNumberInternal",1455},
+#line 1602 "keys"
+    {"rectimeSecond",1597},
+#line 914 "keys"
+    {"isAccumulation",909},
+    {""}, {""},
+#line 1568 "keys"
+    {"qnh",1563},
+    {""}, {""},
+#line 1189 "keys"
+    {"modelName",1184},
+    {""}, {""}, {""},
+#line 981 "keys"
+    {"latitudeOfStretchingPole",976},
+    {""}, {""},
+#line 979 "keys"
+    {"latitudeOfSouthernPole",974},
+#line 1034 "keys"
+    {"localDefinitionNumber",1029},
+#line 848 "keys"
+    {"gridName",843},
+#line 181 "keys"
+    {"Nassigned",176},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1315 "keys"
+    {"numberOfSection",1310},
     {""}, {""},
-#line 69 "../tests/keys"
-    {"FirstLatitude",64},
-    {""}, {""}, {""},
-#line 315 "../tests/keys"
-    {"bitmapPresent",310},
+#line 375 "keys"
+    {"cfName",370},
     {""}, {""}, {""}, {""},
-#line 897 "../tests/keys"
-    {"latitudeOfStretchingPole",892},
+#line 1818 "keys"
+    {"setCalendarId",1813},
     {""},
-#line 825 "../tests/keys"
-    {"integerPointValues",820},
-    {""},
-#line 844 "../tests/keys"
-    {"isEps",839},
+#line 1391 "keys"
+    {"orderOfSPD",1386},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 885 "keys"
+    {"identificationNumber",880},
+#line 1848 "keys"
+    {"southernLatitudeOfDomain",1843},
+    {""},
+#line 1986 "keys"
+    {"twoOrdersOfSPD",1981},
+#line 1939 "keys"
+    {"tiggeCentre",1934},
+#line 1740 "keys"
+    {"scanPosition",1735},
+#line 1396 "keys"
+    {"originalParameterNumber",1391},
+    {""}, {""},
+#line 1484 "keys"
+    {"parameterName",1479},
+    {""},
+#line 1050 "keys"
+    {"localSection",1045},
+#line 1330 "keys"
+    {"numberOfVerticalGridDescriptors",1325},
+    {""},
+#line 1906 "keys"
+    {"suiteName",1901},
+    {""}, {""},
+#line 174 "keys"
+    {"NL",169},
+    {""},
+#line 967 "keys"
+    {"latitudeOfCenterPoint",962},
+#line 379 "keys"
+    {"changeDecimalPrecision",374},
+#line 912 "keys"
+    {"interpretationOfNumberOfPoints",907},
+#line 1329 "keys"
+    {"numberOfVerticalCoordinateValues",1324},
+    {""}, {""},
+#line 183 "keys"
+    {"Nf",178},
+#line 1943 "keys"
+    {"tiggeSection",1938},
+    {""}, {""}, {""}, {""},
+#line 111 "keys"
+    {"LaR",106},
+    {""},
+#line 294 "keys"
+    {"applicationIdentifier",289},
+    {""}, {""}, {""}, {""},
+#line 126 "keys"
+    {"LoR",121},
+#line 1332 "keys"
+    {"numberingOrderOfDiamonds",1327},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 924 "keys"
+    {"isEps",919},
+    {""}, {""}, {""},
+#line 377 "keys"
+    {"cfVarName",372},
+#line 1823 "keys"
+    {"shortName",1818},
+#line 1566 "keys"
+    {"qfePresent",1561},
+#line 1224 "keys"
+    {"nosigPresent",1219},
+#line 338 "keys"
+    {"bitsPerValue",333},
+    {""},
+#line 1295 "keys"
+    {"numberOfPartitions",1290},
+    {""},
+#line 1328 "keys"
+    {"numberOfValues",1323},
+    {""}, {""}, {""},
+#line 599 "keys"
+    {"dateOfForecastRun",594},
+    {""},
+#line 968 "keys"
+    {"latitudeOfCenterPointInDegrees",963},
+    {""}, {""},
+#line 2094 "keys"
+    {"widthOfSPD",2089},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 290 "keys"
+    {"angleOfRotationInDegrees",285},
     {""}, {""}, {""},
-#line 1100 "../tests/keys"
-    {"modelVersionDate",1095},
-    {""}, {""},
-#line 1203 "../tests/keys"
-    {"numberOfPartitions",1198},
-    {""}, {""},
-#line 240 "../tests/keys"
-    {"Xp",235},
-    {""}, {""}, {""}, {""},
-#line 631 "../tests/keys"
-    {"elementsTable",626},
-    {""}, {""}, {""}, {""},
-#line 316 "../tests/keys"
-    {"bitmapSectionPresent",311},
+#line 1570 "keys"
+    {"qnhPresent",1565},
     {""}, {""},
-#line 949 "../tests/keys"
-    {"localDefinitionNumber",944},
-    {""}, {""},
-#line 810 "../tests/keys"
-    {"identificationNumber",805},
-    {""}, {""}, {""}, {""},
-#line 1981 "../tests/keys"
-    {"windGust",1976},
+#line 2117 "keys"
+    {"windVariableDirection",2112},
     {""},
-#line 1974 "../tests/keys"
-    {"widthOfSPD",1969},
+#line 601 "keys"
+    {"dateOfReference",596},
+    {""},
+#line 1564 "keys"
+    {"pvlLocation",1559},
+#line 626 "keys"
+    {"derivedForecast",621},
     {""}, {""}, {""},
-#line 1494 "../tests/keys"
-    {"rdbtimeSecond",1489},
-#line 1756 "../tests/keys"
-    {"standardDeviation",1751},
+#line 337 "keys"
+    {"bitmapSectionPresent",332},
     {""},
-#line 497 "../tests/keys"
-    {"compressedData",492},
-    {""}, {""},
-#line 507 "../tests/keys"
-    {"consensusCount",502},
+#line 1954 "keys"
+    {"timeOfReference",1949},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1987 "keys"
+    {"type",1982},
+#line 2137 "keys"
+    {"year",2132},
+#line 1575 "keys"
+    {"radialAngularSpacing",1570},
+    {""}, {""}, {""},
+#line 523 "keys"
+    {"computeLaplacianOperator",518},
+#line 1027 "keys"
+    {"listOfScaledFrequencies",1022},
+    {""}, {""},
+#line 1916 "keys"
+    {"tableCode",1911},
+    {""},
+#line 1912 "keys"
+    {"system",1907},
+    {""}, {""}, {""},
+#line 1176 "keys"
+    {"minuteOfReference",1171},
+    {""}, {""},
+#line 101 "keys"
+    {"K",96},
+#line 579 "keys"
+    {"createNewData",574},
+#line 1292 "keys"
+    {"numberOfPackedValues",1287},
+#line 821 "keys"
+    {"functionCode",816},
+#line 570 "keys"
+    {"correction3Part",565},
+#line 1319 "keys"
+    {"numberOfSubsets",1314},
+    {""}, {""}, {""}, {""}, {""},
+#line 2073 "keys"
+    {"verticalCoordinate",2068},
+    {""}, {""},
+#line 1977 "keys"
+    {"trueLengthOfLastGroup",1972},
+    {""}, {""},
+#line 877 "keys"
+    {"iDirectionIncrement",872},
+    {""}, {""}, {""},
+#line 2142 "keys"
+    {"zero",2137},
+    {""},
+#line 1266 "keys"
+    {"numberOfFloats",1261},
+    {""}, {""},
+#line 765 "keys"
+    {"extractSubset",760},
+    {""},
+#line 1922 "keys"
+    {"targetCompressionRatio",1917},
+#line 307 "keys"
+    {"baseAddress",302},
+    {""}, {""}, {""},
+#line 1062 "keys"
+    {"longitudeOfCenterPoint",1057},
+#line 955 "keys"
+    {"landtype",950},
+    {""},
+#line 532 "keys"
+    {"consensusCount",527},
+    {""}, {""}, {""},
+#line 2136 "keys"
+    {"yLast",2131},
+#line 664 "keys"
+    {"editionNumber",659},
+    {""}, {""},
+#line 1822 "keys"
+    {"shapeOfVerificationArea",1817},
+    {""}, {""}, {""},
+#line 1281 "keys"
+    {"numberOfLocalDefinitions",1276},
+#line 1398 "keys"
+    {"originalSubCentreIdentifier",1393},
+#line 1263 "keys"
+    {"numberOfDirections",1258},
+    {""},
+#line 1750 "keys"
+    {"secondDimension",1745},
+    {""}, {""},
+#line 1892 "keys"
+    {"subCentre",1887},
+#line 1026 "keys"
+    {"listOfParametersUsedForClustering",1021},
+#line 1803 "keys"
+    {"sectionNumber",1798},
+#line 1136 "keys"
+    {"matchAerosolPacking",1131},
+#line 1144 "keys"
+    {"md5Data",1139},
+#line 611 "keys"
+    {"decimalPrecision",606},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1233 "../tests/keys"
-    {"numberOfValues",1228},
-#line 1591 "../tests/keys"
-    {"runwayState",1586},
+#line 650 "keys"
+    {"dummyc",645},
+#line 1105 "keys"
+    {"marsEndStep",1100},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1346 "keys"
+    {"offsetAfterLocalSection",1341},
+    {""}, {""}, {""}, {""},
+#line 175 "keys"
+    {"NP",170},
     {""}, {""},
-#line 1950 "../tests/keys"
-    {"verificationDate",1945},
+#line 1771 "keys"
+    {"section0Pointer",1766},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 709 "keys"
+    {"epsContinous",704},
+#line 1947 "keys"
+    {"tileClassification",1942},
     {""},
-#line 832 "../tests/keys"
-    {"interpretationOfNumberOfPoints",827},
-    {""}, {""},
-#line 239 "../tests/keys"
-    {"Xo",234},
-#line 1898 "../tests/keys"
-    {"typicalDate",1893},
+#line 1087 "keys"
+    {"longitudeSexagesimal",1082},
+    {""}, {""}, {""}, {""},
+#line 717 "keys"
+    {"expandedCodes",712},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 616 "keys"
+    {"defaultName",611},
     {""}, {""}, {""},
-#line 1222 "../tests/keys"
-    {"numberOfSection",1217},
-    {""}, {""},
-#line 1394 "../tests/keys"
-    {"partitionTable",1389},
-#line 1446 "../tests/keys"
-    {"pressureLevel",1441},
+#line 1262 "keys"
+    {"numberOfDiamonds",1257},
+    {""}, {""}, {""}, {""}, {""},
+#line 1592 "keys"
+    {"rdbtimeSecond",1587},
     {""},
-#line 941 "../tests/keys"
-    {"listOfParametersUsedForClustering",936},
+#line 1260 "keys"
+    {"numberOfDataValues",1255},
+    {""}, {""},
+#line 1555 "keys"
+    {"productDefinition",1550},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1714 "../tests/keys"
-    {"setCalendarId",1709},
+#line 1800 "keys"
+    {"section8Pointer",1795},
     {""}, {""}, {""},
-#line 1828 "../tests/keys"
-    {"tiggeCentre",1823},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1647 "../tests/keys"
-    {"secondDimensionPhysicalSignificance",1642},
-#line 1236 "../tests/keys"
-    {"numberOfVerticalPoints",1231},
-#line 1200 "../tests/keys"
-    {"numberOfPackedValues",1195},
-    {""}, {""},
-#line 1172 "../tests/keys"
-    {"numberOfDirections",1167},
+#line 1160 "keys"
+    {"meanSize",1155},
+    {""}, {""}, {""},
+#line 1815 "keys"
+    {"sensitiveAreaDomain",1810},
+    {""},
+#line 1794 "keys"
+    {"section6",1789},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 29 "keys"
+    {"CDFstr",24},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 1872 "../tests/keys"
-    {"twoOrdersOfSPD",1867},
+#line 548 "keys"
+    {"coordinate2Start",543},
+#line 1828 "keys"
+    {"siteElevation",1823},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 791 "../tests/keys"
-    {"hideThis",786},
-#line 1088 "../tests/keys"
-    {"minuteOfReference",1083},
+#line 873 "keys"
+    {"hourOfReference",868},
+    {""}, {""}, {""}, {""},
+#line 386 "keys"
+    {"channelNumber",381},
+#line 1012 "keys"
+    {"levtype",1007},
+#line 506 "keys"
+    {"clusterNumber",501},
+    {""}, {""}, {""}, {""}, {""},
+#line 292 "keys"
+    {"angularPrecision",287},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""},
-#line 660 "../tests/keys"
-    {"endTimeStep",655},
+#line 1734 "keys"
+    {"scaledValueOfSecondSize",1729},
     {""}, {""}, {""},
-#line 715 "../tests/keys"
-    {"fgTime",710},
-#line 1841 "../tests/keys"
-    {"timeOfReference",1836},
-    {""}, {""}, {""}, {""},
-#line 1813 "../tests/keys"
-    {"targetCompressionRatio",1808},
-    {""},
-#line 582 "../tests/keys"
-    {"decimalScaleFactor",577},
-    {""}, {""}, {""},
-#line 572 "../tests/keys"
-    {"dateOfReference",567},
-    {""},
-#line 551 "../tests/keys"
-    {"countTotal",546},
+#line 189 "keys"
+    {"Nx",184},
+#line 722 "keys"
+    {"expandedNames",717},
+#line 1308 "keys"
+    {"numberOfRadials",1303},
+#line 1857 "keys"
+    {"spatialProcessing",1852},
     {""},
-#line 1109 "../tests/keys"
-    {"mybits",1104},
-    {""}, {""}, {""},
-#line 270 "../tests/keys"
-    {"angleOfRotation",265},
-    {""},
-#line 1235 "../tests/keys"
-    {"numberOfVerticalGridDescriptors",1230},
-#line 1226 "../tests/keys"
-    {"numberOfSubsets",1221},
-#line 672 "../tests/keys"
-    {"epsContinous",667},
-    {""}, {""},
-#line 593 "../tests/keys"
-    {"derivedForecast",588},
-#line 826 "../tests/keys"
-    {"integerScaleFactor",821},
-#line 1237 "../tests/keys"
-    {"numberingOrderOfDiamonds",1232},
-    {""}, {""},
-#line 206 "../tests/keys"
-    {"TScalc",201},
-    {""}, {""}, {""}, {""},
-#line 1243 "../tests/keys"
-    {"obstype",1238},
-    {""}, {""},
-#line 741 "../tests/keys"
-    {"forecastTime",736},
+#line 2074 "keys"
+    {"verticalCoordinateDefinition",2069},
+#line 1347 "keys"
+    {"offsetAfterPadding",1342},
     {""},
-#line 883 "../tests/keys"
-    {"latitudeOfCenterPoint",878},
-#line 205 "../tests/keys"
-    {"TS",200},
-    {""}, {""}, {""},
-#line 1018 "../tests/keys"
-    {"marsEndStep",1013},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 680 "../tests/keys"
-    {"expandedCodes",675},
-    {""}, {""}, {""}, {""},
-#line 1504 "../tests/keys"
-    {"reducedGrid",1499},
-#line 884 "../tests/keys"
-    {"latitudeOfCenterPointInDegrees",879},
-    {""}, {""}, {""}, {""},
-#line 1953 "../tests/keys"
-    {"verticalCoordinate",1948},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 761 "../tests/keys"
-    {"globalDomain",756},
-#line 559 "../tests/keys"
-    {"dataRepresentation",554},
-    {""},
-#line 749 "../tests/keys"
-    {"functionCode",744},
-    {""}, {""}, {""}, {""},
-#line 1764 "../tests/keys"
-    {"startTimeStep",1759},
-    {""}, {""}, {""}, {""},
-#line 842 "../tests/keys"
-    {"isCorrection",837},
-    {""}, {""}, {""}, {""},
-#line 99 "../tests/keys"
-    {"LaR",94},
-#line 1997 "../tests/keys"
-    {"windVariableDirection",1992},
-#line 1171 "../tests/keys"
-    {"numberOfDiamonds",1166},
-    {""}, {""}, {""},
-#line 1783 "../tests/keys"
-    {"subCentre",1778},
-#line 35 "../tests/keys"
-    {"DiGiven",30},
+#line 1185 "keys"
+    {"modeNumber",1180},
     {""}, {""}, {""}, {""}, {""},
-#line 1739 "../tests/keys"
-    {"southPoleOnProjectionPlane",1734},
-    {""}, {""}, {""}, {""},
-#line 1723 "../tests/keys"
-    {"siteElevation",1718},
-    {""}, {""},
-#line 594 "../tests/keys"
-    {"dewPointTemperature",589},
+#line 771 "keys"
+    {"extremeClockwiseWindDirection",766},
+#line 256 "keys"
+    {"Xo",251},
+#line 605 "keys"
+    {"datumSize",600},
+    {""},
+#line 2025 "keys"
+    {"unitOfOffsetFromReferenceTime",2020},
+    {""}, {""},
+#line 537 "keys"
+    {"controlForecastCluster",532},
     {""}, {""}, {""}, {""}, {""},
-#line 1288 "../tests/keys"
-    {"oneThousand",1283},
-    {""}, {""},
-#line 114 "../tests/keys"
-    {"LoR",109},
-    {""},
-#line 1863 "../tests/keys"
-    {"trueLengthOfLastGroup",1858},
-    {""}, {""}, {""},
-#line 1807 "../tests/keys"
-    {"tableCode",1802},
-#line 798 "../tests/keys"
-    {"hourOfReference",793},
-    {""}, {""}, {""},
-#line 1170 "../tests/keys"
-    {"numberOfDataValues",1165},
-    {""},
-#line 1935 "../tests/keys"
-    {"validityDate",1930},
-#line 1303 "../tests/keys"
-    {"originalSubCentreIdentifier",1298},
-#line 1910 "../tests/keys"
-    {"unitOfTime",1905},
-    {""}, {""},
-#line 1189 "../tests/keys"
-    {"numberOfLocalDefinitions",1184},
-#line 171 "../tests/keys"
-    {"Nr",166},
-#line 1234 "../tests/keys"
-    {"numberOfVerticalCoordinateValues",1229},
+#line 1196 "keys"
+    {"monthOfReference",1191},
+    {""},
+#line 1064 "keys"
+    {"longitudeOfCentralPointInClusterDomain",1059},
+    {""}, {""}, {""},
+#line 905 "keys"
+    {"integerPointValues",900},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1829 "keys"
+    {"siteId",1824},
+    {""},
+#line 1051 "keys"
+    {"localSectionPresent",1046},
+    {""}, {""},
+#line 778 "keys"
+    {"faLevelName",773},
+#line 1864 "keys"
+    {"standardDeviation",1859},
+#line 257 "keys"
+    {"Xp",252},
+#line 1722 "keys"
+    {"scaledValueOfDistanceFromEnsembleMean",1717},
+    {""}, {""},
+#line 1145 "keys"
+    {"md5DataSection",1140},
     {""}, {""}, {""}, {""}, {""},
-#line 1020 "../tests/keys"
-    {"marsExpver",1015},
-#line 267 "../tests/keys"
-    {"analysisOffsets",262},
-    {""}, {""},
-#line 1204 "../tests/keys"
-    {"numberOfPoints",1199},
-    {""}, {""}, {""},
-#line 1023 "../tests/keys"
-    {"marsIdent",1018},
-#line 889 "../tests/keys"
-    {"latitudeOfLastGridPoint",884},
-#line 789 "../tests/keys"
-    {"heightOrPressureOfLevel",784},
-#line 971 "../tests/keys"
-    {"logTransform",966},
-#line 1400 "../tests/keys"
-    {"patch_precip_fp",1395},
-#line 169 "../tests/keys"
-    {"Ni",164},
+#line 1752 "keys"
+    {"secondDimensionPhysicalSignificance",1747},
+#line 1736 "keys"
+    {"scaledValueOfStandardDeviation",1731},
+    {""},
+#line 704 "keys"
+    {"ensembleForecastNumbers",699},
+#line 768 "keys"
+    {"extractSubsetList",763},
+#line 1556 "keys"
+    {"productDefinitionTemplateNumber",1551},
+#line 705 "keys"
+    {"ensembleForecastNumbersList",700},
+#line 343 "keys"
+    {"boustrophedonicOrdering",338},
+#line 1548 "keys"
+    {"probContinous",1543},
+    {""},
+#line 923 "keys"
+    {"isEPS",918},
+#line 1110 "keys"
+    {"marsIdent",1105},
+    {""},
+#line 1478 "keys"
+    {"paramId",1473},
+    {""},
+#line 2092 "keys"
+    {"widthOfFirstOrderValues",2087},
+    {""},
+#line 291 "keys"
+    {"angleOfRotationOfProjection",286},
+    {""},
+#line 881 "keys"
+    {"iIncrement",876},
+    {""}, {""},
+#line 1199 "keys"
+    {"mybits",1194},
+#line 999 "keys"
+    {"legNumber",994},
+    {""}, {""}, {""}, {""},
+#line 1737 "keys"
+    {"scaledValueOfStandardDeviationInTheCluster",1732},
+    {""},
+#line 1272 "keys"
+    {"numberOfFrequencies",1267},
+    {""},
+#line 983 "keys"
+    {"latitudeOfSubSatellitePoint",978},
+    {""}, {""}, {""},
+#line 336 "keys"
+    {"bitmapPresent",331},
+#line 1557 "keys"
+    {"productDefinitionTemplateNumberInternal",1552},
+    {""},
+#line 973 "keys"
+    {"latitudeOfLastGridPoint",968},
+#line 2135 "keys"
+    {"yFirst",2130},
+    {""}, {""}, {""},
+#line 1693 "keys"
+    {"runwayState",1688},
+#line 834 "keys"
+    {"globalDomain",829},
+#line 1338 "keys"
+    {"obstype",1333},
     {""}, {""}, {""}, {""}, {""},
-#line 806 "../tests/keys"
-    {"iIncrement",801},
-    {""}, {""},
-#line 969 "../tests/keys"
-    {"local_padding",964},
+#line 984 "keys"
+    {"latitudeOfSubSatellitePointInDegrees",979},
+#line 1518 "keys"
+    {"preProcessingParameter",1513},
     {""},
-#line 890 "../tests/keys"
-    {"latitudeOfLastGridPointInDegrees",885},
+#line 1699 "keys"
+    {"scaleFactorAtReferencePoint",1694},
+#line 563 "keys"
+    {"corr4Data",558},
     {""},
-#line 1381 "../tests/keys"
-    {"paramId",1376},
+#line 1964 "keys"
+    {"totalNumber",1959},
+    {""}, {""},
+#line 1222 "keys"
+    {"northernLatitudeOfClusterDomain",1217},
+    {""}, {""},
+#line 1190 "keys"
+    {"modelVersionDate",1185},
     {""}, {""}, {""},
-#line 1724 "../tests/keys"
-    {"siteId",1719},
-#line 975 "../tests/keys"
-    {"longitudeOfCenterPoint",970},
+#line 974 "keys"
+    {"latitudeOfLastGridPointInDegrees",969},
     {""}, {""}, {""}, {""},
-#line 2015 "../tests/keys"
-    {"yFirst",2010},
-    {""}, {""}, {""},
-#line 570 "../tests/keys"
-    {"dateOfForecastRun",565},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 70 "../tests/keys"
-    {"GDSPresent",65},
+#line 2014 "keys"
+    {"typicalDate",2009},
     {""}, {""},
-#line 1616 "../tests/keys"
-    {"scaledFrequencies",1611},
-#line 703 "../tests/keys"
-    {"extremeClockwiseWindDirection",698},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1885 "../tests/keys"
-    {"typeOfLevel",1880},
-    {""},
-#line 1708 "../tests/keys"
-    {"selectGroupNumber",1703},
-#line 1106 "../tests/keys"
-    {"monthOfReference",1101},
+#line 568 "keys"
+    {"correction2Part",563},
+#line 182 "keys"
+    {"Nb",177},
     {""}, {""}, {""},
-#line 1405 "../tests/keys"
-    {"periodOfTime",1400},
+#line 777 "keys"
+    {"faFieldName",772},
     {""},
-#line 1107 "../tests/keys"
-    {"monthlyVerificationDate",1102},
+#line 618 "keys"
+    {"defaultSequence",613},
+#line 746 "keys"
+    {"extractAreaWestLongitude",741},
+#line 1713 "keys"
+    {"scaleFactorOfSecondSize",1708},
+#line 975 "keys"
+    {"latitudeOfNorthWestCornerOfArea",970},
+#line 1107 "keys"
+    {"marsExpver",1102},
     {""}, {""},
-#line 942 "../tests/keys"
-    {"listOfScaledFrequencies",937},
-    {""},
-#line 1387 "../tests/keys"
-    {"parameterName",1382},
+#line 104 "keys"
+    {"LLCOSP",99},
+#line 1264 "keys"
+    {"numberOfDistributionFunctionParameters",1259},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 1132 "../tests/keys"
-    {"northernLatitudeOfClusterDomain",1127},
+    {""}, {""}, {""}, {""},
+#line 545 "keys"
+    {"coordinate1Start",540},
     {""}, {""}, {""},
-#line 1798 "../tests/keys"
-    {"suiteName",1793},
+#line 922 "keys"
+    {"isCorrection",917},
+    {""}, {""}, {""}, {""},
+#line 356 "keys"
+    {"ccccIdentifiers",351},
+    {""}, {""},
+#line 623 "keys"
+    {"deleteExtraLocalSection",618},
     {""},
-#line 319 "../tests/keys"
-    {"boot_edition",314},
+#line 716 "keys"
+    {"expandedAbbreviations",711},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1701 "keys"
+    {"scaleFactorOfDistanceFromEnsembleMean",1696},
+    {""}, {""},
+#line 689 "keys"
+    {"endOfFileAddress",684},
+#line 1291 "keys"
+    {"numberOfOperationalForecastTube",1286},
+    {""},
+#line 507 "keys"
+    {"clusterSize",502},
+#line 842 "keys"
+    {"gridCoordinate",837},
+#line 1847 "keys"
+    {"southernLatitudeOfClusterDomain",1842},
+    {""},
+#line 1715 "keys"
+    {"scaleFactorOfStandardDeviation",1710},
+#line 551 "keys"
+    {"coordinate3OfLastGridPoint",546},
+#line 1727 "keys"
+    {"scaledValueOfFirstSize",1722},
+#line 1155 "keys"
+    {"md5Structure",1150},
+    {""},
+#line 28 "keys"
+    {"CDF",23},
+#line 864 "keys"
+    {"heightOrPressureOfLevel",859},
+    {""},
+#line 1543 "keys"
+    {"pressureLevel",1538},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 1751 "keys"
+    {"secondDimensionCoordinateValueDefinition",1746},
+#line 1177 "keys"
+    {"minutesAfterDataCutoff",1172},
+    {""}, {""}, {""},
+#line 286 "keys"
+    {"analysisOffsets",281},
+#line 1716 "keys"
+    {"scaleFactorOfStandardDeviationInTheCluster",1711},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1489 "keys"
+    {"partitionItems",1484},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 843 "../tests/keys"
-    {"isEPS",838},
-    {""},
-#line 1663 "../tests/keys"
-    {"secondsOfReference",1658},
+#line 2051 "keys"
+    {"validityDate",2046},
+    {""}, {""}, {""},
+#line 2066 "keys"
+    {"verificationDate",2061},
     {""},
-#line 271 "../tests/keys"
-    {"angleOfRotationInDegrees",266},
-#line 1451 "../tests/keys"
-    {"probContinous",1446},
-#line 1174 "../tests/keys"
-    {"numberOfFloats",1169},
-#line 1019 "../tests/keys"
-    {"marsExperimentOffset",1014},
-#line 1903 "../tests/keys"
-    {"typicalSecond",1898},
+#line 1197 "keys"
+    {"monthlyVerificationDate",1192},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1719 "../tests/keys"
-    {"shortName",1714},
-#line 350 "../tests/keys"
-    {"cfName",345},
+    {""},
+#line 1106 "keys"
+    {"marsExperimentOffset",1101},
     {""}, {""},
-#line 1631 "../tests/keys"
-    {"scaledValueOfStandardDeviation",1626},
+#line 1245 "keys"
+    {"numberOfChars",1240},
+    {""}, {""}, {""}, {""},
+#line 1569 "keys"
+    {"qnhAPresent",1564},
+#line 1367 "keys"
+    {"offsetSection6",1362},
+#line 613 "keys"
+    {"defaultFaFieldName",608},
+#line 2000 "keys"
+    {"typeOfLevel",1995},
+#line 1768 "keys"
+    {"secondsOfReference",1763},
+    {""}, {""}, {""}, {""},
+#line 2076 "keys"
+    {"verticalVisibilityCoded",2071},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1954 "../tests/keys"
-    {"verticalCoordinateDefinition",1949},
-#line 769 "../tests/keys"
-    {"gridCoordinate",764},
     {""}, {""},
-#line 1632 "../tests/keys"
-    {"scaledValueOfStandardDeviationInTheCluster",1627},
-    {""}, {""}, {""}, {""}, {""},
-#line 1740 "../tests/keys"
-    {"southernLatitudeOfClusterDomain",1735},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 585 "keys"
+    {"dataKeys",580},
     {""},
-#line 1793 "../tests/keys"
-    {"subSetK",1788},
+#line 1169 "keys"
+    {"methodNumber",1164},
+    {""}, {""},
+#line 20 "keys"
+    {"Azi",15},
+#line 1296 "keys"
+    {"numberOfPoints",1291},
     {""},
-#line 18 "../tests/keys"
-    {"Adelta",13},
-    {""}, {""}, {""}, {""},
-#line 168 "../tests/keys"
-    {"Nf",163},
-#line 1392 "../tests/keys"
-    {"partitionItems",1387},
-#line 911 "../tests/keys"
-    {"latitudinalDirectionGridLength",906},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 616 "../tests/keys"
-    {"dy",611},
-#line 891 "../tests/keys"
-    {"latitudeOfNorthWestCornerOfArea",886},
+#line 161 "keys"
+    {"N",156},
     {""},
-#line 576 "../tests/keys"
-    {"day",571},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1618 "../tests/keys"
-    {"scaledValueOfDistanceFromEnsembleMean",1613},
-#line 263 "../tests/keys"
-    {"aerosolbinnumber",258},
-    {""},
-#line 670 "../tests/keys"
-    {"ensembleStandardDeviation",665},
-#line 977 "../tests/keys"
-    {"longitudeOfCentralPointInClusterDomain",972},
-#line 675 "../tests/keys"
-    {"epsStatisticsContinous",670},
-#line 166 "../tests/keys"
-    {"Nassigned",161},
-    {""},
-#line 899 "../tests/keys"
-    {"latitudeOfSubSatellitePoint",894},
-#line 1908 "../tests/keys"
-    {"unexpandedDescriptors",1903},
-    {""}, {""},
-#line 1463 "../tests/keys"
-    {"productionStatusOfProcessedData",1458},
+#line 707 "keys"
+    {"ensembleStandardDeviation",702},
     {""}, {""}, {""}, {""}, {""},
-#line 900 "../tests/keys"
-    {"latitudeOfSubSatellitePointInDegrees",895},
-#line 161 "../tests/keys"
-    {"NL",156},
-    {""}, {""}, {""}, {""},
-#line 1629 "../tests/keys"
-    {"scaledValueOfSecondSize",1624},
-#line 1169 "../tests/keys"
-    {"numberOfDataPoints",1164},
-#line 1646 "../tests/keys"
-    {"secondDimensionCoordinateValueDefinition",1641},
-    {""}, {""}, {""}, {""},
-#line 482 "../tests/keys"
-    {"clusteringDomain",477},
+#line 1249 "keys"
+    {"numberOfCodedValues",1244},
     {""},
-#line 738 "../tests/keys"
-    {"forecastPeriodTo",733},
-    {""}, {""},
-#line 331 "../tests/keys"
-    {"ccccIdentifiers",326},
+#line 100 "keys"
+    {"JS",95},
+    {""}, {""}, {""}, {""}, {""},
+#line 1267 "keys"
+    {"numberOfForcasts",1262},
+#line 1188 "keys"
+    {"modelIdentifier",1183},
+#line 1902 "keys"
+    {"subSetK",1897},
+    {""}, {""},
+#line 1252 "keys"
+    {"numberOfColumns",1247},
+#line 11 "keys"
+    {"AA",6},
+#line 588 "keys"
+    {"dataRepresentation",583},
     {""},
-#line 28 "../tests/keys"
-    {"CDFstr",23},
-#line 174 "../tests/keys"
-    {"Nx",169},
-#line 1698 "../tests/keys"
-    {"sectionNumber",1693},
-#line 835 "../tests/keys"
-    {"isAuto",830},
-    {""}, {""},
-#line 1024 "../tests/keys"
-    {"marsKeywords",1019},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 628 "../tests/keys"
-    {"editionNumber",623},
-#line 1216 "../tests/keys"
-    {"numberOfRadials",1211},
-#line 590 "../tests/keys"
-    {"deleteExtraLocalSection",585},
+#line 1008 "keys"
+    {"levelIndicator",1003},
+#line 1720 "keys"
+    {"scaledFrequencies",1715},
     {""}, {""}, {""}, {""},
-#line 536 "../tests/keys"
-    {"corr2Data",531},
+#line 1733 "keys"
+    {"scaledValueOfSecondFixedSurface",1728},
+#line 631 "keys"
+    {"dimensionNumber",626},
+#line 939 "keys"
+    {"iterationNumber",934},
+    {""},
+#line 566 "keys"
+    {"correction1Part",561},
     {""},
-#line 611 "../tests/keys"
-    {"dummy",606},
+#line 1846 "keys"
+    {"southPoleOnProjectionPlane",1841},
+#line 1512 "keys"
+    {"plusOneinOrdersOfSPD",1507},
+#line 634 "keys"
+    {"directionNumber",629},
     {""}, {""},
-#line 1909 "../tests/keys"
-    {"unitOfOffsetFromReferenceTime",1904},
+#line 1706 "keys"
+    {"scaleFactorOfFirstSize",1701},
     {""}, {""}, {""}, {""},
-#line 1809 "../tests/keys"
-    {"tableReference",1804},
-#line 699 "../tests/keys"
-    {"extraDimensionPresent",694},
-    {""}, {""},
-#line 1810 "../tests/keys"
-    {"tablesLocalDir",1805},
-    {""},
-#line 256 "../tests/keys"
-    {"_numberOfValues",251},
+#line 279 "keys"
+    {"addExtraLocalSection",274},
     {""}, {""}, {""},
-#line 1180 "../tests/keys"
-    {"numberOfFrequencies",1175},
-#line 165 "../tests/keys"
-    {"NV",160},
-    {""}, {""},
-#line 352 "../tests/keys"
-    {"cfVarName",347},
-#line 929 "../tests/keys"
-    {"libraryVersion",924},
+#line 1560 "keys"
+    {"productionStatusOfProcessedData",1555},
     {""},
-#line 1593 "../tests/keys"
-    {"satelliteIdentifier",1588},
-#line 480 "../tests/keys"
-    {"clusterNumber",475},
-#line 361 "../tests/keys"
-    {"channelNumber",356},
-    {""}, {""},
-#line 552 "../tests/keys"
-    {"country",547},
-#line 684 "../tests/keys"
-    {"expandedNames",679},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1490 "keys"
+    {"partitionNumber",1485},
     {""},
-#line 753 "../tests/keys"
-    {"g2grid",748},
-#line 583 "../tests/keys"
-    {"defaultName",578},
-    {""}, {""}, {""},
-#line 1043 "../tests/keys"
-    {"mars_labeling",1038},
-    {""}, {""}, {""},
-#line 1972 "../tests/keys"
-    {"widthOfFirstOrderValues",1967},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1933 "../tests/keys"
-    {"uuidOfVGrid",1928},
-#line 46 "../tests/keys"
-    {"Dy",41},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 793 "../tests/keys"
-    {"horizontalCoordinateSupplement",788},
+#line 1696 "keys"
+    {"satelliteIdentifier",1691},
+    {""}, {""},
+#line 1312 "keys"
+    {"numberOfReservedBytes",1307},
+    {""}, {""},
+#line 1293 "keys"
+    {"numberOfParallelsBetweenAPoleAndTheEquator",1288},
     {""}, {""}, {""},
-#line 1781 "../tests/keys"
-    {"stretchingFactor",1776},
+#line 1256 "keys"
+    {"numberOfCoordinatesValues",1251},
+#line 1485 "keys"
+    {"parameterNumber",1480},
     {""}, {""},
-#line 1099 "../tests/keys"
-    {"modelIdentifier",1094},
+#line 1984 "keys"
+    {"tubeNumber",1979},
     {""},
-#line 1833 "../tests/keys"
-    {"tiggeSuiteID",1828},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1889 "keys"
+    {"stretchingFactor",1884},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 639 "../tests/keys"
-    {"endGridDefinition",634},
-    {""}, {""}, {""}, {""}, {""},
-#line 512 "../tests/keys"
-    {"controlForecastCluster",507},
-#line 535 "../tests/keys"
-    {"corr1Data",530},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1040 "../tests/keys"
-    {"marsType",1035},
-    {""},
-#line 1775 "../tests/keys"
-    {"stepType",1770},
-#line 322 "../tests/keys"
-    {"boustrophedonicOrdering",317},
-#line 792 "../tests/keys"
-    {"horizontalCoordinateDefinition",787},
-#line 1155 "../tests/keys"
-    {"numberOfChars",1150},
-    {""}, {""}, {""},
-#line 682 "../tests/keys"
-    {"expandedCrex_units",677},
-    {""}, {""},
-#line 924 "../tests/keys"
-    {"levelIndicator",919},
-#line 591 "../tests/keys"
-    {"deleteLocalDefinition",586},
-    {""}, {""}, {""}, {""},
-#line 254 "../tests/keys"
-    {"_TS",249},
-#line 255 "../tests/keys"
-    {"_leg_number",250},
-#line 566 "../tests/keys"
-    {"dataType",561},
-    {""}, {""}, {""}, {""},
-#line 1500 "../tests/keys"
-    {"rectimeDay",1495},
-    {""}, {""}, {""}, {""},
-#line 718 "../tests/keys"
-    {"firstDimensionCoordinateValueDefinition",713},
-    {""},
-#line 1782 "../tests/keys"
-    {"stretchingFactorScaled",1777},
-    {""}, {""},
-#line 487 "../tests/keys"
-    {"codeTablesMaster",482},
-    {""}, {""},
-#line 486 "../tests/keys"
-    {"codeTablesLocal",481},
-#line 1518 "../tests/keys"
-    {"reportType",1513},
-    {""},
-#line 803 "../tests/keys"
-    {"iDirectionIncrementGiven",798},
-#line 277 "../tests/keys"
-    {"auxiliary",272},
-#line 1199 "../tests/keys"
-    {"numberOfOperationalForecastTube",1194},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 1835 "../tests/keys"
-    {"tigge_short_name",1830},
-    {""}, {""},
-#line 1596 "../tests/keys"
-    {"scaleFactorAtReferencePoint",1591},
-#line 681 "../tests/keys"
-    {"expandedCrex_scales",676},
-    {""}, {""},
-#line 1217 "../tests/keys"
-    {"numberOfRemaininChars",1212},
-#line 1919 "../tests/keys"
-    {"unitsOfSecondFixedSurface",1914},
-    {""},
-#line 1046 "../tests/keys"
-    {"masterTableNumber",1041},
-#line 1515 "../tests/keys"
-    {"referenceValueError",1510},
-    {""},
-#line 667 "../tests/keys"
-    {"ensembleForecastNumbers",662},
-#line 1838 "../tests/keys"
-    {"timeIncrement",1833},
-    {""},
-#line 1052 "../tests/keys"
-    {"matchTimeRepres",1047},
-#line 683 "../tests/keys"
-    {"expandedCrex_widths",678},
-#line 488 "../tests/keys"
-    {"codeType",483},
-    {""},
-#line 834 "../tests/keys"
-    {"isAccumulation",829},
-    {""},
-#line 1415 "../tests/keys"
-    {"plusOneinOrdersOfSPD",1410},
-    {""}, {""}, {""}, {""},
-#line 1162 "../tests/keys"
-    {"numberOfColumns",1157},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 668 "../tests/keys"
-    {"ensembleForecastNumbersList",663},
-#line 944 "../tests/keys"
-    {"localDay",939},
-    {""}, {""}, {""},
-#line 1196 "../tests/keys"
-    {"numberOfObservations",1191},
-#line 1183 "../tests/keys"
-    {"numberOfGroups",1178},
-#line 59 "../tests/keys"
-    {"Experiment_Identifier",54},
-#line 1487 "../tests/keys"
-    {"rdbSubtype",1482},
-    {""}, {""}, {""}, {""},
-#line 260 "../tests/keys"
-    {"addExtraLocalSection",255},
-    {""}, {""},
-#line 1907 "../tests/keys"
-    {"umberOfObservations",1902},
-    {""},
-#line 733 "../tests/keys"
-    {"forecastLeadTime",728},
-    {""}, {""}, {""}, {""},
-#line 1611 "../tests/keys"
-    {"scaleFactorOfStandardDeviation",1606},
-    {""},
-#line 1384 "../tests/keys"
-    {"parameterCategory",1379},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 604 "../tests/keys"
-    {"dirty_statistics",599},
-    {""},
-#line 1955 "../tests/keys"
-    {"verticalVisibility",1950},
-    {""},
-#line 1612 "../tests/keys"
-    {"scaleFactorOfStandardDeviationInTheCluster",1607},
+#line 560 "keys"
+    {"corr1Data",555},
     {""},
-#line 1175 "../tests/keys"
-    {"numberOfForcasts",1170},
-#line 1889 "../tests/keys"
-    {"typeOfPreProcessing",1884},
-#line 1293 "../tests/keys"
-    {"optimisationTime",1288},
-#line 1754 "../tests/keys"
-    {"spectralType",1749},
-    {""}, {""},
-#line 776 "../tests/keys"
-    {"gridType",771},
-    {""},
-#line 1927 "../tests/keys"
-    {"updateSequenceNumber",1922},
-#line 1911 "../tests/keys"
-    {"unitOfTimeIncrement",1906},
+#line 1153 "keys"
+    {"md5Section6",1148},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 176 "keys"
+    {"NR",171},
     {""}, {""},
-#line 1894 "../tests/keys"
-    {"typeOfStatisticalProcessing",1889},
+#line 1013 "keys"
+    {"libraryVersion",1008},
     {""},
-#line 272 "../tests/keys"
-    {"angleOfRotationOfProjection",267},
+#line 1739 "keys"
+    {"scalingFactorForFrequencies",1734},
     {""}, {""}, {""}, {""},
-#line 1904 "../tests/keys"
-    {"typicalTime",1899},
-    {""},
-#line 90 "../tests/keys"
-    {"JS",85},
+#line 1917 "keys"
+    {"tableNumber",1912},
+#line 1697 "keys"
+    {"satelliteNumber",1692},
+    {""}, {""},
+#line 61 "keys"
+    {"Experiment_Identifier",56},
+    {""}, {""},
+#line 594 "keys"
+    {"dataTime",589},
     {""},
-#line 538 "../tests/keys"
-    {"corr4Data",533},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 262 "../tests/keys"
-    {"aerosolType",257},
-    {""}, {""}, {""},
-#line 1386 "../tests/keys"
-    {"parameterIndicator",1381},
-    {""}, {""}, {""}, {""},
-#line 2021 "../tests/keys"
-    {"yearOfReference",2016},
-#line 1219 "../tests/keys"
-    {"numberOfReservedBytes",1214},
-    {""}, {""}, {""}, {""},
-#line 1598 "../tests/keys"
-    {"scaleFactorOfDistanceFromEnsembleMean",1593},
+#line 1890 "keys"
+    {"stretchingFactorScaled",1885},
+#line 604 "keys"
+    {"dateTime",599},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""},
-#line 1509 "../tests/keys"
-    {"referenceForGroupWidths",1504},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1609 "../tests/keys"
-    {"scaleFactorOfSecondSize",1604},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1462 "../tests/keys"
-    {"productType",1457},
-    {""},
-#line 925 "../tests/keys"
-    {"levelType",920},
-#line 1675 "../tests/keys"
-    {"section2Present",1670},
-#line 1622 "../tests/keys"
-    {"scaledValueOfFirstSize",1617},
-#line 1508 "../tests/keys"
-    {"referenceForGroupLengths",1503},
-    {""},
-#line 752 "../tests/keys"
-    {"g1conceptsMasterDir",747},
-    {""},
-#line 1154 "../tests/keys"
-    {"numberOfCharacters",1149},
-#line 36 "../tests/keys"
-    {"DiInDegrees",31},
-    {""},
-#line 1851 "../tests/keys"
-    {"totalNumber",1846},
-    {""},
-#line 1634 "../tests/keys"
-    {"scalingFactorForFrequencies",1629},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 978 "../tests/keys"
-    {"longitudeOfFirstDiamondCenterLine",973},
-    {""},
-#line 915 "../tests/keys"
-    {"legNumber",910},
+#line 1723 "keys"
+    {"scaledValueOfDistributionFunctionParameter",1718},
     {""}, {""},
-#line 1229 "../tests/keys"
-    {"numberOfTimeSteps",1224},
-#line 1166 "../tests/keys"
-    {"numberOfCoordinatesValues",1161},
+#line 1067 "keys"
+    {"longitudeOfFirstGridPoint",1062},
+    {""},
+#line 712 "keys"
+    {"epsStatisticsContinous",707},
     {""}, {""}, {""},
-#line 980 "../tests/keys"
-    {"longitudeOfFirstGridPoint",975},
-#line 979 "../tests/keys"
-    {"longitudeOfFirstDiamondCenterLineInDegrees",974},
-    {""}, {""},
-#line 804 "../tests/keys"
-    {"iDirectionIncrementGridLength",799},
-#line 1711 "../tests/keys"
-    {"sensitiveAreaDomain",1706},
-    {""}, {""},
-#line 689 "../tests/keys"
-    {"expandedTypes",684},
+#line 1243 "keys"
+    {"numberOfCategories",1238},
     {""}, {""}, {""},
-#line 981 "../tests/keys"
-    {"longitudeOfFirstGridPointInDegrees",976},
+#line 1259 "keys"
+    {"numberOfDataPoints",1254},
     {""}, {""}, {""},
-#line 1956 "../tests/keys"
-    {"verticalVisibilityCoded",1951},
+#line 1614 "keys"
+    {"referenceValueError",1609},
+    {""}, {""},
+#line 1065 "keys"
+    {"longitudeOfFirstDiamondCenterLine",1060},
+#line 1918 "keys"
+    {"tableReference",1913},
     {""}, {""}, {""},
-#line 81 "../tests/keys"
-    {"GTSstr",76},
-    {""},
-#line 1806 "../tests/keys"
-    {"table2Version",1801},
+#line 1068 "keys"
+    {"longitudeOfFirstGridPointInDegrees",1063},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1732 "keys"
+    {"scaledValueOfRadiusOfSphericalEarth",1727},
     {""}, {""}, {""},
-#line 1159 "../tests/keys"
-    {"numberOfCodedValues",1154},
-    {""},
-#line 1752 "../tests/keys"
-    {"spectralDataRepresentationType",1747},
-    {""}, {""}, {""}, {""}, {""},
-#line 1163 "../tests/keys"
-    {"numberOfComponents",1158},
-#line 1820 "../tests/keys"
-    {"thisExperimentVersionNumber",1815},
+#line 1066 "keys"
+    {"longitudeOfFirstDiamondCenterLineInDegrees",1061},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1833 "keys"
+    {"sizeOfOffsets",1828},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 282 "keys"
+    {"aerosolbinnumber",277},
+#line 1712 "keys"
+    {"scaleFactorOfSecondFixedSurface",1707},
+    {""}, {""}, {""},
+#line 308 "keys"
+    {"baseDateEPS",303},
     {""}, {""},
-#line 1624 "../tests/keys"
-    {"scaledValueOfLowerLimit",1619},
+#line 1904 "keys"
+    {"subcentreOfAnalysis",1899},
     {""}, {""},
-#line 324 "../tests/keys"
-    {"calendarIdPresent",319},
-#line 1881 "../tests/keys"
-    {"typeOfGrid",1876},
+#line 1344 "keys"
+    {"offsetAfterCentreLocalSection",1339},
     {""}, {""}, {""},
-#line 1153 "../tests/keys"
-    {"numberOfCategories",1148},
+#line 900 "keys"
+    {"inputExtendedDelayedDescriptorReplicationFactor",895},
+    {""},
+#line 667 "keys"
+    {"elementsTable",662},
+    {""}, {""},
+#line 810 "keys"
+    {"forecastPeriodTo",805},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 287 "../tests/keys"
-    {"baseDateEPS",282},
-    {""},
-#line 366 "../tests/keys"
-    {"climateDateFrom",361},
-#line 1101 "../tests/keys"
-    {"modelVersionTime",1096},
-#line 1184 "../tests/keys"
-    {"numberOfGroupsOfDataValues",1179},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 746 "../tests/keys"
-    {"frequency",741},
-    {""}, {""}, {""},
-#line 1472 "../tests/keys"
-    {"qnhAPresent",1467},
-#line 1936 "../tests/keys"
-    {"validityTime",1931},
-#line 201 "../tests/keys"
-    {"Sub-Experiment_Identifier",196},
-    {""}, {""},
-#line 469 "../tests/keys"
-    {"clusterIdentifier",464},
+#line 1491 "keys"
+    {"partitionTable",1486},
+    {""}, {""}, {""},
+#line 1250 "keys"
+    {"numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction",1245},
+#line 1251 "keys"
+    {"numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction",1246},
     {""}, {""}, {""}, {""}, {""},
-#line 44 "../tests/keys"
-    {"DxInDegrees",39},
+#line 786 "keys"
+    {"fgTime",781},
+#line 562 "keys"
+    {"corr3Data",557},
+    {""}, {""}, {""},
+#line 907 "keys"
+    {"integerScalingFactorAppliedToDirections",902},
+#line 908 "keys"
+    {"integerScalingFactorAppliedToFrequencies",903},
+#line 2009 "keys"
+    {"typeOfStatisticalProcessing",2004},
+#line 1948 "keys"
+    {"tileIndex",1943},
     {""}, {""}, {""}, {""}, {""},
-#line 545 "../tests/keys"
-    {"correction3Part",540},
+#line 391 "keys"
+    {"classOfAnalysis",386},
+#line 344 "keys"
+    {"bufrDataEncoded",339},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1111 "keys"
+    {"marsKeywords",1106},
+    {""}, {""}, {""},
+#line 221 "keys"
+    {"TScalc",216},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 541 "../tests/keys"
-    {"correction1Part",536},
+#line 697 "keys"
+    {"endTimeStep",692},
     {""}, {""},
-#line 1877 "../tests/keys"
-    {"typeOfCompressionUsed",1872},
-#line 617 "../tests/keys"
-    {"earthIsOblate",612},
+#line 825 "keys"
+    {"g2grid",820},
+#line 1702 "keys"
+    {"scaleFactorOfDistributionFunctionParameter",1697},
+#line 1310 "keys"
+    {"numberOfRemaininChars",1305},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 20 "../tests/keys"
-    {"Azi",15},
+#line 576 "keys"
+    {"countTotal",571},
+#line 1726 "keys"
+    {"scaledValueOfFirstFixedSurface",1721},
+    {""}, {""}, {""}, {""},
+#line 220 "keys"
+    {"TS",215},
+#line 1198 "keys"
+    {"multiplicationFactorForLatLong",1193},
     {""}, {""}, {""},
-#line 1388 "../tests/keys"
-    {"parameterNumber",1383},
+#line 1194 "keys"
+    {"monthOfAnalysis",1189},
+#line 2075 "keys"
+    {"verticalVisibility",2070},
+#line 1584 "keys"
+    {"rdbSubtype",1579},
     {""},
-#line 1461 "../tests/keys"
-    {"productIdentifier",1456},
+#line 1791 "keys"
+    {"section5",1786},
+    {""}, {""}, {""}, {""},
+#line 1711 "keys"
+    {"scaleFactorOfRadiusOfSphericalEarth",1706},
+#line 868 "keys"
+    {"horizontalCoordinateSupplement",863},
     {""}, {""},
-#line 1081 "../tests/keys"
-    {"methodNumber",1076},
-    {""},
-#line 1925 "../tests/keys"
-    {"unsignedIntegers",1920},
-    {""}, {""}, {""}, {""}, {""},
-#line 831 "../tests/keys"
-    {"internationalDataSubCategory",826},
+#line 824 "keys"
+    {"g1conceptsMasterDir",819},
+    {""}, {""}, {""},
+#line 38 "keys"
+    {"DiInDegrees",33},
+    {""}, {""},
+#line 867 "keys"
+    {"horizontalCoordinateDefinition",862},
     {""}, {""}, {""}, {""}, {""},
-#line 1102 "../tests/keys"
-    {"molarMass",1097},
+#line 1244 "keys"
+    {"numberOfCharacters",1239},
+    {""}, {""},
+#line 782 "keys"
+    {"falseNorthing",777},
+    {""}, {""},
+#line 2019 "keys"
+    {"typicalSecond",2014},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 702 "keys"
+    {"energyNorm",697},
+    {""}, {""},
+#line 1611 "keys"
+    {"referenceReflectivityForEchoTop",1606},
+#line 1481 "keys"
+    {"parameterCategory",1476},
+    {""},
+#line 866 "keys"
+    {"hideThis",861},
+#line 1982 "keys"
+    {"tsectionNumber5",1977},
     {""}, {""}, {""},
-#line 1718 "../tests/keys"
-    {"shapeOfVerificationArea",1713},
+#line 598 "keys"
+    {"dateOfAnalysis",593},
     {""},
-#line 1627 "../tests/keys"
-    {"scaledValueOfRadiusOfSphericalEarth",1622},
+#line 1268 "keys"
+    {"numberOfForecastsInCluster",1263},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1953 "keys"
+    {"timeOfAnalysis",1948},
+#line 653 "keys"
+    {"earthIsOblate",648},
+#line 1397 "keys"
+    {"originalParameterTableNumber",1392},
     {""}, {""}, {""},
-#line 1049 "../tests/keys"
-    {"matchAerosolPacking",1044},
-#line 1827 "../tests/keys"
-    {"thresholdIndicator",1822},
+#line 1023 "keys"
+    {"listOfDistributionFunctionParameter",1018},
+#line 643 "keys"
+    {"doExtractArea",638},
     {""}, {""},
-#line 80 "../tests/keys"
-    {"GTS",75},
-    {""}, {""},
-#line 98 "../tests/keys"
-    {"LaDInDegrees",93},
+#line 809 "keys"
+    {"forecastPeriodFrom",804},
     {""}, {""}, {""}, {""},
-#line 116 "../tests/keys"
-    {"LoVInDegrees",111},
-#line 167 "../tests/keys"
-    {"Nb",162},
-    {""},
-#line 855 "../tests/keys"
-    {"iterationNumber",850},
+#line 128 "keys"
+    {"LoVInDegrees",123},
+#line 813 "keys"
+    {"forecastTime",808},
     {""}, {""}, {""},
-#line 1393 "../tests/keys"
-    {"partitionNumber",1388},
-#line 1488 "../tests/keys"
-    {"rdbType",1483},
-#line 496 "../tests/keys"
-    {"componentIndex",491},
-    {""}, {""}, {""}, {""}, {""},
-#line 27 "../tests/keys"
-    {"CDF",22},
-    {""},
-#line 1491 "../tests/keys"
-    {"rdbtimeDay",1486},
-    {""}, {""},
-#line 805 "../tests/keys"
-    {"iDirectionIncrementInDegrees",800},
-    {""}, {""}, {""},
-#line 737 "../tests/keys"
-    {"forecastPeriodFrom",732},
-    {""},
-#line 1251 "../tests/keys"
-    {"offsetAfterLocalSection",1246},
-#line 1594 "../tests/keys"
-    {"satelliteNumber",1589},
-    {""},
-#line 520 "../tests/keys"
-    {"coordinate1Start",515},
-    {""},
-#line 598 "../tests/keys"
-    {"dimensionNumber",593},
-#line 1031 "../tests/keys"
-    {"marsModel",1026},
-#line 1628 "../tests/keys"
-    {"scaledValueOfSecondFixedSurface",1623},
-    {""}, {""}, {""}, {""},
-#line 1674 "../tests/keys"
-    {"section2Pointer",1669},
-#line 1512 "../tests/keys"
-    {"referenceReflectivityForEchoTop",1507},
-    {""}, {""},
-#line 1957 "../tests/keys"
-    {"visibility",1952},
-#line 257 "../tests/keys"
-    {"accumulationInterval",252},
-    {""},
-#line 1220 "../tests/keys"
-    {"numberOfRows",1215},
-    {""}, {""},
-#line 348 "../tests/keys"
-    {"centuryOfReference",343},
-#line 794 "../tests/keys"
-    {"horizontalDimensionProcessed",789},
-    {""}, {""}, {""},
-#line 601 "../tests/keys"
-    {"directionNumber",596},
-    {""}, {""},
-#line 1478 "../tests/keys"
-    {"radialAngularSpacing",1473},
-#line 237 "../tests/keys"
-    {"XR",232},
-    {""}, {""}, {""}, {""},
-#line 1160 "../tests/keys"
-    {"numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction",1155},
-#line 1161 "../tests/keys"
-    {"numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction",1156},
-#line 1527 "../tests/keys"
-    {"resolutionAndComponentFlags",1522},
-    {""}, {""}, {""},
-#line 1188 "../tests/keys"
-    {"numberOfIterations",1183},
-    {""},
-#line 579 "../tests/keys"
-    {"dayOfReference",574},
-    {""},
-#line 711 "../tests/keys"
-    {"falseNorthing",706},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1057 "../tests/keys"
-    {"md5Data",1052},
-    {""},
-#line 1819 "../tests/keys"
-    {"theMessage",1814},
-#line 1482 "../tests/keys"
-    {"radiusOfCentralCluster",1477},
-#line 1453 "../tests/keys"
-    {"probProductDefinition",1448},
-#line 1158 "../tests/keys"
-    {"numberOfClusters",1153},
-    {""}, {""}, {""}, {""}, {""},
-#line 1534 "../tests/keys"
-    {"resolutionAndComponentFlags8",1529},
-    {""}, {""}, {""}, {""},
-#line 1252 "../tests/keys"
-    {"offsetAfterPadding",1247},
-    {""}, {""}, {""}, {""},
-#line 1089 "../tests/keys"
-    {"minutesAfterDataCutoff",1084},
+#line 1383 "keys"
+    {"oneThousand",1378},
+    {""}, {""}, {""},
+#line 2041 "keys"
+    {"unsignedIntegers",2036},
     {""},
-#line 1771 "../tests/keys"
-    {"stepForClustering",1766},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 561 "keys"
+    {"corr2Data",556},
     {""}, {""},
-#line 665 "../tests/keys"
-    {"energyNorm",660},
-#line 1187 "../tests/keys"
-    {"numberOfInts",1182},
-    {""}, {""}, {""}, {""},
-#line 821 "../tests/keys"
-    {"indicatorOfUnitOfTimeRange",816},
+#line 627 "keys"
+    {"dewPointTemperature",622},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 652 "keys"
+    {"dy",647},
     {""}, {""}, {""}, {""},
-#line 1475 "../tests/keys"
-    {"qualityControl",1470},
-#line 1108 "../tests/keys"
-    {"multiplicationFactorForLatLong",1103},
+#line 606 "keys"
+    {"day",601},
     {""},
-#line 1502 "../tests/keys"
-    {"rectimeMinute",1497},
-    {""},
-#line 765 "../tests/keys"
-    {"grib2divider",760},
-    {""}, {""}, {""},
-#line 827 "../tests/keys"
-    {"integerScalingFactorAppliedToDirections",822},
-#line 828 "../tests/keys"
-    {"integerScalingFactorAppliedToFrequencies",823},
-    {""}, {""}, {""}, {""},
-#line 136 "../tests/keys"
-    {"MS",131},
-#line 1671 "../tests/keys"
-    {"section1Pointer",1666},
-#line 1298 "../tests/keys"
-    {"orientationOfTheGrid",1293},
+#line 1974 "keys"
+    {"totalNumberOfdimensions",1969},
     {""}, {""},
-#line 1870 "../tests/keys"
-    {"tubeNumber",1865},
-    {""},
-#line 790 "../tests/keys"
-    {"heightPressureEtcOfLevels",785},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 961 "../tests/keys"
-    {"localMinute",956},
-#line 1526 "../tests/keys"
-    {"resolutionAndComponentFlag",1521},
+#line 645 "keys"
+    {"doExtractSubsets",640},
     {""}, {""},
-#line 478 "../tests/keys"
-    {"clusterMember8",473},
-    {""},
-#line 1864 "../tests/keys"
-    {"truncateDegrees",1859},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 1602 "../tests/keys"
-    {"scaleFactorOfFirstSize",1597},
-#line 1291 "../tests/keys"
-    {"operatingMode",1286},
-#line 1753 "../tests/keys"
-    {"spectralMode",1748},
-    {""},
-#line 1808 "../tests/keys"
-    {"tableNumber",1803},
-#line 962 "../tests/keys"
-    {"localMonth",957},
+#line 511 "keys"
+    {"cnmc_isac",506},
+    {""}, {""},
+#line 2026 "keys"
+    {"unitOfTime",2021},
+    {""}, {""},
+#line 1873 "keys"
+    {"startingAzimuth",1868},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 946 "../tests/keys"
-    {"localDefNumberOne",941},
-#line 484 "../tests/keys"
-    {"clutterFilterIndicator",479},
-    {""},
-#line 479 "../tests/keys"
-    {"clusterMember9",474},
+#line 1872 "keys"
+    {"startTimeStep",1867},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 1079 "../tests/keys"
-    {"messageLength",1074},
-    {""}, {""}, {""}, {""},
-#line 1876 "../tests/keys"
-    {"typeOfCalendar",1871},
-    {""}, {""}, {""},
-#line 586 "../tests/keys"
-    {"defaultShortName",581},
-    {""}, {""}, {""},
-#line 1026 "../tests/keys"
-    {"marsLamModel",1021},
+#line 1058 "keys"
+    {"logTransform",1053},
+#line 1888 "keys"
+    {"streamOfAnalysis",1883},
+#line 1705 "keys"
+    {"scaleFactorOfFirstFixedSurface",1700},
+    {""}, {""},
+#line 2141 "keys"
+    {"yearOfReference",2136},
+#line 216 "keys"
+    {"Sub-Experiment_Identifier",211},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 2004 "keys"
+    {"typeOfPreProcessing",1999},
+    {""}, {""}, {""}, {""},
+#line 1192 "keys"
+    {"molarMass",1187},
+    {""}, {""}, {""}, {""},
+#line 636 "keys"
+    {"directionScalingFactor",631},
+    {""}, {""}, {""}, {""}, {""},
+#line 1793 "keys"
+    {"section5Pointer",1788},
+    {""}, {""},
+#line 1615 "keys"
+    {"reflectivityCalibrationConstant",1610},
+#line 1152 "keys"
+    {"md5Section5",1147},
+    {""}, {""},
+#line 1118 "keys"
+    {"marsModel",1113},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 679 "../tests/keys"
-    {"expandedAbbreviations",674},
+#line 1253 "keys"
+    {"numberOfComponents",1248},
+    {""}, {""}, {""}, {""},
+#line 932 "keys"
+    {"is_tigge",927},
+    {""},
+#line 1945 "keys"
+    {"tigge_name",1940},
+#line 510 "keys"
+    {"clutterFilterIndicator",505},
+    {""}, {""}, {""}, {""},
+#line 933 "keys"
+    {"is_uerra",928},
+#line 1812 "keys"
+    {"section_8",1807},
+    {""},
+#line 1248 "keys"
+    {"numberOfClusters",1243},
+    {""},
+#line 1174 "keys"
+    {"minuteOfAnalysis",1169},
+#line 110 "keys"
+    {"LaDInDegrees",105},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 647 "keys"
+    {"dummy",642},
+#line 166 "keys"
+    {"NC",161},
+    {""}, {""}, {""},
+#line 1502 "keys"
+    {"periodOfTime",1497},
+#line 1166 "keys"
+    {"messageLength",1161},
+    {""}, {""}, {""},
+#line 1279 "keys"
+    {"numberOfInts",1274},
+    {""}, {""},
+#line 1825 "keys"
+    {"short_name",1820},
+#line 1579 "keys"
+    {"radiusOfCentralCluster",1574},
+    {""}, {""}, {""},
+#line 1879 "keys"
+    {"stepForClustering",1874},
+#line 2035 "keys"
+    {"unitsOfSecondFixedSurface",2030},
+#line 1978 "keys"
+    {"truncateDegrees",1973},
+    {""}, {""},
+#line 1031 "keys"
+    {"localDefNumberOne",1026},
+#line 2123 "keys"
+    {"xCoordinateOfOriginOfSectorImage",2118},
+#line 958 "keys"
+    {"laplacianScalingFactor",953},
+    {""}, {""},
+#line 577 "keys"
+    {"country",572},
     {""}, {""}, {""}, {""}, {""},
-#line 620 "../tests/keys"
-    {"earthMinorAxis",615},
-#line 537 "../tests/keys"
-    {"corr3Data",532},
-    {""}, {""}, {""},
-#line 1164 "../tests/keys"
-    {"numberOfContributingSpectralBands",1159},
-#line 1736 "../tests/keys"
-    {"southEastLongitudeOfVerficationArea",1731},
-#line 253 "../tests/keys"
-    {"_T",248},
-    {""},
-#line 341 "../tests/keys"
-    {"centralLongitude",336},
+#line 46 "keys"
+    {"DxInDegrees",41},
+#line 1628 "keys"
+    {"resolutionAndComponentFlags",1623},
     {""},
-#line 762 "../tests/keys"
-    {"grib1divider",757},
+#line 1951 "keys"
+    {"timeIncrement",1946},
+#line 1386 "keys"
+    {"operatingMode",1381},
     {""}, {""}, {""},
-#line 2003 "../tests/keys"
-    {"xCoordinateOfOriginOfSectorImage",1998},
+#line 148 "keys"
+    {"MS",143},
+#line 1729 "keys"
+    {"scaledValueOfLowerLimit",1724},
     {""},
-#line 764 "../tests/keys"
-    {"grib2LocalSectionPresent",759},
-#line 1604 "../tests/keys"
-    {"scaleFactorOfLowerLimit",1599},
+#line 1942 "keys"
+    {"tiggeModel",1937},
+#line 254 "keys"
+    {"XR",249},
     {""},
-#line 1292 "../tests/keys"
-    {"operationalForecastCluster",1287},
+#line 1483 "keys"
+    {"parameterIndicator",1478},
+#line 1930 "keys"
+    {"theMessage",1925},
+    {""},
+#line 1057 "keys"
+    {"local_use",1052},
     {""}, {""}, {""}, {""},
-#line 1831 "../tests/keys"
-    {"tiggeModel",1826},
+#line 1962 "keys"
+    {"totalInitialConditions",1957},
     {""},
-#line 1636 "../tests/keys"
-    {"scanningMode",1631},
-    {""}, {""}, {""},
-#line 874 "../tests/keys"
-    {"laplacianScalingFactor",869},
-    {""}, {""},
-#line 1822 "../tests/keys"
-    {"thisMarsStream",1817},
+#line 871 "keys"
+    {"hourOfAnalysis",866},
+    {""},
+#line 1931 "keys"
+    {"thisExperimentVersionNumber",1926},
     {""},
-#line 603 "../tests/keys"
-    {"directionScalingFactor",598},
+#line 48 "keys"
+    {"Dy",43},
+    {""},
+#line 859 "keys"
+    {"gts_header",854},
+    {""}, {""}, {""}, {""}, {""},
+#line 619 "keys"
+    {"defaultShortName",614},
+    {""}, {""}, {""},
+#line 1635 "keys"
+    {"resolutionAndComponentFlags8",1630},
+    {""}, {""}, {""}, {""}, {""},
+#line 557 "keys"
+    {"coordinateIndexNumber",552},
+#line 1109 "keys"
+    {"marsGrid",1104},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1836 "keys"
+    {"skew",1831},
+    {""}, {""}, {""}, {""}, {""},
+#line 1280 "keys"
+    {"numberOfIterations",1275},
+    {""}, {""}, {""}, {""},
+#line 1981 "keys"
+    {"tsectionNumber4",1976},
+    {""},
+#line 1741 "keys"
+    {"scanningMode",1736},
+#line 835 "keys"
+    {"grib1divider",830},
+#line 936 "keys"
+    {"isectionNumber4",931},
+    {""}, {""}, {""}, {""}, {""},
+#line 726 "keys"
+    {"expandedOriginalWidths",721},
+    {""}, {""},
+#line 723 "keys"
+    {"expandedOriginalCodes",718},
+    {""}, {""},
+#line 1387 "keys"
+    {"operationalForecastCluster",1382},
+    {""}, {""}, {""},
+#line 1966 "keys"
+    {"totalNumberOfDataValuesMissingInStatisticalProcess",1961},
+#line 1967 "keys"
+    {"totalNumberOfDirections",1962},
+    {""}, {""}, {""}, {""},
+#line 366 "keys"
+    {"centralLongitude",361},
+    {""}, {""}, {""}, {""},
+#line 1861 "keys"
+    {"spectralMode",1856},
+    {""}, {""},
+#line 1113 "keys"
+    {"marsLamModel",1108},
+#line 1599 "keys"
+    {"rectimeDay",1594},
+    {""},
+#line 2101 "keys"
+    {"windGust",2096},
+#line 1837 "keys"
+    {"skewness",1832},
+#line 1915 "keys"
+    {"table2Version",1910},
+    {""},
+#line 569 "keys"
+    {"correction3",564},
+#line 1366 "keys"
+    {"offsetSection5",1361},
+    {""}, {""}, {""},
+#line 1601 "keys"
+    {"rectimeMinute",1596},
+    {""},
+#line 522 "keys"
+    {"compressedData",517},
+#line 858 "keys"
+    {"gts_ddhh00",853},
+#line 725 "keys"
+    {"expandedOriginalScales",720},
+#line 1046 "keys"
+    {"localMinute",1041},
+#line 1991 "keys"
+    {"typeOfCompressionUsed",1986},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1535 "../tests/keys"
-    {"rootTablesDir",1530},
-    {""}, {""},
-#line 1797 "../tests/keys"
-    {"subsetNumber",1792},
-    {""}, {""}, {""}, {""},
-#line 685 "../tests/keys"
-    {"expandedOriginalCodes",680},
-#line 1302 "../tests/keys"
-    {"originalParameterTableNumber",1297},
-#line 688 "../tests/keys"
-    {"expandedOriginalWidths",683},
-#line 1765 "../tests/keys"
-    {"startingAzimuth",1760},
-    {""},
-#line 687 "../tests/keys"
-    {"expandedOriginalScales",682},
+#line 2093 "keys"
+    {"widthOfLengths",2088},
+    {""},
+#line 897 "keys"
+    {"indicatorOfUnitOfTimeRange",892},
+    {""},
+#line 862 "keys"
+    {"headersOnly",857},
+    {""},
+#line 614 "keys"
+    {"defaultFaLevelName",609},
+#line 952 "keys"
+    {"kurt",947},
+#line 505 "keys"
+    {"clusterMember9",500},
+#line 1790 "keys"
+    {"section4Pointer",1785},
+#line 1047 "keys"
+    {"localMonth",1042},
+    {""},
+#line 2036 "keys"
+    {"unknown",2031},
+    {""}, {""}, {""}, {""},
+#line 349 "keys"
+    {"calendarIdPresent",344},
+    {""}, {""},
+#line 1029 "keys"
+    {"localDay",1024},
+#line 1521 "keys"
+    {"predefined_grid",1516},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 543 "../tests/keys"
-    {"correction2Part",538},
-    {""},
-#line 1095 "../tests/keys"
-    {"mixedCoordinateDefinition",1090},
-    {""}, {""}, {""}, {""},
-#line 763 "../tests/keys"
-    {"grib2LocalSectionNumber",758},
-    {""}, {""}, {""}, {""},
-#line 1685 "../tests/keys"
-    {"section4Pointer",1680},
-#line 1176 "../tests/keys"
-    {"numberOfForecastsInCluster",1171},
-#line 654 "../tests/keys"
-    {"endOfInterval",649},
+#line 1708 "keys"
+    {"scaleFactorOfLowerLimit",1703},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1746 "keys"
+    {"scanningMode8",1741},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 724 "keys"
+    {"expandedOriginalReferences",719},
     {""}, {""}, {""}, {""},
-#line 1641 "../tests/keys"
-    {"scanningMode8",1636},
+#line 1313 "keys"
+    {"numberOfRows",1308},
+    {""}, {""}, {""}, {""}, {""},
+#line 1070 "keys"
+    {"longitudeOfLastGridPoint",1065},
     {""},
-#line 1890 "../tests/keys"
-    {"typeOfProcessedData",1885},
+#line 1787 "keys"
+    {"section4",1782},
     {""}, {""}, {""},
-#line 1592 "../tests/keys"
-    {"satelliteID",1587},
-    {""},
-#line 1849 "../tests/keys"
-    {"totalInitialConditions",1844},
+#line 1206 "keys"
+    {"nameOfFirstFixedSurface",1201},
+    {""}, {""}, {""},
+#line 1603 "keys"
+    {"reducedGrid",1598},
+#line 953 "keys"
+    {"kurtosis",948},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 899 "keys"
+    {"inputDelayedDescriptorReplicationFactor",894},
+#line 1558 "keys"
+    {"productIdentifier",1553},
+    {""}, {""},
+#line 807 "keys"
+    {"forecastOrSingularVectorNumber",802},
+#line 735 "keys"
+    {"extendedFlag",730},
+#line 392 "keys"
+    {"climateDateFrom",387},
+#line 2034 "keys"
+    {"unitsOfFirstFixedSurface",2029},
+#line 982 "keys"
+    {"latitudeOfStretchingPoleInDegrees",977},
+#line 504 "keys"
+    {"clusterMember8",499},
+    {""}, {""}, {""},
+#line 1989 "keys"
+    {"typeOfAuxiliaryInformation",1984},
+#line 347 "keys"
+    {"bufrTemplate",342},
+#line 1619 "keys"
+    {"representationType",1614},
+#line 788 "keys"
+    {"fileConsistencyFlags",783},
+#line 1858 "keys"
+    {"spatialSmoothingOfProduct",1853},
+    {""}, {""}, {""}, {""},
+#line 1938 "keys"
+    {"thresholdIndicator",1933},
+#line 495 "keys"
+    {"clusterIdentifier",490},
+    {""}, {""},
+#line 288 "keys"
+    {"angleMultiplier",283},
+#line 1025 "keys"
+    {"listOfModelIdentifiers",1020},
+    {""}, {""}, {""}, {""},
+#line 1476 "keys"
+    {"paleontologicalOffset",1471},
+    {""},
+#line 661 "keys"
+    {"easternLongitudeOfDomain",656},
+    {""},
+#line 2091 "keys"
+    {"westernLongitudeOfDomain",2086},
+    {""}, {""}, {""}, {""}, {""},
+#line 880 "keys"
+    {"iDirectionIncrementInDegrees",875},
+#line 1234 "keys"
+    {"numberOfAnalysis",1229},
     {""},
-#line 162 "../tests/keys"
-    {"NR",157},
-#line 1068 "../tests/keys"
-    {"md5Structure",1063},
+#line 1638 "keys"
+    {"roundedMarsLatitude",1633},
+#line 297 "keys"
+    {"auxiliary",292},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""},
-#line 2005 "../tests/keys"
-    {"xDirectionGridLength",2000},
+#line 1866 "keys"
+    {"standardParallelInMicrodegrees",1861},
+    {""}, {""}, {""}, {""}, {""},
+#line 980 "keys"
+    {"latitudeOfSouthernPoleInDegrees",975},
+    {""}, {""},
+#line 1868 "keys"
+    {"startOfMessage",1863},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1561 "keys"
+    {"projectionCenterFlag",1556},
+#line 865 "keys"
+    {"heightPressureEtcOfLevels",860},
     {""}, {""}, {""}, {""},
-#line 1607 "../tests/keys"
-    {"scaleFactorOfRadiusOfSphericalEarth",1602},
+#line 1139 "keys"
+    {"matchTimeRepres",1134},
+    {""},
+#line 528 "keys"
+    {"conceptsLocalMarsDirAll",523},
+#line 1933 "keys"
+    {"thisMarsStream",1928},
+    {""},
+#line 1278 "keys"
+    {"numberOfIntegers",1273},
+#line 1254 "keys"
+    {"numberOfContributingSpectralBands",1249},
+#line 572 "keys"
+    {"correction4Part",567},
+#line 737 "keys"
+    {"extraDimensionPresent",732},
+    {""}, {""},
+#line 911 "keys"
+    {"internationalDataSubCategory",906},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 547 "../tests/keys"
-    {"correction4Part",542},
     {""},
-#line 898 "../tests/keys"
-    {"latitudeOfStretchingPoleInDegrees",893},
-    {""}, {""}, {""},
-#line 686 "../tests/keys"
-    {"expandedOriginalReferences",681},
+#line 1399 "keys"
+    {"originatingCentre",1394},
+    {""},
+#line 37 "keys"
+    {"DiGiven",32},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 269 "../tests/keys"
-    {"angleMultiplier",264},
-#line 1750 "../tests/keys"
-    {"spatialSmoothingOfProduct",1745},
-    {""}, {""}, {""},
-#line 1899 "../tests/keys"
-    {"typicalDay",1894},
-#line 1058 "../tests/keys"
-    {"md5DataSection",1053},
-    {""}, {""}, {""},
-#line 1758 "../tests/keys"
-    {"standardParallelInMicrodegrees",1753},
-    {""}, {""},
-#line 896 "../tests/keys"
-    {"latitudeOfSouthernPoleInDegrees",891},
-    {""}, {""}, {""},
-#line 523 "../tests/keys"
-    {"coordinate2Start",518},
-#line 1735 "../tests/keys"
-    {"southEastLongitudeOfLPOArea",1730},
-    {""}, {""}, {""}, {""}, {""},
-#line 1608 "../tests/keys"
-    {"scaleFactorOfSecondFixedSurface",1603},
-    {""}, {""}, {""}, {""},
-#line 1895 "../tests/keys"
-    {"typeOfTimeIncrement",1890},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1401 "keys"
+    {"originatingCentrer",1396},
+#line 1913 "keys"
+    {"systemNumber",1908},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1269 "keys"
+    {"numberOfForecastsInEnsemble",1264},
     {""}, {""}, {""},
-#line 625 "../tests/keys"
-    {"easternLongitudeOfDomain",620},
+#line 2125 "keys"
+    {"xDirectionGridLength",2120},
+#line 1963 "keys"
+    {"totalLength",1958},
     {""}, {""}, {""},
-#line 1299 "../tests/keys"
-    {"orientationOfTheGridInDegrees",1294},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 530 "keys"
+    {"conceptsMasterMarsDir",525},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1869 "keys"
+    {"startOfRange",1864},
     {""},
-#line 853 "../tests/keys"
-    {"isotopeIdentificationNumber",848},
+#line 770 "keys"
+    {"extractedDateTimeNumberOfSubsets",765},
+#line 1780 "keys"
+    {"section2Present",1775},
+    {""},
+#line 837 "keys"
+    {"grib2LocalSectionPresent",832},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 1973 "../tests/keys"
-    {"widthOfLengths",1968},
+#line 838 "keys"
+    {"grib2divider",833},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1181 "keys"
+    {"missingValueManagement",1176},
+    {""}, {""}, {""}, {""}, {""},
+#line 1588 "keys"
+    {"rdbtimeDay",1583},
+#line 883 "keys"
+    {"iScansPositively",878},
+#line 1048 "keys"
+    {"localNumberOfObservations",1043},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1969 "keys"
+    {"totalNumberOfFrequencies",1964},
+#line 1590 "keys"
+    {"rdbtimeMinute",1585},
+    {""}, {""}, {""},
+#line 892 "keys"
+    {"incrementOfLengths",887},
+    {""},
+#line 2077 "keys"
+    {"visibility",2072},
+#line 1343 "keys"
+    {"offsetAfterBitmap",1338},
+    {""},
+#line 2043 "keys"
+    {"updateSequenceNumber",2038},
+    {""}, {""}, {""}, {""},
+#line 766 "keys"
+    {"extractSubsetIntervalEnd",761},
+#line 1776 "keys"
+    {"section1Pointer",1771},
+#line 1639 "keys"
+    {"roundedMarsLevelist",1634},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1860 "keys"
+    {"spectralDataRepresentationType",1855},
     {""}, {""},
-#line 1842 "../tests/keys"
-    {"timeRangeIndicator",1837},
-    {""}, {""}, {""},
-#line 1621 "../tests/keys"
-    {"scaledValueOfFirstFixedSurface",1616},
-    {""}, {""}, {""},
-#line 1536 "../tests/keys"
-    {"roundedMarsLatitude",1531},
+#line 218 "keys"
+    {"TAFstr",213},
+#line 521 "keys"
+    {"componentIndex",516},
+    {""},
+#line 1841 "keys"
+    {"southEastLatitudeOfVerficationArea",1836},
     {""}, {""},
-#line 983 "../tests/keys"
-    {"longitudeOfLastGridPoint",978},
-#line 1179 "../tests/keys"
-    {"numberOfForecastsInTube",1174},
+#line 1247 "keys"
+    {"numberOfClusterLowResolution",1242},
     {""},
-#line 1971 "../tests/keys"
-    {"westernLongitudeOfDomain",1966},
-    {""}, {""}, {""}, {""},
-#line 503 "../tests/keys"
-    {"conceptsLocalMarsDirAll",498},
-    {""}, {""}, {""},
-#line 1186 "../tests/keys"
-    {"numberOfIntegers",1181},
+#line 767 "keys"
+    {"extractSubsetIntervalStart",762},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1402 "keys"
+    {"override_large_constant_fields",1397},
+#line 1133 "keys"
+    {"masterTableNumber",1128},
     {""},
-#line 1483 "../tests/keys"
-    {"radiusOfClusterDomain",1478},
+#line 1955 "keys"
+    {"timeRangeIndicator",1950},
+    {""}, {""},
+#line 609 "keys"
+    {"dayOfReference",604},
     {""}, {""}, {""},
-#line 1201 "../tests/keys"
-    {"numberOfParallelsBetweenAPoleAndTheEquator",1196},
-    {""},
-#line 1093 "../tests/keys"
-    {"missingValueManagement",1088},
-#line 1424 "../tests/keys"
-    {"predefined_grid",1419},
-#line 1665 "../tests/keys"
-    {"section0Length",1660},
-#line 1116 "../tests/keys"
-    {"nameOfFirstFixedSurface",1111},
-    {""},
-#line 1760 "../tests/keys"
-    {"startOfMessage",1755},
-#line 261 "../tests/keys"
-    {"additionalFlagPresent",256},
+#line 1767 "keys"
+    {"secondsOfAnalysis",1762},
     {""}, {""}, {""},
-#line 1407 "../tests/keys"
-    {"perturbationNumber",1402},
-#line 951 "../tests/keys"
-    {"localExtensionPadding",946},
+#line 1905 "keys"
+    {"subdivisionsOfBasicAngle",1900},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 149 "../tests/keys"
-    {"N",144},
+#line 1562 "keys"
+    {"projectionCentreFlag",1557},
+    {""}, {""},
+#line 836 "keys"
+    {"grib2LocalSectionNumber",831},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1063 "keys"
+    {"longitudeOfCenterPointInDegrees",1058},
+    {""}, {""},
+#line 1322 "keys"
+    {"numberOfTimeSteps",1317},
+#line 1207 "keys"
+    {"nameOfSecondFixedSurface",1202},
     {""},
-#line 505 "../tests/keys"
-    {"conceptsMasterMarsDir",500},
-#line 1694 "../tests/keys"
-    {"section8Length",1689},
+#line 691 "keys"
+    {"endOfInterval",686},
+    {""}, {""},
+#line 373 "keys"
+    {"centuryOfReference",368},
+#line 1626 "keys"
+    {"reservedSection3",1621},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 74 "keys"
+    {"GDSPresent",69},
     {""},
-#line 1198 "../tests/keys"
-    {"numberOfOctetsExtraDescriptors",1193},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1609 "keys"
+    {"referenceOfLengths",1604},
     {""}, {""},
-#line 1111 "../tests/keys"
-    {"n2",1106},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1800 "../tests/keys"
-    {"swapScanningLon",1795},
-#line 1734 "../tests/keys"
-    {"southEastLatitudeOfVerficationArea",1729},
+#line 1909 "keys"
+    {"swapScanningLon",1904},
+    {""},
+#line 995 "keys"
+    {"latitudinalDirectionGridLength",990},
+    {""},
+#line 2040 "keys"
+    {"unpackedValues",2035},
     {""}, {""},
-#line 1743 "../tests/keys"
-    {"sp2",1738},
+#line 2049 "keys"
+    {"uuidOfVGrid",2044},
     {""}, {""},
-#line 1493 "../tests/keys"
-    {"rdbtimeMinute",1488},
-    {""}, {""}, {""}, {""}, {""},
-#line 940 "../tests/keys"
-    {"listOfModelIdentifiers",935},
+#line 565 "keys"
+    {"correction1",560},
     {""},
-#line 47 "../tests/keys"
-    {"DyInDegrees",42},
-#line 1748 "../tests/keys"
-    {"spare2",1743},
-    {""}, {""}, {""},
-#line 1763 "../tests/keys"
-    {"startStepInHours",1758},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 71 "../tests/keys"
-    {"GG",66},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 329 "../tests/keys"
-    {"categoryType",324},
-    {""}, {""}, {""},
-#line 1804 "../tests/keys"
-    {"systemNumber",1799},
+#line 1919 "keys"
+    {"tablesLocalDir",1914},
     {""}, {""},
-#line 1860 "../tests/keys"
-    {"totalNumberOfdimensions",1855},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 721 "../tests/keys"
-    {"firstLatitudeInDegrees",716},
-#line 856 "../tests/keys"
-    {"jDirectionIncrement",851},
-#line 1780 "../tests/keys"
-    {"streamOfAnalysis",1775},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""},
-#line 1250 "../tests/keys"
-    {"offsetAfterData",1245},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""},
-#line 1537 "../tests/keys"
-    {"roundedMarsLevelist",1532},
-#line 734 "../tests/keys"
-    {"forecastMonth",729},
-#line 1799 "../tests/keys"
-    {"swapScanningLat",1794},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 2004 "../tests/keys"
-    {"xCoordinateOfSubSatellitePoint",1999},
-#line 1379 "../tests/keys"
-    {"paleontologicalOffset",1374},
-    {""}, {""}, {""}, {""},
-#line 96 "../tests/keys"
-    {"La2",91},
-#line 2002 "../tests/keys"
-    {"wrongPadding",1997},
+#line 1108 "keys"
+    {"marsForecastMonth",1103},
     {""}, {""}, {""},
-#line 103 "../tests/keys"
-    {"Lar2",98},
-    {""}, {""}, {""}, {""}, {""},
-#line 181 "../tests/keys"
-    {"P2",176},
+#line 1374 "keys"
+    {"oneMillionConstant",1369},
     {""},
-#line 1173 "../tests/keys"
-    {"numberOfEffectiveValues",1168},
+#line 658 "keys"
+    {"eastLongitudeOfCluster",653},
     {""},
-#line 1086 "../tests/keys"
-    {"minuteOfAnalysis",1081},
-    {""}, {""}, {""}, {""},
-#line 207 "../tests/keys"
-    {"TT",202},
+#line 2088 "keys"
+    {"westLongitudeOfCluster",2083},
+#line 632 "keys"
+    {"dimensionType",627},
+    {""},
+#line 2122 "keys"
+    {"wrongPadding",2117},
+    {""},
+#line 1282 "keys"
+    {"numberOfLogicals",1277},
+    {""}, {""}, {""},
+#line 1572 "keys"
+    {"qualityControl",1567},
     {""}, {""},
-#line 108 "../tests/keys"
-    {"Latin2",103},
-#line 1240 "../tests/keys"
-    {"observationGeneratingProcessIdentifier",1235},
-    {""}, {""}, {""}, {""},
-#line 289 "../tests/keys"
-    {"baseTimeEPS",284},
-#line 113 "../tests/keys"
-    {"Lo2",108},
-#line 175 "../tests/keys"
-    {"Ny",170},
+#line 212 "keys"
+    {"SecondOfModelVersion",207},
+#line 1365 "keys"
+    {"offsetSection4",1360},
+    {""}, {""},
+#line 851 "keys"
+    {"groupLengths",846},
+#line 1404 "keys"
+    {"packedValues",1399},
     {""}, {""}, {""},
-#line 131 "../tests/keys"
-    {"Lor2",126},
+#line 276 "keys"
+    {"accumulationInterval",271},
+    {""}, {""}, {""},
+#line 937 "keys"
+    {"isotopeIdentificationNumber",932},
+    {""}, {""}, {""},
+#line 1633 "keys"
+    {"resolutionAndComponentFlags6",1628},
     {""}, {""},
-#line 526 "../tests/keys"
-    {"coordinate3OfLastGridPoint",521},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1688 "../tests/keys"
-    {"section5Pointer",1683},
+#line 656 "keys"
+    {"earthMinorAxis",651},
+    {""}, {""}, {""},
+#line 595 "keys"
+    {"dataType",590},
+    {""}, {""},
+#line 846 "keys"
+    {"gridDefinitionTemplateNumber",841},
+#line 1786 "keys"
+    {"section3Pointer",1781},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""},
+#line 1770 "keys"
+    {"section0Length",1765},
+    {""},
+#line 513 "keys"
+    {"codeType",508},
+#line 1992 "keys"
+    {"typeOfDistributionFunction",1987},
+#line 1944 "keys"
+    {"tiggeSuiteID",1939},
+#line 1216 "keys"
+    {"northLatitudeOfCluster",1211},
+#line 1990 "keys"
+    {"typeOfCalendar",1985},
+#line 99 "keys"
+    {"J",94},
     {""}, {""}, {""}, {""},
-#line 974 "../tests/keys"
-    {"longitudeLastInDegrees",969},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 780 "../tests/keys"
-    {"groupWidth",775},
+#line 940 "keys"
+    {"jDirectionIncrement",935},
     {""},
-#line 1761 "../tests/keys"
-    {"startOfRange",1756},
-#line 1208 "../tests/keys"
-    {"numberOfPointsAlongSecondAxis",1203},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 367 "../tests/keys"
-    {"climateDateTo",362},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1127 "keys"
+    {"marsType",1122},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 697 "../tests/keys"
-    {"extendedFlag",692},
-    {""}, {""}, {""},
-#line 251 "../tests/keys"
-    {"Yp",246},
-#line 153 "../tests/keys"
-    {"NC",148},
-    {""}, {""}, {""},
-#line 1249 "../tests/keys"
-    {"offsetAfterCentreLocalSection",1244},
-    {""}, {""}, {""}, {""}, {""},
-#line 1742 "../tests/keys"
-    {"sp1",1737},
-    {""}, {""}, {""}, {""}, {""},
-#line 1304 "../tests/keys"
-    {"originatingCentre",1299},
-#line 1157 "../tests/keys"
-    {"numberOfClusterLowResolution",1152},
-#line 1306 "../tests/keys"
-    {"originatingCentrer",1301},
-    {""}, {""}, {""}, {""}, {""},
-#line 1854 "../tests/keys"
-    {"totalNumberOfDirections",1849},
+#line 1801 "keys"
+    {"sectionLengthLimitForEnsembles",1796},
+#line 1883 "keys"
+    {"stepType",1878},
+    {""},
+#line 1843 "keys"
+    {"southEastLongitudeOfVerficationArea",1838},
+#line 567 "keys"
+    {"correction2",562},
+#line 1522 "keys"
+    {"predefined_grid_values",1517},
+    {""}, {""},
+#line 805 "keys"
+    {"forecastLeadTime",800},
+    {""}, {""}, {""},
+#line 1504 "keys"
+    {"perturbationNumber",1499},
+#line 1004 "keys"
+    {"lengthOfMessage",999},
+#line 1125 "keys"
+    {"marsStream1",1120},
+    {""},
+#line 275 "keys"
+    {"_numberOfValues",270},
+    {""}, {""}, {""},
+#line 582 "keys"
+    {"dataCategory",577},
+    {""}, {""}, {""},
+#line 1799 "keys"
+    {"section8Length",1794},
+    {""}, {""}, {""}, {""},
+#line 850 "keys"
+    {"gridType",845},
+    {""}, {""}, {""}, {""},
+#line 1617 "keys"
+    {"reportType",1612},
+#line 1335 "keys"
+    {"observationGeneratingProcessIdentifier",1330},
+    {""},
+#line 2124 "keys"
+    {"xCoordinateOfSubSatellitePoint",2119},
+    {""}, {""}, {""}, {""},
+#line 190 "keys"
+    {"Ny",185},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1014 "keys"
+    {"listMembersMissing",1009},
     {""}, {""}, {""},
-#line 312 "../tests/keys"
-    {"binaryScaleFactor",307},
+#line 790 "keys"
+    {"firstDimensionCoordinateValueDefinition",785},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1406 "../tests/keys"
-    {"periodOfTimeIntervals",1401},
-    {""}, {""}, {""},
-#line 250 "../tests/keys"
-    {"Yo",245},
     {""},
-#line 561 "../tests/keys"
-    {"dataRepresentationType",556},
-#line 781 "../tests/keys"
-    {"groupWidths",776},
+#line 972 "keys"
+    {"latitudeOfIcosahedronPole",967},
+    {""},
+#line 1844 "keys"
+    {"southLatitudeOfCluster",1839},
     {""}, {""}, {""}, {""},
-#line 976 "../tests/keys"
-    {"longitudeOfCenterPointInDegrees",971},
-#line 1681 "../tests/keys"
-    {"section3Pointer",1676},
-    {""}, {""}, {""}, {""}, {""},
-#line 1649 "../tests/keys"
-    {"secondLatitudeInDegrees",1644},
-    {""}, {""}, {""}, {""}, {""},
-#line 1853 "../tests/keys"
-    {"totalNumberOfDataValuesMissingInStatisticalProcess",1848},
-    {""},
-#line 1279 "../tests/keys"
-    {"oneMillionConstant",1274},
-#line 1601 "../tests/keys"
-    {"scaleFactorOfFirstFixedSurface",1596},
-#line 1875 "../tests/keys"
-    {"typeOfAuxiliaryInformation",1870},
-#line 203 "../tests/keys"
-    {"TAFstr",198},
-    {""},
-#line 1096 "../tests/keys"
-    {"mixedCoordinateFieldFlag",1091},
-#line 1811 "../tests/keys"
-    {"tablesMasterDir",1806},
+#line 1610 "keys"
+    {"referenceOfWidths",1605},
+    {""}, {""}, {""}, {""},
+#line 2027 "keys"
+    {"unitOfTimeIncrement",2022},
+    {""}, {""}, {""},
+#line 1288 "keys"
+    {"numberOfModels",1283},
+#line 1045 "keys"
+    {"localLongitude2",1040},
+#line 1859 "keys"
+    {"spectralDataRepresentationMode",1854},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 920 "../tests/keys"
-    {"lengthOfMessage",915},
+#line 1290 "keys"
+    {"numberOfOctetsExtraDescriptors",1285},
+#line 1137 "keys"
+    {"matchLandType",1132},
     {""}, {""}, {""},
-#line 1667 "../tests/keys"
-    {"section1",1662},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 735 "../tests/keys"
-    {"forecastOrSingularVectorNumber",730},
-#line 1614 "../tests/keys"
-    {"scaleValuesBy",1609},
-    {""}, {""}, {""}, {""}, {""},
-#line 94 "../tests/keys"
-    {"La1",89},
+#line 217 "keys"
+    {"TAF",212},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1126 "keys"
+    {"marsStream2",1121},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 811 "keys"
+    {"forecastProbabilityNumber",806},
+    {""},
+#line 1908 "keys"
+    {"swapScanningLat",1903},
+    {""},
+#line 1044 "keys"
+    {"localLongitude1",1039},
+    {""}, {""}, {""},
+#line 1842 "keys"
+    {"southEastLongitudeOfLPOArea",1837},
+#line 1779 "keys"
+    {"section2Pointer",1774},
+#line 554 "keys"
+    {"coordinate4OfLastGridPoint",549},
+#line 1965 "keys"
+    {"totalNumberOfClusters",1960},
+    {""},
+#line 1849 "keys"
+    {"sp1",1844},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1265 "keys"
+    {"numberOfEffectiveValues",1260},
+    {""},
+#line 818 "keys"
+    {"frequency",813},
+    {""}, {""}, {""},
+#line 2130 "keys"
+    {"yCoordinateOfOriginOfSectorImage",2125},
+#line 1920 "keys"
+    {"tablesMasterDir",1915},
+#line 2020 "keys"
+    {"typicalTime",2015},
+    {""},
+#line 1056 "keys"
+    {"local_padding",1051},
+    {""},
+#line 1772 "keys"
+    {"section1",1767},
+#line 2023 "keys"
+    {"unexpandedDescriptors",2018},
+    {""}, {""},
+#line 49 "keys"
+    {"DyInDegrees",44},
+#line 1283 "keys"
+    {"numberOfMembersInCluster",1278},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1855 "keys"
+    {"spare1",1850},
     {""}, {""}, {""},
-#line 2010 "../tests/keys"
-    {"yCoordinateOfOriginOfSectorImage",2005},
-#line 101 "../tests/keys"
-    {"Lar1",96},
-    {""}, {""},
-#line 930 "../tests/keys"
-    {"listMembersMissing",925},
-    {""}, {""},
-#line 180 "../tests/keys"
-    {"P1",175},
+#line 2024 "keys"
+    {"unexpandedDescriptorsEncoded",2019},
     {""}, {""}, {""},
-#line 1464 "../tests/keys"
-    {"projectionCenterFlag",1459},
-    {""}, {""},
-#line 1391 "../tests/keys"
-    {"parametersVersion",1386},
-    {""}, {""}, {""}, {""},
-#line 106 "../tests/keys"
-    {"Latin1",101},
+#line 281 "keys"
+    {"aerosolType",276},
+#line 1271 "keys"
+    {"numberOfForecastsInTube",1266},
+#line 106 "keys"
+    {"La1",101},
+    {""},
+#line 901 "keys"
+    {"inputShortDelayedDescriptorReplicationFactor",896},
     {""}, {""},
-#line 1195 "../tests/keys"
-    {"numberOfModels",1190},
-#line 968 "../tests/keys"
-    {"localYear",963},
-#line 178 "../tests/keys"
-    {"Original_Parameter_Identifier",173},
+#line 1862 "keys"
+    {"spectralType",1857},
     {""},
-#line 111 "../tests/keys"
-    {"Lo1",106},
-    {""}, {""}, {""}, {""},
-#line 129 "../tests/keys"
-    {"Lor1",124},
+#line 123 "keys"
+    {"Lo1",118},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 118 "keys"
+    {"Latin1",113},
     {""}, {""},
-#line 1991 "../tests/keys"
-    {"windSpeedTrend4",1986},
-#line 1901 "../tests/keys"
-    {"typicalMinute",1896},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1190 "../tests/keys"
-    {"numberOfLogicals",1185},
+#line 113 "keys"
+    {"Lar1",108},
     {""},
-#line 197 "../tests/keys"
-    {"SecondOfModelVersion",192},
-#line 1795 "../tests/keys"
-    {"subcentreOfAnalysis",1790},
-    {""}, {""}, {""},
-#line 1021 "../tests/keys"
-    {"marsForecastMonth",1016},
+#line 1097 "keys"
+    {"mAngleMultiplier",1092},
+#line 951 "keys"
+    {"kindOfProduct",946},
     {""}, {""},
-#line 1191 "../tests/keys"
-    {"numberOfMembersInCluster",1186},
-    {""}, {""}, {""}, {""},
-#line 1008 "../tests/keys"
-    {"ls_labeling",1003},
-#line 1751 "../tests/keys"
-    {"spectralDataRepresentationMode",1746},
-    {""}, {""}, {""},
-#line 1662 "../tests/keys"
-    {"secondsOfAnalysis",1657},
+#line 660 "keys"
+    {"easternLongitudeOfClusterDomain",655},
+#line 141 "keys"
+    {"Lor1",136},
+#line 2090 "keys"
+    {"westernLongitudeOfClusterDomain",2085},
     {""}, {""}, {""},
-#line 1177 "../tests/keys"
-    {"numberOfForecastsInEnsemble",1172},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 2012 "../tests/keys"
-    {"yDirectionGridLength",2007},
-    {""}, {""},
-#line 773 "../tests/keys"
-    {"gridDefinitionTemplateNumber",768},
-    {""}, {""}, {""}, {""},
-#line 1425 "../tests/keys"
-    {"predefined_grid_values",1420},
+#line 1300 "keys"
+    {"numberOfPointsAlongSecondAxis",1295},
     {""},
-#line 1523 "../tests/keys"
-    {"reserved1",1518},
+#line 1009 "keys"
+    {"levelType",1004},
+    {""}, {""}, {""}, {""},
+#line 2138 "keys"
+    {"yearOfAnalysis",2133},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 157 "../tests/keys"
-    {"NG",152},
-#line 815 "../tests/keys"
-    {"ijDirectionIncrementGiven",810},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1268 "../tests/keys"
-    {"offsetSection2",1263},
-    {""},
-#line 1373 "../tests/keys"
-    {"padding_sec1_loc",1368},
-    {""}, {""}, {""}, {""}, {""},
-#line 1821 "../tests/keys"
-    {"thisMarsClass",1816},
-    {""},
-#line 1404 "../tests/keys"
-    {"percentileValue",1399},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 39 "../tests/keys"
-    {"DjGiven",34},
-#line 772 "../tests/keys"
-    {"gridDefinitionSection",767},
+#line 1988 "keys"
+    {"typeOfAnalysis",1983},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 1867 "../tests/keys"
-    {"tsectionNumber4",1862},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 852 "../tests/keys"
-    {"isectionNumber4",847},
-    {""}, {""},
-#line 1465 "../tests/keys"
-    {"projectionCentreFlag",1460},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1144 "../tests/keys"
-    {"numberOfAnalysis",1139},
-#line 89 "../tests/keys"
-    {"J",84},
+#line 1559 "keys"
+    {"productType",1554},
     {""},
-#line 164 "../tests/keys"
-    {"NT",159},
-    {""}, {""},
-#line 104 "../tests/keys"
-    {"Lar2InDegrees",99},
+#line 340 "keys"
+    {"boot_edition",335},
     {""},
-#line 8 "../tests/keys"
-    {"************_PRODUCT_***************",3},
-    {""}, {""}, {""},
-#line 1126 "../tests/keys"
-    {"northLatitudeOfCluster",1121},
-#line 1776 "../tests/keys"
-    {"stepTypeInternal",1771},
-#line 599 "../tests/keys"
-    {"dimensionType",594},
-#line 957 "../tests/keys"
-    {"localLatitude2",952},
-    {""}, {""},
-#line 624 "../tests/keys"
-    {"easternLongitudeOfClusterDomain",619},
+#line 393 "keys"
+    {"climateDateTo",388},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1932 "keys"
+    {"thisMarsClass",1927},
     {""}, {""}, {""}, {""}, {""},
-#line 880 "../tests/keys"
-    {"latitudeFirstInDegrees",875},
+#line 806 "keys"
+    {"forecastMonth",801},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 465 "keys"
+    {"cloudsCode3",460},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 788 "../tests/keys"
-    {"headersOnly",783},
-    {""}, {""}, {""}, {""},
-#line 132 "../tests/keys"
-    {"Lor2InDegrees",127},
+#line 779 "keys"
+    {"faModelName",774},
+    {""}, {""},
+#line 195 "keys"
+    {"P1",190},
+#line 944 "keys"
+    {"jIncrement",939},
     {""}, {""}, {""},
-#line 860 "../tests/keys"
-    {"jIncrement",855},
-#line 540 "../tests/keys"
-    {"correction1",535},
-#line 1774 "../tests/keys"
-    {"stepRangeInHours",1769},
-#line 1168 "../tests/keys"
-    {"numberOfDataMatrices",1163},
+#line 854 "keys"
+    {"groupWidth",849},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1585 "keys"
+    {"rdbType",1580},
+    {""}, {""},
+#line 1968 "keys"
+    {"totalNumberOfForecastProbabilities",1963},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 1449 "../tests/keys"
-    {"primaryMissingValue",1444},
-    {""}, {""}, {""},
-#line 691 "../tests/keys"
-    {"experimentVersionNumber",686},
-    {""}, {""}, {""},
-#line 622 "../tests/keys"
-    {"eastLongitudeOfCluster",617},
+#line 2052 "keys"
+    {"validityTime",2047},
     {""},
-#line 529 "../tests/keys"
-    {"coordinate4OfLastGridPoint",524},
-#line 1248 "../tests/keys"
-    {"offsetAfterBitmap",1243},
-#line 1970 "../tests/keys"
-    {"westernLongitudeOfClusterDomain",1965},
-    {""}, {""},
-#line 1038 "../tests/keys"
-    {"marsStream1",1033},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1737 "../tests/keys"
-    {"southLatitudeOfCluster",1732},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1156 "../tests/keys"
-    {"numberOfClusterHighResolution",1151},
+#line 1608 "keys"
+    {"referenceForGroupWidths",1603},
     {""}, {""}, {""},
-#line 1893 "../tests/keys"
-    {"typeOfSizeInterval",1888},
-    {""}, {""}, {""}, {""},
-#line 1701 "../tests/keys"
-    {"section_2",1696},
+#line 607 "keys"
+    {"dayOfAnalysis",602},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1840 "keys"
+    {"southEastLatitudeOfLPOArea",1835},
+    {""}, {""}, {""},
+#line 378 "keys"
+    {"cfVarNameECMF",373},
+#line 1824 "keys"
+    {"shortNameECMF",1819},
+    {""},
+#line 1154 "keys"
+    {"md5Section7",1149},
+    {""}, {""}, {""}, {""},
+#line 969 "keys"
+    {"latitudeOfCentralPointInClusterDomain",964},
+    {""}, {""},
+#line 1622 "keys"
+    {"reserved1",1617},
+#line 855 "keys"
+    {"groupWidths",850},
+#line 615 "keys"
+    {"defaultFaModelName",610},
+#line 1345 "keys"
+    {"offsetAfterData",1340},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 508 "keys"
+    {"clusteringDomain",503},
+#line 1514 "keys"
+    {"postAuxiliary",1509},
     {""},
-#line 739 "../tests/keys"
-    {"forecastProbabilityNumber",734},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1968 "../tests/keys"
-    {"westLongitudeOfCluster",1963},
-#line 1059 "../tests/keys"
-    {"md5GridSection",1054},
-    {""}, {""}, {""}, {""},
-#line 532 "../tests/keys"
-    {"coordinateIndexNumber",527},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1184 "keys"
+    {"mixedCoordinateFieldFlag",1179},
     {""},
-#line 102 "../tests/keys"
-    {"Lar1InDegrees",97},
+#line 945 "keys"
+    {"jPointsAreConsecutive",940},
     {""},
-#line 280 "../tests/keys"
-    {"averaging2Flag",275},
+#line 305 "keys"
+    {"backgroundProcess",300},
+#line 1515 "keys"
+    {"postAuxiliaryArrayPresent",1510},
     {""},
-#line 602 "../tests/keys"
-    {"directionOfVariation",597},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 868 "../tests/keys"
-    {"kurt",863},
-    {""}, {""}, {""}, {""},
-#line 1730 "../tests/keys"
-    {"skewness",1725},
+#line 1894 "keys"
+    {"subDefinitions2",1889},
+#line 1072 "keys"
+    {"longitudeOfNorthWestCornerOfArea",1067},
+    {""}, {""},
+#line 1505 "keys"
+    {"perturbedType",1500},
+    {""}, {""},
+#line 1754 "keys"
+    {"secondLatitudeInDegrees",1749},
+    {""}, {""},
+#line 644 "keys"
+    {"doExtractDateTime",639},
+#line 624 "keys"
+    {"deleteLocalDefinition",619},
+    {""}, {""},
+#line 1393 "keys"
+    {"orientationOfTheGrid",1388},
+    {""}, {""},
+#line 1275 "keys"
+    {"numberOfGroups",1270},
+    {""}, {""},
+#line 727 "keys"
+    {"expandedTypes",722},
+#line 1871 "keys"
+    {"startStepInHours",1866},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 1417 "../tests/keys"
-    {"postAuxiliary",1412},
-    {""}, {""}, {""},
-#line 1689 "../tests/keys"
-    {"section6",1684},
-    {""}, {""}, {""},
-#line 1682 "../tests/keys"
-    {"section4",1677},
+#line 1075 "keys"
+    {"longitudeOfSouthEastCornerOfArea",1070},
+#line 1893 "keys"
+    {"subDefinitions1",1888},
+#line 1076 "keys"
+    {"longitudeOfSouthernPole",1071},
     {""}, {""},
-#line 1372 "../tests/keys"
-    {"padding_local_7_1",1367},
-#line 130 "../tests/keys"
-    {"Lor1InDegrees",125},
+#line 1297 "keys"
+    {"numberOfPointsAlongAMeridian",1292},
+#line 890 "keys"
+    {"ijDirectionIncrementGiven",885},
     {""}, {""},
-#line 1729 "../tests/keys"
-    {"skew",1724},
+#line 1810 "keys"
+    {"section_6",1805},
     {""}, {""},
-#line 1520 "../tests/keys"
-    {"representationType",1515},
-#line 1181 "../tests/keys"
-    {"numberOfGridInReference",1176},
-#line 747 "../tests/keys"
-    {"frequencyNumber",742},
-#line 694 "../tests/keys"
-    {"experimentVersionNumberOfAnalysis",689},
+#line 299 "keys"
+    {"averaging1Flag",294},
     {""},
-#line 1050 "../tests/keys"
-    {"matchLandType",1045},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1267 "../tests/keys"
-    {"offsetSection1",1262},
+#line 1625 "keys"
+    {"reservedSection2",1620},
+#line 815 "keys"
+    {"formatVersionMajorNumber",810},
+#line 1202 "keys"
+    {"n3",1197},
+    {""},
+#line 1246 "keys"
+    {"numberOfClusterHighResolution",1241},
+#line 1607 "keys"
+    {"referenceForGroupLengths",1602},
+#line 845 "keys"
+    {"gridDefinitionSection",840},
+    {""},
+#line 1258 "keys"
+    {"numberOfDataMatrices",1253},
+    {""}, {""}, {""}, {""},
+#line 1077 "keys"
+    {"longitudeOfSouthernPoleInDegrees",1072},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 828 "keys"
+    {"generalExtended2ordr",823},
     {""}, {""}, {""},
-#line 1879 "../tests/keys"
-    {"typeOfFirstFixedSurface",1874},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 869 "../tests/keys"
-    {"kurtosis",864},
-#line 1263 "../tests/keys"
-    {"offsetFromOriginToInnerBound",1258},
-    {""}, {""}, {""}, {""},
-#line 2011 "../tests/keys"
-    {"yCoordinateOfSubSatellitePoint",2006},
-#line 95 "../tests/keys"
-    {"La1InDegrees",90},
+#line 267 "keys"
+    {"Yo",262},
     {""}, {""}, {""},
-#line 1920 "../tests/keys"
-    {"unknown",1915},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 609 "../tests/keys"
-    {"distinctLongitudes",604},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 511 "../tests/keys"
-    {"constituentType",506},
-#line 1939 "../tests/keys"
-    {"variationOfVisibilityDirection",1934},
+#line 769 "keys"
+    {"extractedAreaNumberOfSubsets",764},
     {""}, {""}, {""},
-#line 279 "../tests/keys"
-    {"averaging1Flag",274},
-    {""},
-#line 1940 "../tests/keys"
-    {"variationOfVisibilityDirectionAngle",1935},
+#line 527 "keys"
+    {"conceptsLocalDirECMF",522},
     {""},
-#line 112 "../tests/keys"
-    {"Lo1InDegrees",107},
-#line 1696 "../tests/keys"
-    {"sectionLengthLimitForEnsembles",1691},
-#line 1165 "../tests/keys"
-    {"numberOfControlForecastTube",1160},
-#line 956 "../tests/keys"
-    {"localLatitude1",951},
+#line 1358 "keys"
+    {"offsetFromOriginToInnerBound",1353},
+#line 675 "keys"
+    {"endGridDefinition",670},
     {""}, {""}, {""},
-#line 605 "../tests/keys"
-    {"disableGrib1LocalSection",600},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1851 "keys"
+    {"sp3",1846},
     {""},
-#line 1830 "../tests/keys"
-    {"tiggeLocalVersion",1825},
-#line 1178 "../tests/keys"
-    {"numberOfForecastsInTheCluster",1173},
-    {""},
-#line 1516 "../tests/keys"
-    {"reflectivityCalibrationConstant",1511},
-    {""}, {""}, {""}, {""}, {""},
-#line 1223 "../tests/keys"
-    {"numberOfSingularVectorsComputed",1218},
+#line 1400 "keys"
+    {"originatingCentreOfAnalysis",1395},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1450 "../tests/keys"
-    {"primaryMissingValueSubstitute",1445},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1856 "../tests/keys"
-    {"totalNumberOfFrequencies",1851},
-#line 577 "../tests/keys"
-    {"dayOfAnalysis",572},
+#line 882 "keys"
+    {"iScansNegatively",877},
+    {""}, {""}, {""},
+#line 1130 "keys"
+    {"mars_labeling",1125},
+    {""}, {""},
+#line 268 "keys"
+    {"Yp",263},
     {""},
-#line 1105 "../tests/keys"
-    {"monthOfEndOfOverallTimeInterval",1100},
+#line 1782 "keys"
+    {"section3",1777},
     {""}, {""}, {""},
-#line 542 "../tests/keys"
-    {"correction2",537},
+#line 878 "keys"
+    {"iDirectionIncrementGiven",873},
+#line 571 "keys"
+    {"correction4",566},
+#line 280 "keys"
+    {"additionalFlagPresent",275},
+    {""},
+#line 333 "keys"
+    {"binaryScaleFactor",328},
+#line 1623 "keys"
+    {"reservedNeedNotBePresent",1618},
+    {""},
+#line 1298 "keys"
+    {"numberOfPointsAlongAParallel",1293},
+    {""}, {""}, {""}, {""},
+#line 1036 "keys"
+    {"localExtensionPadding",1031},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 296 "keys"
+    {"attributeOfTile",291},
+    {""}, {""},
+#line 1159 "keys"
+    {"meanRVR4",1154},
+#line 1616 "keys"
+    {"remarkPresent",1611},
+    {""}, {""}, {""}, {""}, {""},
+#line 1388 "keys"
+    {"optimisationTime",1383},
     {""}, {""}, {""},
-#line 55 "../tests/keys"
-    {"Ensemble_Identifier",50},
+#line 1150 "keys"
+    {"md5Section3",1145},
+    {""}, {""}, {""}, {""},
+#line 2111 "keys"
+    {"windSpeedTrend4",2106},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 37 "../tests/keys"
-    {"DiInMetres",32},
-#line 1700 "../tests/keys"
-    {"section_1",1695},
-#line 349 "../tests/keys"
-    {"centuryOfReferenceTimeOfData",344},
+#line 1362 "keys"
+    {"offsetSection1",1357},
+#line 759 "keys"
+    {"extractDateTimeSecondEnd",754},
     {""},
-#line 882 "../tests/keys"
-    {"latitudeLongitudeValues",877},
+#line 2132 "keys"
+    {"yDirectionGridLength",2127},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 310 "keys"
+    {"baseTimeEPS",305},
     {""},
-#line 885 "../tests/keys"
-    {"latitudeOfCentralPointInClusterDomain",880},
+#line 1632 "keys"
+    {"resolutionAndComponentFlags4",1627},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1356 "keys"
+    {"offsetEndSection4",1351},
     {""},
-#line 1039 "../tests/keys"
-    {"marsStream2",1034},
-#line 973 "../tests/keys"
-    {"longitudeFirstInDegrees",968},
+#line 761 "keys"
+    {"extractDateTimeSecondStart",756},
     {""},
-#line 2019 "../tests/keys"
-    {"yearOfCentury",2014},
+#line 2015 "keys"
+    {"typicalDay",2010},
     {""},
-#line 613 "../tests/keys"
-    {"dummy2",608},
+#line 1146 "keys"
+    {"md5GridSection",1141},
     {""},
-#line 549 "../tests/keys"
-    {"countOfGroupLengths",544},
+#line 27 "keys"
+    {"CCCC",22},
     {""},
-#line 1015 "../tests/keys"
-    {"marsClass2",1010},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1529 "../tests/keys"
-    {"resolutionAndComponentFlags2",1524},
-    {""}, {""},
-#line 1481 "../tests/keys"
-    {"radiusInMetres",1476},
-#line 808 "../tests/keys"
-    {"iScansPositively",803},
-    {""}, {""},
-#line 710 "../tests/keys"
-    {"falseEasting",705},
-    {""}, {""},
-#line 947 "../tests/keys"
-    {"localDefNumberTwo",942},
+#line 1901 "keys"
+    {"subSetJ",1896},
     {""}, {""},
-#line 202 "../tests/keys"
-    {"TAF",197},
-#line 589 "../tests/keys"
-    {"deleteCalendarId",584},
-    {""}, {""},
-#line 847 "../tests/keys"
-    {"isSatelliteType",842},
-#line 724 "../tests/keys"
-    {"firstOrderValues",719},
-    {""}, {""},
-#line 1868 "../tests/keys"
-    {"tsectionNumber5",1863},
-    {""}, {""}, {""}, {""},
-#line 1211 "../tests/keys"
-    {"numberOfPointsAlongXAxis",1206},
-    {""}, {""}, {""}, {""},
-#line 283 "../tests/keys"
-    {"azimuthalWidth",278},
-    {""}, {""}, {""}, {""}, {""},
-#line 1852 "../tests/keys"
-    {"totalNumberOfClusters",1847},
+#line 1721 "keys"
+    {"scaledValueOfCentralWaveNumber",1716},
     {""},
-#line 901 "../tests/keys"
-    {"latitudeOfTangencyPoint",896},
-#line 748 "../tests/keys"
-    {"frequencyScalingFactor",743},
+#line 2017 "keys"
+    {"typicalMinute",2012},
+    {""}, {""}, {""}, {""}, {""},
+#line 1795 "keys"
+    {"section6Length",1790},
     {""}, {""}, {""}, {""},
-#line 560 "../tests/keys"
-    {"dataRepresentationTemplateNumber",555},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 950 "keys"
+    {"keySat",945},
     {""}, {""},
-#line 1261 "../tests/keys"
-    {"offsetEndSection4",1256},
-#line 960 "../tests/keys"
-    {"localLongitude2",955},
-    {""}, {""}, {""}, {""},
-#line 587 "../tests/keys"
-    {"defaultTypeOfLevel",582},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1276 "keys"
+    {"numberOfGroupsOfDataValues",1271},
+#line 1191 "keys"
+    {"modelVersionTime",1186},
     {""}, {""}, {""},
-#line 1408 "../tests/keys"
-    {"perturbedType",1403},
-    {""}, {""},
-#line 45 "../tests/keys"
-    {"DxInMetres",40},
-#line 1732 "../tests/keys"
-    {"sourceOfGridDefinition",1727},
-    {""}, {""}, {""}, {""}, {""},
-#line 1224 "../tests/keys"
-    {"numberOfSingularVectorsEvolved",1219},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 857 "../tests/keys"
-    {"jDirectionIncrementGiven",852},
-    {""}, {""}, {""}, {""},
-#line 1528 "../tests/keys"
-    {"resolutionAndComponentFlags1",1523},
-    {""}, {""}, {""}, {""},
-#line 1850 "../tests/keys"
-    {"totalLength",1845},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1055 "keys"
+    {"localYear",1050},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""},
-#line 886 "../tests/keys"
-    {"latitudeOfFirstGridPoint",881},
-#line 1951 "../tests/keys"
-    {"verifyingMonth",1946},
+#line 2121 "keys"
+    {"windVariableDirectionTrend4",2116},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 114 "keys"
+    {"Lar1InDegrees",109},
+#line 934 "keys"
+    {"isectionNumber2",929},
+    {""},
+#line 1636 "keys"
+    {"rootGroupObjectHeaderAddress",1631},
+#line 1946 "keys"
+    {"tigge_short_name",1941},
+    {""}, {""},
+#line 142 "keys"
+    {"Lor1InDegrees",137},
+#line 801 "keys"
+    {"flagShowingPostAuxiliaryArrayInUse",796},
+    {""}, {""},
+#line 1718 "keys"
+    {"scaleValuesBy",1713},
+    {""},
+#line 107 "keys"
+    {"La1InDegrees",102},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 124 "keys"
+    {"Lo1InDegrees",119},
+    {""},
+#line 1405 "keys"
+    {"packingError",1400},
+#line 1339 "keys"
+    {"oceanAtmosphereCoupling",1334},
+#line 764 "keys"
+    {"extractDateTimeYearStart",759},
+#line 1994 "keys"
+    {"typeOfFirstFixedSurface",1989},
+    {""},
+#line 1744 "keys"
+    {"scanningMode6",1739},
+    {""},
+#line 1747 "keys"
+    {"scanningModeForOneDiamond",1742},
+#line 1041 "keys"
+    {"localLatitude1",1036},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 948 "keys"
+    {"keyData",943},
+#line 1394 "keys"
+    {"orientationOfTheGridInDegrees",1389},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 863 "../tests/keys"
-    {"julianDay",858},
-#line 1796 "../tests/keys"
-    {"subdivisionsOfBasicAngle",1791},
+    {""}, {""}, {""}, {""}, {""},
+#line 879 "keys"
+    {"iDirectionIncrementGridLength",874},
     {""}, {""},
-#line 1887 "../tests/keys"
-    {"typeOfOriginalFieldValues",1882},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 235 "../tests/keys"
-    {"X2",230},
+#line 1546 "keys"
+    {"primaryMissingValue",1541},
     {""}, {""}, {""},
-#line 216 "../tests/keys"
-    {"Threshold_Or_Distribution_0_no_1_yes",211},
-#line 1272 "../tests/keys"
-    {"offsetSection6",1267},
+#line 2038 "keys"
+    {"unpackedError",2033},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""},
-#line 1270 "../tests/keys"
-    {"offsetSection4",1265},
-    {""}, {""}, {""}, {""},
-#line 1419 "../tests/keys"
-    {"powerOfTenUsedToScaleClimateWeight",1414},
+#line 1060 "keys"
+    {"longitudeFirstInDegrees",1055},
     {""}, {""},
-#line 993 "../tests/keys"
-    {"longitudeOfSubSatellitePoint",988},
+#line 1996 "keys"
+    {"typeOfGrid",1991},
     {""}, {""}, {""}, {""},
-#line 1924 "../tests/keys"
-    {"unpackedValues",1919},
-    {""}, {""}, {""}, {""},
-#line 994 "../tests/keys"
-    {"longitudeOfSubSatellitePointInDegrees",989},
+#line 744 "keys"
+    {"extractAreaNorthLatitude",739},
+#line 455 "keys"
+    {"cloudsCode1",450},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 502 "keys"
+    {"clusterMember6",497},
+    {""},
+#line 637 "keys"
+    {"dirty_statistics",632},
+#line 635 "keys"
+    {"directionOfVariation",630},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1178 "keys"
+    {"minutesAfterReferenceTimeOfDataCutoff",1173},
+    {""}, {""}, {""}, {""},
+#line 1700 "keys"
+    {"scaleFactorOfCentralWaveNumber",1695},
+    {""}, {""},
+#line 1501 "keys"
+    {"percentileValue",1496},
+#line 1316 "keys"
+    {"numberOfSingularVectorsComputed",1311},
+#line 745 "keys"
+    {"extractAreaSouthLatitude",740},
+    {""}, {""}, {""},
+#line 1488 "keys"
+    {"parametersVersion",1483},
+#line 300 "keys"
+    {"averaging2Flag",295},
+#line 819 "keys"
+    {"frequencyNumber",814},
+    {""},
+#line 39 "keys"
+    {"DiInMetres",34},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1201 "keys"
+    {"n2",1196},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 612 "../tests/keys"
-    {"dummy1",607},
-    {""}, {""},
-#line 1131 "../tests/keys"
-    {"northWestLongitudeOfVerficationArea",1126},
-#line 1014 "../tests/keys"
-    {"marsClass1",1009},
-    {""}, {""}, {""}, {""}, {""},
-#line 1878 "../tests/keys"
-    {"typeOfEnsembleForecast",1873},
+#line 753 "keys"
+    {"extractDateTimeMinuteEnd",748},
+#line 1299 "keys"
+    {"numberOfPointsAlongFirstAxis",1294},
     {""}, {""}, {""}, {""},
-#line 816 "../tests/keys"
-    {"incrementOfLengths",811},
+#line 1289 "keys"
+    {"numberOfOctectsForNumberOfPoints",1284},
     {""}, {""}, {""},
-#line 490 "../tests/keys"
-    {"codedNumberOfGroups",485},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 54 "../tests/keys"
-    {"Ensemble_Combination_Number",49},
+#line 1255 "keys"
+    {"numberOfControlForecastTube",1250},
+#line 1882 "keys"
+    {"stepRangeInHours",1877},
     {""}, {""}, {""},
-#line 743 "../tests/keys"
-    {"formatVersionMajorNumber",738},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 781 "keys"
+    {"falseEasting",776},
+#line 1578 "keys"
+    {"radiusInMetres",1573},
+    {""}, {""}, {""}, {""},
+#line 755 "keys"
+    {"extractDateTimeMinuteStart",750},
     {""},
-#line 1787 "../tests/keys"
-    {"subLocalDefinition2",1782},
+#line 756 "keys"
+    {"extractDateTimeMonthEnd",751},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1850 "keys"
+    {"sp2",1845},
+#line 758 "keys"
+    {"extractDateTimeMonthStart",753},
+#line 720 "keys"
+    {"expandedCrex_widths",715},
+#line 1314 "keys"
+    {"numberOfSecondOrderPackedValues",1309},
+#line 718 "keys"
+    {"expandedCrex_scales",713},
+#line 460 "keys"
+    {"cloudsCode2",455},
+#line 622 "keys"
+    {"deleteCalendarId",617},
+#line 1080 "keys"
+    {"longitudeOfSubSatellitePoint",1075},
+    {""}, {""},
+#line 40 "keys"
+    {"Dj",35},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1956 "keys"
+    {"timeRangeIndicatorFromStepRange",1951},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1081 "keys"
+    {"longitudeOfSubSatellitePointInDegrees",1076},
     {""}, {""}, {""},
-#line 1785 "../tests/keys"
-    {"subDefinitions2",1780},
-    {""}, {""},
-#line 1905 "../tests/keys"
-    {"typicalYear",1900},
+#line 1856 "keys"
+    {"spare2",1851},
     {""}, {""}, {""}, {""}, {""},
-#line 1857 "../tests/keys"
-    {"totalNumberOfGridPoints",1852},
-#line 1127 "../tests/keys"
-    {"northLatitudeOfDomainOfTubing",1122},
+#line 925 "keys"
+    {"isHindcast",920},
+    {""}, {""},
+#line 1213 "keys"
+    {"normAtFinalTime",1208},
+#line 108 "keys"
+    {"La2",103},
+    {""}, {""}, {""},
+#line 970 "keys"
+    {"latitudeOfFirstGridPoint",965},
+    {""},
+#line 2131 "keys"
+    {"yCoordinateOfSubSatellitePoint",2126},
+#line 125 "keys"
+    {"Lo2",120},
+#line 1629 "keys"
+    {"resolutionAndComponentFlags1",1624},
+    {""}, {""}, {""},
+#line 1773 "keys"
+    {"section1Flags",1768},
+    {""}, {""},
+#line 120 "keys"
+    {"Latin2",115},
+#line 1364 "keys"
+    {"offsetSection3",1359},
+#line 1024 "keys"
+    {"listOfEnsembleForecastNumbers",1019},
+#line 115 "keys"
+    {"Lar2",110},
     {""}, {""}, {""}, {""}, {""},
-#line 934 "../tests/keys"
-    {"listMembersUsed",929},
+#line 642 "keys"
+    {"distinctLongitudes",637},
+#line 143 "keys"
+    {"Lor2",138},
+#line 719 "keys"
+    {"expandedCrex_units",714},
     {""}, {""},
-#line 1532 "../tests/keys"
-    {"resolutionAndComponentFlags6",1527},
+#line 42 "keys"
+    {"DjInDegrees",37},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1971 "keys"
+    {"totalNumberOfIterations",1966},
+    {""}, {""}, {""},
+#line 1627 "keys"
+    {"reservedSection4",1622},
     {""},
-#line 1531 "../tests/keys"
-    {"resolutionAndComponentFlags4",1526},
-#line 347 "../tests/keys"
-    {"centuryOfAnalysis",342},
-#line 1307 "../tests/keys"
-    {"packedValues",1302},
-#line 1777 "../tests/keys"
-    {"stepUnits",1772},
-#line 1792 "../tests/keys"
-    {"subSetJ",1787},
+#line 2055 "keys"
+    {"variationOfVisibilityDirection",2050},
     {""}, {""},
-#line 1617 "../tests/keys"
-    {"scaledValueOfCentralWaveNumber",1612},
-    {""}, {""},
-#line 87 "../tests/keys"
-    {"II",82},
-#line 40 "../tests/keys"
-    {"DjInDegrees",35},
-    {""},
-#line 546 "../tests/keys"
-    {"correction4",541},
-    {""},
-#line 325 "../tests/keys"
-    {"calendarIdentification",320},
-    {""}, {""},
-#line 1510 "../tests/keys"
-    {"referenceOfLengths",1505},
-    {""},
-#line 1511 "../tests/keys"
-    {"referenceOfWidths",1506},
+#line 1550 "keys"
+    {"probProductDefinition",1545},
+#line 1317 "keys"
+    {"numberOfSingularVectorsEvolved",1312},
+    {""}, {""}, {""}, {""}, {""},
+#line 2056 "keys"
+    {"variationOfVisibilityDirectionAngle",2051},
+    {""}, {""}, {""}, {""}, {""},
+#line 1941 "keys"
+    {"tiggeLocalVersion",1936},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1101 "keys"
+    {"marsClass1",1096},
     {""}, {""}, {""}, {""},
-#line 1218 "../tests/keys"
-    {"numberOfRepresentativeMember",1213},
-#line 1124 "../tests/keys"
-    {"normAtInitialTime",1119},
-    {""}, {""},
-#line 1705 "../tests/keys"
-    {"section_6",1700},
-#line 623 "../tests/keys"
-    {"eastLongitudeOfDomainOfTubing",618},
-    {""}, {""},
-#line 1703 "../tests/keys"
-    {"section_4",1698},
-    {""},
-#line 1517 "../tests/keys"
-    {"remarkPresent",1512},
-    {""},
-#line 858 "../tests/keys"
-    {"jDirectionIncrementGridLength",853},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1738 "../tests/keys"
-    {"southLatitudeOfDomainOfTubing",1733},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1823 "../tests/keys"
-    {"thisMarsType",1818},
-#line 1010 "../tests/keys"
-    {"mAngleMultiplier",1005},
-#line 755 "../tests/keys"
-    {"generalExtended2ordr",750},
+#line 1940 "keys"
+    {"tiggeLAMName",1935},
+#line 312 "keys"
+    {"basicAngleOfTheInitialProductionDomain",307},
+#line 1547 "keys"
+    {"primaryMissingValueSubstitute",1542},
+#line 1593 "keys"
+    {"rdbtimeYear",1588},
     {""}, {""}, {""}, {""},
-#line 502 "../tests/keys"
-    {"conceptsLocalDirECMF",497},
+#line 196 "keys"
+    {"P2",191},
+#line 162 "keys"
+    {"N1",157},
     {""}, {""},
-#line 1047 "../tests/keys"
-    {"masterTablesVersionNumber",1042},
-#line 1652 "../tests/keys"
-    {"secondOrderOfDifferentWidth",1647},
-#line 777 "../tests/keys"
-    {"groupLengths",772},
+#line 116 "keys"
+    {"Lar2InDegrees",111},
     {""}, {""},
-#line 1969 "../tests/keys"
-    {"westLongitudeOfDomainOfTubing",1964},
-#line 1992 "../tests/keys"
-    {"windUnits",1987},
-    {""}, {""},
-#line 544 "../tests/keys"
-    {"correction3",539},
-    {""},
-#line 1117 "../tests/keys"
-    {"nameOfSecondFixedSurface",1112},
-    {""},
-#line 1130 "../tests/keys"
-    {"northWestLongitudeOfLPOArea",1125},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 183 "../tests/keys"
-    {"PUnset",178},
-    {""}, {""}, {""},
-#line 26 "../tests/keys"
-    {"CCCC",21},
-#line 1789 "../tests/keys"
-    {"subLocalDefinitionLength2",1784},
+#line 1792 "keys"
+    {"section5Length",1787},
     {""}, {""}, {""},
-#line 233 "../tests/keys"
-    {"X1",228},
-#line 1733 "../tests/keys"
-    {"southEastLatitudeOfLPOArea",1728},
-    {""}, {""},
-#line 1843 "../tests/keys"
-    {"timeRangeIndicatorFromStepRange",1838},
-#line 554 "../tests/keys"
-    {"dataCategory",549},
-    {""}, {""},
-#line 1066 "../tests/keys"
-    {"md5Section6",1061},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 144 "keys"
+    {"Lor2InDegrees",139},
     {""},
-#line 1672 "../tests/keys"
-    {"section2Length",1667},
-    {""}, {""}, {""}, {""},
-#line 1999 "../tests/keys"
-    {"windVariableDirectionTrend2",1994},
-#line 38 "../tests/keys"
-    {"Dj",33},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1447 "../tests/keys"
-    {"pressureUnits",1442},
+#line 2007 "keys"
+    {"typeOfSecondFixedSurface",2002},
     {""}, {""},
-#line 1205 "../tests/keys"
-    {"numberOfPointsAlongAMeridian",1200},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 799 "../tests/keys"
-    {"hoursAfterDataCutoff",794},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 151 "../tests/keys"
-    {"N2",146},
-    {""}, {""}, {""},
-#line 578 "../tests/keys"
-    {"dayOfEndOfOverallTimeInterval",573},
-#line 1070 "../tests/keys"
-    {"meanRVR2",1065},
-    {""}, {""}, {""}, {""},
-#line 133 "../tests/keys"
-    {"M",128},
+#line 1595 "keys"
+    {"realPartOf00",1590},
     {""},
-#line 1728 "../tests/keys"
-    {"sizeOfPostAuxiliaryArrayPlusOne",1723},
+#line 1148 "keys"
+    {"md5Section1",1143},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1032 "keys"
+    {"localDefNumberTwo",1027},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1206 "../tests/keys"
-    {"numberOfPointsAlongAParallel",1201},
+#line 1214 "keys"
+    {"normAtInitialTime",1209},
     {""}, {""}, {""}, {""},
-#line 867 "../tests/keys"
-    {"kindOfProduct",862},
-#line 1584 "../tests/keys"
-    {"runwayFrictionCoefficientState2",1579},
-    {""},
-#line 1786 "../tests/keys"
-    {"subLocalDefinition1",1781},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 728 "../tests/keys"
-    {"flagForNormalOrStaggeredGrid",723},
-    {""},
-#line 921 "../tests/keys"
-    {"lengthOfTimeRange",916},
-#line 365 "../tests/keys"
-    {"classOfAnalysis",360},
-    {""},
-#line 859 "../tests/keys"
-    {"jDirectionIncrementInDegrees",854},
-    {""}, {""},
-#line 246 "../tests/keys"
-    {"YR",241},
-#line 1630 "../tests/keys"
-    {"scaledValueOfSecondWavelength",1625},
+#line 372 "keys"
+    {"centuryOfAnalysis",367},
+    {""}, {""}, {""}, {""}, {""},
+#line 1270 "keys"
+    {"numberOfForecastsInTheCluster",1265},
     {""}, {""},
-#line 1129 "../tests/keys"
-    {"northWestLatitudeOfVerficationArea",1124},
-#line 888 "../tests/keys"
-    {"latitudeOfIcosahedronPole",883},
+#line 47 "keys"
+    {"DxInMetres",42},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 355 "keys"
+    {"cavokOrVisibility",350},
+    {""}, {""}, {""}, {""},
+#line 904 "keys"
+    {"instrumentType",899},
+#line 1993 "keys"
+    {"typeOfEnsembleForecast",1988},
+#line 538 "keys"
+    {"coordAveraging0",533},
+    {""}, {""}, {""},
+#line 1631 "keys"
+    {"resolutionAndComponentFlags3",1626},
+    {""}, {""}, {""},
+#line 1783 "keys"
+    {"section3Flags",1778},
+#line 1695 "keys"
+    {"satelliteID",1690},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1880 "../tests/keys"
-    {"typeOfGeneratingProcess",1875},
-#line 1580 "../tests/keys"
-    {"runwayFrictionCoefficientCodeState2",1575},
-    {""}, {""}, {""}, {""},
-#line 1576 "../tests/keys"
-    {"runwayFrictionCodeValueState2",1571},
+#line 1039 "keys"
+    {"localHour",1034},
     {""}, {""}, {""},
-#line 291 "../tests/keys"
-    {"basicAngleOfTheInitialProductionDomain",286},
-#line 1669 "../tests/keys"
-    {"section1Length",1664},
-    {""}, {""}, {""}, {""},
-#line 1104 "../tests/keys"
-    {"monthOfAnalysis",1099},
-    {""}, {""},
-#line 984 "../tests/keys"
-    {"longitudeOfLastGridPointInDegrees",979},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 690 "../tests/keys"
-    {"expandedUnits",685},
-    {""},
-#line 1686 "../tests/keys"
-    {"section5",1681},
-#line 959 "../tests/keys"
-    {"localLongitude1",954},
-#line 1642 "../tests/keys"
-    {"scanningModeForOneDiamond",1637},
-#line 1366 "../tests/keys"
-    {"padding_loc9_2",1361},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 1840 "../tests/keys"
-    {"timeOfAnalysis",1835},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1709 "../tests/keys"
-    {"selectStepTemplateInstant",1704},
-    {""}, {""},
-#line 313 "../tests/keys"
-    {"bitMapIndicator",308},
-#line 569 "../tests/keys"
-    {"dateOfAnalysis",564},
-    {""}, {""}, {""},
-#line 1668 "../tests/keys"
-    {"section1Flags",1663},
-#line 1914 "../tests/keys"
-    {"unitsBias",1909},
-#line 1918 "../tests/keys"
-    {"unitsOfFirstFixedSurface",1913},
-#line 1428 "../tests/keys"
-    {"presentTrend2",1423},
-#line 1143 "../tests/keys"
-    {"numberMissingFromAveragesOrAccumulations",1138},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 429 "../tests/keys"
-    {"cloudsCode1",424},
-#line 1583 "../tests/keys"
-    {"runwayFrictionCoefficientState1",1578},
-    {""}, {""},
-#line 744 "../tests/keys"
-    {"formatVersionMinorNumber",739},
-#line 1938 "../tests/keys"
-    {"variationOfVisibility",1933},
-    {""}, {""},
-#line 997 "../tests/keys"
-    {"longitudeOfThePolePoint",992},
-    {""}, {""}, {""},
-#line 1710 "../tests/keys"
-    {"selectStepTemplateInterval",1705},
-#line 953 "../tests/keys"
-    {"localFlagLatestVersion",948},
-    {""}, {""}, {""},
-#line 1855 "../tests/keys"
-    {"totalNumberOfForecastProbabilities",1850},
-    {""},
-#line 1858 "../tests/keys"
-    {"totalNumberOfIterations",1853},
-#line 1788 "../tests/keys"
-    {"subLocalDefinitionLength1",1783},
-    {""}, {""},
-#line 998 "../tests/keys"
-    {"longitudeOfThePolePointInDegrees",993},
-    {""}, {""},
-#line 866 "../tests/keys"
-    {"keySat",861},
-    {""}, {""}, {""}, {""},
-#line 1317 "../tests/keys"
-    {"padding_grid90_1",1312},
-    {""},
-#line 1579 "../tests/keys"
-    {"runwayFrictionCoefficientCodeState1",1574},
-    {""}, {""}, {""}, {""},
-#line 1575 "../tests/keys"
-    {"runwayFrictionCodeValueState1",1570},
-    {""}, {""}, {""},
-#line 1197 "../tests/keys"
-    {"numberOfOctectsForNumberOfPoints",1192},
-    {""}, {""}, {""}, {""}, {""},
-#line 1998 "../tests/keys"
-    {"windVariableDirectionTrend1",1993},
-    {""}, {""}, {""}, {""}, {""},
-#line 1691 "../tests/keys"
-    {"section7",1686},
+#line 931 "keys"
+    {"is_s2s",926},
+    {""},
+#line 1789 "keys"
+    {"section4Padding",1784},
     {""}, {""},
-#line 864 "../tests/keys"
-    {"keyData",859},
+#line 1832 "keys"
+    {"sizeOfLength",1827},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 1597 "../tests/keys"
-    {"scaleFactorOfCentralWaveNumber",1592},
-#line 1815 "../tests/keys"
-    {"tempPressureUnits",1810},
-    {""},
-#line 525 "../tests/keys"
-    {"coordinate3OfFirstGridPoint",520},
-    {""},
-#line 985 "../tests/keys"
-    {"longitudeOfNorthWestCornerOfArea",980},
-    {""}, {""}, {""},
-#line 564 "../tests/keys"
-    {"dataSubCategory",559},
-#line 150 "../tests/keys"
-    {"N1",145},
     {""}, {""}, {""}, {""},
-#line 1069 "../tests/keys"
-    {"meanRVR1",1064},
-    {""},
-#line 1389 "../tests/keys"
-    {"parameterUnits",1384},
+#line 556 "keys"
+    {"coordinateFlag2",551},
     {""},
-#line 1112 "../tests/keys"
-    {"n3",1107},
-#line 1978 "../tests/keys"
-    {"windDirectionTrend2",1973},
-#line 146 "../tests/keys"
-    {"Model_Identifier",141},
+#line 966 "keys"
+    {"latitudeLongitudeValues",961},
+#line 1600 "keys"
+    {"rectimeHour",1595},
+#line 1149 "keys"
+    {"md5Section2",1144},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1580 "keys"
+    {"radiusOfClusterDomain",1575},
     {""}, {""},
-#line 1474 "../tests/keys"
-    {"qnhUnits",1469},
-    {""}, {""}, {""}, {""},
-#line 1690 "../tests/keys"
-    {"section6Length",1685},
-#line 1744 "../tests/keys"
-    {"sp3",1739},
-#line 1683 "../tests/keys"
-    {"section4Length",1678},
-    {""},
-#line 48 "../tests/keys"
-    {"DyInMetres",43},
-    {""},
-#line 796 "../tests/keys"
-    {"hourOfAnalysis",791},
+#line 2010 "keys"
+    {"typeOfTimeIncrement",2005},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 2112 "keys"
+    {"windUnits",2107},
+#line 555 "keys"
+    {"coordinateFlag1",550},
     {""},
-#line 1241 "../tests/keys"
-    {"observationType",1236},
-#line 1533 "../tests/keys"
-    {"resolutionAndComponentFlags7",1528},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 618 "../tests/keys"
-    {"earthMajorAxis",613},
-#line 1470 "../tests/keys"
-    {"qfeUnits",1465},
-    {""}, {""}, {""}, {""},
-#line 1524 "../tests/keys"
-    {"reservedNeedNotBePresent",1519},
+#line 536 "keys"
+    {"constituentType",531},
     {""},
-#line 917 "../tests/keys"
-    {"lengthIncrementForTheGroupLengths",912},
-    {""}, {""},
-#line 11 "../tests/keys"
-    {"AA",6},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 1548 "../tests/keys"
-    {"runwayDepositState2",1543},
+#line 796 "keys"
+    {"firstOrderValues",791},
     {""},
-#line 1228 "../tests/keys"
-    {"numberOfTimeRange",1223},
-    {""}, {""},
-#line 1784 "../tests/keys"
-    {"subDefinitions1",1779},
-#line 989 "../tests/keys"
-    {"longitudeOfSouthernPole",984},
+#line 249 "keys"
+    {"WRAPstr",244},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1065 "../tests/keys"
-    {"md5Section5",1060},
-    {""}, {""}, {""},
-#line 655 "../tests/keys"
-    {"endOfMessage",650},
-    {""},
-#line 990 "../tests/keys"
-    {"longitudeOfSouthernPoleInDegrees",985},
-#line 1586 "../tests/keys"
-    {"runwayFrictionCoefficientState4",1581},
-    {""}, {""}, {""}, {""}, {""},
-#line 1364 "../tests/keys"
-    {"padding_loc7_1",1359},
-#line 1365 "../tests/keys"
-    {"padding_loc9_1",1360},
-#line 1530 "../tests/keys"
-    {"resolutionAndComponentFlags3",1525},
-    {""}, {""}, {""}, {""},
-#line 751 "../tests/keys"
-    {"g1conceptsLocalDirAll",746},
-#line 1067 "../tests/keys"
-    {"md5Section7",1062},
-    {""}, {""}, {""},
-#line 1677 "../tests/keys"
-    {"section3",1672},
-    {""}, {""}, {""}, {""},
-#line 1859 "../tests/keys"
-    {"totalNumberOfTubes",1854},
     {""}, {""}, {""}, {""}, {""},
-#line 818 "../tests/keys"
-    {"indicatorOfTypeOfLevel",813},
-#line 1623 "../tests/keys"
-    {"scaledValueOfFirstWavelength",1618},
-#line 449 "../tests/keys"
-    {"cloudsTitle1",444},
-#line 1582 "../tests/keys"
-    {"runwayFrictionCoefficientCodeState4",1577},
-#line 1362 "../tests/keys"
-    {"padding_loc5_1",1357},
-    {""}, {""},
-#line 1619 "../tests/keys"
-    {"scaledValueOfEarthMajorAxis",1614},
-#line 1578 "../tests/keys"
-    {"runwayFrictionCodeValueState4",1573},
-#line 1427 "../tests/keys"
-    {"presentTrend1",1422},
-    {""}, {""},
-#line 1989 "../tests/keys"
-    {"windSpeedTrend2",1984},
-    {""}, {""},
-#line 988 "../tests/keys"
-    {"longitudeOfSouthEastCornerOfArea",983},
-    {""}, {""},
-#line 1363 "../tests/keys"
-    {"padding_loc6_1",1358},
-#line 1620 "../tests/keys"
-    {"scaledValueOfEarthMinorAxis",1615},
-    {""}, {""}, {""}, {""}, {""},
-#line 820 "../tests/keys"
-    {"indicatorOfUnitForTimeRange",815},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 30 "../tests/keys"
-    {"Date_E2",25},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1042 "../tests/keys"
-    {"marsType2",1037},
-    {""},
-#line 1720 "../tests/keys"
-    {"shortNameECMF",1715},
-#line 434 "../tests/keys"
-    {"cloudsCode2",429},
+#line 1156 "keys"
+    {"meanRVR1",1151},
     {""}, {""},
-#line 1420 "../tests/keys"
-    {"preBitmapValues",1415},
+#line 816 "keys"
+    {"formatVersionMinorNumber",811},
     {""}, {""},
-#line 1418 "../tests/keys"
-    {"postAuxiliaryArrayPresent",1413},
-#line 204 "../tests/keys"
-    {"TIDE",199},
-    {""}, {""}, {""}, {""}, {""},
-#line 939 "../tests/keys"
-    {"listOfEnsembleForecastNumbers",934},
+#line 729 "keys"
+    {"experimentVersionNumber",724},
     {""}, {""}, {""}, {""},
-#line 285 "../tests/keys"
-    {"backgroundProcess",280},
+#line 1071 "keys"
+    {"longitudeOfLastGridPointInDegrees",1066},
+#line 1885 "keys"
+    {"stepUnits",1880},
     {""}, {""}, {""},
-#line 1610 "../tests/keys"
-    {"scaleFactorOfSecondWavelength",1605},
-    {""}, {""}, {""}, {""},
-#line 1213 "../tests/keys"
-    {"numberOfPointsUsed",1208},
+#line 1503 "keys"
+    {"periodOfTimeIntervals",1498},
+    {""},
+#line 273 "keys"
+    {"_TS",268},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 913 "../tests/keys"
-    {"legBaseDate",908},
+#line 1809 "keys"
+    {"section_5",1804},
+#line 2002 "keys"
+    {"typeOfOriginalFieldValues",1997},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 861 "../tests/keys"
-    {"jPointsAreConsecutive",856},
-#line 996 "../tests/keys"
-    {"longitudeOfThePoleOfStretching",991},
-#line 967 "../tests/keys"
-    {"localUsePresent",962},
-    {""}, {""},
-#line 2006 "../tests/keys"
-    {"xDirectionGridLengthInMetres",2001},
+#line 145 "keys"
+    {"M",140},
+#line 94 "keys"
+    {"II",89},
+    {""}, {""},
+#line 869 "keys"
+    {"horizontalDimensionProcessed",864},
+    {""}, {""}, {""}, {""},
+#line 1183 "keys"
+    {"mixedCoordinateDefinition",1178},
+#line 334 "keys"
+    {"bitMapIndicator",329},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 727 "../tests/keys"
-    {"flagForIrregularGridCoordinateList",722},
-    {""}, {""},
-#line 1977 "../tests/keys"
-    {"windDirectionTrend1",1972},
+#line 1179 "keys"
+    {"missingDataFlag",1174},
     {""}, {""}, {""},
-#line 145 "../tests/keys"
-    {"Model_Additional_Information",140},
-#line 1271 "../tests/keys"
-    {"offsetSection5",1266},
+#line 1303 "keys"
+    {"numberOfPointsAlongXAxis",1298},
+    {""}, {""}, {""}, {""},
+#line 1788 "keys"
+    {"section4Length",1783},
+    {""},
+#line 1630 "keys"
+    {"resolutionAndComponentFlags2",1625},
+#line 1134 "keys"
+    {"masterTablesVersionNumber",1129},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 638 "keys"
+    {"disableGrib1LocalSection",633},
+#line 1757 "keys"
+    {"secondOrderOfDifferentWidth",1752},
+    {""}, {""}, {""},
+#line 820 "keys"
+    {"frequencyScalingFactor",815},
+#line 1363 "keys"
+    {"offsetSection2",1358},
     {""}, {""}, {""}, {""}, {""},
-#line 729 "../tests/keys"
-    {"flagShowingPostAuxiliaryArrayInUse",724},
+#line 1927 "keys"
+    {"templatesLocalDir",1922},
+    {""},
+#line 752 "keys"
+    {"extractDateTimeHourStart",747},
+#line 542 "keys"
+    {"coordAveragingTims",537},
+#line 2118 "keys"
+    {"windVariableDirectionTrend1",2113},
+    {""}, {""}, {""},
+#line 985 "keys"
+    {"latitudeOfTangencyPoint",980},
+#line 1311 "keys"
+    {"numberOfRepresentativeMember",1306},
+    {""}, {""}, {""},
+#line 1735 "keys"
+    {"scaledValueOfSecondWavelength",1730},
+#line 732 "keys"
+    {"experimentVersionNumberOfAnalysis",727},
+#line 1195 "keys"
+    {"monthOfEndOfOverallTimeInterval",1190},
+    {""}, {""}, {""}, {""},
+#line 248 "keys"
+    {"WRAP",243},
+#line 350 "keys"
+    {"calendarIdentification",345},
+    {""}, {""}, {""},
+#line 354 "keys"
+    {"categoryType",349},
+    {""},
+#line 1018 "keys"
+    {"listMembersUsed",1013},
+    {""}, {""},
+#line 1863 "keys"
+    {"sphericalHarmonics",1858},
+    {""}, {""},
+#line 798 "keys"
+    {"flagForAnyFurtherInformation",793},
+    {""}, {""},
+#line 198 "keys"
+    {"PUnset",193},
+    {""}, {""}, {""},
+#line 1929 "keys"
+    {"theHindcastMarsStream",1924},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1061 "keys"
+    {"longitudeLastInDegrees",1056},
+#line 799 "keys"
+    {"flagForIrregularGridCoordinateList",794},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1895 "keys"
+    {"subLocalDefinition1",1890},
+#line 85 "keys"
+    {"GTSstr",80},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 648 "keys"
+    {"dummy1",643},
     {""},
-#line 342 "../tests/keys"
-    {"centralLongitudeInMicrodegrees",337},
+#line 1233 "keys"
+    {"numberMissingFromAveragesOrAccumulations",1228},
     {""}, {""},
-#line 1930 "../tests/keys"
-    {"upperThreshold",1925},
-    {""}, {""},
-#line 1025 "../tests/keys"
-    {"marsKeywords1",1020},
-#line 1087 "../tests/keys"
-    {"minuteOfEndOfOverallTimeInterval",1082},
+#line 550 "keys"
+    {"coordinate3OfFirstGridPoint",545},
     {""}, {""}, {""},
-#line 1922 "../tests/keys"
-    {"unpackedError",1917},
-#line 850 "../tests/keys"
-    {"isectionNumber2",845},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1650 "../tests/keys"
-    {"secondOfEndOfOverallTimeInterval",1645},
-#line 1305 "../tests/keys"
-    {"originatingCentreOfAnalysis",1300},
-    {""},
-#line 2007 "../tests/keys"
-    {"xDirectionGridLengthInMillimetres",2002},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1142 "../tests/keys"
-    {"numberIncludedInAverage",1137},
+#line 470 "keys"
+    {"cloudsCode4",465},
+    {""}, {""}, {""}, {""},
+#line 1867 "keys"
+    {"startOfHeaders",1862},
     {""}, {""},
-#line 1547 "../tests/keys"
-    {"runwayDepositState1",1542},
-    {""}, {""}, {""},
-#line 1006 "../tests/keys"
-    {"lowerThreshold",1001},
-#line 1308 "../tests/keys"
-    {"packingError",1303},
+#line 1694 "keys"
+    {"sampleSizeOfModelClimate",1689},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 188 "../tests/keys"
-    {"Product_Identifier",183},
-#line 986 "../tests/keys"
-    {"longitudeOfReferencePoint",981},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 2001 "../tests/keys"
-    {"windVariableDirectionTrend4",1996},
-    {""},
-#line 987 "../tests/keys"
-    {"longitudeOfReferencePointInDegrees",982},
+#line 1756 "keys"
+    {"secondOrderFlags",1751},
     {""}, {""}, {""}, {""},
-#line 1931 "../tests/keys"
-    {"upperThresholdValue",1926},
-    {""},
-#line 1934 "../tests/keys"
-    {"uvRelativeToGrid",1929},
-#line 588 "../tests/keys"
-    {"definitionFilesVersion",583},
+#line 1042 "keys"
+    {"localLatitude2",1037},
     {""}, {""},
-#line 1727 "../tests/keys"
-    {"sizeOfPostAuxiliaryArray",1722},
+#line 928 "keys"
+    {"isSatelliteType",923},
+    {""}, {""}, {""}, {""}, {""},
+#line 692 "keys"
+    {"endOfMessage",687},
+    {""},
+#line 1796 "keys"
+    {"section7",1791},
     {""}, {""},
-#line 353 "../tests/keys"
-    {"cfVarNameECMF",348},
+#line 793 "keys"
+    {"firstLatitudeInDegrees",788},
     {""},
-#line 1207 "../tests/keys"
-    {"numberOfPointsAlongFirstAxis",1202},
+#line 1544 "keys"
+    {"pressureUnits",1539},
+    {""}, {""},
+#line 947 "keys"
+    {"julianDay",942},
     {""}, {""}, {""}, {""}, {""},
-#line 531 "../tests/keys"
-    {"coordinateFlag2",526},
-    {""}, {""}, {""}, {""},
-#line 1273 "../tests/keys"
-    {"offsetSection7",1268},
+#line 84 "keys"
+    {"GTS",79},
+#line 1775 "keys"
+    {"section1Padding",1770},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""},
-#line 1072 "../tests/keys"
-    {"meanRVR4",1067},
-#line 782 "../tests/keys"
-    {"gts_CCCC",777},
-#line 1090 "../tests/keys"
-    {"minutesAfterReferenceTimeOfDataCutoff",1085},
-    {""}, {""}, {""},
-#line 693 "../tests/keys"
-    {"experimentVersionNumber2",688},
-    {""}, {""},
-#line 1007 "../tests/keys"
-    {"lowerThresholdValue",1002},
+#line 2005 "keys"
+    {"typeOfProcessedData",2000},
     {""}, {""},
-#line 1697 "../tests/keys"
-    {"sectionLengthLimitForProbability",1692},
-    {""}, {""}, {""}, {""}, {""},
-#line 845 "../tests/keys"
-    {"isHindcast",840},
-    {""}, {""}, {""},
-#line 1801 "../tests/keys"
-    {"swapScanningX",1796},
+#line 826 "keys"
+    {"gaussianGridName",821},
     {""}, {""}, {""},
-#line 454 "../tests/keys"
-    {"cloudsTitle2",449},
+#line 1003 "keys"
+    {"lengthOfHeaders",998},
     {""}, {""},
-#line 1704 "../tests/keys"
-    {"section_5",1699},
-    {""}, {""}, {""},
-#line 1123 "../tests/keys"
-    {"normAtFinalTime",1118},
+#line 2013 "keys"
+    {"typicalCentury",2008},
+    {""},
+#line 263 "keys"
+    {"YR",258},
+    {""},
+#line 1589 "keys"
+    {"rdbtimeHour",1584},
+    {""},
+#line 1897 "keys"
+    {"subLocalDefinitionLength1",1892},
     {""}, {""}, {""},
-#line 1687 "../tests/keys"
-    {"section5Length",1682},
-#line 1041 "../tests/keys"
-    {"marsType1",1036},
+#line 800 "keys"
+    {"flagForNormalOrStaggeredGrid",795},
+#line 593 "keys"
+    {"dataSubCategory",588},
+#line 1743 "keys"
+    {"scanningMode5",1738},
+#line 1714 "keys"
+    {"scaleFactorOfSecondWavelength",1709},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1209 "../tests/keys"
-    {"numberOfPointsAlongTheXAxis",1204},
-#line 1053 "../tests/keys"
-    {"matrixBitmapsPresent",1048},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1794 "../tests/keys"
-    {"subSetM",1789},
-#line 528 "../tests/keys"
-    {"coordinate4OfFirstGridPoint",523},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1476 "../tests/keys"
-    {"qualityControlIndicator",1471},
+#line 1802 "keys"
+    {"sectionLengthLimitForProbability",1797},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1892 "../tests/keys"
-    {"typeOfSecondFixedSurface",1887},
-    {""}, {""}, {""},
-#line 346 "../tests/keys"
-    {"centreForTable2",341},
-    {""}, {""}, {""}, {""},
-#line 1692 "../tests/keys"
-    {"section7Length",1687},
+#line 2030 "keys"
+    {"unitsBias",2025},
+#line 844 "keys"
+    {"gridDefinitionDescription",839},
     {""}, {""}, {""}, {""}, {""},
-#line 176 "../tests/keys"
-    {"Original_CodeTable_2_Version_Number",171},
+#line 1835 "keys"
+    {"sizeOfPostAuxiliaryArrayPlusOne",1830},
+    {""},
+#line 943 "keys"
+    {"jDirectionIncrementInDegrees",938},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1038 "keys"
+    {"localFlagLatestVersion",1033},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1730 "keys"
+    {"scaledValueOfMajorAxisOfOblateSpheroidEarth",1725},
+#line 728 "keys"
+    {"expandedUnits",723},
+#line 608 "keys"
+    {"dayOfEndOfOverallTimeInterval",603},
+    {""},
+#line 1728 "keys"
+    {"scaledValueOfFirstWavelength",1723},
+    {""}, {""},
+#line 1634 "keys"
+    {"resolutionAndComponentFlags7",1629},
+    {""}, {""}, {""},
+#line 1158 "keys"
+    {"meanRVR3",1153},
+    {""}, {""}, {""}, {""},
+#line 178 "keys"
+    {"NT",173},
+#line 250 "keys"
+    {"X1",245},
+#line 1972 "keys"
+    {"totalNumberOfTileAttributePairs",1967},
+#line 501 "keys"
+    {"clusterMember5",496},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 762 "keys"
+    {"extractDateTimeYearEnd",757},
+    {""},
+#line 1095 "keys"
+    {"ls_labeling",1090},
+#line 930 "keys"
+    {"is_rotated_grid",925},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 185 "keys"
+    {"Nj",180},
+#line 1093 "keys"
+    {"lowerThreshold",1088},
+    {""}, {""},
+#line 41 "keys"
+    {"DjGiven",36},
+    {""}, {""}, {""},
+#line 1392 "keys"
+    {"orderOfSpatialDifferencing",1387},
+#line 1774 "keys"
+    {"section1Length",1769},
+    {""}, {""}, {""},
+#line 1724 "keys"
+    {"scaledValueOfEarthMajorAxis",1719},
+    {""}, {""},
+#line 1725 "keys"
+    {"scaledValueOfEarthMinorAxis",1720},
+#line 485 "keys"
+    {"cloudsTitle3",480},
+    {""}, {""},
+#line 589 "keys"
+    {"dataRepresentationTemplateNumber",584},
+#line 1219 "keys"
+    {"northWestLatitudeOfVerficationArea",1214},
+    {""}, {""}, {""},
+#line 1785 "keys"
+    {"section3Padding",1780},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 965 "../tests/keys"
-    {"localTablesVersion",960},
+#line 1205 "keys"
+    {"nameECMF",1200},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 2067 "keys"
+    {"verifyingMonth",2062},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 692 "../tests/keys"
-    {"experimentVersionNumber1",687},
+#line 2120 "keys"
+    {"windVariableDirectionTrend3",2115},
+#line 1517 "keys"
+    {"preBitmapValues",1512},
+#line 1652 "keys"
+    {"runwayDepositState4",1647},
+    {""}, {""}, {""}, {""}, {""},
+#line 1151 "keys"
+    {"md5Section4",1146},
+#line 515 "keys"
+    {"codedNumberOfGroups",510},
+#line 946 "keys"
+    {"jScansPositively",941},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 549 "keys"
+    {"coordinate3Flag",544},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 964 "keys"
+    {"latitudeFirstInDegrees",959},
     {""}, {""}, {""}, {""},
-#line 824 "../tests/keys"
-    {"instrumentType",819},
-#line 1430 "../tests/keys"
-    {"presentTrend4",1425},
-    {""}, {""},
-#line 1269 "../tests/keys"
-    {"offsetSection3",1264},
-#line 1221 "../tests/keys"
-    {"numberOfSecondOrderPackedValues",1216},
-    {""}, {""},
-#line 1501 "../tests/keys"
-    {"rectimeHour",1496},
-#line 1959 "../tests/keys"
-    {"visibilityInKilometresTrend2",1954},
+#line 367 "keys"
+    {"centralLongitudeInMicrodegrees",362},
+#line 2046 "keys"
+    {"upperThreshold",2041},
+#line 303 "keys"
+    {"azimuthalWidth",298},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 1706 "../tests/keys"
-    {"section_7",1701},
-    {""}, {""},
-#line 1496 "../tests/keys"
-    {"realPartOf00",1491},
+#line 1094 "keys"
+    {"lowerThresholdValue",1089},
     {""}, {""},
-#line 1603 "../tests/keys"
-    {"scaleFactorOfFirstWavelength",1598},
-    {""}, {""}, {""}, {""},
-#line 954 "../tests/keys"
-    {"localHour",949},
-#line 1599 "../tests/keys"
-    {"scaleFactorOfEarthMajorAxis",1594},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 444 "../tests/keys"
-    {"cloudsCode4",439},
-    {""},
-#line 1679 "../tests/keys"
-    {"section3Length",1674},
-    {""},
-#line 1600 "../tests/keys"
-    {"scaleFactorOfEarthMinorAxis",1595},
-    {""}, {""}, {""},
-#line 198 "../tests/keys"
-    {"Show_Combination_Ensem_E2_0_no_1_yes",193},
-#line 1745 "../tests/keys"
-    {"spaceUnitFlag",1740},
-    {""}, {""},
-#line 330 "../tests/keys"
-    {"cavokOrVisibility",325},
-#line 1402 "../tests/keys"
-    {"pentagonalResolutionParameterK",1397},
-#line 1564 "../tests/keys"
-    {"runwayDesignatorState2",1559},
-    {""}, {""}, {""}, {""}, {""},
-#line 726 "../tests/keys"
-    {"flagForAnyFurtherInformation",721},
+#line 1884 "keys"
+    {"stepTypeInternal",1879},
     {""}, {""},
-#line 621 "../tests/keys"
-    {"earthMinorAxisInMetres",616},
-    {""}, {""}, {""}, {""}, {""},
-#line 1942 "../tests/keys"
-    {"variationOfVisibilityDirectionTrend2",1937},
-    {""}, {""}, {""}, {""},
-#line 892 "../tests/keys"
-    {"latitudeOfReferencePoint",887},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1139 "../tests/keys"
-    {"numberInMixedCoordinateDefinition",1134},
+#line 1709 "keys"
+    {"scaleFactorOfMajorAxisOfOblateSpheroidEarth",1704},
     {""},
-#line 155 "../tests/keys"
-    {"NC2",150},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1678 "../tests/keys"
-    {"section3Flags",1673},
-#line 232 "../tests/keys"
-    {"WMO",227},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 439 "../tests/keys"
-    {"cloudsCode3",434},
+#line 1102 "keys"
+    {"marsClass2",1097},
     {""},
-#line 807 "../tests/keys"
-    {"iScansNegatively",802},
-#line 1585 "../tests/keys"
-    {"runwayFrictionCoefficientState3",1580},
+#line 1707 "keys"
+    {"scaleFactorOfFirstWavelength",1702},
+    {""}, {""}, {""},
+#line 1852 "keys"
+    {"spaceUnitFlag",1847},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 2139 "keys"
+    {"yearOfCentury",2134},
+#line 163 "keys"
+    {"N2",158},
     {""}, {""},
-#line 1980 "../tests/keys"
-    {"windDirectionTrend4",1975},
+#line 1497 "keys"
+    {"patch_precip_fp",1492},
+#line 1808 "keys"
+    {"section_4",1803},
+    {""}, {""}, {""},
+#line 2032 "keys"
+    {"unitsECMF",2027},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 1923 "../tests/keys"
-    {"unpackedSubsetPrecision",1918},
+#line 1637 "keys"
+    {"rootTablesDir",1632},
+#line 1970 "keys"
+    {"totalNumberOfGridPoints",1965},
     {""}, {""}, {""},
-#line 1958 "../tests/keys"
-    {"visibilityInKilometresTrend1",1953},
+#line 590 "keys"
+    {"dataRepresentationType",585},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""},
+#line 167 "keys"
+    {"NC1",162},
+#line 1784 "keys"
+    {"section3Length",1779},
     {""},
-#line 2018 "../tests/keys"
-    {"yearOfAnalysis",2013},
+#line 1703 "keys"
+    {"scaleFactorOfEarthMajorAxis",1698},
     {""}, {""},
-#line 1581 "../tests/keys"
-    {"runwayFrictionCoefficientCodeState3",1576},
+#line 1704 "keys"
+    {"scaleFactorOfEarthMinorAxis",1699},
     {""},
-#line 1874 "../tests/keys"
-    {"typeOfAnalysis",1869},
-#line 326 "../tests/keys"
-    {"calendarIdentificationTemplateNumber",321},
-#line 1988 "../tests/keys"
-    {"windSpeedTrend1",1983},
-#line 1577 "../tests/keys"
-    {"runwayFrictionCodeValueState3",1572},
-#line 1755 "../tests/keys"
-    {"sphericalHarmonics",1750},
+#line 1813 "keys"
+    {"selectStepTemplateInstant",1808},
+#line 1926 "keys"
+    {"temperatureAndDewpointPresent",1921},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""},
-#line 1702 "../tests/keys"
-    {"section_3",1697},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1257 "../tests/keys"
-    {"offsetBeforeData",1252},
+#line 187 "keys"
+    {"NrInRadiusOfEarth",182},
     {""},
-#line 1550 "../tests/keys"
-    {"runwayDepositState4",1545},
+#line 1778 "keys"
+    {"section2Padding",1773},
+#line 1073 "keys"
+    {"longitudeOfReferencePoint",1068},
+    {""}, {""},
+#line 2047 "keys"
+    {"upperThresholdValue",2042},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1221 "keys"
+    {"northWestLongitudeOfVerficationArea",1216},
     {""},
-#line 1563 "../tests/keys"
-    {"runwayDesignatorState1",1558},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1924 "keys"
+    {"tempPressureUnits",1919},
+    {""}, {""},
+#line 2126 "keys"
+    {"xDirectionGridLengthInMetres",2121},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1074 "keys"
+    {"longitudeOfReferencePointInDegrees",1069},
+    {""}, {""}, {""},
+#line 997 "keys"
+    {"legBaseDate",992},
+    {""},
+#line 1368 "keys"
+    {"offsetSection7",1363},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1814 "keys"
+    {"selectStepTemplateInterval",1809},
     {""},
-#line 1448 "../tests/keys"
-    {"primaryBitmap",1443},
+#line 1131 "keys"
+    {"mask",1126},
     {""}, {""}, {""},
-#line 1941 "../tests/keys"
-    {"variationOfVisibilityDirectionTrend1",1936},
+#line 2109 "keys"
+    {"windSpeedTrend2",2104},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 2021 "keys"
+    {"typicalYear",2016},
     {""},
-#line 1258 "../tests/keys"
-    {"offsetBeforePL",1253},
+#line 654 "keys"
+    {"earthMajorAxis",649},
     {""},
-#line 517 "../tests/keys"
-    {"coordAveragingTims",512},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 60 "../tests/keys"
-    {"Extra_Data_FreeFormat_0_none",55},
-    {""}, {""}, {""}, {""}, {""},
-#line 1544 "../tests/keys"
-    {"runwayDepositCodeState2",1539},
-#line 648 "../tests/keys"
-    {"endMinuteTrend4",643},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1361 "../tests/keys"
-    {"padding_loc50_1",1356},
+#line 1403 "keys"
+    {"pack",1398},
+    {""}, {""},
+#line 2127 "keys"
+    {"xDirectionGridLengthInMillimetres",2122},
     {""}, {""}, {""},
-#line 137 "../tests/keys"
-    {"MinuteOfModelVersion",132},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 472 "../tests/keys"
-    {"clusterMember2",467},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 797 "../tests/keys"
-    {"hourOfEndOfOverallTimeInterval",792},
+#line 1903 "keys"
+    {"subSetM",1898},
+    {""},
+#line 1273 "keys"
+    {"numberOfGridInReference",1268},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 238 "../tests/keys"
-    {"XRInMetres",233},
+#line 2008 "keys"
+    {"typeOfSizeInterval",2003},
     {""},
-#line 464 "../tests/keys"
-    {"cloudsTitle4",459},
+#line 2108 "keys"
+    {"windSpeedTrend1",2103},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1005 "keys"
+    {"lengthOfTimeRange",1000},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""},
-#line 1259 "../tests/keys"
-    {"offsetBeforePV",1254},
+#line 1157 "keys"
+    {"meanRVR2",1152},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 371 "keys"
+    {"centreForTable2",366},
+#line 1309 "keys"
+    {"numberOfReforecastYearsInModelClimate",1304},
+    {""}, {""}, {""},
+#line 2003 "keys"
+    {"typeOfPacking",1998},
+    {""}, {""}, {""},
+#line 50 "keys"
+    {"DyInMetres",45},
+    {""}, {""}, {""},
+#line 1220 "keys"
+    {"northWestLongitudeOfLPOArea",1215},
+    {""}, {""}, {""},
+#line 1777 "keys"
+    {"section2Length",1772},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 304 "keys"
+    {"backgroundGeneratingProcessIdentifier",299},
+    {""}, {""}, {""},
+#line 1147 "keys"
+    {"md5Headers",1142},
+    {""}, {""}, {""},
+#line 2037 "keys"
+    {"unpack",2032},
     {""}, {""}, {""}, {""},
-#line 110 "../tests/keys"
-    {"Less_Than_Or_To_Overall_Distribution",105},
-    {""},
-#line 607 "../tests/keys"
-    {"distanceFromTubeToEnsembleMean",602},
-#line 32 "../tests/keys"
-    {"Date_E4",27},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 109 "../tests/keys"
-    {"Latin2InDegrees",104},
+#line 894 "keys"
+    {"indicatorOfTypeOfLevel",889},
+#line 546 "keys"
+    {"coordinate2End",541},
+    {""}, {""}, {""},
+#line 1742 "keys"
+    {"scanningMode4",1737},
     {""}, {""}, {""}, {""},
-#line 786 "../tests/keys"
-    {"halfByte",781},
+#line 2039 "keys"
+    {"unpackedSubsetPrecision",2034},
     {""},
-#line 187 "../tests/keys"
-    {"P_TAVG",182},
+#line 274 "keys"
+    {"_leg_number",269},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1755 "keys"
+    {"secondOfEndOfOverallTimeInterval",1750},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 1655 "../tests/keys"
-    {"secondaryBitmap",1650},
-#line 1572 "../tests/keys"
-    {"runwayExtentOfContaminationState2",1567},
-    {""}, {""},
-#line 1759 "../tests/keys"
-    {"startOfHeaders",1754},
-#line 1568 "../tests/keys"
-    {"runwayExtentOfContaminationCodeState2",1563},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 767 "../tests/keys"
-    {"gribTablesVersionNo",762},
+#line 389 "keys"
+    {"checkInternalVersion",384},
+#line 1928 "keys"
+    {"templatesMasterDir",1923},
     {""},
-#line 1961 "../tests/keys"
-    {"visibilityInKilometresTrend4",1956},
-#line 1145 "../tests/keys"
-    {"numberOfBits",1140},
+#line 2119 "keys"
+    {"windVariableDirectionTrend2",2114},
     {""}, {""}, {""}, {""},
-#line 1115 "../tests/keys"
-    {"nameECMF",1110},
+#line 1567 "keys"
+    {"qfeUnits",1562},
     {""}, {""},
-#line 154 "../tests/keys"
-    {"NC1",149},
+#line 823 "keys"
+    {"g1conceptsLocalDirAll",818},
     {""},
-#line 459 "../tests/keys"
-    {"cloudsTitle3",454},
-    {""}, {""},
-#line 1230 "../tests/keys"
-    {"numberOfUnexpandedDescriptors",1225},
+#line 2100 "keys"
+    {"windDirectionTrend4",2095},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1839 "keys"
+    {"sourceOfGridDefinition",1834},
+    {""},
+#line 98 "keys"
+    {"ITN",93},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1571 "keys"
+    {"qnhUnits",1566},
+    {""}, {""}, {""}, {""}, {""},
+#line 500 "keys"
+    {"clusterMember4",495},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 200 "../tests/keys"
-    {"Show_Combination_Ensem_E4_0_no_1_yes",195},
+#line 547 "keys"
+    {"coordinate2Flag",542},
+    {""},
+#line 574 "keys"
+    {"countOfGroupLengths",569},
+    {""},
+#line 1486 "keys"
+    {"parameterUnits",1481},
+#line 1980 "keys"
+    {"tsectionNumber3",1975},
+    {""}, {""},
+#line 475 "keys"
+    {"cloudsTitle1",470},
+#line 935 "keys"
+    {"isectionNumber3",930},
+#line 1896 "keys"
+    {"subLocalDefinition2",1891},
+    {""}, {""},
+#line 149 "keys"
+    {"MinuteOfModelVersion",144},
+#line 2054 "keys"
+    {"variationOfVisibility",2049},
+#line 1175 "keys"
+    {"minuteOfEndOfOverallTimeInterval",1170},
+    {""},
+#line 1648 "keys"
+    {"runwayDepositCodeState4",1643},
+#line 649 "keys"
+    {"dummy2",644},
+#line 1054 "keys"
+    {"localUsePresent",1049},
     {""}, {""}, {""}, {""}, {""},
-#line 1566 "../tests/keys"
-    {"runwayDesignatorState4",1561},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1818 "../tests/keys"
-    {"theHindcastMarsStream",1813},
-    {""},
-#line 1633 "../tests/keys"
-    {"scaledValueOfUpperLimit",1628},
-#line 530 "../tests/keys"
-    {"coordinateFlag1",525},
+#line 177 "keys"
+    {"NRj",172},
     {""}, {""},
-#line 1944 "../tests/keys"
-    {"variationOfVisibilityDirectionTrend4",1939},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1591 "keys"
+    {"rdbtimeMonth",1586},
     {""}, {""},
-#line 2013 "../tests/keys"
-    {"yDirectionGridLengthInMetres",2008},
+#line 1187 "keys"
+    {"modelErrorType",1182},
     {""}, {""},
-#line 148 "../tests/keys"
-    {"MonthOfModelVersion",143},
-    {""}, {""}, {""}, {""}, {""},
-#line 107 "../tests/keys"
-    {"Latin1InDegrees",102},
+#line 1973 "keys"
+    {"totalNumberOfTubes",1968},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 791 "keys"
+    {"firstDimensionPhysicalSignificance",786},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1321 "keys"
+    {"numberOfTimeRange",1316},
     {""}, {""},
-#line 1916 "../tests/keys"
-    {"unitsECMF",1911},
+#line 1640 "keys"
+    {"roundedMarsLongitude",1635},
+    {""}, {""}, {""},
+#line 374 "keys"
+    {"centuryOfReferenceTimeOfData",369},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1218 "keys"
+    {"northWestLatitudeOfLPOArea",1213},
     {""},
-#line 1091 "../tests/keys"
-    {"missingDataFlag",1086},
+#line 2072 "keys"
+    {"versionOfModelClimate",2067},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 164 "keys"
+    {"NAT",159},
     {""}, {""}, {""}, {""}, {""},
-#line 1888 "../tests/keys"
-    {"typeOfPacking",1883},
-    {""}, {""}, {""},
-#line 1571 "../tests/keys"
-    {"runwayExtentOfContaminationState1",1566},
-    {""}, {""}, {""},
-#line 1567 "../tests/keys"
-    {"runwayExtentOfContaminationCodeState1",1562},
+#line 480 "keys"
+    {"cloudsTitle2",475},
+#line 750 "keys"
+    {"extractDateTimeHourEnd",745},
+    {""}, {""}, {""}, {""},
+#line 1898 "keys"
+    {"subLocalDefinitionLength2",1893},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 30 "keys"
+    {"CLNOMA",25},
+    {""},
+#line 157 "keys"
+    {"Model_Additional_Information",152},
     {""}, {""}, {""},
-#line 819 "../tests/keys"
-    {"indicatorOfUnitForTimeIncrement",814},
+#line 1112 "keys"
+    {"marsKeywords1",1107},
     {""}, {""}, {""}, {""},
-#line 634 "../tests/keys"
-    {"endDayTrend1",629},
-#line 1660 "../tests/keys"
-    {"secondaryMissingValue",1655},
+#line 659 "keys"
+    {"eastLongitudeOfDomainOfTubing",654},
+#line 514 "keys"
+    {"codedNumberOfFirstOrderPackedValues",509},
+#line 2089 "keys"
+    {"westLongitudeOfDomainOfTubing",2084},
     {""}, {""},
-#line 170 "../tests/keys"
-    {"Nj",165},
+#line 365 "keys"
+    {"centralClusterDefinition",360},
+#line 1797 "keys"
+    {"section7Length",1792},
     {""}, {""},
-#line 1492 "../tests/keys"
-    {"rdbtimeHour",1487},
-#line 719 "../tests/keys"
-    {"firstDimensionPhysicalSignificance",714},
-#line 2014 "../tests/keys"
-    {"yDirectionGridLengthInMillimetres",2009},
-    {""}, {""}, {""}, {""}, {""},
-#line 1543 "../tests/keys"
-    {"runwayDepositCodeState1",1538},
-    {""}, {""}, {""},
-#line 1225 "../tests/keys"
-    {"numberOfStepsUsedForClustering",1220},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1656 "../tests/keys"
-    {"secondaryBitmapPresent",1651},
-    {""}, {""}, {""}, {""},
-#line 1657 "../tests/keys"
-    {"secondaryBitmaps",1652},
-#line 1651 "../tests/keys"
-    {"secondOrderFlags",1646},
-#line 470 "../tests/keys"
-    {"clusterMember1",465},
+#line 1354 "keys"
+    {"offsetBeforePV",1349},
     {""}, {""},
-#line 1817 "../tests/keys"
-    {"temperatureAndDewpointPresent",1812},
-#line 1983 "../tests/keys"
-    {"windGustTrend2",1978},
+#line 543 "keys"
+    {"coordinate1End",538},
+    {""}, {""}, {""}, {""}, {""},
+#line 621 "keys"
+    {"definitionFilesVersion",616},
     {""},
-#line 887 "../tests/keys"
-    {"latitudeOfFirstGridPointInDegrees",882},
-#line 550 "../tests/keys"
-    {"countOfICEFieldsUsed",545},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""},
-#line 177 "../tests/keys"
-    {"Original_Parameter_Iden_CodeTable2",172},
+#line 1140 "keys"
+    {"matrixBitmapsPresent",1135},
+#line 620 "keys"
+    {"defaultTypeOfLevel",615},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 160 "keys"
+    {"MonthOfModelVersion",155},
+    {""}, {""},
+#line 1232 "keys"
+    {"numberIncludedInAverage",1227},
+#line 1098 "keys"
+    {"mBasicAngle",1093},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""},
-#line 1625 "../tests/keys"
-    {"scaledValueOfMajorAxisOfOblateSpheroidEarth",1620},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 1673 "../tests/keys"
-    {"section2Padding",1668},
-    {""}, {""},
-#line 1791 "../tests/keys"
-    {"subLocalDefinitionNumber2",1786},
-#line 919 "../tests/keys"
-    {"lengthOfHeaders",914},
-#line 771 "../tests/keys"
-    {"gridDefinitionDescription",766},
-#line 1309 "../tests/keys"
-    {"packingType",1304},
-#line 1661 "../tests/keys"
-    {"secondaryMissingValueSubstitute",1656},
+#line 252 "keys"
+    {"X2",247},
     {""}, {""}, {""},
-#line 172 "../tests/keys"
-    {"NrInRadiusOfEarth",167},
-    {""},
-#line 914 "../tests/keys"
-    {"legBaseTime",909},
-    {""},
-#line 1658 "../tests/keys"
-    {"secondaryBitmapsCount",1653},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1829 "../tests/keys"
-    {"tiggeLAMName",1824},
-#line 1141 "../tests/keys"
-    {"numberInTheGridCoordinateList",1136},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 56 "keys"
+    {"Ensemble_Combination_Number",51},
     {""}, {""}, {""}, {""},
-#line 1265 "../tests/keys"
-    {"offsetICEFieldsUsed",1260},
+#line 2060 "keys"
+    {"variationOfVisibilityDirectionTrend4",2055},
+    {""}, {""}, {""}, {""},
+#line 1217 "keys"
+    {"northLatitudeOfDomainOfTubing",1212},
+#line 57 "keys"
+    {"Ensemble_Identifier",52},
+#line 345 "keys"
+    {"bufrHeaderCentre",340},
     {""},
-#line 29 "../tests/keys"
-    {"DELETE",24},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1574 "../tests/keys"
-    {"runwayExtentOfContaminationState4",1569},
+#line 1235 "keys"
+    {"numberOfBits",1230},
+#line 1731 "keys"
+    {"scaledValueOfMinorAxisOfOblateSpheroidEarth",1726},
+#line 1738 "keys"
+    {"scaledValueOfUpperLimit",1733},
+    {""}, {""}, {""}, {""},
+#line 247 "keys"
+    {"WMO",242},
+    {""}, {""}, {""},
+#line 1649 "keys"
+    {"runwayDepositState1",1644},
+    {""}, {""},
+#line 1527 "keys"
+    {"presentTrend4",1522},
     {""},
-#line 1912 "../tests/keys"
-    {"unitOfTimeRange",1907},
+#line 1353 "keys"
+    {"offsetBeforePL",1348},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 544 "keys"
+    {"coordinate1Flag",539},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 2016 "keys"
+    {"typicalHour",2011},
     {""},
-#line 1570 "../tests/keys"
-    {"runwayExtentOfContaminationCodeState4",1565},
+#line 976 "keys"
+    {"latitudeOfReferencePoint",971},
     {""}, {""}, {""}, {""}, {""},
-#line 185 "../tests/keys"
-    {"P_INST",180},
+#line 1414 "keys"
+    {"padding_grid90_1",1409},
+#line 119 "keys"
+    {"Latin1InDegrees",114},
+#line 1834 "keys"
+    {"sizeOfPostAuxiliaryArray",1829},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 741 "keys"
+    {"extractAreaEastLongitude",736},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1516 "keys"
+    {"powerOfTenUsedToScaleClimateWeight",1511},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""},
-#line 1128 "../tests/keys"
-    {"northWestLatitudeOfLPOArea",1123},
     {""}, {""},
-#line 1670 "../tests/keys"
-    {"section1Padding",1665},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1297 "../tests/keys"
-    {"orderOfSpatialDifferencing",1292},
+#line 1336 "keys"
+    {"observationType",1331},
+    {""}, {""},
+#line 1805 "keys"
+    {"section_1",1800},
+    {""}, {""},
+#line 1845 "keys"
+    {"southLatitudeOfDomainOfTubing",1840},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 497 "keys"
+    {"clusterMember10",492},
     {""},
-#line 125 "../tests/keys"
-    {"Local_Number_Members_Used",120},
-    {""}, {""}, {""}, {""},
-#line 1167 "../tests/keys"
-    {"numberOfDataBinsAlongRadials",1162},
+#line 978 "keys"
+    {"latitudeOfSouthEastCornerOfArea",973},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 471 "../tests/keys"
-    {"clusterMember10",466},
+#line 1899 "keys"
+    {"subLocalDefinitionNumber1",1894},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 575 "keys"
+    {"countOfICEFieldsUsed",570},
+    {""},
+#line 1352 "keys"
+    {"offsetBeforeData",1347},
+#line 1997 "keys"
+    {"typeOfHorizontalLine",1992},
     {""}, {""}, {""},
-#line 173 "../tests/keys"
-    {"Number_Combination_Ensembles_1_none",168},
+#line 540 "keys"
+    {"coordAveraging2",535},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1061 "../tests/keys"
-    {"md5Section1",1056},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 56 "../tests/keys"
-    {"Ensemble_Identifier_E2",51},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 635 "../tests/keys"
-    {"endDayTrend2",630},
-    {""}, {""}, {""}, {""},
-#line 186 "../tests/keys"
-    {"P_TACC",181},
+#line 278 "keys"
+    {"addEmptySection2",273},
+#line 941 "keys"
+    {"jDirectionIncrementGiven",936},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1360 "keys"
+    {"offsetICEFieldsUsed",1355},
+    {""}, {""}, {""},
+#line 1499 "keys"
+    {"pentagonalResolutionParameterK",1494},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1305 "keys"
+    {"numberOfPointsUsed",1300},
+    {""}, {""}, {""},
+#line 1350 "keys"
+    {"offsetBSection6",1345},
+#line 1229 "keys"
+    {"numberInMixedCoordinateDefinition",1224},
+#line 539 "keys"
+    {"coordAveraging1",534},
+#line 1934 "keys"
+    {"thisMarsType",1929},
     {""}, {""},
-#line 1982 "../tests/keys"
-    {"windGustTrend1",1977},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1710 "keys"
+    {"scaleFactorOfMinorAxisOfOblateSpheroidEarth",1705},
+#line 1717 "keys"
+    {"scaleFactorOfUpperLimit",1712},
     {""}, {""}, {""}, {""},
-#line 41 "../tests/keys"
-    {"DjInMetres",36},
-#line 117 "../tests/keys"
-    {"Local_Number_Members_Missing",112},
+#line 1680 "keys"
+    {"runwayFrictionCodeValueState4",1675},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""},
-#line 1212 "../tests/keys"
-    {"numberOfPointsAlongYAxis",1207},
-#line 573 "../tests/keys"
-    {"dateOfSSTFieldUsed",568},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 783 "../tests/keys"
-    {"gts_TTAAii",778},
-    {""},
-#line 862 "../tests/keys"
-    {"jScansPositively",857},
+#line 168 "keys"
+    {"NC2",163},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 219 "keys"
+    {"TIDE",214},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1668 "keys"
+    {"runwayDesignatorState4",1663},
+    {""}, {""}, {""},
+#line 1084 "keys"
+    {"longitudeOfThePolePoint",1079},
+    {""}, {""},
+#line 891 "keys"
+    {"implementationDateOfModelCycle",886},
     {""},
-#line 1790 "../tests/keys"
-    {"subLocalDefinitionNumber1",1785},
-#line 1613 "../tests/keys"
-    {"scaleFactorOfUpperLimit",1608},
+#line 87 "keys"
+    {"HDF5str",82},
     {""}, {""}, {""}, {""},
-#line 513 "../tests/keys"
-    {"coordAveraging0",508},
-    {""},
-#line 1676 "../tests/keys"
-    {"section2Used",1671},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 580 "../tests/keys"
-    {"dayOfTheYearDate",575},
+#line 1688 "keys"
+    {"runwayFrictionCoefficientState4",1683},
+    {""}, {""}, {""}, {""},
+#line 1596 "keys"
+    {"recentWeather",1591},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1684 "keys"
+    {"runwayFrictionCoefficientCodeState4",1679},
+#line 222 "keys"
+    {"TT",217},
+    {""}, {""}, {""}, {""}, {""},
+#line 1085 "keys"
+    {"longitudeOfThePolePointInDegrees",1080},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1318 "keys"
+    {"numberOfStepsUsedForClustering",1313},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 255 "keys"
+    {"XRInMetres",250},
+#line 8 "keys"
+    {"************_PRODUCT_***************",3},
+    {""}, {""}, {""},
+#line 534 "keys"
+    {"constantAntennaElevationAngle",529},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 2057 "keys"
+    {"variationOfVisibilityDirectionTrend1",2052},
+    {""}, {""},
+#line 971 "keys"
+    {"latitudeOfFirstGridPointInDegrees",966},
+#line 1017 "keys"
+    {"listMembersMissing4",1012},
     {""},
-#line 1546 "../tests/keys"
-    {"runwayDepositCodeState4",1541},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1684 "../tests/keys"
-    {"section4Padding",1679},
-    {""}, {""}, {""}, {""},
-#line 1900 "../tests/keys"
-    {"typicalHour",1895},
-    {""},
-#line 476 "../tests/keys"
-    {"clusterMember6",471},
-#line 1960 "../tests/keys"
-    {"visibilityInKilometresTrend3",1955},
+#line 535 "keys"
+    {"constantFieldHalfByte",530},
+#line 170 "keys"
+    {"NG",165},
     {""}, {""},
-#line 474 "../tests/keys"
-    {"clusterMember4",469},
-#line 571 "../tests/keys"
-    {"dateOfIceFieldUsed",566},
+#line 1257 "keys"
+    {"numberOfDataBinsAlongRadials",1252},
+    {""},
+#line 1950 "keys"
+    {"timeCoordinateDefinition",1945},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 62 "../tests/keys"
-    {"ExtremeValuesInMaximumRVR2",57},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 2020 "../tests/keys"
-    {"yearOfEndOfOverallTimeInterval",2015},
-#line 1215 "../tests/keys"
-    {"numberOfRadarSitesUsed",1210},
-    {""},
-#line 1369 "../tests/keys"
-    {"padding_local1_31",1364},
-#line 1368 "../tests/keys"
-    {"padding_local1_1",1363},
-#line 259 "../tests/keys"
-    {"addEmptySection2",254},
-#line 2000 "../tests/keys"
-    {"windVariableDirectionTrend3",1995},
-#line 199 "../tests/keys"
-    {"Show_Combination_Ensem_E3_0_no_1_yes",194},
+#line 410 "keys"
+    {"cloudsAbbreviation4",405},
+#line 942 "keys"
+    {"jDirectionIncrementGridLength",937},
+    {""}, {""}, {""}, {""},
+#line 1765 "keys"
+    {"secondaryMissingValue",1760},
+    {""}, {""}, {""}, {""},
+#line 1307 "keys"
+    {"numberOfRadarSitesUsed",1302},
     {""}, {""}, {""}, {""}, {""},
-#line 1565 "../tests/keys"
-    {"runwayDesignatorState3",1560},
+#line 376 "keys"
+    {"cfNameECMF",371},
+#line 1651 "keys"
+    {"runwayDepositState3",1646},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1760 "keys"
+    {"secondaryBitmap",1755},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1910 "keys"
+    {"swapScanningX",1905},
+#line 672 "keys"
+    {"endDayTrend3",667},
+#line 2097 "keys"
+    {"windDirectionTrend1",2092},
+    {""},
+#line 1406 "keys"
+    {"packingType",1401},
+    {""},
+#line 1545 "keys"
+    {"primaryBitmap",1540},
+    {""}, {""}, {""}, {""}, {""},
+#line 2133 "keys"
+    {"yDirectionGridLengthInMetres",2128},
+#line 1880 "keys"
+    {"stepInHours",1875},
+    {""}, {""},
+#line 121 "keys"
+    {"Latin2InDegrees",116},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 490 "keys"
+    {"cloudsTitle4",485},
     {""},
-#line 1140 "../tests/keys"
-    {"numberInTheAuxiliaryArray",1135},
+#line 684 "keys"
+    {"endMinuteTrend4",679},
     {""},
-#line 1626 "../tests/keys"
-    {"scaledValueOfMinorAxisOfOblateSpheroidEarth",1621},
+#line 496 "keys"
+    {"clusterMember1",491},
+    {""}, {""},
+#line 43 "keys"
+    {"DjInMetres",38},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1135 "keys"
+    {"matchAerosolBinNumber",1130},
+    {""}, {""}, {""},
+#line 1961 "keys"
+    {"totalAerosolBinsNumbers",1956},
     {""},
-#line 1943 "../tests/keys"
-    {"variationOfVisibilityDirectionTrend3",1938},
+#line 1807 "keys"
+    {"section_3",1802},
+#line 1284 "keys"
+    {"numberOfMissing",1279},
+    {""}, {""}, {""},
+#line 1645 "keys"
+    {"runwayDepositCodeState1",1640},
+#line 949 "keys"
+    {"keyMore",944},
+#line 2134 "keys"
+    {"yDirectionGridLengthInMillimetres",2129},
     {""},
-#line 461 "../tests/keys"
-    {"cloudsTitle3Trend2",456},
-#line 244 "../tests/keys"
-    {"Y2",239},
-#line 451 "../tests/keys"
-    {"cloudsTitle1Trend2",446},
-#line 293 "../tests/keys"
-    {"beginDayTrend2",288},
+#line 2095 "keys"
+    {"widthOfWidths",2090},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 896 "keys"
+    {"indicatorOfUnitForTimeRange",891},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1083 "keys"
+    {"longitudeOfThePoleOfStretching",1078},
     {""}, {""}, {""}, {""},
-#line 1605 "../tests/keys"
-    {"scaleFactorOfMajorAxisOfOblateSpheroidEarth",1600},
+#line 860 "keys"
+    {"halfByte",855},
+    {""}, {""}, {""},
+#line 2059 "keys"
+    {"variationOfVisibilityDirectionTrend3",2054},
+#line 1766 "keys"
+    {"secondaryMissingValueSubstitute",1761},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 916 "keys"
+    {"isCavok",911},
     {""}, {""},
-#line 1071 "../tests/keys"
-    {"meanRVR3",1066},
-    {""},
-#line 1990 "../tests/keys"
-    {"windSpeedTrend3",1985},
-#line 1371 "../tests/keys"
-    {"padding_local_35",1366},
+#line 1677 "keys"
+    {"runwayFrictionCodeValueState1",1672},
+#line 66 "keys"
+    {"ExtremeValuesInMaximumRVR4",61},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1761 "keys"
+    {"secondaryBitmapPresent",1756},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 730 "keys"
+    {"experimentVersionNumber1",725},
+    {""}, {""}, {""},
+#line 1001 "keys"
+    {"lengthIncrementForTheGroupLengths",996},
+    {""}, {""}, {""}, {""},
+#line 1762 "keys"
+    {"secondaryBitmaps",1757},
+    {""},
+#line 1665 "keys"
+    {"runwayDesignatorState1",1660},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1285 "keys"
+    {"numberOfMissingInStatisticalProcess",1280},
+#line 696 "keys"
+    {"endStepInHours",691},
+    {""}, {""}, {""}, {""}, {""},
+#line 1685 "keys"
+    {"runwayFrictionCoefficientState1",1680},
+#line 272 "keys"
+    {"_T",267},
     {""}, {""}, {""},
-#line 931 "../tests/keys"
-    {"listMembersMissing2",926},
+#line 469 "keys"
+    {"cloudsCode3Trend4",464},
+    {""},
+#line 1349 "keys"
+    {"offsetBSection5",1344},
+    {""}, {""}, {""}, {""},
+#line 1681 "keys"
+    {"runwayFrictionCoefficientCodeState1",1676},
+    {""}, {""}, {""}, {""},
+#line 1995 "keys"
+    {"typeOfGeneratingProcess",1990},
+#line 1323 "keys"
+    {"numberOfUnexpandedDescriptors",1318},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""},
-#line 1062 "../tests/keys"
-    {"md5Section2",1057},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1551 "keys"
+    {"probabilityType",1546},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 856 "keys"
+    {"gts_CCCC",851},
+#line 1573 "keys"
+    {"qualityControlIndicator",1568},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""},
-#line 61 "../tests/keys"
-    {"ExtremeValuesInMaximumRVR1",56},
     {""},
-#line 19 "../tests/keys"
-    {"At_least__Or_Distribut_Proportion_Of",14},
+#line 640 "keys"
+    {"distanceFromTubeToEnsembleMean",635},
+    {""}, {""}, {""},
+#line 34 "keys"
+    {"Date_E4",29},
+#line 1763 "keys"
+    {"secondaryBitmapsCount",1758},
+    {""}, {""},
+#line 872 "keys"
+    {"hourOfEndOfOverallTimeInterval",867},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 965 "keys"
+    {"latitudeLastInDegrees",960},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 657 "keys"
+    {"earthMinorAxisInMetres",652},
+#line 2018 "keys"
+    {"typicalMonth",2013},
+    {""}, {""}, {""},
+#line 1524 "keys"
+    {"presentTrend1",1519},
+    {""}, {""}, {""},
+#line 2058 "keys"
+    {"variationOfVisibilityDirectionTrend2",2053},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1239 "../tests/keys"
-    {"observationDiagnostic",1234},
+#line 1679 "keys"
+    {"runwayFrictionCodeValueState3",1674},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 553 "keys"
+    {"coordinate4OfFirstGridPoint",548},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 58 "../tests/keys"
-    {"Ensemble_Identifier_E4",53},
+#line 1470 "keys"
+    {"padding_sec1_loc",1465},
+    {""}, {""}, {""},
+#line 987 "keys"
+    {"latitudeOfThePolePoint",982},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1667 "keys"
+    {"runwayDesignatorState3",1662},
+    {""},
+#line 1357 "keys"
+    {"offsetFreeFormData",1352},
+    {""}, {""}, {""},
+#line 1552 "keys"
+    {"probabilityTypeName",1547},
+    {""}, {""},
+#line 1650 "keys"
+    {"runwayDepositState2",1645},
     {""}, {""}, {""}, {""},
-#line 1882 "../tests/keys"
-    {"typeOfHorizontalLine",1877},
-#line 1639 "../tests/keys"
-    {"scanningMode6",1634},
+#line 1687 "keys"
+    {"runwayFrictionCoefficientState3",1682},
+#line 600 "keys"
+    {"dateOfIceFieldUsed",595},
+    {""},
+#line 2099 "keys"
+    {"windDirectionTrend3",2094},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1683 "keys"
+    {"runwayFrictionCoefficientCodeState3",1678},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1261 "keys"
+    {"numberOfDaysInClimateSamplingWindow",1256},
+#line 743 "keys"
+    {"extractAreaLongitudeRank",738},
+    {""},
+#line 1660 "keys"
+    {"runwayDepthOfDepositState4",1655},
+    {""}, {""}, {""}, {""}, {""},
+#line 499 "keys"
+    {"clusterMember3",494},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1495 "keys"
+    {"pastTendencyRVR3",1490},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 749 "keys"
+    {"extractDateTimeDayStart",744},
+    {""}, {""},
+#line 1647 "keys"
+    {"runwayDepositCodeState3",1642},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1806 "keys"
+    {"section_2",1801},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 158 "keys"
+    {"Model_Identifier",153},
+#line 383 "keys"
+    {"changeIndicatorTrend4",378},
+#line 1900 "keys"
+    {"subLocalDefinitionNumber2",1895},
     {""}, {""}, {""},
-#line 1637 "../tests/keys"
-    {"scanningMode4",1632},
+#line 63 "keys"
+    {"ExtremeValuesInMaximumRVR1",58},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 93 "keys"
+    {"ICPLSIZE",88},
+#line 670 "keys"
+    {"endDayTrend1",665},
+    {""}, {""}, {""}, {""},
+#line 1678 "keys"
+    {"runwayFrictionCodeValueState2",1673},
+    {""}, {""},
+#line 1294 "keys"
+    {"numberOfParametersUsedForClustering",1289},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1231 "keys"
+    {"numberInTheGridCoordinateList",1226},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 460 "../tests/keys"
-    {"cloudsTitle3Trend1",455},
+#line 731 "keys"
+    {"experimentVersionNumber2",726},
+    {""}, {""},
+#line 466 "keys"
+    {"cloudsCode3Trend1",461},
+#line 1052 "keys"
+    {"localTablesVersion",1047},
+#line 147 "keys"
+    {"METARstr",142},
+    {""}, {""}, {""},
+#line 1656 "keys"
+    {"runwayDepthOfDepositCodeState4",1651},
+    {""},
+#line 1666 "keys"
+    {"runwayDesignatorState2",1661},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 1686 "keys"
+    {"runwayFrictionCoefficientState2",1681},
+    {""}, {""}, {""},
+#line 1237 "keys"
+    {"numberOfBitsForScaledGroupLengths",1232},
     {""},
-#line 450 "../tests/keys"
-    {"cloudsTitle1Trend1",445},
+#line 31 "keys"
+    {"DELETE",26},
+    {""}, {""}, {""}, {""}, {""},
+#line 1682 "keys"
+    {"runwayFrictionCoefficientCodeState2",1677},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1277 "keys"
+    {"numberOfHorizontalPoints",1272},
+    {""}, {""}, {""}, {""},
+#line 360 "keys"
+    {"ceilingAndVisibilityOK",355},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1128 "keys"
+    {"marsType1",1123},
+    {""}, {""}, {""},
+#line 464 "keys"
+    {"cloudsCode2Trend4",459},
+    {""}, {""},
+#line 671 "keys"
+    {"endDayTrend2",666},
+    {""},
+#line 991 "keys"
+    {"latitudeWhereDxAndDyAreSpecified",986},
+    {""},
+#line 1533 "keys"
+    {"presentWeather2Present",1528},
+    {""}, {""}, {""}, {""}, {""},
+#line 2110 "keys"
+    {"windSpeedTrend3",2105},
+    {""}, {""}, {""},
+#line 552 "keys"
+    {"coordinate4Flag",547},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 992 "keys"
+    {"latitudeWhereDxAndDyAreSpecifiedInDegrees",987},
+#line 395 "keys"
+    {"cloudsAbbreviation1",390},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""},
-#line 678 "../tests/keys"
-    {"expandBy",673},
+#line 65 "keys"
+    {"ExtremeValuesInMaximumRVR3",60},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 986 "keys"
+    {"latitudeOfThePoleOfStretching",981},
+#line 1526 "keys"
+    {"presentTrend3",1521},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 351 "keys"
+    {"calendarIdentificationTemplateNumber",346},
+    {""}, {""}, {""}, {""}, {""},
+#line 1466 "keys"
+    {"padding_local1_31",1461},
+    {""}, {""}, {""}, {""}, {""},
+#line 874 "keys"
+    {"hoursAfterDataCutoff",869},
     {""}, {""},
-#line 1866 "../tests/keys"
-    {"tsectionNumber3",1861},
+#line 989 "keys"
+    {"latitudeOfTheSouthernPoleOfProjection",984},
     {""}, {""}, {""},
-#line 1331 "../tests/keys"
-    {"padding_loc190_1",1326},
-#line 1429 "../tests/keys"
-    {"presentTrend3",1424},
+#line 757 "keys"
+    {"extractDateTimeMonthRank",752},
     {""}, {""}, {""}, {""},
-#line 851 "../tests/keys"
-    {"isectionNumber3",846},
-#line 163 "../tests/keys"
-    {"NRj",158},
+#line 1341 "keys"
+    {"octetAtWichPackedDataBegins",1336},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 468 "keys"
+    {"cloudsCode3Trend3",463},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 1998 "keys"
+    {"typeOfIntervalForFirstAndSecondSize",1993},
+    {""}, {""}, {""}, {""}, {""},
+#line 1657 "keys"
+    {"runwayDepthOfDepositState1",1652},
+#line 1781 "keys"
+    {"section2Used",1776},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1412 "keys"
+    {"padding_grid50_1",1407},
+    {""}, {""}, {""},
+#line 2098 "keys"
+    {"windDirectionTrend2",2093},
     {""}, {""}, {""}, {""}, {""},
-#line 356 "../tests/keys"
-    {"changeIndicatorTrend2",351},
+#line 2050 "keys"
+    {"uvRelativeToGrid",2045},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1498 "keys"
+    {"pentagonalResolutionParameterJ",1493},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 2081 "keys"
+    {"visibilityInKilometresTrend4",2076},
+    {""}, {""},
+#line 498 "keys"
+    {"clusterMember2",493},
+#line 1304 "keys"
+    {"numberOfPointsAlongYAxis",1299},
+#line 529 "keys"
+    {"conceptsMasterDir",524},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 380 "keys"
+    {"changeIndicatorTrend1",375},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 193 "keys"
+    {"Original_Parameter_Identifier",188},
+#line 1646 "keys"
+    {"runwayDepositCodeState2",1641},
+    {""}, {""},
+#line 1301 "keys"
+    {"numberOfPointsAlongTheXAxis",1296},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 831 "keys"
+    {"getNumberOfValues",826},
+    {""},
+#line 840 "keys"
+    {"gribTablesVersionNo",835},
+    {""},
+#line 64 "keys"
+    {"ExtremeValuesInMaximumRVR2",59},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""},
+#line 2028 "keys"
+    {"unitOfTimeRange",2023},
+#line 1306 "keys"
+    {"numberOfPressureLevelsUsedForClustering",1301},
+    {""},
+#line 459 "keys"
+    {"cloudsCode1Trend4",454},
+#line 1999 "keys"
+    {"typeOfIntervalForFirstAndSecondWavelength",1994},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 86 "keys"
+    {"HDF5",81},
+#line 1653 "keys"
+    {"runwayDepthOfDepositCodeState1",1648},
+    {""}, {""},
+#line 742 "keys"
+    {"extractAreaLatitudeRank",737},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""},
+#line 1821 "keys"
+    {"shapeOfTheEarth",1816},
+    {""}, {""}, {""}, {""}, {""},
+#line 467 "keys"
+    {"cloudsCode3Trend2",462},
+#line 998 "keys"
+    {"legBaseTime",993},
+    {""},
+#line 1493 "keys"
+    {"pastTendencyRVR1",1488},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1659 "keys"
+    {"runwayDepthOfDepositState3",1654},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1957 "keys"
+    {"timeUnitFlag",1952},
+#line 959 "keys"
+    {"laplacianScalingFactorUnset",954},
+    {""}, {""}, {""}, {""},
+#line 309 "keys"
+    {"baseDateOfThisLeg",304},
+    {""}, {""}, {""}, {""},
+#line 461 "keys"
+    {"cloudsCode2Trend1",456},
+    {""}, {""},
+#line 2064 "keys"
+    {"variationOfVisibilityTrend4",2059},
+    {""}, {""}, {""},
+#line 1022 "keys"
+    {"listOfContributingSpectralBands",1017},
+    {""}, {""}, {""},
+#line 1469 "keys"
+    {"padding_local_7_1",1464},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1428 "keys"
+    {"padding_loc190_1",1423},
+    {""},
+#line 1016 "keys"
+    {"listMembersMissing3",1011},
+    {""}, {""}, {""}, {""}, {""},
+#line 382 "keys"
+    {"changeIndicatorTrend3",377},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 839 "keys"
+    {"gribMasterTablesVersionNumber",834},
+#line 146 "keys"
+    {"METAR",141},
+    {""}, {""},
+#line 405 "keys"
+    {"cloudsAbbreviation3",400},
+    {""}, {""}, {""},
+#line 1811 "keys"
+    {"section_7",1806},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1494 "keys"
+    {"pastTendencyRVR2",1489},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1528 "keys"
+    {"presentWeather1Present",1523},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""},
-#line 121 "../tests/keys"
-    {"Local_Number_Members_Possible",116},
-#line 637 "../tests/keys"
-    {"endDayTrend4",632},
+#line 1525 "keys"
+    {"presentTrend2",1520},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 346 "keys"
+    {"bufrHeaderSubCentre",341},
+    {""}, {""}, {""}, {""}, {""},
+#line 1655 "keys"
+    {"runwayDepthOfDepositCodeState3",1650},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1489 "../tests/keys"
-    {"rdb_key",1484},
+    {""}, {""}, {""}, {""}, {""},
+#line 26 "keys"
+    {"BufrTemplate",21},
     {""}, {""},
-#line 1011 "../tests/keys"
-    {"mBasicAngle",1006},
+#line 602 "keys"
+    {"dateOfSSTFieldUsed",597},
+    {""}, {""}, {""}, {""}, {""},
+#line 259 "keys"
+    {"Y1",254},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 1244 "../tests/keys"
-    {"oceanAtmosphereCoupling",1239},
-#line 1985 "../tests/keys"
-    {"windGustTrend4",1980},
+#line 895 "keys"
+    {"indicatorOfUnitForTimeIncrement",890},
+    {""}, {""}, {""}, {""},
+#line 1658 "keys"
+    {"runwayDepthOfDepositState2",1653},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 2078 "keys"
+    {"visibilityInKilometresTrend1",2073},
+    {""}, {""}, {""}, {""},
+#line 463 "keys"
+    {"cloudsCode2Trend3",458},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""},
+#line 1242 "keys"
+    {"numberOfBytesPerInteger",1237},
+    {""}, {""}, {""}, {""}, {""},
+#line 673 "keys"
+    {"endDayTrend4",668},
+    {""}, {""}, {""}, {""}, {""},
+#line 1002 "keys"
+    {"lengthOf4DvarWindow",997},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1853 "keys"
+    {"spacingOfBinsAlongRadials",1848},
+    {""},
+#line 203 "keys"
+    {"Product_Identifier",198},
+    {""},
+#line 1020 "keys"
+    {"listMembersUsed3",1015},
+    {""}, {""},
+#line 381 "keys"
+    {"changeIndicatorTrend2",376},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 489 "keys"
+    {"cloudsTitle3Trend4",484},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 690 "keys"
+    {"endOfHeadersMarker",685},
+    {""}, {""}, {""}, {""}, {""},
+#line 2048 "keys"
+    {"uuidOfHGrid",2043},
+    {""},
+#line 456 "keys"
+    {"cloudsCode1Trend1",451},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 348 "keys"
+    {"bufrdcExpandedDescriptors",343},
+    {""},
+#line 541 "keys"
+    {"coordAveraging3",536},
+    {""}, {""},
+#line 772 "keys"
+    {"extremeCounterClockwiseWindDirection",767},
+    {""},
+#line 2140 "keys"
+    {"yearOfEndOfOverallTimeInterval",2135},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 1507 "keys"
+    {"physicalFlag1",1502},
+    {""}, {""}, {""}, {""}, {""},
+#line 603 "keys"
+    {"dateSSTFieldUsed",598},
+#line 1654 "keys"
+    {"runwayDepthOfDepositCodeState2",1649},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 776 "keys"
+    {"extremeValuesRVR4",771},
     {""},
-#line 1098 "../tests/keys"
-    {"modelErrorType",1093},
+#line 1745 "keys"
+    {"scanningMode7",1740},
+#line 1952 "keys"
+    {"timeIncrementBetweenSuccessiveFields",1947},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""},
+#line 1086 "keys"
+    {"longitudeOfTheSouthernPoleOfProjection",1081},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""},
+#line 2080 "keys"
+    {"visibilityInKilometresTrend3",2075},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 33 "keys"
+    {"Date_E3",28},
+    {""}, {""},
+#line 462 "keys"
+    {"cloudsCode2Trend2",457},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 1202 "../tests/keys"
-    {"numberOfParametersUsedForClustering",1197},
+#line 715 "keys"
+    {"expandBy",710},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 519 "keys"
+    {"commonBlock",514},
+    {""}, {""}, {""}, {""},
+#line 1129 "keys"
+    {"marsType2",1124},
+    {""}, {""},
+#line 1334 "keys"
+    {"observationDiagnostic",1329},
+#line 503 "keys"
+    {"clusterMember7",498},
+    {""}, {""}, {""},
+#line 1465 "keys"
+    {"padding_local1_1",1460},
+    {""}, {""}, {""},
+#line 1015 "keys"
+    {"listMembersMissing2",1010},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 747 "keys"
+    {"extractDateTimeDayEnd",742},
     {""},
-#line 1573 "../tests/keys"
-    {"runwayExtentOfContaminationState3",1568},
+#line 1467 "keys"
+    {"padding_local40_1",1462},
+#line 682 "keys"
+    {"endMinuteTrend2",677},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 400 "keys"
+    {"cloudsAbbreviation2",395},
     {""}, {""}, {""},
-#line 1569 "../tests/keys"
-    {"runwayExtentOfContaminationCodeState3",1564},
+#line 458 "keys"
+    {"cloudsCode1Trend3",453},
+    {""}, {""}, {""}, {""},
+#line 62 "keys"
+    {"Extra_Data_FreeFormat_0_none",57},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""},
-#line 704 "../tests/keys"
-    {"extremeCounterClockwiseWindDirection",699},
-#line 1182 "../tests/keys"
-    {"numberOfGridUsed",1177},
+#line 425 "keys"
+    {"cloudsBase3",420},
+#line 1182 "keys"
+    {"missingValueManagementUsed",1177},
     {""},
-#line 636 "../tests/keys"
-    {"endDayTrend3",631},
+#line 977 "keys"
+    {"latitudeOfReferencePointInDegrees",972},
+#line 681 "keys"
+    {"endMinuteTrend1",676},
+#line 1764 "keys"
+    {"secondaryBitmapsSize",1759},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1500 "keys"
+    {"pentagonalResolutionParameterM",1495},
+    {""}, {""}, {""},
+#line 201 "keys"
+    {"P_TACC",196},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 680 "keys"
+    {"endMark",675},
+#line 1464 "keys"
+    {"padding_local11_1",1459},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""},
-#line 242 "../tests/keys"
-    {"Y1",237},
+#line 316 "keys"
+    {"beginDayTrend4",311},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 449 "keys"
+    {"cloudsBaseCoded3Trend4",444},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 2079 "keys"
+    {"visibilityInKilometresTrend2",2074},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 324 "keys"
+    {"beginMinuteTrend4",319},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 75 "keys"
+    {"GG",70},
+    {""}, {""}, {""}, {""},
+#line 486 "keys"
+    {"cloudsTitle3Trend1",481},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 292 "../tests/keys"
-    {"beginDayTrend1",287},
+#line 1496 "keys"
+    {"pastTendencyRVR4",1491},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""},
-#line 1659 "../tests/keys"
-    {"secondaryBitmapsSize",1654},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1979 "../tests/keys"
-    {"windDirectionTrend3",1974},
-#line 241 "../tests/keys"
-    {"XpInGridLengths",236},
-#line 64 "../tests/keys"
-    {"ExtremeValuesInMaximumRVR4",59},
+#line 457 "keys"
+    {"cloudsCode1Trend2",452},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 340 "../tests/keys"
-    {"centralClusterDefinition",335},
+#line 484 "keys"
+    {"cloudsTitle2Trend4",479},
+    {""}, {""},
+#line 857 "keys"
+    {"gts_TTAAii",852},
+    {""}, {""}, {""},
+#line 773 "keys"
+    {"extremeValuesRVR1",768},
+#line 1082 "keys"
+    {"longitudeOfTangencyPoint",1077},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1586 "keys"
+    {"rdb_key",1581},
+#line 204 "keys"
+    {"RENAME",199},
+    {""}, {""}, {""},
+#line 2061 "keys"
+    {"variationOfVisibilityTrend1",2056},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1053 "keys"
+    {"localTablesVersionNumber",1048},
+#line 1479 "keys"
+    {"paramIdECMF",1474},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 355 "../tests/keys"
-    {"changeIndicatorTrend1",350},
+#line 1325 "keys"
+    {"numberOfUsedSpatialTiles",1320},
+    {""}, {""}, {""},
+#line 794 "keys"
+    {"firstMonthUsedToBuildClimateMonth1",789},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""},
-#line 1497 "../tests/keys"
-    {"recentWeather",1492},
-    {""}, {""}, {""}, {""}, {""},
-#line 463 "../tests/keys"
-    {"cloudsTitle3Trend4",458},
+#line 1583 "keys"
+    {"rangeBinSpacing",1578},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 453 "../tests/keys"
-    {"cloudsTitle1Trend4",448},
+#line 1692 "keys"
+    {"runwaySideCodeState4",1687},
+    {""}, {""},
+#line 2087 "keys"
+    {"weightAppliedToClimateMonth1",2082},
+    {""}, {""}, {""}, {""},
+#line 32 "keys"
+    {"Date_E2",27},
+    {""}, {""}, {""},
+#line 2084 "keys"
+    {"visibilityTrend3",2079},
+    {""}, {""},
+#line 1676 "keys"
+    {"runwayExtentOfContaminationState4",1671},
+    {""}, {""},
+#line 1458 "keys"
+    {"padding_loc50_1",1453},
+#line 1672 "keys"
+    {"runwayExtentOfContaminationCodeState4",1667},
+    {""},
+#line 488 "keys"
+    {"cloudsTitle3Trend3",483},
+    {""}, {""}, {""}, {""},
+#line 1664 "keys"
+    {"runwayDesignatorRVR4",1659},
+    {""}, {""}, {""}, {""}, {""},
+#line 1326 "keys"
+    {"numberOfUsedTileAttributes",1321},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 1549 "../tests/keys"
-    {"runwayDepositState3",1544},
+#line 270 "keys"
+    {"ZLBASE",265},
+    {""}, {""}, {""}, {""}, {""},
+#line 1287 "keys"
+    {"numberOfModeOfDistribution",1282},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 1019 "keys"
+    {"listMembersUsed2",1014},
+    {""}, {""}, {""},
+#line 1509 "keys"
+    {"physicalMeaningOfVerticalCoordinate",1504},
+#line 1236 "keys"
+    {"numberOfBitsContainingEachPackedValue",1231},
+    {""}, {""}, {""},
+#line 1371 "keys"
+    {"offsetValuesBy",1366},
+    {""}, {""},
+#line 775 "keys"
+    {"extremeValuesRVR3",770},
+    {""}, {""}, {""}, {""}, {""},
+#line 22 "keys"
+    {"BOX",17},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""},
-#line 1377 "../tests/keys"
-    {"padding_sec3_1",1372},
+#line 242 "keys"
+    {"UseEcmfConventions",237},
+    {""}, {""},
+#line 446 "keys"
+    {"cloudsBaseCoded3Trend1",441},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""},
-#line 1232 "../tests/keys"
-    {"numberOfVGridUsed",1227},
-#line 1152 "../tests/keys"
-    {"numberOfBytesPerInteger",1147},
+#line 261 "keys"
+    {"Y2",256},
+    {""}, {""}, {""}, {""}, {""},
+#line 321 "keys"
+    {"beginMinuteTrend1",316},
+#line 1359 "keys"
+    {"offsetFromReferenceOfFirstTime",1354},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 758 "../tests/keys"
-    {"getNumberOfValues",753},
+#line 332 "keys"
+    {"beginYearTrend4",327},
+    {""}, {""},
+#line 474 "keys"
+    {"cloudsCode4Trend4",469},
+#line 479 "keys"
+    {"cloudsTitle1Trend4",474},
+    {""}, {""}, {""}, {""}, {""},
+#line 2069 "keys"
+    {"versionNumberOfExperimentalSuite",2064},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 444 "keys"
+    {"cloudsBaseCoded2Trend4",439},
+#line 2012 "keys"
+    {"typeOfWavelengthInterval",2007},
+    {""}, {""}, {""},
+#line 487 "keys"
+    {"cloudsTitle3Trend2",482},
     {""}, {""},
-#line 999 "../tests/keys"
-    {"longitudeOfTheSouthernPoleOfProjection",994},
+#line 415 "keys"
+    {"cloudsBase1",410},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 1274 "keys"
+    {"numberOfGridUsed",1269},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 481 "keys"
+    {"cloudsTitle2Trend1",476},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 51 "keys"
+    {"ECMWF",46},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 35 "keys"
+    {"DayOfModelVersion",30},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 774 "keys"
+    {"extremeValuesRVR2",769},
+#line 445 "keys"
+    {"cloudsBaseCoded3",440},
+    {""}, {""},
+#line 1508 "keys"
+    {"physicalFlag2",1503},
+    {""}, {""}, {""},
+#line 2063 "keys"
+    {"variationOfVisibilityTrend3",2058},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 448 "keys"
+    {"cloudsBaseCoded3Trend3",443},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 420 "keys"
+    {"cloudsBase2",415},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 795 "keys"
+    {"firstMonthUsedToBuildClimateMonth2",790},
+#line 323 "keys"
+    {"beginMinuteTrend3",318},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 1673 "keys"
+    {"runwayExtentOfContaminationState1",1668},
+    {""}, {""}, {""},
+#line 1669 "keys"
+    {"runwayExtentOfContaminationCodeState1",1664},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 1538 "../tests/keys"
-    {"roundedMarsLongitude",1533},
-#line 1606 "../tests/keys"
-    {"scaleFactorOfMinorAxisOfOblateSpheroidEarth",1601},
-#line 1401 "../tests/keys"
-    {"pentagonalResolutionParameterJ",1396},
+#line 1327 "keys"
+    {"numberOfVGridUsed",1322},
+    {""}, {""},
+#line 688 "keys"
+    {"endMonthTrend4",683},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 610 "keys"
+    {"dayOfTheYearDate",605},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 284 "keys"
+    {"alternativeRowScanning",279},
+#line 2116 "keys"
+    {"windUnitsTrend4",2111},
     {""},
-#line 456 "../tests/keys"
-    {"cloudsTitle2Trend2",451},
+#line 2070 "keys"
+    {"versionNumberOfGribLocalTables",2065},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 208 "keys"
+    {"RVR4_1",203},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 483 "keys"
+    {"cloudsTitle2Trend3",478},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""},
+#line 264 "keys"
+    {"YRInMetres",259},
+    {""}, {""},
+#line 313 "keys"
+    {"beginDayTrend1",308},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 439 "keys"
+    {"cloudsBaseCoded1Trend4",434},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 988 "keys"
+    {"latitudeOfThePolePointInDegrees",983},
+    {""},
+#line 1431 "keys"
+    {"padding_loc191_3",1426},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 2082 "keys"
+    {"visibilityTrend1",2077},
+#line 447 "keys"
+    {"cloudsBaseCoded3Trend2",442},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 471 "keys"
+    {"cloudsCode4Trend1",466},
+#line 476 "keys"
+    {"cloudsTitle1Trend1",471},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 322 "keys"
+    {"beginMinuteTrend2",317},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1675 "keys"
+    {"runwayExtentOfContaminationState3",1670},
+    {""}, {""}, {""},
+#line 1671 "keys"
+    {"runwayExtentOfContaminationCodeState3",1666},
+    {""}, {""},
+#line 441 "keys"
+    {"cloudsBaseCoded2Trend1",436},
+    {""},
+#line 1461 "keys"
+    {"padding_loc7_1",1456},
+#line 1462 "keys"
+    {"padding_loc9_1",1457},
+    {""},
+#line 1460 "keys"
+    {"padding_loc6_1",1455},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""},
-#line 1312 "../tests/keys"
-    {"padding_grid1_2",1307},
+#line 1320 "keys"
+    {"numberOfTensOfThousandsOfYearsOfOffset",1315},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 875 "keys"
+    {"hoursAfterReferenceTimeOfDataCutoff",870},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""},
-#line 1839 "../tests/keys"
-    {"timeIncrementBetweenSuccessiveFields",1834},
+#line 1538 "keys"
+    {"presentWeather3Present",1533},
     {""},
-#line 1359 "../tests/keys"
-    {"padding_loc3_1",1354},
+#line 2105 "keys"
+    {"windGustTrend4",2100},
+#line 1759 "keys"
+    {"secondaryBitMap",1754},
+    {""},
+#line 655 "keys"
+    {"earthMajorAxisInMetres",650},
+#line 1452 "keys"
+    {"padding_loc30_2",1447},
+    {""}, {""}, {""}, {""},
+#line 1459 "keys"
+    {"padding_loc5_1",1454},
+    {""}, {""}, {""},
+#line 2083 "keys"
+    {"visibilityTrend2",2078},
+    {""}, {""}, {""}, {""},
+#line 2006 "keys"
+    {"typeOfSSTFieldUsed",2001},
+    {""}, {""}, {""},
+#line 482 "keys"
+    {"cloudsTitle2Trend2",477},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 31 "../tests/keys"
-    {"Date_E3",26},
+#line 1021 "keys"
+    {"listMembersUsed4",1016},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1451 "keys"
+    {"padding_loc30_1",1446},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 169 "keys"
+    {"NEAREST",164},
+#line 320 "keys"
+    {"beginHourTrend4",315},
+    {""}, {""}, {""}, {""},
+#line 70 "keys"
+    {"ExtremeValuesRVR4",65},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1689 "keys"
+    {"runwaySideCodeState1",1684},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 2062 "keys"
+    {"variationOfVisibilityTrend2",2057},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 473 "keys"
+    {"cloudsCode4Trend3",468},
+#line 478 "keys"
+    {"cloudsTitle1Trend3",473},
+    {""},
+#line 1455 "keys"
+    {"padding_loc38_1",1450},
+    {""}, {""}, {""}, {""}, {""},
+#line 1661 "keys"
+    {"runwayDesignatorRVR1",1656},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1468 "keys"
+    {"padding_local_35",1463},
+    {""}, {""}, {""}, {""},
+#line 231 "keys"
+    {"Threshold_Or_Distribution_0_no_1_yes",226},
+#line 1674 "keys"
+    {"runwayExtentOfContaminationState2",1669},
+#line 443 "keys"
+    {"cloudsBaseCoded2Trend3",438},
     {""}, {""},
-#line 1064 "../tests/keys"
-    {"md5Section4",1059},
+#line 1670 "keys"
+    {"runwayExtentOfContaminationCodeState2",1665},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 1228 "keys"
+    {"numberInHorizontalCoordinates",1223},
+    {""}, {""}, {""}, {""},
+#line 205 "keys"
+    {"RVR1_1",200},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""},
+#line 435 "keys"
+    {"cloudsBaseCoded1",430},
+    {""},
+#line 152 "keys"
+    {"Minute_E4",147},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 436 "keys"
+    {"cloudsBaseCoded1Trend1",431},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 315 "keys"
+    {"beginDayTrend3",310},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""},
+#line 209 "keys"
+    {"SOH",204},
+    {""}, {""},
+#line 1230 "keys"
+    {"numberInTheAuxiliaryArray",1225},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""},
+#line 430 "keys"
+    {"cloudsBase4",425},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""},
+#line 472 "keys"
+    {"cloudsCode4Trend2",467},
+#line 477 "keys"
+    {"cloudsTitle1Trend2",472},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 440 "keys"
+    {"cloudsBaseCoded2",435},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 92 "keys"
+    {"ICEFieldsUsed",87},
     {""}, {""}, {""}, {""}, {""},
-#line 1837 "../tests/keys"
-    {"timeCoordinateDefinition",1832},
+#line 442 "keys"
+    {"cloudsBaseCoded2Trend2",437},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 207 "keys"
+    {"RVR3_1",202},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 335 "../tests/keys"
-    {"ceilingAndVisibilityOK",330},
+#line 1240 "keys"
+    {"numberOfBytesInLocalDefinition",1235},
+    {""}, {""}, {""}, {""},
+#line 258 "keys"
+    {"XpInGridLengths",253},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 1429 "keys"
+    {"padding_loc191_1",1424},
+    {""}, {""},
+#line 438 "keys"
+    {"cloudsBaseCoded1Trend3",433},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""},
-#line 135 "../tests/keys"
-    {"METARstr",130},
-#line 1680 "../tests/keys"
-    {"section3Padding",1675},
-#line 466 "../tests/keys"
-    {"cloudsTitle4Trend2",461},
+#line 67 "keys"
+    {"ExtremeValuesRVR1",62},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1447 "keys"
+    {"padding_loc29_2",1442},
+    {""}, {""}, {""},
+#line 1758 "keys"
+    {"secondOrderValuesDifferentWidths",1753},
+    {""},
+#line 357 "keys"
+    {"ccsdsBlockSize",352},
+    {""}, {""},
+#line 1907 "keys"
+    {"superblockExtensionAddress",1902},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 311 "keys"
+    {"baseTimeOfThisLeg",306},
+    {""}, {""}, {""},
+#line 1691 "keys"
+    {"runwaySideCodeState3",1686},
+    {""}, {""}, {""},
+#line 285 "keys"
+    {"altitudeOfTheCameraFromTheEarthSCenterMeasuredInUnitsOfTheEarth",280},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1446 "keys"
+    {"padding_loc29_1",1441},
+    {""},
+#line 1434 "keys"
+    {"padding_loc20_1",1429},
+    {""},
+#line 188 "keys"
+    {"Number_Combination_Ensembles_1_none",183},
+#line 685 "keys"
+    {"endMonthTrend1",680},
+    {""}, {""}, {""},
+#line 327 "keys"
+    {"beginMonthTrend3",322},
+    {""}, {""}, {""}, {""},
+#line 1663 "keys"
+    {"runwayDesignatorRVR3",1658},
+    {""}, {""}, {""},
+#line 1324 "keys"
+    {"numberOfUnusedBitsAtEndOfSection3",1319},
+    {""}, {""}, {""}, {""},
+#line 6 "keys"
+    {"************_ENSEMBLE_**************",1},
+    {""},
+#line 1413 "keys"
+    {"padding_grid5_1",1408},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 574 "../tests/keys"
-    {"dateSSTFieldUsed",569},
-#line 7 "../tests/keys"
-    {"************_EXPERIMENT_************",2},
-#line 358 "../tests/keys"
-    {"changeIndicatorTrend4",353},
+#line 1430 "keys"
+    {"padding_loc191_2",1425},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 1445 "keys"
+    {"padding_loc28_1",1440},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 206 "keys"
+    {"RVR2_1",201},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 137 "keys"
+    {"Local_Number_Members_Used",132},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 2085 "keys"
+    {"visibilityTrend4",2080},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 683 "keys"
+    {"endMinuteTrend3",678},
     {""},
-#line 918 "../tests/keys"
-    {"lengthOf4DvarWindow",913},
+#line 494 "keys"
+    {"cloudsTitle4Trend4",489},
+    {""}, {""}, {""},
+#line 1817 "keys"
+    {"setBitsPerValue",1812},
+    {""}, {""}, {""},
+#line 437 "keys"
+    {"cloudsBaseCoded1Trend2",432},
+    {""}, {""}, {""}, {""}, {""},
+#line 69 "keys"
+    {"ExtremeValuesRVR3",64},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1474 "keys"
+    {"padding_sec3_1",1469},
+    {""}, {""}, {""}, {""},
+#line 314 "keys"
+    {"beginDayTrend2",309},
+    {""}, {""}, {""}, {""}, {""},
+#line 2071 "keys"
+    {"versionNumberOfSuperblock",2066},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 129 "keys"
+    {"Local_Number_Members_Missing",124},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 97 "keys"
+    {"ITERATOR",92},
     {""}, {""},
-#line 1932 "../tests/keys"
-    {"uuidOfHGrid",1927},
+#line 1456 "keys"
+    {"padding_loc3_1",1451},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 1439 "keys"
+    {"padding_loc244_3",1434},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 1433 "keys"
+    {"padding_loc19_2",1428},
+#line 2102 "keys"
+    {"windGustTrend1",2097},
+#line 339 "keys"
+    {"bitsPerValueAndRepack",334},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 1463 "keys"
+    {"padding_loc9_2",1458},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 1415 "keys"
+    {"padding_loc10_1",1410},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 760 "keys"
+    {"extractDateTimeSecondRank",755},
+    {""}, {""}, {""}, {""},
+#line 1427 "keys"
+    {"padding_loc18_2",1422},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 1411 "keys"
+    {"padding_grid4_1",1406},
+    {""}, {""}, {""},
+#line 200 "keys"
+    {"P_INST",195},
+    {""}, {""}, {""}, {""},
+#line 1432 "keys"
+    {"padding_loc192_1",1427},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 1426 "keys"
+    {"padding_loc18_1",1421},
+    {""},
+#line 68 "keys"
+    {"ExtremeValuesRVR2",63},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1302 "keys"
+    {"numberOfPointsAlongTheYAxis",1297},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""},
-#line 723 "../tests/keys"
-    {"firstMonthUsedToBuildClimateMonth2",718},
+#line 215 "keys"
+    {"Show_Combination_Ensem_E4_0_no_1_yes",210},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1690 "keys"
+    {"runwaySideCodeState2",1685},
+    {""}, {""}, {""}, {""},
+#line 687 "keys"
+    {"endMonthTrend3",682},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 450 "keys"
+    {"cloudsBaseCoded4",445},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1662 "keys"
+    {"runwayDesignatorRVR2",1657},
+    {""}, {""}, {""},
+#line 920 "keys"
+    {"isCavokTrend4",915},
+    {""}, {""}, {""},
+#line 454 "keys"
+    {"cloudsBaseCoded4Trend4",449},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1440 "keys"
+    {"padding_loc245_1",1435},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 171 "keys"
+    {"NH",166},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1420 "keys"
+    {"padding_loc13_5",1415},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 330 "keys"
+    {"beginYearTrend2",325},
+#line 491 "keys"
+    {"cloudsTitle4Trend1",486},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 133 "keys"
+    {"Local_Number_Members_Possible",128},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 329 "keys"
+    {"beginYearTrend1",324},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1717 "../tests/keys"
-    {"shapeOfTheEarth",1712},
-#line 1355 "../tests/keys"
-    {"padding_loc30_2",1350},
+#line 325 "keys"
+    {"beginMonthTrend1",320},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 60 "keys"
+    {"Ensemble_Identifier_E4",55},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 754 "keys"
+    {"extractDateTimeMinuteRank",749},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1441 "keys"
+    {"padding_loc245_2",1436},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 179 "keys"
+    {"NUT",174},
+    {""}, {""}, {""}, {""}, {""},
+#line 1471 "keys"
+    {"padding_sec2_1",1466},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 913 "keys"
+    {"intervalBetweenTimes",908},
+#line 364 "keys"
+    {"ceilingAndVisibilityOKTrend4",359},
+    {""},
+#line 414 "keys"
+    {"cloudsAbbreviation4Trend4",409},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 2104 "keys"
+    {"windGustTrend3",2099},
+    {""}, {""},
+#line 1409 "keys"
+    {"padding_grid1_2",1404},
+    {""},
+#line 1449 "keys"
+    {"padding_loc2_1",1444},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 701 "keys"
+    {"endYearTrend4",696},
+    {""}, {""},
+#line 326 "keys"
+    {"beginMonthTrend2",321},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 7 "keys"
+    {"************_EXPERIMENT_************",2},
+    {""}, {""},
+#line 1408 "keys"
+    {"padding_grid1_1",1403},
     {""}, {""}, {""},
-#line 1063 "../tests/keys"
-    {"md5Section3",1058},
+#line 493 "keys"
+    {"cloudsTitle4Trend3",488},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 2011 "keys"
+    {"typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing",2006},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 748 "keys"
+    {"extractDateTimeDayRank",743},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1442 "keys"
+    {"padding_loc26_1",1437},
+    {""}, {""}, {""},
+#line 1437 "keys"
+    {"padding_loc244_1",1432},
+    {""},
+#line 2114 "keys"
+    {"windUnitsTrend2",2109},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""},
-#line 284 "../tests/keys"
-    {"backgroundGeneratingProcessIdentifier",279},
-#line 1375 "../tests/keys"
-    {"padding_sec2_2",1370},
+#line 2113 "keys"
+    {"windUnitsTrend1",2108},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""},
+#line 451 "keys"
+    {"cloudsBaseCoded4Trend1",446},
+    {""}, {""}, {""},
+#line 686 "keys"
+    {"endMonthTrend2",681},
+#line 763 "keys"
+    {"extractDateTimeYearRank",758},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1419 "keys"
+    {"padding_loc13_4",1414},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 151 "keys"
+    {"Minute_E3",146},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1438 "keys"
+    {"padding_loc244_2",1433},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""},
+#line 1410 "keys"
+    {"padding_grid3_1",1405},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 492 "keys"
+    {"cloudsTitle4Trend2",487},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""},
+#line 214 "keys"
+    {"Show_Combination_Ensem_E3_0_no_1_yes",209},
+    {""}, {""},
+#line 1378 "keys"
+    {"oneMinuteMeanMaximumRVR4",1373},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 1348 "keys"
+    {"offsetBBitmap",1343},
+    {""}, {""}, {""}, {""}, {""},
+#line 192 "keys"
+    {"Original_Parameter_Iden_CodeTable2",187},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 361 "keys"
+    {"ceilingAndVisibilityOKTrend1",356},
+    {""},
+#line 399 "keys"
+    {"cloudsAbbreviation1Trend4",394},
+    {""},
+#line 1473 "keys"
+    {"padding_sec2_3",1468},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 453 "keys"
+    {"cloudsBaseCoded4Trend3",448},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 318 "keys"
+    {"beginHourTrend2",313},
+    {""}, {""},
+#line 1424 "keys"
+    {"padding_loc16_1",1419},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 2103 "keys"
+    {"windGustTrend2",2098},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""},
+#line 317 "keys"
+    {"beginHourTrend1",312},
+    {""}, {""}, {""},
+#line 827 "keys"
+    {"genVertHeightCoords",822},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 59 "keys"
+    {"Ensemble_Identifier_E3",54},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 2022 "keys"
+    {"typicalYearOfCentury",2017},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 277 "keys"
+    {"accuracyMultipliedByFactor",272},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 213 "keys"
+    {"Show_Combination_Ensem_E2_0_no_1_yes",208},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 917 "keys"
+    {"isCavokTrend1",912},
+#line 1581 "keys"
+    {"radiusOfTheEarth",1576},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 363 "keys"
+    {"ceilingAndVisibilityOKTrend3",358},
+#line 679 "keys"
+    {"endHourTrend4",674},
+#line 409 "keys"
+    {"cloudsAbbreviation3Trend4",404},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1330 "../tests/keys"
-    {"padding_loc18_2",1325},
     {""}, {""}, {""}, {""}, {""},
-#line 455 "../tests/keys"
-    {"cloudsTitle2Trend1",450},
+#line 452 "keys"
+    {"cloudsBaseCoded4Trend2",447},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 328 "keys"
+    {"beginMonthTrend4",323},
+#line 150 "keys"
+    {"Minute_E2",145},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 52 "keys"
+    {"ECMWF_s",47},
+    {""}, {""},
+#line 191 "keys"
+    {"Original_CodeTable_2_Version_Number",186},
+    {""}, {""}, {""}, {""}, {""},
+#line 1286 "keys"
+    {"numberOfMissingValues",1281},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1375 "keys"
+    {"oneMinuteMeanMaximumRVR1",1370},
+#line 1382 "keys"
+    {"oneMinuteMeanMinimumRVR4",1377},
+    {""}, {""}, {""},
+#line 58 "keys"
+    {"Ensemble_Identifier_E2",53},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1336 "../tests/keys"
-    {"padding_loc19_2",1331},
+#line 1537 "keys"
+    {"presentWeather2PresentTrend4",1532},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 411 "keys"
+    {"cloudsAbbreviation4Trend1",406},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 362 "keys"
+    {"ceilingAndVisibilityOKTrend2",357},
+#line 698 "keys"
+    {"endYearTrend1",693},
+#line 404 "keys"
+    {"cloudsAbbreviation2Trend4",399},
+    {""}, {""},
+#line 25 "keys"
+    {"BUFRstr",20},
+    {""}, {""}, {""}, {""},
+#line 1472 "keys"
+    {"padding_sec2_2",1467},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 1450 "keys"
+    {"padding_loc2_2",1445},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 429 "keys"
+    {"cloudsBase3Trend4",424},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1423 "keys"
+    {"padding_loc15_1",1418},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1772 "../tests/keys"
-    {"stepInHours",1767},
-    {""}, {""}, {""}, {""},
-#line 865 "../tests/keys"
-    {"keyMore",860},
-    {""},
-#line 191 "../tests/keys"
-    {"RVR2_1",186},
+#line 751 "keys"
+    {"extractDateTimeHourRank",746},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 1370 "../tests/keys"
-    {"padding_local40_1",1365},
-#line 1946 "../tests/keys"
-    {"variationOfVisibilityTrend2",1941},
+#line 1377 "keys"
+    {"oneMinuteMeanMaximumRVR3",1372},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1448 "keys"
+    {"padding_loc29_3",1443},
+    {""}, {""}, {""}, {""}, {""},
+#line 919 "keys"
+    {"isCavokTrend3",914},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 1353 "../tests/keys"
-    {"padding_loc2_2",1348},
+#line 202 "keys"
+    {"P_TAVG",197},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 966 "../tests/keys"
-    {"localTablesVersionNumber",961},
+#line 266 "keys"
+    {"YearOfModelVersion",261},
     {""},
-#line 894 "../tests/keys"
-    {"latitudeOfSouthEastCornerOfArea",889},
+#line 132 "keys"
+    {"Local_Number_Members_Missing_E4",127},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 465 "../tests/keys"
-    {"cloudsTitle4Trend1",460},
-    {""}, {""},
-#line 938 "../tests/keys"
-    {"listOfContributingSpectralBands",933},
+#line 165 "keys"
+    {"NB",160},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 722 "../tests/keys"
-    {"firstMonthUsedToBuildClimateMonth1",717},
-#line 659 "../tests/keys"
-    {"endStepInHours",654},
-    {""}, {""},
-#line 226 "../tests/keys"
-    {"Total_Number_Members_Used",221},
-#line 1315 "../tests/keys"
-    {"padding_grid50_1",1310},
-    {""}, {""}, {""},
-#line 510 "../tests/keys"
-    {"constantFieldHalfByte",505},
-    {""}, {""}, {""},
-#line 1214 "../tests/keys"
-    {"numberOfPressureLevelsUsedForClustering",1209},
     {""}, {""},
-#line 295 "../tests/keys"
-    {"beginDayTrend4",290},
+#line 228 "keys"
+    {"TYPE_OF",223},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""},
-#line 1891 "../tests/keys"
-    {"typeOfSSTFieldUsed",1886},
-#line 374 "../tests/keys"
-    {"cloudsAbbreviation2",369},
-    {""},
-#line 1360 "../tests/keys"
-    {"padding_loc4_2",1355},
-#line 57 "../tests/keys"
-    {"Ensemble_Identifier_E3",52},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1048 "../tests/keys"
-    {"matchAerosolBinNumber",1043},
+#line 1351 "keys"
+    {"offsetBeforeBitmap",1346},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 933 "../tests/keys"
-    {"listMembersMissing4",928},
-#line 1411 "../tests/keys"
-    {"physicalFlag2",1406},
+#line 230 "keys"
+    {"TYPE_PF",225},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 766 "../tests/keys"
-    {"gribMasterTablesVersionNumber",761},
-    {""}, {""}, {""}, {""},
-#line 1255 "../tests/keys"
-    {"offsetBSection6",1250},
+    {""},
+#line 1379 "keys"
+    {"oneMinuteMeanMinimumRVR1",1374},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1597 "keys"
+    {"recentWeatherTry",1592},
     {""}, {""},
-#line 190 "../tests/keys"
-    {"RVR1_1",185},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1534 "keys"
+    {"presentWeather2PresentTrend1",1529},
     {""},
-#line 224 "../tests/keys"
-    {"Total_Number_Members_Missing",219},
+#line 1422 "keys"
+    {"padding_loc14_2",1417},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 251 "keys"
+    {"X1InGridLengths",246},
     {""}, {""}, {""}, {""},
-#line 1147 "../tests/keys"
-    {"numberOfBitsForScaledGroupLengths",1142},
-    {""}, {""}, {""}, {""}, {""},
-#line 646 "../tests/keys"
-    {"endMinuteTrend2",641},
+#line 1376 "keys"
+    {"oneMinuteMeanMaximumRVR2",1371},
+    {""},
+#line 396 "keys"
+    {"cloudsAbbreviation1Trend1",391},
     {""}, {""},
-#line 875 "../tests/keys"
-    {"laplacianScalingFactorUnset",870},
-    {""}, {""}, {""},
-#line 311 "../tests/keys"
-    {"beginYearTrend4",306},
-    {""}, {""}, {""},
-#line 458 "../tests/keys"
-    {"cloudsTitle2Trend4",453},
+#line 91 "keys"
+    {"Hour_E4",86},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 1264 "../tests/keys"
-    {"offsetFromReferenceOfFirstTime",1259},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1421 "keys"
+    {"padding_loc14_1",1416},
     {""},
-#line 1848 "../tests/keys"
-    {"totalAerosolBinsNumbers",1843},
+#line 413 "keys"
+    {"cloudsAbbreviation4Trend3",408},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""},
-#line 1276 "../tests/keys"
-    {"offsetValuesBy",1271},
-#line 650 "../tests/keys"
-    {"endMonthTrend2",645},
+#line 1532 "keys"
+    {"presentWeather1PresentTrend4",1527},
     {""}, {""},
-#line 1975 "../tests/keys"
-    {"widthOfWidths",1970},
-#line 475 "../tests/keys"
-    {"clusterMember5",470},
-    {""},
-#line 893 "../tests/keys"
-    {"latitudeOfReferencePointInDegrees",888},
-    {""}, {""}, {""},
-#line 1374 "../tests/keys"
-    {"padding_sec2_1",1369},
+#line 700 "keys"
+    {"endYearTrend3",695},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 426 "keys"
+    {"cloudsBase3Trend1",421},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 22 "../tests/keys"
-    {"BOX",17},
-#line 468 "../tests/keys"
-    {"cloudsTitle4Trend4",463},
-#line 1902 "../tests/keys"
-    {"typicalMonth",1897},
-    {""}, {""}, {""}, {""}, {""},
-#line 1367 "../tests/keys"
-    {"padding_local11_1",1362},
+#line 1435 "keys"
+    {"padding_loc21_1",1430},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 226 "keys"
+    {"TYPE_FF",221},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 1185 "../tests/keys"
-    {"numberOfHorizontalPoints",1180},
-    {""}, {""},
-#line 138 "../tests/keys"
-    {"Minute_E2",133},
-#line 63 "../tests/keys"
-    {"ExtremeValuesInMaximumRVR3",58},
-#line 1454 "../tests/keys"
-    {"probabilityType",1449},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1378 "../tests/keys"
-    {"padding_sec4_1",1373},
-#line 1883 "../tests/keys"
-    {"typeOfIntervalForFirstAndSecondSize",1878},
-#line 908 "../tests/keys"
-    {"latitudeWhereDxAndDyAreSpecifiedInDegrees",903},
-#line 1945 "../tests/keys"
-    {"variationOfVisibilityTrend1",1940},
-    {""}, {""},
-#line 33 "../tests/keys"
-    {"DayOfModelVersion",28},
-#line 706 "../tests/keys"
-    {"extremeValuesRVR2",701},
-    {""}, {""},
-#line 1352 "../tests/keys"
-    {"padding_loc2_1",1347},
-    {""}, {""}, {""}, {""}, {""},
-#line 1403 "../tests/keys"
-    {"pentagonalResolutionParameterM",1398},
-#line 907 "../tests/keys"
-    {"latitudeWhereDxAndDyAreSpecified",902},
+#line 1381 "keys"
+    {"oneMinuteMeanMinimumRVR3",1376},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""},
-#line 462 "../tests/keys"
-    {"cloudsTitle3Trend3",457},
+#line 1536 "keys"
+    {"presentWeather2PresentTrend3",1531},
+#line 24 "keys"
+    {"BUFR",19},
     {""},
-#line 452 "../tests/keys"
-    {"cloudsTitle1Trend3",447},
-    {""}, {""},
-#line 518 "../tests/keys"
-    {"coordinate1End",513},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 477 "../tests/keys"
-    {"clusterMember7",472},
-#line 881 "../tests/keys"
-    {"latitudeLastInDegrees",876},
+#line 424 "keys"
+    {"cloudsBase2Trend4",419},
+    {""}, {""}, {""}, {""}, {""},
+#line 1911 "keys"
+    {"swapScanningY",1906},
     {""}, {""}, {""},
-#line 193 "../tests/keys"
-    {"RVR4_1",188},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 369 "../tests/keys"
-    {"cloudsAbbreviation1",364},
-#line 1455 "../tests/keys"
-    {"probabilityTypeName",1450},
+#line 229 "keys"
+    {"TYPE_OR",224},
+    {""},
+#line 676 "keys"
+    {"endHourTrend1",671},
+#line 406 "keys"
+    {"cloudsAbbreviation3Trend1",401},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 903 "../tests/keys"
-    {"latitudeOfThePolePoint",898},
+#line 1475 "keys"
+    {"padding_sec4_1",1470},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""},
-#line 1884 "../tests/keys"
-    {"typeOfIntervalForFirstAndSecondWavelength",1879},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1410 "../tests/keys"
-    {"physicalFlag1",1405},
+#line 918 "keys"
+    {"isCavokTrend2",913},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""},
+#line 136 "keys"
+    {"Local_Number_Members_Possible_E4",131},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 428 "keys"
+    {"cloudsBase3Trend3",423},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 1638 "../tests/keys"
-    {"scanningMode5",1633},
+#line 1436 "keys"
+    {"padding_loc23_1",1431},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""},
-#line 1311 "../tests/keys"
-    {"padding_grid1_1",1306},
-    {""},
-#line 1350 "../tests/keys"
-    {"padding_loc29_2",1345},
-#line 705 "../tests/keys"
-    {"extremeValuesRVR1",700},
+#line 1454 "keys"
+    {"padding_loc37_2",1449},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1094 "../tests/keys"
-    {"missingValueManagementUsed",1089},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 351 "../tests/keys"
-    {"cfNameECMF",346},
-    {""}, {""},
-#line 1545 "../tests/keys"
-    {"runwayDepositCodeState3",1540},
-#line 649 "../tests/keys"
-    {"endMonthTrend1",644},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1210 "../tests/keys"
-    {"numberOfPointsAlongTheYAxis",1205},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 331 "keys"
+    {"beginYearTrend3",326},
+    {""},
+#line 1380 "keys"
+    {"oneMinuteMeanMinimumRVR2",1375},
     {""}, {""},
-#line 6 "../tests/keys"
-    {"************_ENSEMBLE_**************",1},
+#line 103 "keys"
+    {"LBC_Initial_Conditions",98},
+#line 1453 "keys"
+    {"padding_loc37_1",1448},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 473 "../tests/keys"
-    {"clusterMember3",468},
-#line 357 "../tests/keys"
-    {"changeIndicatorTrend3",352},
+#line 1535 "keys"
+    {"presentWeather2PresentTrend2",1530},
+    {""}, {""}, {""}, {""}, {""},
+#line 88 "keys"
+    {"HourOfModelVersion",83},
     {""}, {""},
-#line 524 "../tests/keys"
-    {"coordinate3Flag",519},
-    {""},
-#line 519 "../tests/keys"
-    {"coordinate1Flag",514},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1354 "../tests/keys"
-    {"padding_loc30_1",1349},
-    {""},
-#line 1318 "../tests/keys"
-    {"padding_loc10_1",1313},
-    {""}, {""}, {""},
-#line 225 "../tests/keys"
-    {"Total_Number_Members_Possible",220},
+#line 253 "keys"
+    {"X2InGridLengths",248},
+#line 398 "keys"
+    {"cloudsAbbreviation1Trend3",393},
+    {""}, {""}, {""}, {""}, {""},
+#line 401 "keys"
+    {"cloudsAbbreviation2Trend1",396},
     {""}, {""},
-#line 1640 "../tests/keys"
-    {"scanningMode7",1635},
-#line 1844 "../tests/keys"
-    {"timeUnitFlag",1839},
-#line 1192 "../tests/keys"
-    {"numberOfMissing",1187},
+#line 241 "keys"
+    {"Total_Number_Members_Used",236},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 1529 "keys"
+    {"presentWeather1PresentTrend1",1524},
+    {""},
+#line 131 "keys"
+    {"Local_Number_Members_Missing_E3",126},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 412 "keys"
+    {"cloudsAbbreviation4Trend2",407},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 419 "keys"
+    {"cloudsBase1Trend4",414},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1358 "../tests/keys"
-    {"padding_loc38_1",1353},
+#line 699 "keys"
+    {"endYearTrend2",694},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 1329 "../tests/keys"
-    {"padding_loc18_1",1324},
-    {""}, {""}, {""},
-#line 1044 "../tests/keys"
-    {"mask",1039},
+#line 239 "keys"
+    {"Total_Number_Members_Missing",234},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 134 "../tests/keys"
-    {"METAR",129},
+    {""},
+#line 427 "keys"
+    {"cloudsBase3Trend2",422},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 2042 "keys"
+    {"unusedBitsInBitmap",2037},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""},
+#line 1417 "keys"
+    {"padding_loc13_2",1412},
+#line 421 "keys"
+    {"cloudsBase2Trend1",416},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 1193 "../tests/keys"
-    {"numberOfMissingInStatisticalProcess",1188},
-    {""},
-#line 1060 "../tests/keys"
-    {"md5Headers",1055},
-#line 1556 "../tests/keys"
-    {"runwayDepthOfDepositState2",1551},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 905 "../tests/keys"
-    {"latitudeOfTheSouthernPoleOfProjection",900},
+#line 224 "keys"
+    {"TYPE_CF",219},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""},
-#line 441 "../tests/keys"
-    {"cloudsCode3Trend2",436},
-    {""},
-#line 431 "../tests/keys"
-    {"cloudsCode1Trend2",426},
-    {""}, {""},
-#line 1314 "../tests/keys"
-    {"padding_grid4_1",1309},
-#line 1254 "../tests/keys"
-    {"offsetBSection5",1249},
+#line 1416 "keys"
+    {"padding_loc13_1",1411},
+#line 678 "keys"
+    {"endHourTrend3",673},
+#line 408 "keys"
+    {"cloudsAbbreviation3Trend3",403},
     {""},
-#line 708 "../tests/keys"
-    {"extremeValuesRVR4",703},
-#line 227 "../tests/keys"
-    {"UseEcmfConventions",222},
+#line 95 "keys"
+    {"INBITS",90},
+    {""}, {""}, {""}, {""},
+#line 1241 "keys"
+    {"numberOfBytesOfFreeFormatData",1236},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 2115 "keys"
+    {"windUnitsTrend3",2110},
+#line 269 "keys"
+    {"YpInGridLengths",264},
+#line 1531 "keys"
+    {"presentWeather1PresentTrend3",1526},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 130 "keys"
+    {"Local_Number_Members_Missing_E2",125},
+#line 271 "keys"
+    {"ZLMULT",266},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 301 "../tests/keys"
-    {"beginMinuteTrend2",296},
-    {""}, {""}, {""},
-#line 1921 "../tests/keys"
-    {"unpack",1916},
-    {""},
-#line 118 "../tests/keys"
-    {"Local_Number_Members_Missing_E2",113},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 619 "../tests/keys"
-    {"earthMajorAxisInMetres",614},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 1948 "../tests/keys"
-    {"variationOfVisibilityTrend4",1943},
-    {""}, {""}, {""}, {""}, {""},
-#line 1560 "../tests/keys"
-    {"runwayDesignatorRVR2",1555},
-    {""}, {""}, {""},
-#line 1262 "../tests/keys"
-    {"offsetFreeFormData",1257},
-    {""},
-#line 1996 "../tests/keys"
-    {"windUnitsTrend4",1991},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1555 "../tests/keys"
-    {"runwayDepthOfDepositState1",1550},
-    {""}, {""}, {""},
-#line 645 "../tests/keys"
-    {"endMinuteTrend1",640},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 440 "../tests/keys"
-    {"cloudsCode3Trend1",435},
+#line 423 "keys"
+    {"cloudsBase2Trend3",418},
     {""},
-#line 430 "../tests/keys"
-    {"cloudsCode1Trend1",425},
-    {""}, {""}, {""},
-#line 457 "../tests/keys"
-    {"cloudsTitle2Trend3",452},
-    {""}, {""},
-#line 521 "../tests/keys"
-    {"coordinate2End",516},
-#line 384 "../tests/keys"
-    {"cloudsAbbreviation4",379},
+#line 2001 "keys"
+    {"typeOfLevelECMF",1996},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 1984 "../tests/keys"
-    {"windGustTrend3",1979},
-#line 1653 "../tests/keys"
-    {"secondOrderValuesDifferentWidths",1648},
+#line 1444 "keys"
+    {"padding_loc27_2",1439},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 300 "../tests/keys"
-    {"beginMinuteTrend1",295},
-    {""}, {""},
-#line 902 "../tests/keys"
-    {"latitudeOfThePoleOfStretching",897},
+#line 403 "keys"
+    {"cloudsAbbreviation2Trend3",398},
+    {""}, {""}, {""}, {""}, {""},
+#line 397 "keys"
+    {"cloudsAbbreviation1Trend2",392},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1443 "keys"
+    {"padding_loc27_1",1438},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1530 "keys"
+    {"presentWeather1PresentTrend2",1525},
+#line 416 "keys"
+    {"cloudsBase1Trend1",411},
+#line 240 "keys"
+    {"Total_Number_Members_Possible",235},
+#line 135 "keys"
+    {"Local_Number_Members_Possible_E3",130},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 319 "keys"
+    {"beginHourTrend3",314},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 1552 "../tests/keys"
-    {"runwayDepthOfDepositCodeState2",1547},
-    {""}, {""}, {""},
-#line 515 "../tests/keys"
-    {"coordAveraging2",510},
-    {""}, {""}, {""}, {""},
-#line 467 "../tests/keys"
-    {"cloudsTitle4Trend3",462},
+#line 1520 "keys"
+    {"precisionOfTheUnpackedSubset",1515},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""},
-#line 247 "../tests/keys"
-    {"YRInMetres",242},
+#line 422 "keys"
+    {"cloudsBase2Trend2",417},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 265 "keys"
+    {"YY",260},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 215 "../tests/keys"
-    {"TYPE_PF",210},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 652 "../tests/keys"
-    {"endMonthTrend4",647},
-    {""}, {""},
-#line 1322 "../tests/keys"
-    {"padding_loc13_4",1317},
+#line 225 "keys"
+    {"TYPE_FC",220},
     {""}, {""}, {""},
-#line 214 "../tests/keys"
-    {"TYPE_OR",209},
-    {""}, {""}, {""},
-#line 489 "../tests/keys"
-    {"codedNumberOfFirstOrderPackedValues",484},
+#line 677 "keys"
+    {"endHourTrend2",672},
+#line 407 "keys"
+    {"cloudsAbbreviation3Trend2",402},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 265 "../tests/keys"
-    {"alternativeRowScanning",260},
-    {""}, {""},
-#line 192 "../tests/keys"
-    {"RVR3_1",187},
-    {""}, {""}, {""}, {""},
-#line 213 "../tests/keys"
-    {"TYPE_OF",208},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1558 "../tests/keys"
-    {"runwayDepthOfDepositState4",1553},
-    {""},
-#line 522 "../tests/keys"
-    {"coordinate2Flag",517},
-#line 1551 "../tests/keys"
-    {"runwayDepthOfDepositCodeState1",1546},
-#line 1588 "../tests/keys"
-    {"runwaySideCodeState2",1583},
-#line 140 "../tests/keys"
-    {"Minute_E4",135},
-    {""}, {""}, {""}, {""}, {""},
-#line 1337 "../tests/keys"
-    {"padding_loc20_1",1332},
-#line 504 "../tests/keys"
-    {"conceptsMasterDir",499},
-    {""},
-#line 443 "../tests/keys"
-    {"cloudsCode3Trend4",438},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 418 "keys"
+    {"cloudsBase1Trend3",413},
     {""},
-#line 433 "../tests/keys"
-    {"cloudsCode1Trend4",428},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1559 "../tests/keys"
-    {"runwayDesignatorRVR1",1554},
-    {""}, {""}, {""}, {""}, {""},
-#line 1348 "../tests/keys"
-    {"padding_loc28_1",1343},
+#line 140 "keys"
+    {"Local_Number_Members_Used_E4",135},
     {""}, {""}, {""}, {""}, {""},
-#line 303 "../tests/keys"
-    {"beginMinuteTrend4",298},
+#line 134 "keys"
+    {"Local_Number_Members_Possible_E2",129},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 235 "keys"
+    {"Time_Range_One_E4",230},
+    {""}, {""}, {""},
+#line 1425 "keys"
+    {"padding_loc17_2",1420},
     {""}, {""}, {""}, {""}, {""},
-#line 120 "../tests/keys"
-    {"Local_Number_Members_Missing_E4",115},
-    {""},
-#line 1349 "../tests/keys"
-    {"padding_loc29_1",1344},
-    {""},
-#line 1746 "../tests/keys"
-    {"spacingOfBinsAlongRadials",1741},
-#line 323 "../tests/keys"
-    {"bufrdcExpandedDescriptors",318},
-    {""}, {""},
-#line 527 "../tests/keys"
-    {"coordinate4Flag",522},
-    {""}, {""}, {""}, {""},
-#line 288 "../tests/keys"
-    {"baseDateOfThisLeg",283},
+#line 71 "keys"
+    {"FMULTE",66},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 1896 "../tests/keys"
-    {"typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing",1891},
+#line 1457 "keys"
+    {"padding_loc4_2",1452},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 1227 "../tests/keys"
-    {"numberOfTensOfThousandsOfYearsOfOffset",1222},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 436 "../tests/keys"
-    {"cloudsCode2Trend2",431},
-    {""}, {""},
-#line 1316 "../tests/keys"
-    {"padding_grid5_1",1311},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1967 "../tests/keys"
-    {"weightAppliedToClimateMonth1",1962},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1654 "../tests/keys"
-    {"secondaryBitMap",1649},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 90 "keys"
+    {"Hour_E3",85},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 1335 "../tests/keys"
-    {"padding_loc192_1",1330},
-    {""},
-#line 446 "../tests/keys"
-    {"cloudsCode4Trend2",441},
-#line 1382 "../tests/keys"
-    {"paramIdECMF",1377},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""},
-#line 662 "../tests/keys"
-    {"endYearTrend2",657},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1554 "../tests/keys"
-    {"runwayDepthOfDepositCodeState4",1549},
-    {""},
-#line 51 "../tests/keys"
-    {"Ensemble_Combinat_Number_0_none_E2",46},
-    {""}, {""}, {""},
-#line 122 "../tests/keys"
-    {"Local_Number_Members_Possible_E2",117},
+#line 402 "keys"
+    {"cloudsAbbreviation2Trend2",397},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 800 "../tests/keys"
-    {"hoursAfterReferenceTimeOfDataCutoff",795},
+#line 417 "keys"
+    {"cloudsBase1Trend2",412},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 435 "../tests/keys"
-    {"cloudsCode2Trend1",430},
-    {""}, {""}, {""}, {""}, {""},
-#line 1146 "../tests/keys"
-    {"numberOfBitsContainingEachPackedValue",1141},
-    {""},
-#line 1962 "../tests/keys"
-    {"visibilityTrend1",1957},
-    {""},
-#line 1313 "../tests/keys"
-    {"padding_grid3_1",1308},
-    {""}, {""},
-#line 707 "../tests/keys"
-    {"extremeValuesRVR3",702},
-#line 1587 "../tests/keys"
-    {"runwaySideCodeState1",1582},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""},
-#line 294 "../tests/keys"
-    {"beginDayTrend3",289},
-    {""}, {""}, {""}, {""}, {""},
-#line 935 "../tests/keys"
-    {"listMembersUsed2",930},
-#line 236 "../tests/keys"
-    {"X2InGridLengths",231},
-#line 1332 "../tests/keys"
-    {"padding_loc191_1",1327},
-    {""},
-#line 445 "../tests/keys"
-    {"cloudsCode4Trend1",440},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""},
-#line 932 "../tests/keys"
-    {"listMembersMissing3",927},
-    {""}, {""}, {""}, {""}, {""},
-#line 1906 "../tests/keys"
-    {"typicalYearOfCentury",1901},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 995 "../tests/keys"
-    {"longitudeOfTangencyPoint",990},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 653 "../tests/keys"
-    {"endOfHeadersMaker",648},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 1396 "../tests/keys"
-    {"pastTendencyRVR1",1391},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 80 "keys"
+    {"GRIBEditionNumber",75},
     {""}, {""}, {""}, {""},
-#line 1323 "../tests/keys"
-    {"padding_loc13_5",1318},
+#line 153 "keys"
+    {"Missing_Model_LBC",148},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1542 "keys"
+    {"presentWeather3PresentTrend4",1537},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""},
-#line 1713 "../tests/keys"
-    {"setBitsPerValue",1708},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1562 "../tests/keys"
-    {"runwayDesignatorRVR4",1557},
+#line 1164 "keys"
+    {"meanValueRVR4",1159},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 234 "../tests/keys"
-    {"X1InGridLengths",229},
+#line 10 "keys"
+    {"7777",5},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""},
-#line 514 "../tests/keys"
-    {"coordAveraging1",509},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 438 "../tests/keys"
-    {"cloudsCode2Trend4",433},
-    {""}, {""}, {""}, {""},
-#line 661 "../tests/keys"
-    {"endYearTrend1",656},
+#line 434 "keys"
+    {"cloudsBase4Trend4",429},
+    {""}, {""}, {""},
+#line 89 "keys"
+    {"Hour_E2",84},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 1150 "../tests/keys"
-    {"numberOfBytesInLocalDefinition",1145},
-#line 211 "../tests/keys"
-    {"TYPE_FF",206},
+#line 139 "keys"
+    {"Local_Number_Members_Used_E3",134},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 1952 "../tests/keys"
-    {"versionNumberOfGribLocalTables",1947},
+#line 234 "keys"
+    {"Time_Range_One_E3",229},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 389 "../tests/keys"
-    {"cloudsBase1",384},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 448 "../tests/keys"
-    {"cloudsCode4Trend4",443},
-    {""}, {""}, {""}, {""}, {""},
-#line 66 "../tests/keys"
-    {"ExtremeValuesRVR2",61},
-    {""}, {""}, {""}, {""},
-#line 1412 "../tests/keys"
-    {"physicalMeaningOfVerticalCoordinate",1407},
-#line 1897 "../tests/keys"
-    {"typeOfWavelengthInterval",1892},
+#line 223 "keys"
+    {"TYPE_AN",218},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 53 "../tests/keys"
-    {"Ensemble_Combinat_Number_0_none_E4",48},
-    {""}, {""}, {""},
-#line 124 "../tests/keys"
-    {"Local_Number_Members_Possible_E4",119},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1963 "../tests/keys"
-    {"visibilityTrend2",1958},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1557 "../tests/keys"
-    {"runwayDepthOfDepositState3",1552},
-    {""},
-#line 50 "../tests/keys"
-    {"ECMWF_s",45},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 156 "../tests/keys"
-    {"NEAREST",151},
-    {""},
-#line 442 "../tests/keys"
-    {"cloudsCode3Trend3",437},
-    {""},
-#line 432 "../tests/keys"
-    {"cloudsCode1Trend3",427},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 1333 "../tests/keys"
-    {"padding_loc191_2",1328},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""},
+#line 105 "keys"
+    {"LSTCUM",100},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 302 "../tests/keys"
-    {"beginMinuteTrend3",297},
-    {""},
-#line 833 "../tests/keys"
-    {"intervalBetweenTimes",828},
-    {""}, {""}, {""},
-#line 119 "../tests/keys"
-    {"Local_Number_Members_Missing_E3",114},
-#line 141 "../tests/keys"
-    {"Missing_Model_LBC",136},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 647 "../tests/keys"
-    {"endMinuteTrend3",642},
+#line 1539 "keys"
+    {"presentWeather3PresentTrend1",1534},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 49 "../tests/keys"
-    {"ECMWF",44},
-#line 65 "../tests/keys"
-    {"ExtremeValuesRVR1",60},
+    {""}, {""},
+#line 138 "keys"
+    {"Local_Number_Members_Used_E2",133},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 1590 "../tests/keys"
-    {"runwaySideCodeState4",1585},
+#line 233 "keys"
+    {"Time_Range_One_E2",228},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 431 "keys"
+    {"cloudsBase4Trend1",426},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 1397 "../tests/keys"
-    {"pastTendencyRVR2",1392},
-#line 209 "../tests/keys"
-    {"TYPE_CF",204},
-    {""}, {""}, {""}, {""},
-#line 937 "../tests/keys"
-    {"listMembersUsed4",932},
-    {""}, {""}, {""}, {""}, {""},
-#line 217 "../tests/keys"
-    {"Threshold_Or_Distribution_Units",212},
+#line 55 "keys"
+    {"Ensemble_Combinat_Number_0_none_E4",50},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""},
+#line 960 "keys"
+    {"lastMonthUsedToBuildClimateMonth1",955},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""},
-#line 494 "../tests/keys"
-    {"commonBlock",489},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 309 "../tests/keys"
-    {"beginYearTrend2",304},
     {""},
-#line 88 "../tests/keys"
-    {"ITERATOR",83},
+#line 1541 "keys"
+    {"presentWeather3PresentTrend3",1536},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 836 "../tests/keys"
-    {"isCavok",831},
-    {""}, {""}, {""}, {""}, {""},
-#line 936 "../tests/keys"
-    {"listMembersUsed3",931},
-#line 1553 "../tests/keys"
-    {"runwayDepthOfDepositCodeState3",1548},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 394 "../tests/keys"
-    {"cloudsBase2",389},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1436 "../tests/keys"
-    {"presentWeather2Present",1431},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1246 "../tests/keys"
-    {"octetAtWichPackedDataBegins",1241},
-#line 1376 "../tests/keys"
-    {"padding_sec2_3",1371},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 68 "../tests/keys"
-    {"ExtremeValuesRVR4",63},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 664 "../tests/keys"
-    {"endYearTrend4",659},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1325 "../tests/keys"
-    {"padding_loc14_2",1320},
-    {""}, {""}, {""}, {""},
-#line 1351 "../tests/keys"
-    {"padding_loc29_3",1346},
-    {""}, {""}, {""},
-#line 126 "../tests/keys"
-    {"Local_Number_Members_Used_E2",121},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 433 "keys"
+    {"cloudsBase4Trend3",428},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""},
-#line 252 "../tests/keys"
-    {"YpInGridLengths",247},
-#line 1947 "../tests/keys"
-    {"variationOfVisibilityTrend3",1942},
+#line 1418 "keys"
+    {"padding_loc13_3",1413},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 210 "../tests/keys"
-    {"TYPE_FC",205},
+#line 1161 "keys"
+    {"meanValueRVR1",1156},
+    {""},
+#line 1239 "keys"
+    {"numberOfBitsUsedForTheScaledGroupLengths",1234},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""},
+#line 1540 "keys"
+    {"presentWeather3PresentTrend2",1535},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 432 "keys"
+    {"cloudsBase4Trend2",427},
     {""}, {""}, {""}, {""},
-#line 1965 "../tests/keys"
-    {"visibilityTrend4",1960},
+#line 122 "keys"
+    {"Less_Than_Or_To_Overall_Distribution",117},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 961 "keys"
+    {"lastMonthUsedToBuildClimateMonth2",956},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 290 "../tests/keys"
-    {"baseTimeOfThisLeg",285},
-    {""},
-#line 379 "../tests/keys"
-    {"cloudsAbbreviation3",374},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 260 "keys"
+    {"Y1InGridLengths",255},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""},
-#line 437 "../tests/keys"
-    {"cloudsCode2Trend3",432},
-    {""}, {""}, {""}, {""}, {""},
-#line 1964 "../tests/keys"
-    {"visibilityTrend3",1959},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 1334 "../tests/keys"
-    {"padding_loc191_3",1329},
-    {""}, {""}, {""},
-#line 447 "../tests/keys"
-    {"cloudsCode4Trend3",442},
-    {""},
-#line 1399 "../tests/keys"
-    {"pastTendencyRVR4",1394},
-#line 651 "../tests/keys"
-    {"endMonthTrend3",646},
+#line 54 "keys"
+    {"Ensemble_Combinat_Number_0_none_E3",49},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 52 "../tests/keys"
-    {"Ensemble_Combinat_Number_0_none_E3",47},
-    {""}, {""}, {""},
-#line 123 "../tests/keys"
-    {"Local_Number_Members_Possible_E3",118},
-    {""},
-#line 1486 "../tests/keys"
-    {"rangeBinSpacing",1481},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 337 "../tests/keys"
-    {"ceilingAndVisibilityOKTrend2",332},
-#line 86 "../tests/keys"
-    {"ICEFieldsUsed",81},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 139 "../tests/keys"
-    {"Minute_E3",134},
+#line 1163 "keys"
+    {"meanValueRVR3",1158},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 1398 "../tests/keys"
-    {"pastTendencyRVR3",1393},
+#line 227 "keys"
+    {"TYPE_FX",222},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 509 "../tests/keys"
-    {"constantAntennaElevationAngle",504},
-    {""}, {""}, {""}, {""}, {""},
-#line 299 "../tests/keys"
-    {"beginHourTrend4",294},
-    {""}, {""},
-#line 404 "../tests/keys"
-    {"cloudsBase4",399},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 421 "../tests/keys"
-    {"cloudsBaseCoded3Trend2",416},
-    {""},
-#line 411 "../tests/keys"
-    {"cloudsBaseCoded1Trend2",406},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""},
-#line 128 "../tests/keys"
-    {"Local_Number_Members_Used_E4",123},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1431 "../tests/keys"
-    {"presentWeather1Present",1426},
-    {""}, {""}, {""},
-#line 336 "../tests/keys"
-    {"ceilingAndVisibilityOKTrend1",331},
-    {""}, {""},
-#line 904 "../tests/keys"
-    {"latitudeOfThePolePointInDegrees",899},
-    {""}, {""},
-#line 399 "../tests/keys"
-    {"cloudsBase3",394},
-    {""},
-#line 516 "../tests/keys"
-    {"coordAveraging3",511},
-    {""}, {""}, {""},
-#line 1994 "../tests/keys"
-    {"windUnitsTrend2",1989},
-    {""},
-#line 258 "../tests/keys"
-    {"accuracyMultipliedByFactor",253},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1138 "../tests/keys"
-    {"numberInHorizontalCoordinates",1133},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 308 "../tests/keys"
-    {"beginYearTrend1",303},
-    {""}, {""}, {""},
-#line 1441 "../tests/keys"
-    {"presentWeather3Present",1436},
-    {""}, {""}, {""},
-#line 409 "../tests/keys"
-    {"cloudsBaseCoded1",404},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 420 "../tests/keys"
-    {"cloudsBaseCoded3Trend1",415},
-    {""},
-#line 410 "../tests/keys"
-    {"cloudsBaseCoded1Trend1",405},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 53 "keys"
+    {"Ensemble_Combinat_Number_0_none_E2",48},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""},
-#line 1357 "../tests/keys"
-    {"padding_loc37_2",1352},
-    {""},
-#line 1328 "../tests/keys"
-    {"padding_loc17_2",1323},
+#line 232 "keys"
+    {"Threshold_Or_Distribution_Units",227},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 67 "../tests/keys"
-    {"ExtremeValuesRVR3",62},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1327 "../tests/keys"
-    {"padding_loc16_1",1322},
-    {""},
-#line 1324 "../tests/keys"
-    {"padding_loc14_1",1319},
-    {""}, {""}, {""}, {""},
-#line 1320 "../tests/keys"
-    {"padding_loc13_2",1315},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 339 "../tests/keys"
-    {"ceilingAndVisibilityOKTrend4",334},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 212 "../tests/keys"
-    {"TYPE_FX",207},
+    {""}, {""}, {""},
+#line 262 "keys"
+    {"Y2InGridLengths",257},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 423 "../tests/keys"
-    {"cloudsBaseCoded3Trend4",418},
-    {""},
-#line 413 "../tests/keys"
-    {"cloudsBaseCoded1Trend4",408},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 93 "../tests/keys"
-    {"LBC_Initial_Conditions",88},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1561 "../tests/keys"
-    {"runwayDesignatorRVR3",1556},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 414 "../tests/keys"
-    {"cloudsBaseCoded2",409},
-    {""}, {""}, {""},
-#line 249 "../tests/keys"
-    {"YearOfModelVersion",244},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 416 "../tests/keys"
-    {"cloudsBaseCoded2Trend2",411},
-#line 1281 "../tests/keys"
-    {"oneMinuteMeanMaximumRVR2",1276},
-    {""}, {""}, {""}, {""}, {""},
-#line 1802 "../tests/keys"
-    {"swapScanningY",1797},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 332 "../tests/keys"
-    {"ccsdsBlockSize",327},
-    {""}, {""}, {""}, {""},
-#line 1338 "../tests/keys"
-    {"padding_loc21_1",1333},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 9 "keys"
+    {"*********_EXTRA_DATA_***************",4},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 1162 "keys"
+    {"meanValueRVR2",1157},
     {""}, {""}, {""}, {""}, {""},
-#line 304 "../tests/keys"
-    {"beginMonthTrend1",299},
+#line 1644 "keys"
+    {"runwayBrakingActionState4",1639},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 1253 "../tests/keys"
-    {"offsetBBitmap",1248},
-    {""},
-#line 426 "../tests/keys"
-    {"cloudsBaseCoded4Trend2",421},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 189 "../tests/keys"
-    {"RENAME",184},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 838 "../tests/keys"
-    {"isCavokTrend2",833},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 415 "../tests/keys"
-    {"cloudsBaseCoded2Trend1",410},
-#line 1280 "../tests/keys"
-    {"oneMinuteMeanMaximumRVR1",1275},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 127 "../tests/keys"
-    {"Local_Number_Members_Used_E3",122},
-    {""}, {""}, {""},
-#line 376 "../tests/keys"
-    {"cloudsAbbreviation2Trend2",371},
-    {""},
-#line 1347 "../tests/keys"
-    {"padding_loc27_2",1342},
-    {""}, {""}, {""}, {""},
-#line 1589 "../tests/keys"
-    {"runwaySideCodeState3",1584},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 425 "../tests/keys"
-    {"cloudsBaseCoded4Trend1",420},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1993 "../tests/keys"
-    {"windUnitsTrend1",1988},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""},
-#line 1345 "../tests/keys"
-    {"padding_loc26_1",1340},
-    {""},
-#line 1326 "../tests/keys"
-    {"padding_loc15_1",1321},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 371 "../tests/keys"
-    {"cloudsAbbreviation1Trend2",366},
-    {""},
-#line 1356 "../tests/keys"
-    {"padding_loc37_1",1351},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 76 "../tests/keys"
-    {"GRIBEditionNumber",71},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 644 "../tests/keys"
-    {"endMark",639},
-    {""},
-#line 418 "../tests/keys"
-    {"cloudsBaseCoded2Trend4",413},
-#line 1283 "../tests/keys"
-    {"oneMinuteMeanMaximumRVR4",1278},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 305 "../tests/keys"
-    {"beginMonthTrend2",300},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 837 "../tests/keys"
-    {"isCavokTrend1",832},
-    {""},
-#line 663 "../tests/keys"
-    {"endYearTrend3",658},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 1319 "../tests/keys"
-    {"padding_loc13_1",1314},
-    {""},
-#line 424 "../tests/keys"
-    {"cloudsBaseCoded4",419},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1285 "../tests/keys"
-    {"oneMinuteMeanMinimumRVR2",1280},
-#line 428 "../tests/keys"
-    {"cloudsBaseCoded4Trend4",423},
-    {""}, {""},
-#line 338 "../tests/keys"
-    {"ceilingAndVisibilityOKTrend3",333},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 375 "../tests/keys"
-    {"cloudsAbbreviation2Trend1",370},
-    {""}, {""}, {""}, {""},
-#line 248 "../tests/keys"
-    {"YY",243},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 419 "../tests/keys"
-    {"cloudsBaseCoded3",414},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1256 "../tests/keys"
-    {"offsetBeforeBitmap",1251},
-#line 422 "../tests/keys"
-    {"cloudsBaseCoded3Trend3",417},
-    {""},
-#line 412 "../tests/keys"
-    {"cloudsBaseCoded1Trend3",407},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 386 "../tests/keys"
-    {"cloudsAbbreviation4Trend2",381},
-    {""}, {""}, {""},
-#line 641 "../tests/keys"
-    {"endHourTrend2",636},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 310 "../tests/keys"
-    {"beginYearTrend3",305},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 1284 "../tests/keys"
-    {"oneMinuteMeanMinimumRVR1",1279},
-    {""}, {""}, {""}, {""},
-#line 266 "../tests/keys"
-    {"altitudeOfTheCameraFromTheEarthSCenterMeasuredInUnitsOfTheEarth",261},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""},
-#line 370 "../tests/keys"
-    {"cloudsAbbreviation1Trend1",365},
+#line 159 "keys"
+    {"Model_LBC_Member_Identifier",154},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 83 "../tests/keys"
-    {"Hour_E2",78},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -5487,149 +6291,67 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""},
-#line 1926 "../tests/keys"
-    {"unusedBitsInBitmap",1921},
-    {""}, {""},
-#line 147 "../tests/keys"
-    {"Model_LBC_Member_Identifier",142},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""},
-#line 1287 "../tests/keys"
-    {"oneMinuteMeanMinimumRVR4",1282},
-    {""}, {""},
-#line 1346 "../tests/keys"
-    {"padding_loc27_1",1341},
-    {""}, {""}, {""}, {""}, {""},
-#line 307 "../tests/keys"
-    {"beginMonthTrend4",302},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 385 "../tests/keys"
-    {"cloudsAbbreviation4Trend1",380},
-    {""}, {""}, {""},
-#line 640 "../tests/keys"
-    {"endHourTrend1",635},
-#line 840 "../tests/keys"
-    {"isCavokTrend4",835},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 245 "../tests/keys"
-    {"Y2InGridLengths",240},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 25 "../tests/keys"
-    {"BUFRstr",20},
-#line 1339 "../tests/keys"
-    {"padding_loc23_1",1334},
-    {""}, {""}, {""},
-#line 306 "../tests/keys"
-    {"beginMonthTrend3",301},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 378 "../tests/keys"
-    {"cloudsAbbreviation2Trend4",373},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 218 "../tests/keys"
-    {"Time_Range_One_E2",213},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""},
-#line 417 "../tests/keys"
-    {"cloudsBaseCoded2Trend3",412},
-#line 1282 "../tests/keys"
-    {"oneMinuteMeanMaximumRVR3",1277},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 243 "../tests/keys"
-    {"Y1InGridLengths",238},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 373 "../tests/keys"
-    {"cloudsAbbreviation1Trend4",368},
-    {""}, {""}, {""},
-#line 427 "../tests/keys"
-    {"cloudsBaseCoded4Trend3",422},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""},
+#line 72 "keys"
+    {"FMULTM",67},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 1995 "../tests/keys"
-    {"windUnitsTrend3",1990},
+    {""}, {""}, {""}, {""},
+#line 1641 "keys"
+    {"runwayBrakingActionState1",1636},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""},
-#line 297 "../tests/keys"
-    {"beginHourTrend2",292},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 381 "../tests/keys"
-    {"cloudsAbbreviation3Trend2",376},
-    {""}, {""}, {""},
-#line 1231 "../tests/keys"
-    {"numberOfUnusedBitsAtEndOfSection3",1226},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 1370 "keys"
+    {"offsetToEndOf4DvarWindow",1365},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 19 "keys"
+    {"At_least__Or_Distribut_Proportion_Of",14},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 1340 "../tests/keys"
-    {"padding_loc244_1",1335},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 194 "../tests/keys"
-    {"SOH",189},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 388 "../tests/keys"
-    {"cloudsAbbreviation4Trend4",383},
-    {""}, {""}, {""},
-#line 643 "../tests/keys"
-    {"endHourTrend4",638},
+#line 238 "keys"
+    {"Time_Range_Two_E4",233},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 76 "keys"
+    {"GRIB",71},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 220 "../tests/keys"
-    {"Time_Range_One_E4",215},
-    {""}, {""}, {""},
-#line 1321 "../tests/keys"
-    {"padding_loc13_3",1316},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 152 "../tests/keys"
-    {"NB",147},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 85 "../tests/keys"
-    {"Hour_E4",80},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1194 "../tests/keys"
-    {"numberOfMissingValues",1189},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 1286 "../tests/keys"
-    {"oneMinuteMeanMinimumRVR3",1281},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 1484 "../tests/keys"
-    {"radiusOfTheEarth",1479},
-    {""}, {""}, {""},
-#line 380 "../tests/keys"
-    {"cloudsAbbreviation3Trend1",375},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 954 "keys"
+    {"lBB",949},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -5637,250 +6359,116 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 1341 "../tests/keys"
-    {"padding_loc244_2",1336},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 24 "../tests/keys"
-    {"BUFR",19},
-    {""}, {""}, {""},
-#line 318 "../tests/keys"
-    {"bitsPerValueAndRepack",313},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 208 "../tests/keys"
-    {"TYPE_AN",203},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""},
+#line 1643 "keys"
+    {"runwayBrakingActionState3",1638},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 877 "../tests/keys"
-    {"lastMonthUsedToBuildClimateMonth2",872},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1343 "../tests/keys"
-    {"padding_loc245_1",1338},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1151 "../tests/keys"
-    {"numberOfBytesOfFreeFormatData",1146},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 296 "../tests/keys"
-    {"beginHourTrend1",291},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""},
-#line 876 "../tests/keys"
-    {"lastMonthUsedToBuildClimateMonth1",871},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 401 "../tests/keys"
-    {"cloudsBase3Trend2",396},
-    {""},
-#line 391 "../tests/keys"
-    {"cloudsBase1Trend2",386},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 23 "../tests/keys"
-    {"BUDG",18},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""},
-#line 383 "../tests/keys"
-    {"cloudsAbbreviation3Trend4",378},
+#line 23 "keys"
+    {"BUDG",18},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 219 "../tests/keys"
-    {"Time_Range_One_E3",214},
-    {""}, {""}, {""}, {""}, {""},
-#line 1498 "../tests/keys"
-    {"recentWeatherTry",1493},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 237 "keys"
+    {"Time_Range_Two_E3",232},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 400 "../tests/keys"
-    {"cloudsBase3Trend1",395},
-    {""},
-#line 390 "../tests/keys"
-    {"cloudsBase1Trend1",385},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1344 "../tests/keys"
-    {"padding_loc245_2",1339},
-    {""}, {""}, {""}, {""}, {""},
-#line 1438 "../tests/keys"
-    {"presentWeather2PresentTrend2",1433},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1342 "../tests/keys"
-    {"padding_loc244_3",1337},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 839 "../tests/keys"
-    {"isCavokTrend3",834},
-    {""}, {""}, {""}, {""},
-#line 1423 "../tests/keys"
-    {"precisionOfTheUnpackedSubset",1418},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 82 "../tests/keys"
-    {"HourOfModelVersion",77},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 377 "../tests/keys"
-    {"cloudsAbbreviation2Trend3",372},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1437 "../tests/keys"
-    {"presentWeather2PresentTrend1",1432},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 1642 "keys"
+    {"runwayBrakingActionState2",1637},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 403 "../tests/keys"
-    {"cloudsBase3Trend4",398},
-#line 1149 "../tests/keys"
-    {"numberOfBitsUsedForTheScaledGroupLengths",1144},
-#line 393 "../tests/keys"
-    {"cloudsBase1Trend4",388},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""},
+#line 236 "keys"
+    {"Time_Range_Two_E2",231},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 372 "../tests/keys"
-    {"cloudsAbbreviation1Trend3",367},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""},
-#line 396 "../tests/keys"
-    {"cloudsBase2Trend2",391},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 156 "keys"
+    {"Missing_Model_LBC_E4",151},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 406 "../tests/keys"
-    {"cloudsBase4Trend2",401},
-#line 1440 "../tests/keys"
-    {"presentWeather2PresentTrend4",1435},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 1075 "../tests/keys"
-    {"meanValueRVR2",1070},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""},
-#line 395 "../tests/keys"
-    {"cloudsBase2Trend1",390},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 10 "../tests/keys"
-    {"7777",5},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1433 "../tests/keys"
-    {"presentWeather1PresentTrend2",1428},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 387 "../tests/keys"
-    {"cloudsAbbreviation4Trend3",382},
     {""}, {""}, {""},
-#line 642 "../tests/keys"
-    {"endHourTrend3",637},
-    {""},
-#line 158 "../tests/keys"
-    {"NH",153},
+#line 1238 "keys"
+    {"numberOfBitsUsedForTheGroupWidths",1233},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 405 "../tests/keys"
-    {"cloudsBase4Trend1",400},
-    {""}, {""}, {""}, {""}, {""},
-#line 142 "../tests/keys"
-    {"Missing_Model_LBC_E2",137},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1443 "../tests/keys"
-    {"presentWeather3PresentTrend2",1438},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 84 "../tests/keys"
-    {"Hour_E3",79},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1432 "../tests/keys"
-    {"presentWeather1PresentTrend1",1427},
-    {""}, {""}, {""}, {""}, {""},
-#line 9 "../tests/keys"
-    {"*********_EXTRA_DATA_***************",4},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 298 "../tests/keys"
-    {"beginHourTrend3",293},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 398 "../tests/keys"
-    {"cloudsBase2Trend4",393},
-    {""}, {""}, {""}, {""}, {""},
-#line 1074 "../tests/keys"
-    {"meanValueRVR1",1069},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 1442 "../tests/keys"
-    {"presentWeather3PresentTrend1",1437},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 408 "../tests/keys"
-    {"cloudsBase4Trend4",403},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""},
-#line 402 "../tests/keys"
-    {"cloudsBase3Trend3",397},
-    {""},
-#line 392 "../tests/keys"
-    {"cloudsBase1Trend3",387},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1435 "../tests/keys"
-    {"presentWeather1PresentTrend4",1430},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 1445 "../tests/keys"
-    {"presentWeather3PresentTrend4",1440},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""},
-#line 1439 "../tests/keys"
-    {"presentWeather2PresentTrend3",1434},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -5889,51 +6477,22 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 754 "../tests/keys"
-    {"genVertHeightCoords",749},
-    {""}, {""}, {""}, {""}, {""},
-#line 382 "../tests/keys"
-    {"cloudsAbbreviation3Trend3",377},
-    {""},
-#line 1077 "../tests/keys"
-    {"meanValueRVR4",1072},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 72 "../tests/keys"
-    {"GRIB",67},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1148 "../tests/keys"
-    {"numberOfBitsUsedForTheGroupWidths",1143},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""},
-#line 1886 "../tests/keys"
-    {"typeOfLevelECMF",1881},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 144 "../tests/keys"
-    {"Missing_Model_LBC_E4",139},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 397 "../tests/keys"
-    {"cloudsBase2Trend3",392},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 407 "../tests/keys"
-    {"cloudsBase4Trend3",402},
-    {""}, {""}, {""},
-#line 221 "../tests/keys"
-    {"Time_Range_Two_E2",216},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -5942,17 +6501,11 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 1434 "../tests/keys"
-    {"presentWeather1PresentTrend3",1429},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 1444 "../tests/keys"
-    {"presentWeather3PresentTrend3",1439},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -5968,9 +6521,11 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 223 "../tests/keys"
-    {"Time_Range_Two_E4",218},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 155 "keys"
+    {"Missing_Model_LBC_E3",150},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -5985,11 +6540,17 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""},
+#line 243 "keys"
+    {"Used_Model_LBC",238},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 77 "keys"
+    {"GRIBEXSection1Problem",72},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6002,9 +6563,9 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 73 "../tests/keys"
-    {"GRIBEXSection1Problem",68},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 154 "keys"
+    {"Missing_Model_LBC_E2",149},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6023,25 +6584,20 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""},
-#line 222 "../tests/keys"
-    {"Time_Range_Two_E3",217},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1076 "../tests/keys"
-    {"meanValueRVR3",1071},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 96 "keys"
+    {"INGRIB",91},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""},
-#line 143 "../tests/keys"
-    {"Missing_Model_LBC_E3",138},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6061,9 +6617,6 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 870 "../tests/keys"
-    {"lBB",865},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6072,9 +6625,6 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 16 "../tests/keys"
-    {"AEC_PAD_RSI_OPTION_MASK",11},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6102,9 +6652,6 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""},
-#line 1275 "../tests/keys"
-    {"offsetToEndOf4DvarWindow",1270},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6119,6 +6666,9 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 16 "keys"
+    {"AEC_PAD_RSI_OPTION_MASK",11},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6126,9 +6676,6 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""},
-#line 228 "../tests/keys"
-    {"Used_Model_LBC",223},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6150,6 +6697,9 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 79 "keys"
+    {"GRIBEX_boustrophedonic",74},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6174,9 +6724,6 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 1540 "../tests/keys"
-    {"runwayBrakingActionState2",1535},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6199,9 +6746,6 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1539 "../tests/keys"
-    {"runwayBrakingActionState1",1534},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6215,9 +6759,6 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 75 "../tests/keys"
-    {"GRIBEX_boustrophedonic",70},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6226,9 +6767,6 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""},
-#line 160 "../tests/keys"
-    {"NINT_RITZ_EXP",155},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6241,9 +6779,6 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1542 "../tests/keys"
-    {"runwayBrakingActionState4",1537},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6267,6 +6802,9 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 21 "keys"
+    {"BBB",16},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6274,6 +6812,8 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 173 "keys"
+    {"NINT_RITZ_EXP",168},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6320,6 +6860,9 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 78 "keys"
+    {"GRIBEXShBugPresent",73},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6332,9 +6875,6 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""},
-#line 159 "../tests/keys"
-    {"NINT_LOG10_RITZ",154},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6345,9 +6885,6 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 1541 "../tests/keys"
-    {"runwayBrakingActionState3",1536},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6413,9 +6950,6 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 74 "../tests/keys"
-    {"GRIBEXShBugPresent",69},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6454,11 +6988,20 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 172 "keys"
+    {"NINT_LOG10_RITZ",167},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 246 "keys"
+    {"Used_Model_LBC_E4",241},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 17 "keys"
+    {"AEC_RESTRICTED_OPTION_MASK",12},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6483,18 +7026,12 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 78 "../tests/keys"
-    {"GRIB_LATITUDE",73},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""},
-#line 21 "../tests/keys"
-    {"BBB",16},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6506,6 +7043,9 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""},
+#line 245 "keys"
+    {"Used_Model_LBC_E3",240},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6523,6 +7063,8 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 244 "keys"
+    {"Used_Model_LBC_E2",239},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6571,9 +7113,6 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 79 "../tests/keys"
-    {"GRIB_LONGITUDE",74},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6581,6 +7120,10 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 12 "keys"
+    {"AEC_DATA_3BYTE_OPTION_MASK",7},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6613,9 +7156,6 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 17 "../tests/keys"
-    {"AEC_RESTRICTED_OPTION_MASK",12},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6668,9 +7208,6 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 229 "../tests/keys"
-    {"Used_Model_LBC_E2",224},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6693,21 +7230,12 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""},
-#line 13 "../tests/keys"
-    {"AEC_DATA_MSB_OPTION_MASK",8},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 231 "../tests/keys"
-    {"Used_Model_LBC_E4",226},
-    {""}, {""}, {""},
-#line 12 "../tests/keys"
-    {"AEC_DATA_3BYTE_OPTION_MASK",7},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6718,6 +7246,9 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""},
+#line 81 "keys"
+    {"GRIB_DEPTH",76},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6757,15 +7288,12 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""},
-#line 230 "../tests/keys"
-    {"Used_Model_LBC_E3",225},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 77 "../tests/keys"
-    {"GRIB_DEPTH",72},
+#line 83 "keys"
+    {"GRIB_LONGITUDE",78},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6784,6 +7312,9 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""},
+#line 82 "keys"
+    {"GRIB_LATITUDE",77},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -6927,6 +7458,9 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""},
+#line 13 "keys"
+    {"AEC_DATA_MSB_OPTION_MASK",8},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -7000,9 +7534,6 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 14 "../tests/keys"
-    {"AEC_DATA_PREPROCESS_OPTION_MASK",9},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -7036,6 +7567,9 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 15 "keys"
+    {"AEC_DATA_SIGNED_OPTION_MASK",10},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -7158,14 +7692,22 @@ static struct grib_keys_hash wordlist[] =
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
     {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-    {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 15 "../tests/keys"
-    {"AEC_DATA_SIGNED_OPTION_MASK",10}
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+    {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 14 "keys"
+    {"AEC_DATA_PREPROCESS_OPTION_MASK",9}
   };
 
 #ifdef __GNUC__
-
+__inline
 #if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
+__attribute__ ((__gnu_inline__))
 #endif
 #endif
 struct grib_keys_hash *
@@ -7558,6 +8100,7 @@ int grib_hash_keys_insert(grib_itrie* t,const char* key)
   int* count;
 
   GRIB_MUTEX_INIT_ONCE(&once,&init)
+
   GRIB_MUTEX_LOCK(&mutex)
 
   count=t->count;
diff --git a/src/grib_index.c b/src/grib_index.c
index 0b4b457..64b2c26 100644
--- a/src/grib_index.c
+++ b/src/grib_index.c
@@ -641,7 +641,7 @@ static void grib_field_delete(grib_context* c,grib_field* field)
     grib_field_delete(c,field->next);
 
     if (field->file) {
-        grib_file_close(field->file->name,&err);
+        grib_file_close(field->file->name, 0, &err);
         field->file=NULL;
     }
 
@@ -1083,7 +1083,7 @@ int _codes_index_add_file(grib_index* index,const char* filename,int message_typ
 
     }
 
-    grib_file_close(file->name,&err);
+    grib_file_close(file->name, 0, &err);
 
     if (err) return err;
     index->rewind=1;
@@ -1247,7 +1247,7 @@ int grib_index_add_file(grib_index* index, const char* filename)
 
     }
 
-    grib_file_close(file->name,&err);
+    grib_file_close(file->name, 0, &err);
 
     if (err) return err;
     index->rewind=1;
@@ -1481,7 +1481,7 @@ grib_handle* codes_index_get_handle(grib_field* field,int message_type,int *err)
     h=message_new(0,field->file->handle,0,err);
     if (*err!=GRIB_SUCCESS) return NULL;
 
-    grib_file_close(field->file->name,err);
+    grib_file_close(field->file->name, 0, err);
     return h;
 }
 
diff --git a/src/grib_io.c b/src/grib_io.c
index 6867601..060b339 100644
--- a/src/grib_io.c
+++ b/src/grib_io.c
@@ -618,6 +618,7 @@ static int read_BUFR(reader *r)
     /* assert(edition != 1); */
 
     switch (edition) {
+      case 0:
       case 1:
         {
         int n;
diff --git a/src/grib_iterator.c b/src/grib_iterator.c
index 6fa5df1..daccec6 100644
--- a/src/grib_iterator.c
+++ b/src/grib_iterator.c
@@ -15,7 +15,8 @@
  ***************************************************************************/
 #include "grib_api_internal.h"
 
-int grib_get_data(grib_handle* h,double* lats, double* lons,double* values,size_t* size) {
+int grib_get_data(grib_handle* h,double* lats, double* lons,double* values)
+{
     int err=0;
     grib_iterator* iter=NULL;
     double *lat,*lon,*val;
diff --git a/src/grib_iterator_class.c b/src/grib_iterator_class.c
index 1f49c48..25997e7 100644
--- a/src/grib_iterator_class.c
+++ b/src/grib_iterator_class.c
@@ -18,7 +18,7 @@
 
 #define NUMBER(x) (sizeof(x)/sizeof(x[0]))
 
-/* This file is generated my ./make_class.pl */
+/* This file is generated by ./make_class.pl */
 #include "grib_iterator_class.h"
 
 struct table_entry
@@ -29,7 +29,7 @@ struct table_entry
 
 static struct table_entry table[] =
 {
-  /* This file is generated my ./make_class.pl */
+  /* This file is generated by ./make_class.pl */
 #include "grib_iterator_factory.h"
 };
 
diff --git a/src/grib_jasper_encoding.c b/src/grib_jasper_encoding.c
index b9fbafc..d278471 100644
--- a/src/grib_jasper_encoding.c
+++ b/src/grib_jasper_encoding.c
@@ -21,10 +21,9 @@
 
 #define MAXOPTSSIZE 1024
 
-int grib_jasper_decode(grib_context *c,unsigned char *buf, size_t *buflen, double *values, size_t *no_values) {
-
+int grib_jasper_decode(grib_context *c,unsigned char *buf, size_t *buflen, double *values, size_t *no_values)
+{
     /*jas_setdbglevel(99999);*/
-
     jas_image_t  *image = NULL;
     jas_stream_t *jpeg  = NULL;
     int code = GRIB_SUCCESS;
@@ -38,6 +37,8 @@ int grib_jasper_decode(grib_context *c,unsigned char *buf, size_t *buflen, doubl
         goto cleanup;
     }
 
+    grib_context_log(c, GRIB_LOG_DEBUG, "grib_jasper_decode: Jasper version %s", jas_getversion());
+
     image = jpc_decode(jpeg,NULL);
     if(!image) {
         code = GRIB_DECODING_ERROR;
@@ -77,8 +78,8 @@ cleanup:
     return code;
 }
 
-int grib_jasper_encode(grib_context *c, j2k_encode_helper *helper) {
-
+int grib_jasper_encode(grib_context *c, j2k_encode_helper *helper)
+{
     int code = GRIB_SUCCESS;
     int jaserr;
 
@@ -95,7 +96,6 @@ int grib_jasper_encode(grib_context *c, j2k_encode_helper *helper) {
     unsigned char *encoded = NULL;
     unsigned char *p = NULL;
 
-
     jas_image_t image = {0};
     jas_stream_t *jpcstream = 0;
     jas_stream_t *istream = 0;
@@ -134,7 +134,7 @@ int grib_jasper_encode(grib_context *c, j2k_encode_helper *helper) {
     }
 
     buflen = 0;
-    p       = encoded;
+    p      = encoded;
 
     for(i=0;i< no_values;i++){
         long blen = bits8;
@@ -164,6 +164,7 @@ int grib_jasper_encode(grib_context *c, j2k_encode_helper *helper) {
     }
 
     Assert(cmpt.width_ * cmpt.height_ * cmpt.cps_ == buflen);
+    grib_context_log(c, GRIB_LOG_DEBUG, "grib_jasper_encode: Jasper version %s", jas_getversion());
 
     pcmpt           = &cmpt;
     image.cmpts_    = &pcmpt;
@@ -207,13 +208,15 @@ cleanup:
 
 #else
 
-int grib_jasper_decode(grib_context *c, unsigned char *buf, size_t *buflen, double *val, size_t *n_vals) {
+int grib_jasper_decode(grib_context *c, unsigned char *buf, size_t *buflen, double *val, size_t *n_vals)
+{
     grib_context_log(c, GRIB_LOG_ERROR,
             "grib_accessor_data_jpeg2000_packing: Jasper JPEG support not enabled.");
     return GRIB_NOT_IMPLEMENTED;
 }
 
-int grib_jasper_encode(grib_context *c, j2k_encode_helper *helper) {
+int grib_jasper_encode(grib_context *c, j2k_encode_helper *helper)
+{
     grib_context_log(c, GRIB_LOG_ERROR,
             "grib_accessor_data_jpeg2000_packing: Jasper JPEG support not enabled.");
     return GRIB_NOT_IMPLEMENTED;
diff --git a/src/grib_lex.c b/src/grib_lex.c
index 0cd7825..68fe7c2 100644
--- a/src/grib_lex.c
+++ b/src/grib_lex.c
@@ -1,5 +1,6 @@
+#line 2 "gribl.c"
 
-#line 3 "lex.grib_yy.c"
+#line 4 "gribl.c"
 
 #define  YY_INT_ALIGNED short int
 
@@ -360,8 +361,8 @@ static void grib_yy_fatal_error (grib_yyconst char msg[]  );
 	*grib_yy_cp = '\0'; \
 	(grib_yy_c_buf_p) = grib_yy_cp;
 
-#define YY_NUM_RULES 140
-#define YY_END_OF_BUFFER 141
+#define YY_NUM_RULES 138
+#define YY_END_OF_BUFFER 139
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct grib_yy_trans_info
@@ -369,95 +370,95 @@ struct grib_yy_trans_info
 	flex_int32_t grib_yy_verify;
 	flex_int32_t grib_yy_nxt;
 	};
-static grib_yyconst flex_int16_t grib_yy_accept[794] =
+static grib_yyconst flex_int16_t grib_yy_accept[798] =
     {   0,
-      137,  137,  141,  139,  137,  138,   12,  128,  136,  139,
-      139,  139,  139,  131,    5,  139,    3,  130,  130,  130,
-      129,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  139,   18,  137,    6,    0,   14,  132,
-      134,    0,    0,  133,  131,    0,    4,    7,    1,    2,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,   23,  130,   10,  130,  130,  130,  130,  130,  130,
-
-      130,  130,  130,  130,  130,  130,   15,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,   16,    0,    0,
-        0,    0,    0,  135,  133,    0,    0,  135,  130,   24,
-      130,   13,  130,  130,  130,    8,  130,   66,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,   35,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  100,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-       11,  130,  130,   52,  130,  130,  130,  130,  130,  130,
-
-      114,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,   91,  130,
-        0,  134,    0,    0,    0,    0,    0,  133,  130,  130,
-      130,  130,  130,  113,   28,  130,  117,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,   89,  130,   25,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,   90,   67,  130,
-      130,   30,  130,  130,  130,  130,   48,  130,  130,  130,
-      130,  130,  130,   17,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  126,  130,  130,  130,  130,
-
-      130,  130,  130,  130,  130,  130,  130,  130,  116,  130,
-      130,  130,  130,    0,    0,    0,    0,    0,    0,  133,
-      130,   56,  130,   27,  130,  130,   20,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,   44,  130,
-      130,  130,  130,   46,  130,  130,  130,  130,  130,  102,
-      106,  110,  130,  130,  130,  130,   29,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,   50,
-      130,  125,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,   99,  130,  130,   31,  123,    0,    0,    0,    0,
-
-      130,    0,    0,  130,  124,   85,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,   74,  130,  130,
-      130,  130,   40,  130,   93,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,   21,  130,   45,  130,
-      130,   70,  130,  130,  130,  130,    9,  130,  130,  130,
-      130,  130,   75,   76,  130,  130,  130,   38,  130,  130,
-       19,  118,  130,  130,  130,  130,  130,  101,  105,  109,
-      130,  130,    0,    0,    0,    0,    0,  130,  130,   95,
-      130,  130,  130,  120,  130,  130,   98,  119,  130,  130,
-      130,   68,  130,  130,  130,  130,  130,  130,  127,  130,
-
-      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-       54,   65,   87,   92,  130,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,   34,
-      130,  130,  130,   57,  130,    0,    0,  130,  130,  130,
-      130,   59,  130,  130,  130,  130,  130,  130,  130,  130,
-       36,  130,  130,  130,  130,  130,  130,  130,  130,   64,
-      130,  130,  130,  130,  130,   97,  130,  130,   58,  130,
-      130,  130,  130,  130,  130,   32,  130,  130,  130,  130,
-      130,  130,   26,  130,   39,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,   37,  130,  130,  130,  130,
-
-      130,  130,   83,  130,   62,   22,  130,   47,   49,  130,
-       86,  130,  130,  130,  130,  130,  130,  130,  130,   80,
-       60,  130,  130,  130,  130,  130,  130,   96,  130,  130,
-      130,  130,  130,  130,  122,  130,  130,  130,   78,   77,
-       82,  130,  130,  130,  130,  130,  115,  130,  130,  130,
-      130,   79,  130,  130,  130,  130,  130,  130,   42,   63,
-      130,  130,  130,  130,  130,  130,  130,   69,  130,  130,
-      130,  130,  130,   41,   61,  130,  130,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,   55,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-
-      130,  130,  130,  130,  130,  130,  130,  130,   51,  130,
-      130,  130,  130,  130,  130,  130,   94,  130,  121,  130,
-      130,  130,  130,  130,  130,  130,   84,  130,  130,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,   53,  130,   33,  130,  130,  130,  130,   88,  130,
-      130,  130,  130,  130,  130,  130,  130,  130,  130,   43,
-      130,   72,  130,  130,  130,  130,  130,  130,  130,  130,
-      130,   73,  130,  130,  130,  130,  130,  130,  130,  130,
-      104,  108,  112,   81,  130,  130,  130,  130,  103,  107,
-      111,   71,    0
+      135,  135,  139,  137,  135,  136,   12,  126,  134,  137,
+      137,  137,  137,  129,    5,  137,    3,  128,  128,  128,
+      127,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  137,   18,  135,    6,    0,   14,  130,  132,    0,
+        0,  131,  129,  128,  128,    4,    7,    1,    2,    0,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,   23,  128,   10,  128,  128,  128,  128,  128,  128,
+
+      128,  128,  128,  128,  128,   15,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,   16,    0,    0,    0,    0,
+        0,    0,  133,  131,    0,  128,  128,    0,    0,  128,
+        0,  128,   24,  128,   13,  128,  128,  128,    8,  128,
+       66,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,   35,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,   98,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,   11,  128,  128,   52,  128,  128,  128,  128,
+
+      128,  128,  112,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  133,    0,  132,    0,    0,    0,    0,    0,  131,
+      128,  128,  128,  128,  128,  128,  111,   28,  128,  115,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,   89,
+      128,   25,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+       67,  128,  128,   30,  128,  128,  128,  128,   48,  128,
+      128,  128,  128,  128,  128,   17,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  124,  128,  128,
+
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      114,  128,  128,  128,  128,    0,    0,    0,    0,    0,
+        0,  131,  128,  128,  128,   56,  128,   27,  128,  128,
+       20,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,   44,  128,  128,  128,  128,   46,  128,  128,
+      128,  128,  128,  100,  104,  108,  128,  128,  128,  128,
+       29,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,   50,  128,  123,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,   97,  128,  128,   31,  121,
+
+        0,    0,    0,    0,  128,    0,    0,  128,  122,   85,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,   74,  128,  128,  128,  128,   40,  128,   91,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+       21,  128,   45,  128,  128,   70,  128,  128,  128,  128,
+        9,  128,  128,  128,  128,  128,   75,   76,  128,  128,
+      128,   38,  128,  128,   19,  116,  128,  128,  128,  128,
+      128,   99,  103,  107,  128,  128,    0,    0,    0,    0,
+        0,  128,  128,   93,  128,  128,  128,  118,  128,  128,
+       96,  117,  128,  128,  128,   68,  128,  128,  128,  128,
+
+      128,  128,  125,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,   54,   65,   87,   90,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,   34,  128,  128,  128,   57,  128,    0,
+        0,  128,  128,  128,  128,   59,  128,  128,  128,  128,
+      128,  128,  128,  128,   36,  128,  128,  128,  128,  128,
+      128,  128,  128,   64,  128,  128,  128,  128,  128,   95,
+      128,  128,   58,  128,  128,  128,  128,  128,  128,   32,
+      128,  128,  128,  128,  128,  128,   26,  128,   39,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,   37,
+
+      128,  128,  128,  128,  128,  128,   83,  128,   62,   22,
+      128,   47,   49,  128,   86,  128,  128,  128,  128,  128,
+      128,  128,  128,   80,   60,  128,  128,  128,  128,  128,
+      128,   94,  128,  128,  128,  128,  128,  128,  120,  128,
+      128,  128,   78,   77,   82,  128,  128,  128,  128,  128,
+      113,  128,  128,  128,  128,   79,  128,  128,  128,  128,
+      128,  128,   42,   63,  128,  128,  128,  128,  128,  128,
+      128,   69,  128,  128,  128,  128,  128,   41,   61,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,   55,  128,  128,  128,  128,  128,  128,
+
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,   51,  128,  128,  128,  128,  128,  128,  128,
+       92,  128,  119,  128,  128,  128,  128,  128,  128,  128,
+       84,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,   53,  128,   33,  128,  128,
+      128,  128,   88,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,   43,  128,   72,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,   73,  128,  128,  128,  128,
+      128,  128,  128,  128,  102,  106,  110,   81,  128,  128,
+      128,  128,  101,  105,  109,   71,    0
 
     } ;
 
@@ -467,16 +468,16 @@ static grib_yyconst flex_int32_t grib_yy_ec[256] =
         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    2,    4,    5,    6,    1,    1,    7,    8,    1,
-        1,    1,    9,    1,    9,   10,   11,   12,   13,   14,
-       15,   16,   12,   17,   12,   18,   12,    1,    1,   19,
-       20,   21,    1,    1,   22,   22,   22,   22,   23,   22,
-       24,   22,   25,   22,   22,   22,   26,   27,   22,   22,
-       22,   22,   28,   22,   22,   22,   22,   22,   22,   22,
-        1,    1,    1,    1,   29,   30,   31,   32,   33,   34,
-
-       35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
-       45,   46,   22,   47,   48,   49,   50,   51,   52,   53,
-       54,   22,    1,   55,    1,   56,    1,    1,    1,    1,
+        1,    1,    9,    1,   10,   11,   12,   13,   14,   15,
+       16,   17,   13,   18,   13,   19,   13,    1,    1,   20,
+       21,   22,    1,    1,   23,   23,   23,   23,   24,   23,
+       25,   23,   26,   23,   23,   23,   27,   28,   23,   23,
+       23,   23,   29,   23,   23,   23,   23,   23,   23,   23,
+        1,    1,    1,    1,   30,   31,   32,   33,   34,   35,
+
+       36,   37,   38,   39,   40,   23,   41,   42,   43,   44,
+       45,   46,   23,   47,   48,   49,   50,   51,   52,   53,
+       54,   23,    1,   55,    1,   56,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -495,400 +496,430 @@ static grib_yyconst flex_int32_t grib_yy_ec[256] =
 
 static grib_yyconst flex_int32_t grib_yy_meta[57] =
     {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    2,    2,
-        3,    4,    4,    4,    4,    4,    4,    4,    1,    5,
-        1,    6,    7,    6,    6,    6,    6,    6,    6,    1,
-        6,    6,    6,    6,    7,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    1,    1
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        4,    5,    6,    6,    6,    6,    6,    6,    6,    1,
+        7,    1,    8,    9,    8,    8,    8,    8,    8,    8,
+        1,    8,    8,    8,    8,    9,    8,    8,    8,    8,
+        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
+        8,    8,    8,    8,    1,    1
     } ;
 
-static grib_yyconst flex_int16_t grib_yy_base[813] =
+static grib_yyconst flex_int16_t grib_yy_base[828] =
     {   0,
-        0,    0, 1697, 1698, 1694, 1698, 1675, 1698,   45, 1687,
-       52,   59,    0,   69,   60, 1673, 1672,   70,   81,   64,
-     1698,   65,   75,   77,   91,   90,   76,  110,  100,  112,
-       80,   85,  124,  117,  129,  121,  140,  115,  141,  153,
-      142,  145,  152, 1636, 1698, 1688, 1698,  190, 1698,  200,
-      166,  199,  212,  197,  224,  227, 1698, 1698, 1698, 1698,
-        0, 1664,  169,  102,  212,   87,  206,  213,  126,  128,
-      196,  223,  174,  225,  230,  229,  233,  228,  232,  238,
-      231,  235,  237,  255, 1659,  242,  243,  246,  256,  257,
-      260, 1662,  259,  264,  262,  271,  274,  273,  276,  277,
-
-      278,  279,  281,  282,  285,  293, 1661,  286,  292,  294,
-      299,  306,  307,  308,  314,  316,  311,  319,  318,  321,
-      323,  330,  329,  334,  337,  338,  341, 1698,    0,  372,
-     1665,  358,  379,  391,  375,  403,  390,  415,  346, 1659,
-      409, 1658,  345,  384,  400, 1657,  411, 1656,  412,  350,
-      413,  397,  414,  416,  417,  399,  421,  419,  426,  429,
-      430,  431, 1655,  432,  434,  426,  435,  436,  438,  447,
-      442,  448,  455,  474,  457,  459,  460,  465,  467,  463,
-      468,  470,  469,  478,  480,  483,  484,  486,  491,  490,
-      493,  487,  495,  496,  497,  505,  501,  506,  507,  509,
-
-      512,  515,  518,  514,  519,  522,  523,  525,  527,  528,
-      531,  532,  529,  530,  538,  539,  540,  543, 1654,  572,
-      581,  588,  595,  602,  612,  615,  624,  636, 1653,  609,
-      600,  620,  534, 1652, 1651,  630, 1650,  545,  618,  621,
-      631,  633,  635,  636,  640,  643, 1649,  645, 1648,  646,
-      647, 1641, 1636, 1635,  648,  650,  649,  652,  655,  658,
-      651, 1652, 1654, 1651,  656,  663,  673, 1641,  566,  664,
-      665, 1640,  674,  666,  677,  680, 1639,  682,  684,  683,
-      690,  692,  687, 1638,  685,  695,  697,  700,  702,  704,
-      705,  708,  709,  713,  710, 1637,  711,  712,  714,  718,
-
-      716,  717,  719,  727,  729,  752,  732,  737, 1636,  747,
-      748,    0,  772,  768,  780,  788,    0,  792,  800,  812,
-      386, 1635,  797, 1634,  751,  807, 1633,  808,  809,  734,
-      810,  795,  739,  811,  812,  813,  753,  821, 1632, 1614,
-     1607, 1621,  794, 1628,  818,  823,  825,  826,  827, 1623,
-     1622, 1621,  837,  828,  829, 1614, 1623,  831,  830,  838,
-      839,  840,  848,  849,  850,  851,  856,  855,  860,  857,
-      862, 1622,  858,  870,  881,  863,  864,  882,  885,  886,
-      887,  866,  889,  895,  869,  896,  897,  898, 1629, 1631,
-     1628,    0,  900,  903, 1618, 1617,  936,  946,  954,  958,
-
-      970,  978,  986,  905, 1616, 1615,  909,  907,  915,  917,
-      980,  910,  981,  982,  983,  984,  985, 1614,  986, 1602,
-     1589, 1587, 1610,  987, 1609,  989,  991,  990, 1591, 1590,
-     1589,  996,  992,  912,  994, 1577, 1604,  998, 1603, 1001,
-     1008, 1602, 1012, 1003, 1016, 1017, 1601, 1015, 1019, 1021,
-     1020, 1022, 1600, 1599, 1023, 1026, 1025, 1598, 1028, 1030,
-     1597, 1596, 1029, 1039, 1043, 1044, 1047, 1591, 1590, 1589,
-     1035, 1050, 1074, 1084, 1094, 1101, 1109,    0, 1116, 1592,
-     1110, 1051, 1055, 1111, 1056, 1112, 1591, 1590, 1113, 1114,
-     1116, 1589, 1584, 1581, 1572, 1117, 1118, 1121, 1585, 1570,
-
-     1569, 1568, 1122, 1123, 1129, 1124, 1125, 1560, 1130, 1131,
-     1140, 1580, 1579, 1578, 1132, 1133, 1146, 1135, 1148, 1149,
-     1153, 1155, 1150, 1159, 1158, 1160, 1162, 1168, 1169, 1577,
-     1559, 1558, 1557, 1573, 1163, 1188, 1203, 1171, 1173, 1197,
-     1184, 1572, 1198, 1186, 1199, 1200, 1564, 1558, 1549, 1201,
-     1568, 1202, 1543, 1542, 1541, 1204, 1206, 1209, 1210, 1564,
-     1537, 1211, 1214, 1222, 1225, 1562, 1215, 1213, 1561, 1216,
-     1218, 1227, 1220, 1233, 1236, 1242, 1243, 1244, 1247, 1546,
-     1545, 1544, 1557, 1249, 1556, 1248, 1250, 1251, 1252, 1255,
-     1257, 1526, 1544, 1534, 1254, 1552, 1527, 1526, 1525, 1258,
-
-     1261, 1259, 1548, 1537, 1546, 1545, 1264, 1544, 1543, 1263,
-     1542, 1269, 1267, 1274, 1280, 1287, 1288, 1289, 1290, 1541,
-     1540, 1515, 1514, 1513, 1292, 1293, 1294, 1536, 1297, 1296,
-     1301, 1511, 1530, 1542, 1532, 1514, 1513, 1512, 1528, 1527,
-     1526, 1503, 1295, 1298, 1299, 1313, 1524, 1300, 1314, 1320,
-     1303, 1523, 1498, 1497, 1496, 1307, 1325, 1326, 1519, 1518,
-     1328, 1507, 1499, 1511, 1504, 1503, 1502,    0, 1327, 1329,
-     1331, 1333, 1345, 1511, 1510, 1337, 1492, 1491, 1490, 1338,
-     1339, 1340, 1341, 1502, 1495, 1487, 1499, 1498, 1497, 1500,
-     1349, 1344, 1347, 1490, 1352, 1488, 1487, 1486, 1350, 1360,
-
-     1353, 1364, 1487, 1475, 1483, 1482, 1481, 1480, 1489, 1365,
-     1367, 1478, 1369, 1483, 1482, 1481, 1484, 1372, 1483, 1371,
-     1462, 1469, 1461, 1460, 1459, 1458, 1476, 1376, 1467, 1373,
-     1464, 1463, 1462, 1374, 1381, 1462, 1446, 1457, 1457, 1453,
-     1448, 1456, 1438, 1451, 1427, 1423, 1420, 1377, 1438, 1426,
-     1420, 1399, 1406, 1405, 1398, 1393, 1399, 1398, 1396, 1401,
-     1387,    0, 1384, 1389, 1378, 1376, 1374, 1337, 1252, 1248,
-     1062,    0, 1012,  936,  935,  936,  915,  862,  790,  595,
-        0,    0,    0,    0,  334,  268,  114,   54,    0,    0,
-        0,    0, 1698, 1411, 1417, 1421, 1427, 1431, 1435, 1439,
-
-     1443, 1445, 1449, 1455, 1458, 1462, 1466, 1471, 1476, 1478,
-     1482, 1486
+        0,    0, 1944, 1945, 1941, 1945, 1921, 1945,   44, 1934,
+       51,   58,    0,   69,   68, 1919, 1918,   81,   96,   76,
+     1945,   75,   92,   94,  102,  109,   66,  119,  117,  128,
+       55,  142,  105,  134,   78,  141,  104,  149,  155,  167,
+      157, 1883, 1945, 1935, 1945,  199, 1945,  210,  135,  222,
+      234,  170,  245,  257,  273, 1945, 1945, 1945, 1945, 1914,
+     1925, 1908,   98,  132,  169,  196,  184,  231,  154,  240,
+      242,  251,  254,  252,  268,  171,  122,  258,  267,  273,
+      270,  207,  275,  283,  294,  279,  280,  281,  291,  290,
+      294, 1907,  293,  305,  296,  308,  310,  297,  311,  312,
+
+      313,  314,  319,  322,  321, 1906,  324,  320,  327,  328,
+      341,  343,  206,  332,  344,  339,  348,  353,  352,  357,
+      362,  354,  365,  363,  364, 1945,    0,  391,  396, 1910,
+      398,  401,  414,  410,  401, 1920,  426,  438,  445,  455,
+        0,  449, 1903,  450, 1902,  411,  386,  451, 1901,  453,
+     1900,  454,  455,  457,  440,  458,  463,  465,  395,  466,
+      469,  470,  471,  474,  475, 1899,  476,  478,  495,  484,
+      480,  409,  489,  482,  486,  499,  513,  488,  500,  510,
+      509,  511,  507,  514,  516,  522,  520,  527,  524,  525,
+      528,  537,  540,  529,  534,  535,  543,  544,  550,  548,
+
+      554,  549,  552,  563,  553,  561,  564,  551,  566,  568,
+      570,  573,  574,  577,  575,  578,  579,  582,  580,  576,
+      617,  624,  631,  638,  645,  652,  663,  600,  663,  675,
+      687, 1898,  659,  669,  658,  670, 1897, 1896,  682, 1895,
+      683,  684,  586,  685,  686,  688,  690,  694,  696, 1894,
+      697, 1893,  699,  701,  716,  718,  719,  706,  705,  713,
+      716,  715,  710,  718,  735,  746,  748,  733,  734,  597,
+      748,  737,  738, 1892,  740,  741,  743,  746, 1891,  745,
+      747,  749,  754,  763,  759, 1890,  750,  755,  762,  766,
+      772,  767,  770,  777,  775,  778,  784, 1889,  779,  780,
+
+      781,  788,  783,  782,  786,  795,  801,  815,  797,  806,
+     1888,  810,  812, 1903,  837,  833,  845,  853,    0,  857,
+      857,  865, 1900,  877,  814, 1881,  862, 1880,  859,  873,
+     1875,  872,  874,  860,  875,  823,  876,  877,  879,  885,
+      886,  887, 1872,  904,  906,  907,  893, 1871,  894,  895,
+      897,  898,  902,  919,  921,  922,  908,  907,  910,  933,
+     1867,  919,  921,  922,  927,  929,  930,  934,  937,  936,
+      938,  939,  945,  951,  946, 1866,  947,  953,  955,  948,
+      952,  964,  940,  969,  970,  972,  975,  977,  976,  979,
+      978,  980,  997, 1002, 1003, 1877,  995,  984, 1859, 1858,
+
+     1013, 1020, 1028, 1032, 1032, 1044, 1053, 1028, 1855, 1854,
+     1047, 1048, 1029, 1049, 1050, 1052, 1054, 1053, 1057, 1059,
+     1060, 1848, 1061, 1078, 1080, 1081, 1847, 1066, 1843, 1071,
+      998, 1070, 1089, 1090, 1091, 1079, 1081, 1083, 1082, 1101,
+     1842, 1086, 1837, 1092, 1093, 1835, 1094, 1096, 1097, 1099,
+     1834, 1100, 1108, 1110, 1111, 1118, 1830, 1828, 1120, 1112,
+     1115, 1827, 1116, 1121, 1824, 1823, 1122, 1131, 1126, 1132,
+     1127, 1145, 1151, 1159, 1144, 1146, 1180, 1188, 1167, 1195,
+     1203,    0, 1210, 1818, 1147, 1204, 1153, 1154, 1205, 1207,
+     1816, 1815, 1159, 1206, 1208, 1809, 1226, 1225, 1227, 1213,
+
+     1214, 1216, 1807, 1231, 1233, 1234, 1219, 1224, 1223, 1152,
+     1225, 1242, 1232, 1227, 1236, 1806, 1803, 1802, 1242, 1243,
+     1244, 1250, 1239, 1251, 1256, 1258, 1259, 1263, 1261, 1265,
+     1268, 1270, 1271, 1798, 1288, 1290, 1292, 1789, 1277, 1303,
+     1323, 1283, 1307, 1279, 1281, 1788, 1282, 1298, 1301, 1302,
+     1319, 1321, 1301, 1321, 1784, 1318, 1338, 1339, 1341, 1328,
+     1330, 1332, 1334, 1783, 1347, 1335, 1337, 1338, 1343, 1776,
+     1339, 1340, 1774, 1348, 1350, 1344, 1351, 1353, 1354, 1365,
+     1367, 1359, 1356, 1389, 1390, 1391, 1773, 1378, 1769, 1380,
+     1383, 1384, 1381, 1386, 1388,  676, 1401, 1403, 1390, 1767,
+
+     1407, 1408, 1409, 1394, 1396, 1395, 1766, 1413, 1763, 1762,
+     1401, 1755, 1754, 1398, 1750, 1414, 1409, 1410, 1422, 1413,
+     1425, 1433, 1427, 1748, 1747, 1450, 1451, 1452, 1437, 1438,
+     1439, 1743, 1440, 1442, 1444, 1457, 1459, 1465, 1741, 1462,
+     1471, 1473, 1733, 1731, 1730, 1474, 1461, 1462, 1465, 1460,
+     1729, 1468, 1466, 1467, 1471, 1728, 1480, 1486, 1488, 1479,
+     1486, 1485, 1727, 1721, 1492, 1504, 1510, 1513, 1514, 1515,
+     1517, 1736, 1502, 1504, 1506, 1507, 1519, 1718, 1717, 1510,
+     1521, 1528, 1529, 1515, 1523, 1522, 1528, 1545, 1547, 1548,
+     1550, 1551, 1554, 1716, 1540, 1539, 1547, 1557, 1553, 1559,
+
+     1564, 1567, 1556, 1565, 1560, 1552, 1583, 1586, 1588, 1589,
+     1591, 1595, 1713, 1580, 1578, 1597, 1583, 1598, 1602, 1604,
+     1712, 1585, 1711, 1589, 1600, 1603, 1606, 1610, 1611, 1616,
+     1709, 1609, 1627, 1610, 1628, 1629, 1630, 1616, 1617, 1634,
+     1636, 1638, 1639, 1643, 1646, 1708, 1647, 1707, 1649, 1652,
+     1653, 1641, 1706, 1658, 1660, 1661, 1662, 1663, 1665, 1669,
+     1672, 1673, 1674, 1654, 1676, 1294, 1678, 1679, 1682, 1688,
+     1690, 1681, 1685, 1691, 1694, 1177, 1680, 1696, 1705, 1706,
+     1709, 1713, 1718, 1719, 1176, 1001,  673,  497, 1708, 1716,
+     1717, 1720,  372,  235,  153,   97, 1945, 1754, 1762, 1769,
+
+     1773, 1777, 1781, 1788, 1795, 1797, 1805, 1810, 1811, 1819,
+     1824, 1828, 1830, 1837, 1845, 1849, 1856, 1861, 1866, 1868,
+     1876, 1880, 1888, 1893, 1894, 1902, 1903
     } ;
 
-static grib_yyconst flex_int16_t grib_yy_def[813] =
+static grib_yyconst flex_int16_t grib_yy_def[828] =
     {   0,
-      793,    1,  793,  793,  793,  793,  793,  793,  793,  793,
-      793,  793,  794,  795,  793,  793,  793,  796,  796,   19,
-      793,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+      797,    1,  797,  797,  797,  797,  797,  797,  797,  797,
+      797,  797,  798,  799,  797,  797,  797,  800,  800,   19,
+      797,   19,   19,   19,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,   19,   19,  793,  793,  793,  793,  793,  793,  797,
-      798,  799,  793,  800,  795,  793,  793,  793,  793,  793,
-      801,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,  797,  797,  797,  797,  797,  797,  797,  801,  802,
+      797,  803,  799,  804,  804,  797,  797,  797,  797,  797,
+      805,   19,   19,   19,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,   19,   19,   19,  801,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,  805,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
 
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,   19,   19,   19,   19,   19,   19,  793,  802,  793,
-      803,  804,  799,  805,  800,  793,  793,  793,   19,   19,
-       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,  797,  806,  807,  808,  809,
+      810,  802,  797,  803,  811,  812,  804,  797,  797,  812,
+      813,   19,   19,   19,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,   19,   19,   19,   19,  801,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,  805,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
 
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,   19,   19,   19,   19,   19,   19,   19,   19,  806,
-      793,  793,  793,  793,  804,  793,  793,  793,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+      814,  797,  797,  797,  797,  797,  810,  815,  797,  797,
+      816,   19,   19,   19,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,  801,  801,  801,   19,   19,   19,   19,   19,   19,
-       19,  801,  801,  801,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,  805,  805,  805,   19,   19,   19,
+       19,   19,   19,   19,  805,  805,  805,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
 
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,  807,  806,  808,  793,  809,  810,  793,  793,  793,
+       19,   19,   19,  817,  814,  818,  797,  819,  820,  821,
+      797,  797,  822,  816,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,  805,  805,  805,   19,   19,   19,   19,
+       19,   19,   19,  805,  805,  805,   19,   19,   19,  805,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,   19,   19,   19,   19,   19,   19,   19,   19,  801,
-      801,  801,   19,   19,   19,   19,   19,   19,   19,  801,
-      801,  801,   19,   19,   19,  801,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,   19,   19,   19,   19,   19,   19,   19,  801,  801,
-      801,  801,   19,   19,   19,   19,  793,  793,  809,  793,
+       19,   19,  805,  805,  805,  805,   19,   19,   19,   19,
 
-      811,  793,  793,   19,   19,   19,   19,   19,   19,   19,
-       19,   19,   19,   19,   19,   19,   19,   19,   19,  801,
-      801,  801,   19,   19,   19,   19,   19,   19,  801,  801,
-      801,   19,   19,   19,   19,  801,   19,   19,   19,   19,
+      823,  797,  819,  824,  825,  797,  797,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,  805,  805,  805,   19,   19,   19,   19,
+       19,   19,  805,  805,  805,   19,   19,   19,   19,  805,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,   19,   19,   19,   19,   19,   19,  801,  801,  801,
-       19,   19,  793,  793,  793,  793,  793,  812,  811,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,   19,  801,  801,  801,   19,   19,   19,   19,  801,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,  805,  805,  805,   19,   19,  797,  797,  826,  797,
+      797,  827,  825,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,  805,  805,  805,   19,
 
-      801,  801,   19,   19,   19,   19,   19,  801,   19,   19,
+       19,   19,   19,  805,  805,  805,   19,   19,   19,   19,
+       19,  805,   19,   19,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,   19,  805,  805,  805,   19,   19,  797,
+      797,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+      805,  805,  805,   19,   19,   19,  805,  805,  805,   19,
+       19,   19,   19,   19,  805,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-      801,  801,  801,   19,   19,  793,  793,   19,   19,   19,
-       19,   19,   19,   19,   19,   19,  801,  801,  801,   19,
-       19,   19,  801,  801,  801,   19,   19,   19,   19,   19,
-      801,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,   19,   19,   19,   19,   19,   19,   19,   19,  801,
-      801,  801,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,  801,  801,  801,   19,   19,  801,  801,  801,   19,
-
-       19,   19,   19,  801,   19,   19,   19,   19,   19,   19,
+       19,   19,   19,  805,  805,  805,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,  805,  805,  805,   19,   19,
+
+      805,  805,  805,   19,   19,   19,   19,  805,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,  801,  801,  801,   19,   19,   19,   19,   19,   19,
-       19,  801,  801,  801,   19,  801,  801,  801,   19,   19,
-       19,  801,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,   19,  801,  801,  801,   19,   19,   19,   19,   19,
-       19,  801,  801,  801,  801,  801,  801,  801,   19,   19,
-       19,   19,   19,   19,   19,   19,  801,  801,  801,   19,
-       19,   19,   19,  801,  801,  801,  801,  801,  801,   19,
-       19,   19,   19,  801,   19,  801,  801,  801,   19,   19,
-
-       19,   19,  801,  801,  801,  801,  801,  801,   19,   19,
-       19,  801,   19,  801,  801,  801,   19,   19,   19,   19,
-      801,  801,  801,  801,  801,  801,   19,   19,  801,   19,
-      801,  801,  801,   19,   19,  801,  801,  801,  801,  801,
-      801,   19,  801,   19,  801,  801,  801,   19,   19,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,   19,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,  801,  801,  801,  801,  801,  801,  801,  801,
-      801,  801,    0,  793,  793,  793,  793,  793,  793,  793,
-
-      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
-      793,  793
+       19,   19,   19,   19,   19,  805,  805,  805,   19,   19,
+       19,   19,   19,   19,   19,  805,  805,  805,   19,  805,
+      805,  805,   19,   19,   19,  805,   19,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,  805,  805,  805,   19,
+       19,   19,   19,   19,   19,  805,  805,  805,  805,  805,
+      805,  805,   19,   19,   19,   19,   19,   19,   19,   19,
+      805,  805,  805,   19,   19,   19,   19,  805,  805,  805,
+      805,  805,  805,   19,   19,   19,   19,  805,   19,  805,
+
+      805,  805,   19,   19,   19,   19,  805,  805,  805,  805,
+      805,  805,   19,   19,   19,  805,   19,  805,  805,  805,
+       19,   19,   19,   19,  805,  805,  805,  805,  805,  805,
+       19,   19,  805,   19,  805,  805,  805,   19,   19,  805,
+      805,  805,  805,  805,  805,   19,  805,   19,  805,  805,
+      805,   19,   19,  805,  805,  805,  805,  805,  805,  805,
+      805,  805,  805,   19,  805,  805,  805,  805,  805,  805,
+      805,  805,  805,  805,  805,  805,  805,  805,  805,  805,
+      805,  805,  805,  805,  805,  805,  805,  805,  805,  805,
+      805,  805,  805,  805,  805,  805,    0,  797,  797,  797,
+
+      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
+      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
+      797,  797,  797,  797,  797,  797,  797
     } ;
 
-static grib_yyconst flex_int16_t grib_yy_nxt[1755] =
+static grib_yyconst flex_int16_t grib_yy_nxt[2002] =
     {   0,
-        4,    5,    6,    7,    8,    9,   10,    8,   11,   12,
-       13,   14,   14,   14,   14,   14,   14,   14,   15,   16,
-       17,   18,   18,   18,   18,   19,   18,   18,   20,   21,
-       22,   23,   24,   25,   26,   27,   28,   29,   30,   31,
-       32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
-       18,   42,   43,   18,   44,   45,   48,   48,   48,   48,
-       48,   48,   48,   50,   50,   50,   50,   50,   50,   50,
-       51,   51,   51,   51,   51,   51,   51,   53,   54,   57,
-       58,   61,   61,   61,   61,   61,   61,   61,   62,   62,
-      792,   56,   61,   61,   61,   61,   61,   61,   61,   62,
-
-       62,   62,   64,   56,   62,   63,   65,   73,   66,   62,
-       67,   62,   68,   69,   62,   62,   70,   84,   74,   71,
-      142,   75,   85,   80,   62,   76,   62,   96,   72,   77,
-       88,   81,   97,   82,   62,   78,   62,  140,   89,   62,
-       79,   62,   83,   90,   86,   62,   91,   92,   62,  112,
-       62,  102,   62,   62,   98,   93,   87,  791,   99,   94,
-       95,  103,  100,  104,   62,   62,   62,  107,  101,   62,
-      109,  108,  147,  105,  146,  113,   62,   62,  106,  114,
-      123,  115,  125,  116,  110,  124,  111,  120,  130,  117,
-      118,  126,  119,   62,  127,  129,  139,  121,   62,  122,
-
-      130,   48,   48,   48,   48,   48,   48,   48,   53,   54,
-      131,  131,  131,  131,  131,  131,  131,  150,  132,  136,
-       62,  151,   56,  134,  134,  134,  134,  134,  134,  134,
-       62,  136,   53,   54,   56,  137,   62,   62,  138,  138,
-      138,  138,  138,  138,  138,  144,   56,   62,  148,   62,
-      141,  143,   62,   62,   62,   62,   62,   62,   56,   62,
-      145,   62,   62,  153,  157,  158,   62,   62,  163,  152,
-       62,  149,  154,  155,  160,  156,  161,  159,  162,   62,
-       62,   62,  164,   62,   62,  165,   62,  168,   62,  170,
-      167,  173,  175,  169,  172,   62,  176,   62,   62,  171,
-
-       62,   62,   62,   62,  179,   62,   62,  174,  178,   62,
-       62,  790,  188,  189,  187,  177,   62,   62,   62,  180,
-      193,  182,  183,   62,  181,  194,  185,  186,  190,  184,
-       62,   62,   62,  191,  192,   62,  197,  196,   62,  200,
-       62,  195,   62,   62,  203,   62,  205,   62,  198,  199,
-      207,  210,  204,   62,   62,  201,  208,  206,   62,  202,
-      211,   62,   62,  209,  214,   62,  223,  224,  212,   62,
-       62,  216,  213,  229,   62,  217,  218,  789,  236,  231,
-      221,  215,  219,  222,  222,  222,  222,  222,  222,  222,
-      131,  131,  131,  131,  131,  131,  131,  226,  132,   53,
-
-       54,  138,  138,  138,  138,  138,  138,  138,   62,  226,
-       62,  227,  404,   56,  228,  228,  228,  228,  228,  228,
-      228,   62,  232,   62,   62,   56,  138,  138,  138,  138,
-      138,  138,  138,   62,  233,   62,   62,   62,   62,  230,
-       62,   62,  234,   62,  238,   62,  235,  237,  239,  241,
-       62,  244,  243,   62,   62,   62,   62,  246,   62,   62,
-       62,  240,   62,  252,  242,  249,   62,  245,  253,  255,
-      251,   62,   62,  254,  247,  257,  250,  259,  248,   62,
-      258,   62,  260,   62,   62,  256,  262,   62,  263,   62,
-      264,   62,   62,   62,   62,  265,  261,  269,   62,  271,
-
-      266,  270,   62,  268,   62,  267,  273,   62,   62,  274,
-       62,   62,  275,  277,   62,   62,  272,   62,  282,   62,
-       62,   62,  278,  280,  283,   62,  281,  276,  284,   62,
-       62,   62,  279,   62,  289,  287,   62,  291,   62,   62,
-      293,  285,   62,   62,  286,  294,   62,   62,  288,   62,
-      290,   62,   62,   62,   62,   62,   62,  292,   62,  296,
-      298,  295,   62,   62,   62,  297,  302,   62,  305,   62,
-      299,  307,  301,  300,  304,  303,  308,  306,  356,  327,
-      325,  310,  309,  312,  312,  312,  312,  312,  312,  312,
-       62,  311,  222,  222,  222,  222,  222,  222,  222,  222,
-
-      222,  222,  222,  222,  222,  222,  225,  225,  225,  225,
-      225,  225,  225,  314,  314,  314,  314,  314,  314,  314,
-      315,  316,  317,  319,   62,  788,  320,  320,  320,  320,
-      320,  320,  320,   62,  318,  228,  228,  228,  228,  228,
-      228,  228,   62,  323,   62,   62,  318,  228,  228,  228,
-      228,  228,  228,  228,   62,   62,  322,   62,  324,   62,
-       62,  326,  329,  332,   62,  330,  328,   62,  334,   62,
-       62,   62,   62,   62,   62,   62,   62,  345,  338,   62,
-       62,  331,   62,  336,  335,  333,  346,   62,   62,   62,
-       62,  343,  337,  348,  339,  344,  347,   62,   62,  353,
-
-      349,   62,  359,  355,   62,  357,   62,   62,   62,   62,
-      362,   62,  354,  358,   62,  360,   62,  363,  364,   62,
-      366,   62,  367,  361,   62,  368,   62,  365,   62,   62,
-      373,  369,   62,   62,   62,   62,   62,   62,   62,  370,
-       62,   62,   62,   62,  379,  371,  376,  375,  372,  378,
-      383,   62,  377,   62,  374,  381,   62,  384,   62,  380,
-      385,   62,  382,   62,  389,  388,  390,  386,  391,  392,
-      393,   62,   62,  394,  387,   62,   62,   62,  317,  410,
-      414,  395,  396,  312,  312,  312,  312,  312,  312,  312,
-      397,  398,  398,  398,  398,  398,  398,  398,  317,  406,
-
-      402,  418,  397,  403,  403,  403,  403,  403,  403,  403,
-      400,  320,  320,  320,  320,  320,  320,  320,   62,   62,
-      787,   62,  400,  320,  320,  320,  320,  320,  320,  320,
-      405,   62,   62,   62,   62,   62,   62,   62,  408,  413,
-      411,  407,   62,  409,  423,   62,  416,   62,  424,   62,
-       62,   62,   62,   62,   62,   62,  412,  417,  415,  419,
-      428,   62,   62,   62,   62,  432,  425,  427,  437,  426,
-      434,  440,   62,   62,   62,   62,  441,  435,  438,   62,
-       62,   62,   62,  439,   62,  433,   62,   62,   62,  445,
-       62,  449,  786,   62,   62,  444,  443,  446,  448,  450,
-
-      451,  442,  452,  447,  453,   62,   62,  455,  456,   62,
-       62,   62,  461,   62,  459,  454,  457,  464,  458,   62,
-       62,   62,   62,  460,   62,  463,  462,   62,  480,   62,
-      471,   62,  467,   62,   62,  466,   62,  481,  482,   62,
-      486,   62,  465,  506,  473,  785,  472,  474,  474,  474,
-      474,  474,  474,  474,  315,  316,  317,  398,  398,  398,
-      398,  398,  398,  398,  317,  484,  476,  483,  318,  477,
-      477,  477,  477,  477,  477,  477,  475,  784,  783,  782,
-      318,  478,  478,  478,  478,  478,  478,  478,  475,  403,
-      403,  403,  403,  403,  403,  403,  317,  403,  403,  403,
-
-      403,  403,  403,  403,   62,   62,   62,   62,   62,   62,
-       62,   62,  490,   62,   62,   62,   62,  489,   62,  497,
-       62,  487,   62,  485,  499,   62,  505,   62,  491,  503,
-      488,  510,   62,  496,  492,  498,   62,  504,  507,   62,
-       62,   62,  511,   62,   62,   62,   62,   62,  516,   62,
-       62,  509,   62,   62,   62,  781,  513,  514,  525,   62,
-      512,  522,  515,   62,  519,  520,  521,   62,   62,  517,
-      518,   62,  523,  527,   62,   62,  524,  526,  529,   62,
-       62,  528,  534,  540,  535,  474,  474,  474,  474,  474,
-      474,  474,  539,  530,  317,  474,  474,  474,  474,  474,
-
-      474,  474,  536,  780,  542,  537,  537,  537,  537,  537,
-      537,  537,  477,  477,  477,  477,  477,  477,  477,  317,
-      477,  477,  477,  477,  477,  477,  477,  478,  478,  478,
-      478,  478,  478,  478,   62,   62,   62,   62,   62,  541,
-       62,   62,   62,  544,  546,   62,   62,   62,   62,   62,
-      543,  552,  538,   62,   62,   62,   62,   62,  559,   62,
-      556,  557,  545,  550,   62,  558,  551,  566,  564,  565,
-       62,  560,   62,   62,   62,  562,  568,   62,  563,   62,
-      567,  571,   62,   62,   62,  572,   62,   62,  573,  574,
-      570,  569,   62,   62,  576,   62,  583,   62,  577,  537,
-
-      537,  537,  537,  537,  537,  537,  575,  585,   62,  584,
-       62,  578,  579,  317,  537,  537,  537,  537,  537,  537,
-      537,   62,   62,   62,   62,   62,   62,  587,   62,  586,
-       62,  595,  589,   62,   62,   62,  600,   62,   62,   62,
-       62,  588,   62,  602,   62,  605,   62,  591,  606,   62,
-      596,   62,  590,  601,  607,  608,  603,   62,  609,  612,
-       62,  610,  615,  613,  616,  614,   62,   62,   62,  611,
-      618,   62,   62,   62,   62,   62,   62,  619,   62,   62,
-      620,   62,   62,   62,  629,   62,  779,   62,   62,  617,
-      778,   62,  626,   62,  627,  621,  625,  646,   62,  628,
-
-      630,  644,  631,  645,   62,  641,  639,  635,  643,  640,
-      648,   62,   62,   62,   62,  647,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,  657,   62,  649,  658,
-      660,   62,  651,  650,  659,  661,  652,   62,   62,  656,
-      669,  673,  671,  670,   62,  680,  672,  676,  674,   62,
-       62,   62,   62,   62,  675,   62,  682,   62,  694,  681,
-      683,   62,   62,   62,   62,   62,  693,  692,   62,   62,
-      691,   62,  695,   62,   62,  777,   62,   62,  701,  702,
-      690,  699,  713,  709,   62,  711,  717,  700,   62,   62,
-      718,   62,  710,   62,  719,   62,   62,   62,   62,  720,
-
-       62,   62,  727,  734,  776,   62,  775,  730,  774,  735,
-      728,  760,  742,  749,  744,  748,   52,   52,   55,  773,
-       55,  772,  771,   55,   62,   62,   62,   62,   50,  770,
-       50,  769,  768,   50,   51,  767,  766,   51,  133,  133,
-      133,  133,  135,  765,  764,  135,   61,  763,   61,   61,
-      220,  220,  131,  131,  131,  131,  225,  762,  225,  134,
-      761,  134,   62,  759,  134,  313,  758,  313,  313,  312,
-      757,  312,  312,  314,  314,   62,  756,  314,  399,  399,
-       62,  755,  399,  401,  401,  479,  754,  479,  479,  478,
-      753,  478,  478,  752,  751,  750,  747,  746,  745,  743,
-
-       62,  741,  740,  739,  738,  737,  736,   62,   62,  733,
-      732,  731,  729,   62,  726,  725,  724,  723,  722,  721,
-      716,  715,  714,  712,   62,  708,  707,  706,  705,  704,
-      703,  698,  697,  696,   62,   62,  689,  688,  687,  686,
-      685,  684,   62,   62,  679,  678,  677,   62,   62,  668,
-       62,   62,   62,  667,  666,  665,   62,  664,  663,  662,
-       62,  655,  654,  653,   62,   62,   62,   62,   62,   62,
-       62,  642,   62,  638,  637,  636,   62,  634,  633,  632,
-       62,   62,  624,  623,  622,   62,   62,  604,   62,  599,
-      598,  597,   62,  594,  593,  592,   62,   62,  582,  581,
-
-      580,   62,   62,   62,   62,  561,  555,  554,  553,   62,
-      549,  548,  547,   62,   62,   62,   62,  533,  532,  531,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,  508,
-      502,  501,  500,   62,   62,  495,  494,  493,   62,   62,
-       62,   62,   62,  470,  469,  468,   62,   62,  436,  431,
-      430,  429,   62,  422,  421,  420,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,  352,  351,  350,  342,
-      341,  340,   62,   62,   62,   62,   62,  321,   62,   62,
-       62,   62,   62,   62,  132,   62,   62,  166,   62,   46,
-      128,   60,   59,   49,   47,   46,  793,    3,  793,  793,
-
-      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
-      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
-      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
-      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
-      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
-      793,  793,  793,  793
+        4,    5,    6,    7,    8,    9,   10,    8,   11,   11,
+       12,   13,   14,   14,   14,   14,   14,   14,   14,   15,
+       16,   17,   18,   18,   18,   18,   19,   18,   18,   20,
+       21,   22,   23,   24,   25,   26,   27,   28,   29,   30,
+       31,   32,   33,   34,   35,   36,   37,   38,   39,   40,
+       18,   41,   18,   18,   42,   43,   46,   46,   46,   46,
+       46,   46,   46,   48,   48,   48,   48,   48,   48,   48,
+       49,   49,   49,   49,   49,   49,   49,   51,   51,   52,
+       62,   53,   53,   53,   53,   53,   53,   53,   56,   57,
+       60,   62,   55,   61,   61,   61,   61,   61,   61,   61,
+
+       62,   62,   96,   62,   55,   60,   60,   84,   61,   61,
+       61,   61,   61,   61,   61,   64,   65,   62,   66,   62,
+       67,   63,   68,   62,  106,   73,  142,   62,  107,   62,
+       62,   69,   85,   70,   62,   74,   71,   76,   75,  111,
+      101,   77,   62,   80,   62,   72,   78,   62,   88,  102,
+       81,   79,   82,   62,   86,  161,   89,   62,  129,   62,
+       90,   83,   60,   91,   92,   87,   62,   62,  143,  103,
+      129,   93,  108,   97,   62,   94,   95,   98,  104,   62,
+       62,   99,   62,  105,  112,  109,  100,  110,  113,  114,
+      119,  115,   62,  135,   62,  124,   62,  116,  117,  120,
+
+      118,  121,  149,  125,  127,  135,  122,  160,  144,   62,
+      123,   46,   46,   46,   46,   46,   46,   46,   51,   51,
+       52,   62,   48,   48,   48,   48,   48,   48,   48,  146,
+      145,   62,   62,  128,  130,  130,  130,  130,  130,  130,
+      130,  166,  131,  205,   60,  128,  133,  133,  133,  133,
+      133,  133,  133,   51,   51,   52,   62,   53,   53,   53,
+       53,   53,   53,   53,  147,   62,   60,   62,   55,  136,
+      136,  136,  136,  136,  136,  136,   62,   62,  148,   62,
+       55,  138,  139,   62,  150,  140,  140,  140,  140,  140,
+      140,  140,   62,   62,  151,   62,  155,  153,   62,  152,
+
+       62,  154,  156,   60,   62,   62,   62,  162,   62,  163,
+      157,  158,  164,  159,  168,   62,   62,  165,   62,   62,
+      167,   62,   62,  169,  171,  173,  176,  170,  172,  175,
+       62,  179,  174,   62,  178,   62,   62,   62,   62,   62,
+      182,  177,  181,  180,   62,   62,   62,   62,  189,   62,
+      190,  191,   62,   62,  196,  184,  185,   62,  183,  195,
+      187,  188,  194,  186,   62,  192,   62,  198,   62,   62,
+      193,  206,  199,   62,  197,  207,  202,   62,   62,   62,
+      209,   60,   62,  200,  201,  208,  212,   62,   62,   62,
+       62,  203,  210,  213,  211,  204,  216,  215,  218,  138,
+
+      138,  214,  219,  220,  223,  223,  225,  225,  226,  229,
+      229,   62,  217,  130,  130,  130,  130,  130,  130,  130,
+       62,  131,   51,   51,   52,  235,  133,  133,  133,  133,
+      133,  133,  133,  228,   62,   60,   62,  128,  136,  136,
+      136,  136,  136,  136,  136,  228,  234,  260,  246,  128,
+      222,  222,  222,  222,  222,  222,  222,  222,  222,  222,
+      222,  222,  222,  222,   60,   62,  141,  140,  140,  140,
+      140,  140,  140,  140,   62,   62,   62,  232,   62,   62,
+       62,  233,   62,   62,  239,  237,  236,  241,   62,  238,
+       62,   62,  240,  242,   62,   62,   62,  247,  244,   62,
+
+       62,   62,  249,   62,   60,   62,   60,   62,  243,   62,
+      252,   62,  245,   62,   62,  254,  250,  248,  262,  258,
+      253,  263,  251,  261,   62,   62,  265,  268,  266,  259,
+      267,  269,   62,  255,   62,   62,   62,  256,   62,   62,
+      264,   62,  257,  271,  272,   62,  270,   62,  273,   62,
+       62,  275,   62,   62,   62,  274,  276,  277,  279,   62,
+       62,  282,   62,  280,  283,   62,  284,  278,   62,   62,
+      286,  281,  285,   62,   62,   62,   62,   62,   62,   62,
+      287,  295,  289,  288,  291,  293,   62,  290,   62,   62,
+      300,   62,  292,   62,  296,   62,  297,  294,   62,   62,
+
+       62,   62,   62,   62,   62,   62,  298,   62,  321,  321,
+      299,   62,  304,  301,  307,  303,  302,  306,  310,  309,
+      305,  312,   62,  308,  313,  311,   60,  333,  359,  314,
+      314,  314,  314,  314,  314,  314,  222,  222,  222,  222,
+      222,  222,  222,  224,  224,  224,  224,  224,  224,  224,
+      224,  224,  224,  224,  224,  224,  224,  227,  227,  227,
+      227,  227,  227,  227,  316,  316,  316,  316,  316,  316,
+      316,  317,  317,  318,  319,  230,  230,  230,  230,  230,
+      230,  230,   60,   62,   62,   60,  320,  230,  230,  230,
+      230,  230,  230,  230,   62,   62,   60,  328,  320,  323,
+
+      323,  323,  323,  323,  323,  323,  326,   62,   62,   62,
+       62,   62,  327,   62,  330,   62,  329,  336,  331,   62,
+      334,   62,   62,  338,   62,   60,   62,   60,   60,  636,
+       62,   62,  332,  342,  335,   62,  340,  339,   62,  337,
+       62,   62,  349,   62,   60,  341,  352,  344,  343,  347,
+      348,  350,  354,  345,  346,   60,  351,   60,   62,   62,
+      355,  360,   62,   62,  356,   62,   62,  353,   62,  363,
+       62,   62,   62,   62,   62,   62,  357,  366,  361,   62,
+       62,  367,  368,  358,   62,  370,  362,   62,   62,  365,
+      364,   62,   62,  369,  371,   62,  373,   62,  372,  374,
+
+       62,  377,   62,   62,   62,   62,   62,   62,   62,   62,
+      375,   62,  379,   62,  376,  382,  380,  378,  381,  383,
+       62,  387,   62,  385,  388,  389,   62,  384,  393,  386,
+      394,   62,  395,  396,  390,   62,  397,   62,  392,   62,
+       62,  408,  391,  398,  319,  399,   60,  400,   62,  314,
+      314,  314,  314,  314,  314,  314,  401,  402,  402,  402,
+      402,  402,  402,  402,  319,  406,  406,  417,  401,  322,
+      322,  322,  322,  322,  322,  322,  404,  322,  322,  322,
+      322,  322,  322,  322,   62,   62,   60,   62,  404,  323,
+      323,  323,  323,  323,  323,  323,  409,   62,   62,   62,
+
+       62,   62,   62,  412,   62,  414,  415,  410,  411,  413,
+       62,   62,   62,   60,  420,   60,   60,  418,   62,   62,
+       62,  416,   62,   62,  419,  428,  423,   62,   60,  421,
+       60,   60,   62,   62,  422,   62,  432,  436,  429,  431,
+      426,  430,   60,  427,   62,  424,   62,   62,  433,  438,
+      434,  435,   62,  425,   62,   62,  437,  441,  439,   62,
+      444,   62,   62,   62,   62,   62,  445,  443,  440,  442,
+       62,   62,   62,   62,  462,  449,   62,   62,   62,  450,
+       62,  447,  448,  446,  452,  455,  453,  451,  457,   62,
+      458,  456,  459,  454,   62,   62,  460,   62,  463,  461,
+
+       62,   62,   62,   62,   62,   62,   60,  464,  467,   62,
+       60,   60,   60,  466,  472,  471,  473,  470,  465,  474,
+       62,  477,  477,   62,  468,  469,  475,  476,  317,  317,
+      318,  319,  402,  402,  402,  402,  402,  402,  402,  319,
+      480,  480,  502,  320,  482,  482,  482,  482,  482,  482,
+      482,  479,  484,   62,   62,  320,  407,  407,  407,  407,
+      407,  407,  407,  479,  319,  407,  407,  407,  407,  407,
+      407,  407,   62,   62,   62,   62,  485,   62,   62,   62,
+      486,  487,   62,  490,   62,   62,   62,   60,  494,   60,
+       60,   62,  493,  489,  491,   62,   62,  488,   60,   60,
+
+       60,  492,  501,  495,   62,  503,   62,   62,   62,  496,
+       60,   62,  500,  507,  497,  510,  509,   62,   62,   62,
+      508,   62,   62,  514,   62,   62,  511,  498,  515,  499,
+      504,  505,  506,   62,  520,   62,   62,   62,  518,  513,
+       62,   62,  516,   62,  519,   62,   62,   62,  526,  517,
+      529,   62,   62,  512,   60,  523,   62,   62,  521,  522,
+       60,  524,  527,  525,  528,  532,  531,  533,   60,   62,
+      530,   62,   62,  534,  535,  540,  540,   62,   62,   62,
+      536,  539,  544,  545,   62,   60,   60,  563,  537,  542,
+      548,  538,  478,  478,  478,  478,  478,  478,  478,  319,
+
+      478,  478,  478,  478,  478,  478,  478,  481,  481,  481,
+      481,  481,  481,  481,  319,  481,  481,  481,  481,  481,
+      481,  481,  482,  482,  482,  482,  482,  482,  482,   62,
+       62,   62,   62,   62,   60,   60,   60,  550,   62,   62,
+       60,   62,   60,   60,   62,  543,  547,  556,   62,   62,
+       62,   60,   62,  546,  549,  551,  552,   62,  560,  554,
+      562,   62,  555,  561,   62,  568,  553,   62,   62,   62,
+      557,  564,  558,  559,  567,   62,   62,  566,  570,  571,
+      569,   62,  573,   62,   62,  575,   62,  565,   62,  576,
+       62,  572,  574,   62,  578,   62,   62,   60,  577,   60,
+
+      580,   60,   62,   60,   62,  581,   62,   62,   62,  579,
+       60,  587,  590,  582,  583,  541,  541,  541,  541,  541,
+      541,  541,  588,   62,  591,  592,   62,   62,   60,  584,
+       60,  585,   62,  586,  319,  541,  541,  541,  541,  541,
+      541,  541,  589,   62,  593,  598,   62,   60,   60,  595,
+       60,  596,  599,   62,  594,   62,   60,   62,  597,   62,
+       62,  604,   62,   62,   62,   62,  600,  606,   62,   62,
+      609,  611,  610,   62,  612,   62,   62,  605,   62,   62,
+      607,   62,  613,  618,   62,  620,  601,  602,  614,  603,
+       62,  616,   62,  619,  622,  617,  624,  608,   60,   60,
+
+       60,  615,  623,   62,  625,   62,   62,  621,   62,   62,
+       60,   62,   60,   62,  633,   62,   60,   60,   60,   62,
+       62,   62,   60,   62,  630,  629,   62,  631,  626,  627,
+      628,  634,  632,  635,   62,   62,  637,  648,   62,   62,
+      650,  645,  643,  639,  644,  647,  638,   62,  646,  649,
+       62,  651,   62,  652,  653,  640,  641,  642,   62,   60,
+       60,   60,   62,   62,   62,   62,   60,   62,   60,   62,
+      654,   60,  661,  656,   60,  662,  655,  664,  663,  665,
+       60,  668,   60,   60,  660,   62,   62,   62,  667,   60,
+       62,   62,   62,   62,  676,   60,   62,   60,  657,  658,
+
+      659,  678,  679,  669,   62,  666,  673,  674,  675,  677,
+       62,   62,  670,   60,  671,  680,  686,   62,  684,   60,
+      672,  685,   60,   60,   60,  687,   60,   62,  681,   62,
+       60,   62,   62,  698,  682,   62,  683,   60,   60,  688,
+       62,  697,  690,  696,   62,  695,  699,   62,   62,  691,
+      692,  689,  693,   62,   60,  694,   60,   60,  703,   60,
+       60,  705,  700,   60,   62,   62,   60,  706,   60,  701,
+      702,  704,   62,   60,  707,  713,   60,   62,   62,  710,
+      711,   62,  708,  712,  717,   62,  715,  714,  724,  709,
+       62,  716,   60,  721,  718,   60,  722,   60,   60,  719,
+
+       60,  723,  720,   62,   60,   62,   60,   60,   62,   60,
+       62,   60,   60,   60,   62,   60,  725,  738,  731,   60,
+       60,  732,  734,  727,  728,   60,  729,  735,  739,  726,
+      730,  736,  733,  737,   62,   62,   60,   60,   60,   60,
+      741,   62,   62,   60,  740,   60,  746,   60,   60,  742,
+      753,  748,   60,  743,  744,   60,   60,  752,   60,  745,
+      747,   60,   60,  749,  750,  751,   62,   60,  754,   60,
+       60,   60,   60,  757,   60,  756,  764,  758,   60,   62,
+      759,   60,   60,   60,  755,   60,  760,   60,   60,   60,
+       60,   60,  761,  765,   60,  762,  763,   60,  766,   60,
+
+       60,  768,  769,   60,  770,   60,  772,  773,  774,  767,
+      777,  771,  775,  778,   60,   60,  776,   60,   60,  779,
+      781,  780,   60,  785,  782,   60,   60,   60,   60,   60,
+      783,   62,   62,   62,   62,  784,   62,   62,   62,  786,
+      789,   62,   62,   62,  790,   60,   62,  788,  787,  791,
+      792,  793,   62,   62,   62,   62,   62,  796,   62,  794,
+      795,   50,   50,   54,   54,   54,   62,   54,   62,   54,
+       54,   62,   62,   62,   62,   62,   62,   62,   49,   62,
+       62,   49,  132,  132,  132,  132,  134,   62,   62,  134,
+      137,   62,   62,  137,   62,  137,  137,   61,   62,   62,
+
+       61,   62,   61,   61,  221,  221,  222,  222,   62,   62,
+      222,  224,  224,   62,   62,  224,  130,  130,  130,  130,
+      227,  227,  227,   62,  227,  230,  230,   62,   62,  230,
+      136,   62,   62,  136,   62,  136,  136,  231,  231,  315,
+       62,   62,  315,   62,  315,  315,  322,  322,   62,   62,
+      322,  324,   62,   62,  324,   62,  324,  324,  314,   62,
+       62,  314,   62,  314,  314,  316,  316,   62,   62,  316,
+      403,  403,   62,   62,  403,  405,  405,  407,  407,   62,
+       62,  407,  323,   62,   62,  323,   60,  323,  323,  478,
+      478,   62,   62,  478,  481,  481,   62,   62,  481,  483,
+
+       62,  483,  483,  541,  541,   62,   62,  541,  482,   60,
+      482,  482,   60,   62,   62,   62,   62,   62,   62,   62,
+       62,   62,   62,  325,   62,   62,   62,   62,   62,   60,
+      131,   62,   62,   62,   60,  141,   44,  126,   59,   58,
+       47,   45,   44,  797,    3,  797,  797,  797,  797,  797,
+      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
+      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
+      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
+      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
+      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
+
+      797
     } ;
 
-static grib_yyconst flex_int16_t grib_yy_chk[1755] =
+static grib_yyconst flex_int16_t grib_yy_chk[2002] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -897,192 +928,220 @@ static grib_yyconst flex_int16_t grib_yy_chk[1755] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    9,    9,    9,    9,
         9,    9,    9,   11,   11,   11,   11,   11,   11,   11,
-       12,   12,   12,   12,   12,   12,   12,   14,   14,   15,
-       15,   18,   18,   18,   18,   18,   18,   18,   20,   22,
-      788,   14,   19,   19,   19,   19,   19,   19,   19,   23,
-
-       27,   24,   20,   14,   31,   19,   22,   24,   22,   32,
-       22,   66,   22,   23,   26,   25,   23,   27,   24,   23,
-       66,   24,   28,   26,   29,   25,   64,   31,   23,   25,
-       29,   26,   32,   26,   28,   25,   30,   64,   29,   38,
-       25,   34,   26,   30,   28,   36,   30,   30,   33,   38,
-       69,   34,   70,   35,   33,   30,   28,  787,   33,   30,
-       30,   34,   33,   35,   37,   39,   41,   36,   33,   42,
-       37,   36,   70,   35,   69,   39,   43,   40,   35,   39,
-       41,   39,   42,   39,   37,   41,   37,   40,   51,   39,
-       39,   42,   39,   63,   43,   48,   63,   40,   73,   40,
-
-       51,   48,   48,   48,   48,   48,   48,   48,   50,   50,
-       52,   52,   52,   52,   52,   52,   52,   73,   52,   54,
-       71,   73,   50,   53,   53,   53,   53,   53,   53,   53,
-       67,   54,   55,   55,   50,   56,   65,   68,   56,   56,
-       56,   56,   56,   56,   56,   68,   55,   72,   71,   74,
-       65,   67,   78,   76,   75,   81,   79,   77,   55,   82,
-       68,   83,   80,   75,   76,   77,   86,   87,   82,   74,
-       88,   72,   75,   75,   79,   75,   80,   78,   81,   84,
-       89,   90,   83,   93,   91,   84,   95,   87,   94,   89,
-       86,   93,   94,   88,   91,   96,   95,   98,   97,   90,
-
-       99,  100,  101,  102,   98,  103,  104,   93,   97,  105,
-      108,  786,  104,  105,  103,   96,  109,  106,  110,   99,
-      108,  101,  101,  111,  100,  109,  102,  102,  105,  101,
-      112,  113,  114,  105,  106,  117,  112,  111,  115,  113,
-      116,  110,  119,  118,  114,  120,  116,  121,  112,  112,
-      118,  121,  115,  123,  122,  113,  119,  117,  124,  113,
-      122,  125,  126,  120,  124,  127,  132,  132,  122,  143,
-      139,  125,  123,  139,  150,  125,  126,  785,  150,  143,
-      130,  124,  127,  130,  130,  130,  130,  130,  130,  130,
-      133,  133,  133,  133,  133,  133,  133,  135,  133,  134,
-
-      134,  137,  137,  137,  137,  137,  137,  137,  144,  135,
-      321,  136,  321,  134,  136,  136,  136,  136,  136,  136,
-      136,  152,  144,  156,  145,  134,  138,  138,  138,  138,
-      138,  138,  138,  141,  145,  147,  149,  151,  153,  141,
-      154,  155,  147,  158,  152,  157,  149,  151,  153,  155,
-      159,  157,  156,  160,  161,  162,  164,  159,  165,  167,
-      168,  154,  169,  166,  155,  162,  171,  158,  166,  167,
-      165,  170,  172,  166,  160,  169,  164,  171,  161,  173,
-      170,  175,  172,  176,  177,  168,  174,  180,  174,  178,
-      174,  179,  181,  183,  182,  175,  173,  178,  174,  180,
-
-      175,  179,  184,  177,  185,  176,  182,  186,  187,  183,
-      188,  192,  184,  186,  190,  189,  181,  191,  190,  193,
-      194,  195,  187,  189,  191,  197,  189,  185,  192,  196,
-      198,  199,  188,  200,  197,  195,  201,  199,  204,  202,
-      201,  193,  203,  205,  194,  202,  206,  207,  196,  208,
-      198,  209,  210,  213,  214,  211,  212,  200,  233,  204,
-      206,  203,  215,  216,  217,  205,  210,  218,  212,  238,
-      207,  214,  209,  208,  211,  210,  215,  213,  269,  238,
-      233,  217,  216,  220,  220,  220,  220,  220,  220,  220,
-      269,  218,  221,  221,  221,  221,  221,  221,  221,  222,
-
-      222,  222,  222,  222,  222,  222,  223,  223,  223,  223,
-      223,  223,  223,  224,  224,  224,  224,  224,  224,  224,
-      225,  225,  225,  226,  231,  780,  226,  226,  226,  226,
-      226,  226,  226,  230,  225,  227,  227,  227,  227,  227,
-      227,  227,  239,  231,  232,  240,  225,  228,  228,  228,
-      228,  228,  228,  228,  236,  241,  230,  242,  232,  243,
-      244,  236,  240,  243,  245,  241,  239,  246,  245,  248,
-      250,  251,  255,  257,  256,  261,  258,  257,  251,  259,
-      265,  242,  260,  248,  246,  244,  258,  266,  270,  271,
-      274,  255,  250,  260,  251,  256,  259,  267,  273,  265,
-
-      261,  275,  273,  267,  276,  270,  278,  280,  279,  285,
-      276,  283,  266,  271,  281,  274,  282,  278,  279,  286,
-      281,  287,  282,  275,  288,  283,  289,  280,  290,  291,
-      289,  285,  292,  293,  295,  297,  298,  294,  299,  286,
-      301,  302,  300,  303,  295,  287,  292,  291,  288,  294,
-      300,  304,  293,  305,  290,  298,  307,  301,  330,  297,
-      302,  308,  299,  333,  306,  305,  306,  303,  306,  306,
-      307,  310,  311,  308,  304,  325,  306,  337,  314,  330,
-      333,  310,  311,  313,  313,  313,  313,  313,  313,  313,
-      314,  315,  315,  315,  315,  315,  315,  315,  316,  325,
-
-      318,  337,  314,  318,  318,  318,  318,  318,  318,  318,
-      316,  319,  319,  319,  319,  319,  319,  319,  343,  332,
-      779,  323,  316,  320,  320,  320,  320,  320,  320,  320,
-      323,  326,  328,  329,  331,  334,  335,  336,  328,  332,
-      331,  326,  345,  329,  343,  338,  335,  346,  345,  347,
-      348,  349,  354,  355,  359,  358,  331,  336,  334,  338,
-      349,  353,  360,  361,  362,  353,  346,  348,  358,  347,
-      354,  361,  363,  364,  365,  366,  362,  355,  359,  368,
-      367,  370,  373,  360,  369,  353,  371,  376,  377,  366,
-      382,  370,  778,  385,  374,  365,  364,  367,  369,  370,
-
-      371,  363,  373,  368,  374,  375,  378,  376,  377,  379,
-      380,  381,  382,  383,  380,  375,  378,  385,  379,  384,
-      386,  387,  388,  381,  393,  384,  383,  394,  404,  404,
-      393,  408,  388,  407,  412,  387,  434,  407,  408,  409,
-      412,  410,  386,  434,  397,  777,  394,  397,  397,  397,
-      397,  397,  397,  397,  398,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  399,  410,  400,  409,  398,  400,
-      400,  400,  400,  400,  400,  400,  399,  776,  775,  774,
-      398,  401,  401,  401,  401,  401,  401,  401,  399,  402,
-      402,  402,  402,  402,  402,  402,  403,  403,  403,  403,
-
-      403,  403,  403,  403,  411,  413,  414,  415,  416,  417,
-      419,  424,  416,  426,  428,  427,  433,  415,  435,  426,
-      432,  413,  438,  411,  428,  440,  433,  444,  417,  432,
-      414,  440,  441,  424,  419,  427,  443,  432,  435,  448,
-      445,  446,  441,  449,  451,  450,  452,  455,  448,  457,
-      456,  438,  459,  463,  460,  773,  444,  445,  460,  471,
-      443,  456,  446,  464,  451,  452,  455,  465,  466,  449,
-      450,  467,  457,  464,  472,  482,  459,  463,  466,  483,
-      485,  465,  471,  483,  472,  473,  473,  473,  473,  473,
-      473,  473,  482,  467,  474,  474,  474,  474,  474,  474,
-
-      474,  474,  475,  771,  485,  475,  475,  475,  475,  475,
-      475,  475,  476,  476,  476,  476,  476,  476,  476,  477,
-      477,  477,  477,  477,  477,  477,  477,  479,  479,  479,
-      479,  479,  479,  479,  481,  484,  486,  489,  490,  484,
-      491,  496,  497,  489,  491,  498,  503,  504,  506,  507,
-      486,  498,  481,  505,  509,  510,  515,  516,  506,  518,
-      503,  504,  490,  496,  511,  505,  497,  516,  511,  515,
-      517,  507,  519,  520,  523,  509,  518,  521,  510,  522,
-      517,  521,  525,  524,  526,  522,  527,  535,  523,  524,
-      520,  519,  528,  529,  526,  538,  535,  539,  527,  536,
-
-      536,  536,  536,  536,  536,  536,  525,  539,  541,  538,
-      544,  528,  529,  537,  537,  537,  537,  537,  537,  537,
-      537,  540,  543,  545,  546,  550,  552,  541,  556,  540,
-      557,  550,  544,  558,  559,  562,  556,  568,  563,  567,
-      570,  543,  571,  558,  573,  562,  564,  546,  563,  565,
-      552,  572,  545,  557,  564,  565,  559,  574,  567,  571,
-      575,  568,  573,  571,  574,  572,  576,  577,  578,  570,
-      576,  579,  586,  584,  587,  588,  589,  577,  595,  590,
-      578,  591,  600,  602,  589,  601,  770,  610,  607,  575,
-      769,  613,  586,  612,  587,  579,  584,  613,  614,  588,
-
-      590,  610,  591,  612,  615,  602,  600,  595,  607,  601,
-      615,  616,  617,  618,  619,  614,  625,  626,  627,  643,
-      630,  629,  644,  645,  648,  631,  626,  651,  616,  627,
-      630,  656,  618,  617,  629,  631,  619,  646,  649,  625,
-      643,  648,  645,  644,  650,  656,  646,  651,  649,  657,
-      658,  669,  661,  670,  650,  671,  658,  672,  673,  657,
-      661,  676,  680,  681,  682,  683,  672,  671,  692,  673,
-      670,  693,  676,  691,  699,  768,  695,  701,  682,  683,
-      669,  680,  695,  691,  700,  693,  699,  681,  702,  710,
-      700,  711,  692,  713,  701,  720,  718,  730,  734,  702,
-
-      728,  748,  710,  718,  767,  735,  766,  713,  765,  720,
-      711,  748,  728,  735,  730,  734,  794,  794,  795,  764,
-      795,  763,  761,  795,  796,  760,  796,  796,  797,  759,
-      797,  758,  757,  797,  798,  756,  755,  798,  799,  799,
-      799,  799,  800,  754,  753,  800,  801,  752,  801,  801,
-      802,  802,  803,  803,  803,  803,  804,  751,  804,  805,
-      750,  805,  749,  747,  805,  806,  746,  806,  806,  807,
-      745,  807,  807,  808,  808,  744,  743,  808,  809,  809,
-      742,  741,  809,  810,  810,  811,  740,  811,  811,  812,
-      739,  812,  812,  738,  737,  736,  733,  732,  731,  729,
-
-      727,  726,  725,  724,  723,  722,  721,  719,  717,  716,
-      715,  714,  712,  709,  708,  707,  706,  705,  704,  703,
-      698,  697,  696,  694,  690,  689,  688,  687,  686,  685,
-      684,  679,  678,  677,  675,  674,  667,  666,  665,  664,
-      663,  662,  660,  659,  655,  654,  653,  652,  647,  642,
-      641,  640,  639,  638,  637,  636,  635,  634,  633,  632,
-      628,  624,  623,  622,  621,  620,  611,  609,  608,  606,
-      605,  604,  603,  599,  598,  597,  596,  594,  593,  592,
-      585,  583,  582,  581,  580,  569,  566,  561,  560,  555,
-      554,  553,  551,  549,  548,  547,  542,  534,  533,  532,
-
-      531,  530,  514,  513,  512,  508,  502,  501,  500,  499,
-      495,  494,  493,  492,  488,  487,  480,  470,  469,  468,
-      462,  461,  458,  454,  453,  447,  442,  439,  437,  436,
-      431,  430,  429,  425,  423,  422,  421,  420,  418,  406,
-      405,  396,  395,  391,  390,  389,  372,  357,  356,  352,
-      351,  350,  344,  342,  341,  340,  339,  327,  324,  322,
-      309,  296,  284,  277,  272,  268,  264,  263,  262,  254,
-      253,  252,  249,  247,  237,  235,  234,  229,  219,  163,
-      148,  146,  142,  140,  131,  107,   92,   85,   62,   46,
-       44,   17,   16,   10,    7,    5,    3,  793,  793,  793,
-
-      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
-      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
-      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
-      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
-      793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
-      793,  793,  793,  793
+       12,   12,   12,   12,   12,   12,   12,   14,   14,   14,
+       31,   14,   14,   14,   14,   14,   14,   14,   15,   15,
+       18,   27,   14,   18,   18,   18,   18,   18,   18,   18,
+
+       22,   20,   31,   35,   14,   19,  796,   27,   19,   19,
+       19,   19,   19,   19,   19,   20,   22,   23,   22,   24,
+       22,   19,   22,   63,   35,   24,   63,   25,   35,   37,
+       33,   23,   28,   23,   26,   24,   23,   25,   24,   37,
+       33,   25,   29,   26,   28,   23,   25,   77,   29,   33,
+       26,   25,   26,   30,   28,   77,   29,   64,   49,   34,
+       30,   26,  795,   30,   30,   28,   36,   32,   64,   34,
+       49,   30,   36,   32,   38,   30,   30,   32,   34,   69,
+       39,   32,   41,   34,   38,   36,   32,   36,   38,   38,
+       39,   38,   40,   52,   65,   41,   76,   38,   38,   39,
+
+       38,   39,   69,   41,   46,   52,   40,   76,   65,   67,
+       40,   46,   46,   46,   46,   46,   46,   46,   48,   48,
+       48,   66,   48,   48,   48,   48,   48,   48,   48,   67,
+       66,  113,   82,   48,   50,   50,   50,   50,   50,   50,
+       50,   82,   50,  113,  794,   48,   51,   51,   51,   51,
+       51,   51,   51,   53,   53,   53,   68,   53,   53,   53,
+       53,   53,   53,   53,   68,   70,   54,   71,   53,   54,
+       54,   54,   54,   54,   54,   54,   72,   74,   68,   73,
+       53,   55,   55,   78,   70,   55,   55,   55,   55,   55,
+       55,   55,   79,   75,   71,   81,   74,   73,   80,   72,
+
+       83,   73,   75,   85,   86,   87,   88,   78,   84,   79,
+       75,   75,   80,   75,   84,   90,   89,   81,   93,   91,
+       83,   95,   98,   85,   87,   89,   93,   86,   88,   91,
+       94,   95,   90,   96,   94,   97,   99,  100,  101,  102,
+       98,   93,   97,   96,  103,  108,  105,  104,  102,  107,
+      103,  104,  109,  110,  108,  100,  100,  114,   99,  107,
+      101,  101,  105,  100,  116,  104,  111,  110,  112,  115,
+      104,  114,  111,  117,  109,  115,  112,  119,  118,  122,
+      117,  793,  120,  111,  111,  116,  120,  121,  124,  125,
+      123,  112,  118,  121,  119,  112,  123,  122,  124,  128,
+
+      128,  121,  124,  125,  129,  129,  131,  131,  131,  135,
+      135,  147,  123,  132,  132,  132,  132,  132,  132,  132,
+      159,  132,  133,  133,  133,  147,  133,  133,  133,  133,
+      133,  133,  133,  134,  172,  137,  146,  133,  137,  137,
+      137,  137,  137,  137,  137,  134,  146,  172,  159,  133,
+      138,  138,  138,  138,  138,  138,  138,  139,  139,  139,
+      139,  139,  139,  139,  140,  155,  139,  140,  140,  140,
+      140,  140,  140,  140,  142,  144,  148,  142,  150,  152,
+      153,  144,  154,  156,  153,  150,  148,  155,  157,  152,
+      158,  160,  154,  156,  161,  162,  163,  160,  158,  164,
+
+      165,  167,  162,  168,  169,  171,  788,  174,  157,  170,
+      165,  175,  158,  178,  173,  168,  163,  161,  174,  170,
+      167,  175,  164,  173,  176,  179,  177,  178,  177,  171,
+      177,  178,  183,  169,  181,  180,  182,  169,  177,  184,
+      176,  185,  169,  180,  181,  187,  179,  186,  182,  189,
+      190,  184,  188,  191,  194,  183,  185,  186,  188,  195,
+      196,  191,  192,  189,  191,  193,  192,  187,  197,  198,
+      194,  190,  193,  200,  202,  199,  208,  203,  205,  201,
+      195,  203,  197,  196,  199,  201,  206,  198,  204,  207,
+      208,  209,  200,  210,  204,  211,  205,  202,  212,  213,
+
+      215,  220,  214,  216,  217,  219,  206,  218,  228,  228,
+      207,  243,  212,  209,  214,  211,  210,  213,  217,  216,
+      212,  219,  270,  215,  220,  218,  221,  243,  270,  221,
+      221,  221,  221,  221,  221,  221,  222,  222,  222,  222,
+      222,  222,  222,  223,  223,  223,  223,  223,  223,  223,
+      224,  224,  224,  224,  224,  224,  224,  225,  225,  225,
+      225,  225,  225,  225,  226,  226,  226,  226,  226,  226,
+      226,  227,  227,  227,  227,  229,  229,  229,  229,  229,
+      229,  229,  787,  235,  233,  596,  227,  230,  230,  230,
+      230,  230,  230,  230,  234,  236,  231,  235,  227,  231,
+
+      231,  231,  231,  231,  231,  231,  233,  239,  241,  242,
+      244,  245,  234,  246,  239,  247,  236,  246,  241,  248,
+      244,  249,  251,  248,  253,  255,  254,  256,  257,  596,
+      259,  258,  242,  254,  245,  263,  251,  249,  260,  247,
+      262,  261,  260,  264,  265,  253,  263,  255,  254,  258,
+      259,  261,  265,  256,  257,  266,  262,  267,  268,  269,
+      266,  271,  272,  273,  267,  275,  276,  264,  277,  275,
+      280,  278,  281,  271,  282,  287,  268,  278,  272,  283,
+      288,  280,  281,  269,  285,  283,  273,  289,  284,  277,
+      276,  290,  292,  282,  284,  293,  287,  291,  285,  288,
+
+      295,  291,  294,  296,  299,  300,  301,  304,  303,  297,
+      289,  305,  293,  302,  290,  296,  294,  292,  295,  297,
+      306,  302,  309,  300,  303,  304,  307,  299,  308,  301,
+      308,  310,  308,  308,  305,  312,  309,  313,  307,  325,
+      308,  325,  306,  310,  316,  312,  315,  313,  336,  315,
+      315,  315,  315,  315,  315,  315,  316,  317,  317,  317,
+      317,  317,  317,  317,  318,  320,  320,  336,  316,  321,
+      321,  321,  321,  321,  321,  321,  318,  322,  322,  322,
+      322,  322,  322,  322,  329,  334,  324,  327,  318,  324,
+      324,  324,  324,  324,  324,  324,  327,  332,  330,  333,
+
+      335,  337,  338,  332,  339,  334,  335,  329,  330,  333,
+      340,  341,  342,  344,  339,  345,  346,  337,  347,  349,
+      350,  335,  351,  352,  338,  349,  342,  353,  354,  340,
+      355,  356,  358,  357,  341,  359,  353,  357,  350,  352,
+      346,  351,  360,  347,  362,  344,  363,  364,  354,  358,
+      355,  356,  365,  345,  366,  367,  357,  362,  359,  368,
+      365,  370,  369,  371,  372,  383,  366,  364,  360,  363,
+      373,  375,  377,  380,  383,  370,  374,  381,  378,  371,
+      379,  368,  369,  367,  373,  375,  374,  372,  378,  382,
+      379,  377,  380,  374,  384,  385,  381,  386,  384,  382,
+
+      387,  389,  388,  391,  390,  392,  393,  385,  388,  398,
+      786,  394,  395,  387,  393,  392,  394,  391,  386,  395,
+      397,  401,  401,  431,  389,  390,  397,  398,  402,  402,
+      402,  402,  402,  402,  402,  402,  402,  402,  402,  403,
+      404,  404,  431,  402,  405,  405,  405,  405,  405,  405,
+      405,  403,  408,  408,  413,  402,  406,  406,  406,  406,
+      406,  406,  406,  403,  407,  407,  407,  407,  407,  407,
+      407,  407,  411,  412,  414,  415,  411,  416,  418,  417,
+      412,  413,  419,  416,  420,  421,  423,  424,  420,  425,
+      426,  428,  419,  415,  417,  432,  430,  414,  433,  434,
+
+      435,  418,  430,  421,  436,  432,  437,  439,  438,  423,
+      440,  442,  428,  436,  424,  438,  437,  444,  445,  447,
+      436,  448,  449,  444,  450,  452,  439,  425,  445,  426,
+      433,  434,  435,  453,  452,  454,  455,  460,  449,  442,
+      461,  463,  447,  456,  450,  459,  464,  467,  460,  448,
+      464,  469,  471,  440,  472,  455,  468,  470,  453,  454,
+      473,  456,  461,  459,  463,  469,  468,  470,  474,  475,
+      467,  476,  485,  471,  472,  479,  479,  510,  487,  488,
+      473,  476,  487,  488,  493,  785,  776,  510,  474,  485,
+      493,  475,  477,  477,  477,  477,  477,  477,  477,  478,
+
+      478,  478,  478,  478,  478,  478,  478,  480,  480,  480,
+      480,  480,  480,  480,  481,  481,  481,  481,  481,  481,
+      481,  481,  483,  483,  483,  483,  483,  483,  483,  486,
+      489,  494,  490,  495,  498,  497,  499,  495,  500,  501,
+      504,  502,  505,  506,  507,  486,  490,  502,  509,  508,
+      511,  512,  514,  489,  494,  497,  498,  513,  507,  500,
+      509,  515,  501,  508,  523,  515,  499,  519,  520,  521,
+      504,  511,  505,  506,  514,  522,  524,  513,  520,  521,
+      519,  525,  523,  526,  527,  525,  529,  512,  528,  526,
+      530,  522,  524,  531,  528,  532,  533,  535,  527,  536,
+
+      530,  537,  539,  766,  544,  531,  545,  547,  542,  529,
+      553,  539,  544,  532,  533,  540,  540,  540,  540,  540,
+      540,  540,  542,  548,  545,  547,  549,  550,  551,  535,
+      552,  536,  543,  537,  541,  541,  541,  541,  541,  541,
+      541,  541,  543,  556,  548,  553,  554,  557,  558,  550,
+      559,  551,  554,  560,  549,  561,  565,  562,  552,  563,
+      566,  560,  567,  568,  571,  572,  556,  562,  569,  576,
+      566,  568,  567,  574,  569,  575,  577,  561,  578,  579,
+      563,  583,  571,  576,  582,  578,  557,  558,  572,  559,
+      580,  575,  581,  577,  580,  575,  582,  565,  584,  585,
+
+      586,  574,  581,  588,  583,  590,  593,  579,  591,  592,
+      597,  594,  598,  595,  593,  599,  601,  602,  603,  604,
+      606,  605,  608,  614,  590,  588,  611,  591,  584,  585,
+      586,  594,  592,  595,  617,  618,  597,  614,  620,  616,
+      617,  606,  604,  599,  605,  611,  598,  619,  608,  616,
+      621,  618,  623,  619,  620,  601,  602,  603,  622,  626,
+      627,  628,  629,  630,  631,  633,  636,  634,  637,  635,
+      621,  640,  630,  623,  638,  631,  622,  634,  633,  635,
+      641,  638,  642,  646,  629,  650,  647,  648,  637,  657,
+      649,  653,  654,  652,  650,  658,  655,  659,  626,  627,
+
+      628,  653,  654,  640,  660,  636,  647,  648,  649,  652,
+      662,  661,  641,  666,  642,  655,  662,  665,  660,  667,
+      646,  661,  668,  669,  670,  665,  671,  673,  657,  674,
+      681,  675,  676,  677,  658,  680,  659,  682,  683,  666,
+      684,  676,  668,  675,  677,  674,  680,  686,  685,  669,
+      670,  667,  671,  687,  688,  673,  689,  690,  684,  691,
+      692,  686,  681,  693,  696,  695,  698,  687,  700,  682,
+      683,  685,  697,  701,  688,  695,  702,  706,  699,  691,
+      692,  703,  689,  693,  699,  705,  697,  696,  706,  690,
+      704,  698,  707,  703,  700,  708,  704,  709,  710,  701,
+
+      711,  705,  702,  715,  712,  714,  716,  718,  717,  725,
+      722,  719,  726,  720,  724,  727,  707,  722,  714,  728,
+      729,  715,  717,  709,  710,  730,  711,  718,  724,  708,
+      712,  719,  716,  720,  732,  734,  733,  735,  736,  737,
+      726,  738,  739,  740,  725,  741,  732,  742,  743,  727,
+      739,  734,  744,  728,  729,  745,  747,  738,  749,  730,
+      733,  750,  751,  735,  736,  737,  752,  754,  740,  755,
+      756,  757,  758,  743,  759,  742,  752,  744,  760,  764,
+      745,  761,  762,  763,  741,  765,  747,  767,  768,  777,
+      772,  769,  749,  754,  773,  750,  751,  770,  755,  771,
+
+      774,  757,  758,  775,  759,  778,  761,  762,  763,  756,
+      768,  760,  765,  769,  779,  780,  767,  789,  781,  770,
+      772,  771,  782,  777,  773,  790,  791,  783,  784,  792,
+      774,  753,  748,  746,  731,  775,  723,  721,  713,  778,
+      781,  694,  679,  678,  782,  672,  664,  780,  779,  783,
+      784,  789,  663,  656,  651,  645,  644,  792,  643,  790,
+      791,  798,  798,  799,  799,  799,  639,  799,  632,  799,
+      799,  800,  625,  624,  800,  615,  800,  800,  801,  613,
+      612,  801,  802,  802,  802,  802,  803,  610,  609,  803,
+      804,  607,  600,  804,  589,  804,  804,  805,  587,  573,
+
+      805,  570,  805,  805,  806,  806,  807,  807,  564,  555,
+      807,  808,  808,  546,  538,  808,  809,  809,  809,  809,
+      810,  810,  810,  534,  810,  811,  811,  518,  517,  811,
+      812,  516,  503,  812,  496,  812,  812,  813,  813,  814,
+      492,  491,  814,  484,  814,  814,  815,  815,  466,  465,
+      815,  816,  462,  458,  816,  457,  816,  816,  817,  451,
+      446,  817,  443,  817,  817,  818,  818,  441,  429,  818,
+      819,  819,  427,  422,  819,  820,  820,  821,  821,  410,
+      409,  821,  822,  400,  399,  822,  396,  822,  822,  823,
+      823,  376,  361,  823,  824,  824,  348,  343,  824,  825,
+
+      331,  825,  825,  826,  826,  328,  326,  826,  827,  323,
+      827,  827,  314,  311,  298,  286,  279,  274,  252,  250,
+      240,  238,  237,  232,  166,  151,  149,  145,  143,  136,
+      130,  106,   92,   62,   61,   60,   44,   42,   17,   16,
+       10,    7,    5,    3,  797,  797,  797,  797,  797,  797,
+      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
+      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
+      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
+      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
+      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
+
+      797
     } ;
 
 static grib_yy_state_type grib_yy_last_accepting_state;
@@ -1148,7 +1207,7 @@ void _grib_ignore_grib_yyunput_unused_error() { grib_yyunput(0,0); }
  #define GET_INPUT input
 #endif
 
-#line 1152 "lex.grib_yy.c"
+#line 1211 "gribl.c"
 
 #define INITIAL 0
 
@@ -1330,11 +1389,11 @@ YY_DECL
 	register char *grib_yy_cp, *grib_yy_bp;
 	register int grib_yy_act;
     
-#line 68 "gribl.l"
+#line 71 "gribl.l"
 
 
 
-#line 1338 "lex.grib_yy.c"
+#line 1397 "gribl.c"
 
 	if ( !(grib_yy_init) )
 		{
@@ -1387,13 +1446,13 @@ grib_yy_match:
 			while ( grib_yy_chk[grib_yy_base[grib_yy_current_state] + grib_yy_c] != grib_yy_current_state )
 				{
 				grib_yy_current_state = (int) grib_yy_def[grib_yy_current_state];
-				if ( grib_yy_current_state >= 794 )
+				if ( grib_yy_current_state >= 798 )
 					grib_yy_c = grib_yy_meta[(unsigned int) grib_yy_c];
 				}
 			grib_yy_current_state = grib_yy_nxt[grib_yy_base[grib_yy_current_state] + (unsigned int) grib_yy_c];
 			++grib_yy_cp;
 			}
-		while ( grib_yy_base[grib_yy_current_state] != 1698 );
+		while ( grib_yy_base[grib_yy_current_state] != 1945 );
 
 grib_yy_find_action:
 		grib_yy_act = grib_yy_accept[grib_yy_current_state];
@@ -1419,637 +1478,627 @@ do_action:	/* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 71 "gribl.l"
+#line 74 "gribl.l"
 return EQ       ;
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 72 "gribl.l"
+#line 75 "gribl.l"
 return GE       ;
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 73 "gribl.l"
+#line 76 "gribl.l"
 return GT       ;
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 74 "gribl.l"
+#line 77 "gribl.l"
 return LE       ;
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 75 "gribl.l"
+#line 78 "gribl.l"
 return LT       ;
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 76 "gribl.l"
+#line 79 "gribl.l"
 return NE       ;
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 77 "gribl.l"
+#line 80 "gribl.l"
 return NE       ;
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 78 "gribl.l"
+#line 81 "gribl.l"
 return BIT      ;
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 79 "gribl.l"
+#line 82 "gribl.l"
 return BITOFF   ;
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 81 "gribl.l"
+#line 84 "gribl.l"
 return IS   ;
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 82 "gribl.l"
+#line 85 "gribl.l"
 return NOT   ;
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 83 "gribl.l"
+#line 86 "gribl.l"
 return NOT   ;
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 84 "gribl.l"
+#line 87 "gribl.l"
 return AND   ;
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 85 "gribl.l"
+#line 88 "gribl.l"
 return AND   ;
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 86 "gribl.l"
+#line 89 "gribl.l"
 return OR   ;
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 87 "gribl.l"
+#line 90 "gribl.l"
 return OR   ;
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 89 "gribl.l"
+#line 92 "gribl.l"
 return NIL   ;
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 90 "gribl.l"
+#line 93 "gribl.l"
 return DUMMY   ;
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 92 "gribl.l"
+#line 95 "gribl.l"
 return SUBSTR   ;
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 93 "gribl.l"
+#line 96 "gribl.l"
 return CLOSE   ;
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 94 "gribl.l"
+#line 97 "gribl.l"
 return LENGTH   ;
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 95 "gribl.l"
+#line 98 "gribl.l"
 return LOWERCASE;
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 96 "gribl.l"
+#line 99 "gribl.l"
 return IF       ;
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 97 "gribl.l"
+#line 100 "gribl.l"
 return IF_TRANSIENT       ;
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 98 "gribl.l"
+#line 101 "gribl.l"
 return ELSE       ;
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 99 "gribl.l"
+#line 102 "gribl.l"
 return UNSIGNED ;
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 100 "gribl.l"
+#line 103 "gribl.l"
 return ASCII    ;
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 101 "gribl.l"
+#line 104 "gribl.l"
 return BYTE    ;
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 102 "gribl.l"
+#line 105 "gribl.l"
 return LABEL    ;
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 103 "gribl.l"
+#line 106 "gribl.l"
 return LIST     ;
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 104 "gribl.l"
+#line 107 "gribl.l"
 return WHILE     ;
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 105 "gribl.l"
+#line 108 "gribl.l"
 return TEMPLATE ;
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 106 "gribl.l"
+#line 109 "gribl.l"
 return TEMPLATE_NOFAIL ;
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 107 "gribl.l"
+#line 110 "gribl.l"
 return TRIGGER ;
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 108 "gribl.l"
+#line 111 "gribl.l"
 return END      ;
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 109 "gribl.l"
+#line 112 "gribl.l"
 return IBMFLOAT ;
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 110 "gribl.l"
+#line 113 "gribl.l"
 return FLOAT ;
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 111 "gribl.l"
+#line 114 "gribl.l"
 return SIGNED   ;
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 112 "gribl.l"
+#line 115 "gribl.l"
 return CODETABLE;
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 113 "gribl.l"
+#line 116 "gribl.l"
 return GETENV;
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 114 "gribl.l"
+#line 117 "gribl.l"
 return SMART_TABLE;
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 115 "gribl.l"
+#line 118 "gribl.l"
 return DICTIONARY;
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 116 "gribl.l"
+#line 119 "gribl.l"
 return CODETABLE;
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 117 "gribl.l"
+#line 120 "gribl.l"
 return FLAG     ;
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 118 "gribl.l"
+#line 121 "gribl.l"
 return LOOKUP   ;
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 119 "gribl.l"
+#line 122 "gribl.l"
 return GROUP  ;
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 120 "gribl.l"
+#line 123 "gribl.l"
 return NON_ALPHA   ;
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 121 "gribl.l"
+#line 124 "gribl.l"
 return META     ;
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 122 "gribl.l"
+#line 125 "gribl.l"
 return PADTOEVEN    ;
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 123 "gribl.l"
+#line 126 "gribl.l"
 return PADTO    ;
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 124 "gribl.l"
+#line 127 "gribl.l"
 return PADTOMULTIPLE    ;
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 125 "gribl.l"
+#line 128 "gribl.l"
 return PAD      ;
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 126 "gribl.l"
+#line 129 "gribl.l"
 return SECTION_PADDING      ;
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 127 "gribl.l"
+#line 130 "gribl.l"
 return MESSAGE      ;
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 128 "gribl.l"
+#line 131 "gribl.l"
 return MESSAGE_COPY      ;
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 129 "gribl.l"
+#line 132 "gribl.l"
 return ALIAS    ;
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 130 "gribl.l"
+#line 133 "gribl.l"
 return UNALIAS    ;
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 131 "gribl.l"
+#line 134 "gribl.l"
 return POS      ;
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 132 "gribl.l"
+#line 135 "gribl.l"
 return INTCONST ;
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 133 "gribl.l"
+#line 136 "gribl.l"
 return TRANS    ;
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 134 "gribl.l"
+#line 137 "gribl.l"
 return STRING_TYPE   ;
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 135 "gribl.l"
+#line 138 "gribl.l"
 return LONG_TYPE   ;
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 136 "gribl.l"
+#line 139 "gribl.l"
 return DOUBLE_TYPE   ;
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 137 "gribl.l"
+#line 140 "gribl.l"
 return ITERATOR ;
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 138 "gribl.l"
+#line 141 "gribl.l"
 return NEAREST ;
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 139 "gribl.l"
+#line 142 "gribl.l"
 return BOX ;
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 140 "gribl.l"
+#line 143 "gribl.l"
 return KSEC    ;
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 141 "gribl.l"
+#line 144 "gribl.l"
 return FLAGBIT    ;
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 142 "gribl.l"
+#line 145 "gribl.l"
 return KSEC1EXPVER    ;
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 143 "gribl.l"
+#line 146 "gribl.l"
 return MODIFY    ;
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 145 "gribl.l"
+#line 148 "gribl.l"
 return G1_HALF_BYTE    ;
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 146 "gribl.l"
+#line 149 "gribl.l"
 return G1_MESSAGE_LENGTH    ;
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 147 "gribl.l"
+#line 150 "gribl.l"
 return G1_SECTION4_LENGTH    ;
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 149 "gribl.l"
+#line 152 "gribl.l"
 return EXPORT;
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 150 "gribl.l"
+#line 153 "gribl.l"
 return REMOVE;
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 151 "gribl.l"
+#line 154 "gribl.l"
 return RENAME;
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 152 "gribl.l"
+#line 155 "gribl.l"
 return IS_IN_LIST;
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 153 "gribl.l"
+#line 156 "gribl.l"
 return IS_IN_DICT;
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 154 "gribl.l"
+#line 157 "gribl.l"
 return TO_INTEGER;
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 155 "gribl.l"
+#line 158 "gribl.l"
 return TO_STRING;
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 156 "gribl.l"
+#line 159 "gribl.l"
 return SEX2DEC;
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 157 "gribl.l"
+#line 160 "gribl.l"
 return IS_INTEGER;
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 158 "gribl.l"
+#line 161 "gribl.l"
 return IS_INTEGER;
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 160 "gribl.l"
+#line 163 "gribl.l"
 return SECTION_LENGTH     ;
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 162 "gribl.l"
+#line 165 "gribl.l"
 return ASSERT    ;
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 164 "gribl.l"
+#line 167 "gribl.l"
 return READ_ONLY;
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 165 "gribl.l"
+#line 168 "gribl.l"
 return NO_COPY;
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 166 "gribl.l"
+#line 169 "gribl.l"
 return EDITION_SPECIFIC;
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 167 "gribl.l"
+#line 170 "gribl.l"
 return DUMP;
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 168 "gribl.l"
-return JSON;
-	YY_BREAK
-case 91:
-YY_RULE_SETUP
-#line 169 "gribl.l"
-return XML;
-	YY_BREAK
-case 92:
-YY_RULE_SETUP
-#line 170 "gribl.l"
+#line 171 "gribl.l"
 return NO_FAIL;
 	YY_BREAK
-case 93:
+case 91:
 YY_RULE_SETUP
-#line 171 "gribl.l"
+#line 172 "gribl.l"
 return HIDDEN;
 	YY_BREAK
-case 94:
+case 92:
 YY_RULE_SETUP
-#line 172 "gribl.l"
+#line 173 "gribl.l"
 return CAN_BE_MISSING;
 	YY_BREAK
-case 95:
+case 93:
 YY_RULE_SETUP
-#line 173 "gribl.l"
+#line 174 "gribl.l"
 return MISSING;
 	YY_BREAK
-case 96:
+case 94:
 YY_RULE_SETUP
-#line 174 "gribl.l"
+#line 175 "gribl.l"
 return CONSTRAINT;
 	YY_BREAK
-case 97:
+case 95:
 YY_RULE_SETUP
-#line 175 "gribl.l"
+#line 176 "gribl.l"
 return OVERRIDE;
 	YY_BREAK
-case 98:
+case 96:
 YY_RULE_SETUP
-#line 176 "gribl.l"
+#line 177 "gribl.l"
 return COPY_OK;
 	YY_BREAK
-case 99:
+case 97:
 YY_RULE_SETUP
-#line 178 "gribl.l"
+#line 179 "gribl.l"
 return UINT8;
 	YY_BREAK
-case 100:
+case 98:
 YY_RULE_SETUP
-#line 179 "gribl.l"
+#line 180 "gribl.l"
 return INT8;
 	YY_BREAK
-case 101:
+case 99:
 YY_RULE_SETUP
-#line 181 "gribl.l"
+#line 182 "gribl.l"
 return UINT16;
 	YY_BREAK
-case 102:
+case 100:
 YY_RULE_SETUP
-#line 182 "gribl.l"
+#line 183 "gribl.l"
 return INT16;
 	YY_BREAK
-case 103:
+case 101:
 YY_RULE_SETUP
-#line 183 "gribl.l"
+#line 184 "gribl.l"
 return UINT16_LITTLE_ENDIAN;
 	YY_BREAK
-case 104:
+case 102:
 YY_RULE_SETUP
-#line 184 "gribl.l"
+#line 185 "gribl.l"
 return INT16_LITTLE_ENDIAN;
 	YY_BREAK
-case 105:
+case 103:
 YY_RULE_SETUP
-#line 186 "gribl.l"
+#line 187 "gribl.l"
 return UINT32;
 	YY_BREAK
-case 106:
+case 104:
 YY_RULE_SETUP
-#line 187 "gribl.l"
+#line 188 "gribl.l"
 return INT32;
 	YY_BREAK
-case 107:
+case 105:
 YY_RULE_SETUP
-#line 188 "gribl.l"
+#line 189 "gribl.l"
 return UINT32_LITTLE_ENDIAN;
 	YY_BREAK
-case 108:
+case 106:
 YY_RULE_SETUP
-#line 189 "gribl.l"
+#line 190 "gribl.l"
 return INT32_LITTLE_ENDIAN;
 	YY_BREAK
-case 109:
+case 107:
 YY_RULE_SETUP
-#line 191 "gribl.l"
+#line 192 "gribl.l"
 return UINT64;
 	YY_BREAK
-case 110:
+case 108:
 YY_RULE_SETUP
-#line 192 "gribl.l"
+#line 193 "gribl.l"
 return INT64;
 	YY_BREAK
-case 111:
+case 109:
 YY_RULE_SETUP
-#line 193 "gribl.l"
+#line 194 "gribl.l"
 return UINT64_LITTLE_ENDIAN;
 	YY_BREAK
-case 112:
+case 110:
 YY_RULE_SETUP
-#line 194 "gribl.l"
+#line 195 "gribl.l"
 return INT64_LITTLE_ENDIAN;
 	YY_BREAK
-case 113:
+case 111:
 YY_RULE_SETUP
-#line 196 "gribl.l"
+#line 197 "gribl.l"
 return BLOB;
 	YY_BREAK
-case 114:
+case 112:
 YY_RULE_SETUP
-#line 198 "gribl.l"
+#line 199 "gribl.l"
 return SET;
 	YY_BREAK
-case 115:
+case 113:
 YY_RULE_SETUP
-#line 199 "gribl.l"
+#line 200 "gribl.l"
 return SET_NOFAIL;
 	YY_BREAK
-case 116:
+case 114:
 YY_RULE_SETUP
-#line 200 "gribl.l"
+#line 201 "gribl.l"
 return WHEN;
 	YY_BREAK
-case 117:
+case 115:
 YY_RULE_SETUP
-#line 201 "gribl.l"
+#line 202 "gribl.l"
 return CASE;
 	YY_BREAK
-case 118:
+case 116:
 YY_RULE_SETUP
-#line 202 "gribl.l"
+#line 203 "gribl.l"
 return SWITCH;
 	YY_BREAK
-case 119:
+case 117:
 YY_RULE_SETUP
-#line 203 "gribl.l"
+#line 204 "gribl.l"
 return DEFAULT;
 	YY_BREAK
-case 120:
+case 118:
 YY_RULE_SETUP
-#line 204 "gribl.l"
+#line 205 "gribl.l"
 return CONCEPT;
 	YY_BREAK
-case 121:
+case 119:
 YY_RULE_SETUP
-#line 205 "gribl.l"
+#line 206 "gribl.l"
 return CONCEPT_NOFAIL;
 	YY_BREAK
-case 122:
+case 120:
 YY_RULE_SETUP
-#line 206 "gribl.l"
+#line 207 "gribl.l"
 return HASH_ARRAY;
 	YY_BREAK
-case 123:
+case 121:
 YY_RULE_SETUP
-#line 207 "gribl.l"
+#line 208 "gribl.l"
 return WRITE;
 	YY_BREAK
-case 124:
+case 122:
 YY_RULE_SETUP
-#line 208 "gribl.l"
+#line 209 "gribl.l"
 return APPEND;
 	YY_BREAK
-case 125:
+case 123:
 YY_RULE_SETUP
-#line 209 "gribl.l"
+#line 210 "gribl.l"
 return PRINT;
 	YY_BREAK
-case 126:
+case 124:
 YY_RULE_SETUP
-#line 210 "gribl.l"
+#line 211 "gribl.l"
 return SKIP;
 	YY_BREAK
-case 127:
+case 125:
 YY_RULE_SETUP
-#line 212 "gribl.l"
+#line 213 "gribl.l"
 {
           int c,q;
           while((c = GET_INPUT()) && isspace(c) && c != '\n') ;
@@ -2067,9 +2116,9 @@ YY_RULE_SETUP
           grib_parser_include(grib_yytext);
          }
 	YY_BREAK
-case 128:
+case 126:
 YY_RULE_SETUP
-#line 229 "gribl.l"
+#line 230 "gribl.l"
 {
            int c,q = grib_yytext[0];
 
@@ -2089,9 +2138,9 @@ YY_RULE_SETUP
             return STRING;
         }
 	YY_BREAK
-case 129:
+case 127:
 YY_RULE_SETUP
-#line 248 "gribl.l"
+#line 249 "gribl.l"
 {
            int c;
            unsigned long val = 0;
@@ -2105,39 +2154,39 @@ YY_RULE_SETUP
            return INTEGER;
         }
 	YY_BREAK
-case 130:
-YY_RULE_SETUP
-#line 262 "gribl.l"
-{ grib_yylval.str = strdup(grib_yytext); return IDENT; }
-	YY_BREAK
-case 131:
+case 128:
 YY_RULE_SETUP
 #line 263 "gribl.l"
-{ grib_yylval.lval = atol((const char *)grib_yytext); return INTEGER; }
+{ grib_yylval.str = strdup(grib_yytext); return IDENT; }
 	YY_BREAK
-case 132:
+case 129:
 YY_RULE_SETUP
 #line 264 "gribl.l"
 { grib_yylval.lval = atol((const char *)grib_yytext); return INTEGER; }
 	YY_BREAK
-case 133:
+case 130:
 YY_RULE_SETUP
 #line 265 "gribl.l"
-{ grib_yylval.dval = atof((const char *)grib_yytext); return FLOAT; }
+{ grib_yylval.lval = atol((const char *)grib_yytext); return INTEGER; }
 	YY_BREAK
-case 134:
+case 131:
 YY_RULE_SETUP
 #line 266 "gribl.l"
 { grib_yylval.dval = atof((const char *)grib_yytext); return FLOAT; }
 	YY_BREAK
-case 135:
+case 132:
 YY_RULE_SETUP
 #line 267 "gribl.l"
 { grib_yylval.dval = atof((const char *)grib_yytext); return FLOAT; }
 	YY_BREAK
-case 136:
+case 133:
 YY_RULE_SETUP
-#line 270 "gribl.l"
+#line 268 "gribl.l"
+{ grib_yylval.dval = atof((const char *)grib_yytext); return FLOAT; }
+	YY_BREAK
+case 134:
+YY_RULE_SETUP
+#line 271 "gribl.l"
 {
            int c;
            while((c = GET_INPUT()) && (c != '\n')){}
@@ -2145,28 +2194,28 @@ YY_RULE_SETUP
         grib_yylineno++;
         }
 	YY_BREAK
-case 137:
+case 135:
 YY_RULE_SETUP
-#line 276 "gribl.l"
+#line 277 "gribl.l"
 ;
 	YY_BREAK
-case 138:
-/* rule 138 can match eol */
+case 136:
+/* rule 136 can match eol */
 YY_RULE_SETUP
-#line 277 "gribl.l"
+#line 278 "gribl.l"
 grib_yylineno++;
 	YY_BREAK
-case 139:
+case 137:
 YY_RULE_SETUP
-#line 281 "gribl.l"
+#line 282 "gribl.l"
 return *grib_yytext;
 	YY_BREAK
-case 140:
+case 138:
 YY_RULE_SETUP
-#line 283 "gribl.l"
+#line 284 "gribl.l"
 ECHO;
 	YY_BREAK
-#line 2170 "lex.grib_yy.c"
+#line 2219 "gribl.c"
 case YY_STATE_EOF(INITIAL):
 	grib_yyterminate();
 
@@ -2458,7 +2507,7 @@ static int grib_yy_get_next_buffer (void)
 		while ( grib_yy_chk[grib_yy_base[grib_yy_current_state] + grib_yy_c] != grib_yy_current_state )
 			{
 			grib_yy_current_state = (int) grib_yy_def[grib_yy_current_state];
-			if ( grib_yy_current_state >= 794 )
+			if ( grib_yy_current_state >= 798 )
 				grib_yy_c = grib_yy_meta[(unsigned int) grib_yy_c];
 			}
 		grib_yy_current_state = grib_yy_nxt[grib_yy_base[grib_yy_current_state] + (unsigned int) grib_yy_c];
@@ -2486,11 +2535,11 @@ static int grib_yy_get_next_buffer (void)
 	while ( grib_yy_chk[grib_yy_base[grib_yy_current_state] + grib_yy_c] != grib_yy_current_state )
 		{
 		grib_yy_current_state = (int) grib_yy_def[grib_yy_current_state];
-		if ( grib_yy_current_state >= 794 )
+		if ( grib_yy_current_state >= 798 )
 			grib_yy_c = grib_yy_meta[(unsigned int) grib_yy_c];
 		}
 	grib_yy_current_state = grib_yy_nxt[grib_yy_base[grib_yy_current_state] + (unsigned int) grib_yy_c];
-	grib_yy_is_jam = (grib_yy_current_state == 793);
+	grib_yy_is_jam = (grib_yy_current_state == 797);
 
 		return grib_yy_is_jam ? 0 : grib_yy_current_state;
 }
@@ -3160,7 +3209,7 @@ void grib_yyfree (void * ptr )
 
 #define YYTABLES_NAME "grib_yytables"
 
-#line 283 "gribl.l"
+#line 284 "gribl.l"
 
 
 
diff --git a/src/grib_nearest_class.c b/src/grib_nearest_class.c
index 85e8a89..282306c 100644
--- a/src/grib_nearest_class.c
+++ b/src/grib_nearest_class.c
@@ -17,7 +17,7 @@
 
 #define NUMBER(x) (sizeof(x)/sizeof(x[0]))
 
-/* This file is generated my ./make_class.pl */
+/* This file is generated by ./make_class.pl */
 #include "grib_nearest_class.h"
 
 struct table_entry
@@ -28,7 +28,7 @@ struct table_entry
 
 static struct table_entry table[] =
 {
-  /* This file is generated my ./make_class.pl */
+  /* This file is generated by ./make_class.pl */
 #include "grib_nearest_factory.h"
 };
 
diff --git a/src/grib_openjpeg_encoding.c b/src/grib_openjpeg_encoding.c
index 9271bb6..ba134b7 100644
--- a/src/grib_openjpeg_encoding.c
+++ b/src/grib_openjpeg_encoding.c
@@ -11,209 +11,537 @@
 #include "grib_api_internal.h"
 
 #if HAVE_LIBOPENJPEG
+
 #include "openjpeg.h"
 
-/* TODO: Strip the \n from msg */
 static void openjpeg_warning(const char *msg, void *client_data)
 {
-	grib_context_log((grib_context*)client_data,GRIB_LOG_WARNING,"OPENJPEG: %s",msg);
+    grib_context_log((grib_context*)client_data,GRIB_LOG_WARNING,"openjpeg: %s",msg);
 }
 
 static void openjpeg_error(const char *msg, void *client_data)
 {
-	grib_context_log((grib_context*)client_data,GRIB_LOG_ERROR,"OPENJPEG: %s",msg);
+    grib_context_log((grib_context*)client_data,GRIB_LOG_ERROR,"openjpeg: %s",msg);
 }
 
 static void openjpeg_info(const char *msg, void *client_data)
 {
-	/* grib_context_log((grib_context*)client_data,GRIB_LOG_INFO,"openjpeg: %s",msg); */
+    /* grib_context_log((grib_context*)client_data,GRIB_LOG_INFO,"openjpeg: %s",msg); */
 }
 
-int grib_openjpeg_encode(grib_context *c, j2k_encode_helper *helper) {
+/* Note: The old OpenJPEG versions (e.g. v1.5.2) did not have this macro.
+ * From OpenJPEG v2.1.0 onwards there is the macro OPJ_VERSION_MAJOR */
+#if !defined(OPJ_VERSION_MAJOR)  /* The old interface */
+
+int grib_openjpeg_encode(grib_context *c, j2k_encode_helper *helper)
+{
+    int err = GRIB_SUCCESS;
+    const int numcomps = 1;
 
-	int err = GRIB_SUCCESS;
-	const int numcomps = 1;
+    int i;
 
-	int i;
+    const double * values   = helper->values;
+    long  no_values        = helper->no_values;
+    double reference_value = helper->reference_value;
+    double divisor         = helper->divisor;
+    double decimal         = helper->decimal;
+    int*   data;
 
-	const double * values   = helper->values;
-	long  no_values        = helper->no_values;
-	double reference_value = helper->reference_value;
-	double divisor         = helper->divisor;
-	double decimal         = helper->decimal;
-	int*   data;
+    opj_cparameters_t parameters = {0,};	/* compression parameters */
+    opj_event_mgr_t event_mgr = {0,};		/* event manager */
+    opj_image_t *image = NULL;
+    opj_image_cmptparm_t cmptparm = {0,};
+    opj_cio_t *cio = NULL;
+    opj_cinfo_t* cinfo = NULL;
 
-	opj_cparameters_t parameters = {0,};	/* compression parameters */
-	opj_event_mgr_t event_mgr = {0,};		/* event manager */
-	opj_image_t *image = NULL;
-	opj_image_cmptparm_t cmptparm = {0,};
-	opj_cio_t *cio = NULL;
-	opj_cinfo_t* cinfo = NULL;
 
+    /* set encoding parameters to default values */
+    opj_set_default_encoder_parameters(&parameters);
 
-	/* set encoding parameters to default values */
-	opj_set_default_encoder_parameters(&parameters);
+    grib_context_log(c, GRIB_LOG_DEBUG, "grib_openjpeg_encode: OpenJPEG version %s", opj_version());
 
-	parameters.tcp_numlayers  = 1;
-	parameters.cp_disto_alloc = 1;
-	parameters.tcp_rates[0]   = helper->compression;
+    parameters.tcp_numlayers  = 1;
+    parameters.cp_disto_alloc = 1;
+    parameters.tcp_rates[0]   = helper->compression;
 
-	/* initialize image component */  
-	cmptparm.prec = helper->bits_per_value; 
-	cmptparm.bpp  = helper->bits_per_value; /* Not sure about this one and the previous. What is the difference? */
-	cmptparm.sgnd = 0;
-	cmptparm.dx   = 1;
-	cmptparm.dy   = 1;
-	cmptparm.w    = helper->width;
-	cmptparm.h    = helper->height;
+    /* initialize image component */
+    cmptparm.prec = helper->bits_per_value;
+    cmptparm.bpp  = helper->bits_per_value; /* Not sure about this one and the previous. What is the difference? */
+    cmptparm.sgnd = 0;
+    cmptparm.dx   = 1;
+    cmptparm.dy   = 1;
+    cmptparm.w    = helper->width;
+    cmptparm.h    = helper->height;
 
-	/* create the image */
-	image = opj_image_create(numcomps, &cmptparm, CLRSPC_GRAY);
+    /* create the image */
+    image = opj_image_create(numcomps, &cmptparm, CLRSPC_GRAY);
 
-	if(!image) {
-		err = GRIB_ENCODING_ERROR;
-		goto cleanup;
-	}
+    if(!image) {
+        err = GRIB_ENCODING_ERROR;
+        goto cleanup;
+    }
 
-	image->x0 = 0;
-	image->y0 = 0;
-	image->x1 = helper->width;
-	image->y1 = helper->height;
+    image->x0 = 0;
+    image->y0 = 0;
+    image->x1 = helper->width;
+    image->y1 = helper->height;
 
-	Assert(cmptparm.prec <= sizeof(image->comps[0].data[0])*8 - 1); /* BR: -1 because I don't know what happens if the sign bit is set */
+    Assert(cmptparm.prec <= sizeof(image->comps[0].data[0])*8 - 1); /* BR: -1 because I don't know what happens if the sign bit is set */
 
-	Assert(helper->no_values ==  image->comps[0].h * image->comps[0].w);
+    Assert(helper->no_values ==  image->comps[0].h * image->comps[0].w);
 
-	/* Simple packing */
-	data = image->comps[0].data;
-	for(i=0;i< no_values;i++){
-		unsigned long unsigned_val = (unsigned long)((((values[i]*decimal)-(reference_value))*divisor)+0.5);
-		data[i] = unsigned_val;
-	}
+    /* Simple packing */
+    data = image->comps[0].data;
+    for(i=0;i< no_values;i++){
+        unsigned long unsigned_val = (unsigned long)((((values[i]*decimal)-(reference_value))*divisor)+0.5);
+        data[i] = unsigned_val;
+    }
 
-	/* get a J2K compressor handle */
-	cinfo = opj_create_compress(CODEC_J2K);
+    /* get a J2K compressor handle */
+    cinfo = opj_create_compress(CODEC_J2K);
 
-	/* catch events using our callbacks and give a local context */
-	event_mgr.error_handler   = openjpeg_error;
-	event_mgr.info_handler    = openjpeg_info;
-	event_mgr.warning_handler = openjpeg_warning;
-	opj_set_event_mgr((opj_common_ptr)cinfo, &event_mgr, c);
+    /* catch events using our callbacks and give a local context */
+    event_mgr.error_handler   = openjpeg_error;
+    event_mgr.info_handler    = openjpeg_info;
+    event_mgr.warning_handler = openjpeg_warning;
+    opj_set_event_mgr((opj_common_ptr)cinfo, &event_mgr, c);
 
-	/* setup the encoder parameters using the current image and user parameters */
-	opj_setup_encoder(cinfo, &parameters, image);
+    /* setup the encoder parameters using the current image and user parameters */
+    opj_setup_encoder(cinfo, &parameters, image);
 
-	/* open a byte stream for writing */
-	/* allocate memory for all tiles */
-	cio = opj_cio_open((opj_common_ptr)cinfo, NULL, 0);
+    /* open a byte stream for writing */
+    /* allocate memory for all tiles */
+    cio = opj_cio_open((opj_common_ptr)cinfo, NULL, 0);
 
-	/* encode image */
-	if (!opj_encode(cinfo, cio, image, NULL)) {
-		err = GRIB_ENCODING_ERROR;
-		goto cleanup;
-	}
+    /* encode image */
+    if (!opj_encode(cinfo, cio, image, NULL)) {
+        err = GRIB_ENCODING_ERROR;
+        goto cleanup;
+    }
 
-	helper->jpeg_length = cio_tell(cio);
-	memcpy(helper->jpeg_buffer,cio->buffer,helper->jpeg_length);
+    helper->jpeg_length = cio_tell(cio);
+    memcpy(helper->jpeg_buffer,cio->buffer,helper->jpeg_length);
 
 cleanup:
-	if (cio)   opj_cio_close(cio);
-	if (cinfo) opj_destroy_compress(cinfo);
-	if (image) opj_image_destroy(image);
+    if (cio)   opj_cio_close(cio);
+    if (cinfo) opj_destroy_compress(cinfo);
+    if (image) opj_image_destroy(image);
 
-	return err;
+    return err;
 }
 
 int grib_openjpeg_decode(grib_context *c, unsigned char *buf, size_t *buflen, double *val, size_t *n_vals) {
 
-	int err = GRIB_SUCCESS;
-	int i;
-	unsigned long  mask;
-	int *data;
-	size_t count;
+    int err = GRIB_SUCCESS;
+    int i;
+    unsigned long  mask;
+    int *data;
+    size_t count;
+
+    opj_dparameters_t parameters = {0,};	/* decompression parameters */
+    opj_dinfo_t* dinfo = NULL;	/* handle to a decompressor */
+    opj_event_mgr_t event_mgr = {0,};		/* event manager */
+    opj_cio_t *cio = NULL;
+    opj_image_t *image = NULL;
+    opj_image_comp_t comp = {0,};
+
+    /* set decoding parameters to default values */
+    opj_set_default_decoder_parameters(&parameters);
+
+    /* JPEG-2000 codestream */
+    grib_context_log(c, GRIB_LOG_DEBUG, "grib_openjpeg_decode: OpenJPEG version %s", opj_version());
+
+    /* get a decoder handle */
+    dinfo = opj_create_decompress(CODEC_J2K);
+
+    /* catch events using our callbacks and give a local context */
+    event_mgr.error_handler   = openjpeg_error;
+    event_mgr.info_handler    = openjpeg_info;
+    event_mgr.warning_handler = openjpeg_warning;
+
+    opj_set_event_mgr((opj_common_ptr)dinfo, &event_mgr, c);
+
+    /* setup the decoder decoding parameters using user parameters */
+    opj_setup_decoder(dinfo, &parameters);
+
+    /* open a byte stream */
+    cio = opj_cio_open((opj_common_ptr)dinfo, buf, *buflen);
+
+    image = opj_decode(dinfo, cio);
+
+    if(!image) {
+        grib_context_log(c, GRIB_LOG_ERROR, "openjpeg: failed to decode image");
+        err = GRIB_DECODING_ERROR;
+        goto cleanup;
+    }
+
+    if ( !(*n_vals <= image->comps[0].w * image->comps[0].h) ) {
+        err = GRIB_DECODING_ERROR;
+        goto cleanup;
+    }
+
+    if ( (image->numcomps != 1) || !(image->x1 * image->y1) ) {
+        err = GRIB_DECODING_ERROR;
+        goto cleanup;
+    }
+
+    Assert(image->comps[0].sgnd == 0);
+    Assert(comp.prec <= sizeof(image->comps[0].data[0])*8 - 1); /* BR: -1 because I don't know what happens if the sign bit is set */
+
+    Assert(image->comps[0].prec < sizeof(mask)*8-1);
+
+    data = image->comps[0].data;
+    mask = (1 << image->comps[0].prec) - 1;
+
+    count = image->comps[0].w * image->comps[0].h;
+
+    for(i = 0; i <count ; i++)
+        val[i] = data[i] & mask;
+
+cleanup:
+    /* close the byte stream */
+    if (cio)   opj_cio_close(cio);
+    if (dinfo) opj_destroy_decompress(dinfo);
+    if (image) opj_image_destroy(image);
+
+    return err;
+}
 
-	opj_dparameters_t parameters = {0,};	/* decompression parameters */
-	opj_dinfo_t* dinfo = NULL;	/* handle to a decompressor */
-	opj_event_mgr_t event_mgr = {0,};		/* event manager */
-	opj_cio_t *cio = NULL;
-	opj_image_t *image = NULL;
-	opj_image_comp_t comp = {0,};
+#else /* OPENJPEG VERSION 2 */
 
+/* OpenJPEG 2.1 version of grib_openjpeg_encoding.c */
 
-	/* set decoding parameters to default values */
-	opj_set_default_decoder_parameters(&parameters);
+/* opj_* Helper code from https://groups.google.com/forum/#!topic/openjpeg/8cebr0u7JgY */
+/* These routines are added to use memory instead of a file for input and output */
+/* struct need to treat memory as a stream */
+typedef struct
+{
+    OPJ_UINT8* pData;       /* our data */
+    OPJ_SIZE_T dataSize;    /* how big is our data */
+    OPJ_SIZE_T offset;      /* where we are currently in our data */
+    j2k_encode_helper *helper;
+} opj_memory_stream;
+
+/* This will read from our memory to the buffer */
+static OPJ_SIZE_T opj_memory_stream_read(void *buffer, OPJ_SIZE_T nb_bytes, void * p_user_data)
+{
+    opj_memory_stream* mstream = (opj_memory_stream*) p_user_data; /* Our data */
+    OPJ_SIZE_T nb_bytes_read = nb_bytes; /* Amount to move to buffer */
 
-	/* JPEG-2000 codestream */
+    /* Check if the current offset is outside our data buffer */
+    if (mstream->offset >= mstream->dataSize)
+        return (OPJ_SIZE_T) -1;
 
-	/* get a decoder handle */
-	dinfo = opj_create_decompress(CODEC_J2K);
+    /* Check if we are reading more than we have */
+    if (nb_bytes > (mstream->dataSize - mstream->offset))
+        nb_bytes_read = mstream->dataSize - mstream->offset;
 
-	/* catch events using our callbacks and give a local context */
-	event_mgr.error_handler   = openjpeg_error;
-	event_mgr.info_handler    = openjpeg_info;
-	event_mgr.warning_handler = openjpeg_warning;
+    memcpy(buffer, &(mstream->pData[mstream->offset]), nb_bytes_read);
+    mstream->offset += nb_bytes_read; /* Update the pointer to the new location */
+    return nb_bytes_read;
+}
 
-	opj_set_event_mgr((opj_common_ptr)dinfo, &event_mgr, c);
+/* Write from the buffer to our memory */
+static OPJ_SIZE_T opj_memory_stream_write(void *buffer, OPJ_SIZE_T nb_bytes, void *user_data)
+{
+    opj_memory_stream* mstream = (opj_memory_stream*) user_data; /* our data */
+    OPJ_SIZE_T nb_bytes_write = nb_bytes; /* Amount to move to buffer */
 
-	/* setup the decoder decoding parameters using user parameters */
-	opj_setup_decoder(dinfo, &parameters);
+    /* Check if the current offset is outside our data buffer */
+    if (mstream->offset >= mstream->dataSize)
+        return (OPJ_SIZE_T)-1;
 
-	/* open a byte stream */
-	cio = opj_cio_open((opj_common_ptr)dinfo, buf, *buflen);
+    /* Check if we are writing more than we have space for */
+    if (nb_bytes > (mstream->dataSize - mstream->offset))
+        nb_bytes_write = mstream->dataSize - mstream->offset;
 
-	image = opj_decode(dinfo, cio);
+    /* Copy the data from the internal buffer */
+    memcpy(&(mstream->pData[mstream->offset]), buffer, nb_bytes_write);
+    mstream->offset += nb_bytes_write; /* Update the pointer to the new location */
+    return nb_bytes_write;
+}
 
-	if(!image) {
-		grib_context_log(c, GRIB_LOG_ERROR, "OPENJPEG: failed to decode image");
-		err = GRIB_DECODING_ERROR;
-		goto cleanup;
-	}
+/* Moves the pointer forward, but never more than we have */
+static OPJ_OFF_T opj_memory_stream_skip(OPJ_OFF_T nb_bytes, void *user_data)
+{
+    opj_memory_stream* mstream = (opj_memory_stream*) user_data;
+    OPJ_SIZE_T l_nb_bytes;
+
+    if (nb_bytes < 0)
+        return -1; /* No skipping backwards */
+    l_nb_bytes = (OPJ_SIZE_T) nb_bytes; /* Allowed because it is positive */
+    /* Do not allow jumping past the end */
+    if (l_nb_bytes > mstream->dataSize - mstream->offset)
+        nb_bytes = mstream->dataSize - mstream->offset;
+    mstream->offset += l_nb_bytes;
+    return l_nb_bytes; /* Returm how far we jumped */
+}
 
-	if ( !(*n_vals <= image->comps[0].w * image->comps[0].h) ) {
-		err = GRIB_DECODING_ERROR;
-		goto cleanup;
-	}
+/* Sets the pointer to anywhere in the memory */
+static OPJ_BOOL opj_memory_stream_seek(OPJ_OFF_T nb_bytes, void * user_data)
+{
+    opj_memory_stream* mstream = (opj_memory_stream*) user_data;
+
+    if (nb_bytes < 0)
+        return OPJ_FALSE; /* Not before the buffer */
+    if (nb_bytes >(OPJ_OFF_T) mstream->dataSize)
+        return OPJ_FALSE; /* Not after the buffer */
+    mstream->offset = (OPJ_SIZE_T) nb_bytes; /* Move to new position */
+    return OPJ_TRUE;
+}
 
-	if ( (image->numcomps != 1) || !(image->x1 * image->y1) ) {
-		err = GRIB_DECODING_ERROR;
-		goto cleanup;
-	}
+static void opj_memory_stream_do_nothing(void * p_user_data)
+{
+    OPJ_ARG_NOT_USED(p_user_data);
+}
 
-	Assert(image->comps[0].sgnd == 0);
-	Assert(comp.prec <= sizeof(image->comps[0].data[0])*8 - 1); /* BR: -1 because I don't know what happens if the sign bit is set */
+/* Create a stream to use memory as the input or output */
+opj_stream_t* opj_stream_create_default_memory_stream(opj_memory_stream* memoryStream, OPJ_BOOL is_read_stream)
+{
+	opj_stream_t* stream;
+
+	if (!(stream = opj_stream_default_create(is_read_stream))) 
+		return (NULL);
+    /* Set how to work with the frame buffer */
+	if (is_read_stream)
+		opj_stream_set_read_function(stream, opj_memory_stream_read);
+	else
+		opj_stream_set_write_function(stream, opj_memory_stream_write);
+
+	opj_stream_set_seek_function(stream, opj_memory_stream_seek);
+	opj_stream_set_skip_function(stream, opj_memory_stream_skip);
+	opj_stream_set_user_data(stream, memoryStream, opj_memory_stream_do_nothing);
+	opj_stream_set_user_data_length(stream, memoryStream->dataSize);
+	return stream;
+}
 
-	Assert(image->comps[0].prec < sizeof(mask)*8-1);
+int grib_openjpeg_encode(grib_context *c, j2k_encode_helper *helper)
+{
+    int err = GRIB_SUCCESS;
+    const int numcomps = 1;
+    int i;
+
+    const double * values   = helper->values;
+    long  no_values        = helper->no_values;
+    double reference_value = helper->reference_value;
+    double divisor         = helper->divisor;
+    double decimal         = helper->decimal;
+    int*   data;
+
+    opj_cparameters_t parameters = {0,};	/* compression parameters */
+    opj_codec_t *codec = NULL;
+    opj_image_t *image = NULL;
+    opj_image_cmptparm_t cmptparm = {0,};
+    opj_stream_t *stream = NULL;
+    opj_memory_stream mstream;
+
+    /* set encoding parameters to default values */
+    opj_set_default_encoder_parameters(&parameters);
+
+    grib_context_log(c, GRIB_LOG_DEBUG, "grib_openjpeg_encode: OpenJPEG version %s", opj_version());
+
+    parameters.tcp_numlayers  = 1;
+    parameters.cp_disto_alloc = 1;
+    /* parameters.numresolution =  1; */
+    parameters.tcp_rates[0]   = helper->compression;
+
+    /* By default numresolution = 6 (must be between 1 and 32)
+     * This may be too large for some of our datasets, eg. 1xn, so adjust ...
+     */
+    parameters.numresolution = 6;
+    while ( (helper->width <  (OPJ_UINT32) (1 << (parameters.numresolution - 1U)) ) ||
+            (helper->height <  (OPJ_UINT32) (1 << (parameters.numresolution - 1U)) ))
+    {
+        parameters.numresolution--;
+    }
+
+    /* initialize image component */
+    cmptparm.prec = helper->bits_per_value;
+    cmptparm.bpp  = helper->bits_per_value; /* Not sure about this one and the previous. What is the difference? */
+    cmptparm.sgnd = 0;
+    cmptparm.dx   = 1;
+    cmptparm.dy   = 1;
+    cmptparm.w    = helper->width;
+    cmptparm.h    = helper->height;
+
+    /* create the image */
+    image = opj_image_create(numcomps, &cmptparm, OPJ_CLRSPC_GRAY);
+    if(!image) {
+        err = GRIB_ENCODING_ERROR;
+        goto cleanup;
+    }
+    image->x0 = 0;
+    image->y0 = 0;
+    image->x1 = helper->width;
+    image->y1 = helper->height;
+
+    Assert(cmptparm.prec <= sizeof(image->comps[0].data[0])*8 - 1); /* BR: -1 because I don't know what happens if the sign bit is set */
+    Assert(helper->no_values ==  image->comps[0].h * image->comps[0].w);
+
+    /* Simple packing */
+    data = image->comps[0].data;
+    for(i=0;i< no_values;i++){
+        unsigned long unsigned_val = (unsigned long)((((values[i]*decimal)-(reference_value))*divisor)+0.5);
+        data[i] = unsigned_val;
+    }
+
+    /* get a J2K compressor handle */
+    codec = opj_create_compress(OPJ_CODEC_J2K);
+
+    opj_set_info_handler(codec, openjpeg_info, c);
+    opj_set_warning_handler(codec, openjpeg_warning, c);
+    opj_set_error_handler(codec, openjpeg_error,c);
+
+    /* setup the encoder parameters using the current image and user parameters */
+    if (!opj_setup_encoder(codec, &parameters, image)) {
+        grib_context_log(c, GRIB_LOG_ERROR, "openjpeg: failed to setup encoder");
+        err = GRIB_ENCODING_ERROR;
+        goto cleanup;
+    }
+
+    /* open a byte stream for writing */
+    mstream.helper = helper;
+    mstream.pData = (OPJ_UINT8*) helper->jpeg_buffer;
+    mstream.offset = 0;
+    mstream.dataSize = helper->buffer_size;
+    stream = opj_stream_create_default_memory_stream( &mstream, OPJ_STREAM_WRITE);
+    if (stream == NULL) {
+        grib_context_log(c, GRIB_LOG_ERROR, "openjpeg: failed create default memory stream");
+        err = GRIB_ENCODING_ERROR;
+        goto cleanup;
+    }
+    if (!opj_start_compress(codec, image, stream)) {
+        grib_context_log(c, GRIB_LOG_ERROR, "openjpeg: failed to setup encoder");
+        err = GRIB_ENCODING_ERROR;
+        goto cleanup;
+    }
+
+    /* encode image */
+    if (!opj_encode(codec, stream)) {
+        grib_context_log(c, GRIB_LOG_ERROR, "openjpeg: opj_encode failed");
+        err = GRIB_ENCODING_ERROR;
+        goto cleanup;
+    }
+
+    if (!opj_end_compress(codec, stream)) {
+        grib_context_log(c, GRIB_LOG_ERROR, "openjpeg: opj_end_compress failed");
+        err = GRIB_ENCODING_ERROR;
+        goto cleanup;
+    }
+    helper->jpeg_length = mstream.offset;
 
-	data = image->comps[0].data;
-	mask = (1 << image->comps[0].prec) - 1;
+cleanup:
+    if (codec)   opj_destroy_codec(codec);
+    if (stream) opj_stream_destroy(stream);
+    if (image) opj_image_destroy(image);
 
-	count = image->comps[0].w * image->comps[0].h;
+    return err;
+}
 
-	for(i = 0; i <count ; i++)
-			val[i] = data[i] & mask;
+int grib_openjpeg_decode(grib_context *c, unsigned char *buf, size_t *buflen, double *val, size_t *n_vals)
+{
+    int err = GRIB_SUCCESS;
+    int i;
+    unsigned long  mask;
+    int *data;
+    size_t count;
+
+    opj_dparameters_t parameters = {0,};	/* decompression parameters */
+    opj_stream_t *stream = NULL;
+    opj_memory_stream mstream;
+    opj_image_t *image = NULL;
+    opj_codec_t *codec = NULL;
+    opj_image_comp_t comp = {0,};
+
+    /* set decoding parameters to default values */
+    opj_set_default_decoder_parameters(&parameters);
+    parameters.decod_format = 1; /* JP2_FMT */
+
+    /* JPEG-2000 codestream */
+    grib_context_log(c, GRIB_LOG_DEBUG, "grib_openjpeg_decode: OpenJPEG version %s", opj_version());
+
+    /* get a decoder handle */
+    codec = opj_create_decompress(OPJ_CODEC_J2K);
+
+    /* catch events using our callbacks and give a local context */
+    opj_set_info_handler(codec, openjpeg_info, c);
+    opj_set_warning_handler(codec, openjpeg_warning, c);
+    opj_set_error_handler(codec, openjpeg_error,c);
+
+    /* initialize our memory stream */
+    mstream.pData = buf;
+    mstream.dataSize = *buflen;
+    mstream.offset = 0;
+    /* open a byte stream from memory stream */
+    stream = opj_stream_create_default_memory_stream( &mstream, OPJ_STREAM_READ);
+
+    /* setup the decoder decoding parameters using user parameters */
+    if (!opj_setup_decoder(codec, &parameters)) {
+        grib_context_log(c, GRIB_LOG_ERROR, "openjpeg: failed to setup decoder");
+        err = GRIB_DECODING_ERROR;
+        goto cleanup;
+    }
+    if  (!opj_read_header(stream, codec, &image)) {
+        grib_context_log(c, GRIB_LOG_ERROR, "openjpeg: failed to read the header");
+        err = GRIB_DECODING_ERROR;
+        goto cleanup;
+    }
+    if (!opj_decode(codec, stream, image)) {
+        grib_context_log(c, GRIB_LOG_ERROR, "openjpeg: failed to decode");
+        err = GRIB_DECODING_ERROR;
+        goto cleanup;
+    }
+
+    if ( !(*n_vals <= image->comps[0].w * image->comps[0].h) ) {
+        err = GRIB_DECODING_ERROR;
+        goto cleanup;
+    }
+    if ( (image->numcomps != 1) || !(image->x1 * image->y1) ) {
+        err = GRIB_DECODING_ERROR;
+        goto cleanup;
+    }
+
+    Assert(image->comps[0].sgnd == 0);
+    Assert(comp.prec <= sizeof(image->comps[0].data[0])*8 - 1); /* BR: -1 because I don't know what happens if the sign bit is set */
+
+    Assert(image->comps[0].prec < sizeof(mask)*8-1);
+
+    data = image->comps[0].data;
+    mask = (1 << image->comps[0].prec) - 1;
+
+    count = image->comps[0].w * image->comps[0].h;
+
+    for(i = 0; i <count ; i++)
+        val[i] = data[i] & mask;
+
+    if (!opj_end_decompress(codec, stream)) {
+        grib_context_log(c, GRIB_LOG_ERROR, "openjpeg: failed in opj_end_decompress");
+        err = GRIB_DECODING_ERROR;
+    }
 
 cleanup:
-	/* close the byte stream */
-	if (cio)   opj_cio_close(cio);
-	if (dinfo) opj_destroy_decompress(dinfo);
-	if (image) opj_image_destroy(image);
+    /* close the byte stream */
+    if (codec)  opj_destroy_codec(codec);
+    if (stream) opj_stream_destroy(stream);
+    if (image)  opj_image_destroy(image);
 
-	return err;
+    return err;
 }
 
-#else
+#endif /* OPENJPEG_VERSION */
 
-int grib_openjpeg_decode(grib_context *c, unsigned char *buf, size_t *buflen, double *val, size_t *n_vals) {
-	grib_context_log(c, GRIB_LOG_ERROR,
-			"grib_accessor_data_jpeg2000_packing: OpenJPEG JPEG support not enabled.");
-	return GRIB_NOT_IMPLEMENTED;
+#else /* No OpenJPEG */
+
+int grib_openjpeg_decode(grib_context *c, unsigned char *buf, size_t *buflen, double *val, size_t *n_vals)
+{
+    grib_context_log(c, GRIB_LOG_ERROR, "grib_openjpeg_encoding.c: OpenJPEG JPEG support not enabled.");
+    return GRIB_NOT_IMPLEMENTED;
 }
 
-int grib_openjpeg_encode(grib_context *c, j2k_encode_helper *helper) {
-	grib_context_log(c, GRIB_LOG_ERROR,
-			"grib_accessor_data_jpeg2000_packing: OpenJPEG JPEG support not enabled.");
-	return GRIB_NOT_IMPLEMENTED;
+int grib_openjpeg_encode(grib_context *c, j2k_encode_helper *helper)
+{
+    grib_context_log(c, GRIB_LOG_ERROR, "grib_openjpeg_encoding.c: OpenJPEG JPEG support not enabled.");
+    return GRIB_NOT_IMPLEMENTED;
 }
 
 #endif
-
diff --git a/src/grib_templates.c b/src/grib_templates.c
index 83ecaf3..cbc421c 100644
--- a/src/grib_templates.c
+++ b/src/grib_templates.c
@@ -70,6 +70,36 @@ static grib_handle* try_template(grib_context* c,const char* dir,const char* nam
     return g;
 }
 
+static grib_handle* try_bufr_template(grib_context* c,const char* dir,const char* name)
+{
+    char path[1024];
+    grib_handle *g = NULL;
+    int err = 0;
+
+    sprintf(path,"%s/%s.tmpl",dir,name);
+
+    if (c->debug==-1) {
+        printf("ECCODES DEBUG: try_template path='%s'\n", path);
+    }
+
+    if(codes_access(path,F_OK) == 0)
+    {
+        FILE* f = codes_fopen(path,"r");
+        if(!f)
+        {
+            grib_context_log(c,GRIB_LOG_PERROR,"cannot open %s",path);
+            return NULL;
+        }
+        g = codes_bufr_handle_new_from_file(c,f,&err);
+        if (!g) {
+            grib_context_log(c,GRIB_LOG_ERROR,"cannot create BUFR handle from %s",path);
+        }
+        fclose(f);
+    }
+
+    return g;
+}
+
 static char* try_template_path(grib_context* c,const char* dir,const char* name)
 {
     char path[1024];
@@ -110,6 +140,33 @@ grib_handle* grib_external_template(grib_context* c,const char* name)
     return g = try_template(c,buffer,name);
 }
 
+grib_handle* bufr_external_template(grib_context* c,const char* name)
+{
+    const char *base = c->grib_samples_path;
+    char buffer[1024];
+    char *p = buffer;
+    grib_handle *g = NULL;
+
+    if(!base) return NULL;
+
+    while(*base)
+    {
+        if(*base == ':')
+        {
+            *p = 0;
+            g = try_bufr_template(c,buffer,name);
+            if(g) return g;
+            p = buffer;
+            base++; /*advance past delimiter*/
+        }
+        *p++ = *base++;
+    }
+
+    *p = 0;
+    g = try_bufr_template(c,buffer,name);
+    return g;
+}
+
 char* grib_external_template_path(grib_context* c,const char* name)
 {
     const char *base = c->grib_samples_path;
diff --git a/src/grib_util.c b/src/grib_util.c
index 718619c..593fa77 100644
--- a/src/grib_util.c
+++ b/src/grib_util.c
@@ -334,7 +334,8 @@ static grib_trie* init_list(const char* name)
     return 0;
 }
 
-static void print_values(grib_context* c, const grib_util_grid_spec2* spec, const double* data_values,size_t data_values_count,const grib_values *values,int count)
+static void print_values(grib_context* c, const grib_util_grid_spec2* spec,
+        const double* data_values, const size_t data_values_count, const grib_values *values, const int count)
 {
     int i;
     printf("ECCODES DEBUG grib_util grib_set_values: setting %d values \n",count);
@@ -561,6 +562,27 @@ static const char* get_grid_type_name(const int spec_grid_type)
     return NULL;
 }
 
+static int is_constant_field(const double missingValue, const double* data_values, size_t data_values_count)
+{
+    int ii=0;
+    int constant=1;
+    double value = missingValue;
+
+    for (ii=0;ii<data_values_count;ii++) {
+        if (data_values[ii]!=missingValue) {
+            if (value==missingValue) {
+                value=data_values[ii];
+            } else {
+                if (value!=data_values[ii]) {
+                    constant=0;
+                    break;
+                }
+            }
+        }
+    }
+    return constant;
+}
+
 grib_handle* grib_util_set_spec(grib_handle* h,
         const grib_util_grid_spec    *spec,
         const grib_util_packing_spec *packing_spec,
@@ -665,8 +687,11 @@ grib_handle* grib_util_set_spec2(grib_handle* h,
     }
 
     if (packing_spec->deleteLocalDefinition) {
-        /* TODO: not working for grib2 */
-        SET_LONG_VALUE("deleteLocalDefinition",1);
+        /* TODO: We need two calls because of grib1/grib2 issues re removing local defs! */
+        if (editionNumber==1){
+            SET_LONG_VALUE("deleteLocalDefinition",1);
+        }
+        SET_LONG_VALUE("setLocalDefinition", 0);
     }
 
     len=100;
@@ -778,24 +803,11 @@ grib_handle* grib_util_set_spec2(grib_handle* h,
         /* convert to second_order if not constant field */
         if (setSecondOrder ) {
             size_t packTypeLen=17;
-            int ii=0;
-            int constant=1;
+            int constant=0;
             double missingValue=0;
-            double value=missingValue;
-
             grib_get_double(h,"missingValue",&missingValue);
-            for (ii=0;ii<data_values_count;ii++) {
-                if (data_values[ii]!=missingValue) {
-                    if (value==missingValue) {
-                        value=data_values[ii];
-                    } else {
-                        if (value!=data_values[ii]) {
-                            constant=0;
-                            break;
-                        }
-                    }
-                }
-            }
+            constant=is_constant_field(missingValue, data_values, data_values_count);
+
             if (!constant) {
                 if (editionNumber == 1 ) {
                     long numberOfGroups;
@@ -888,7 +900,7 @@ grib_handle* grib_util_set_spec2(grib_handle* h,
         if (editionNumber == 1) {
             /* GRIB-863: GRIB1 cannot represent increments less than a millidegree */
             if (!grib1_angle_can_be_encoded(spec->iDirectionIncrementInDegrees) ||
-                !grib1_angle_can_be_encoded(spec->jDirectionIncrementInDegrees))
+                    !grib1_angle_can_be_encoded(spec->jDirectionIncrementInDegrees))
             {
                 grib1_high_resolution_fix = 1;
                 /* Set flag to compute the increments */
@@ -1130,7 +1142,7 @@ grib_handle* grib_util_set_spec2(grib_handle* h,
             Assert(count < 1024);
             values[count++] = packing_spec->extra_settings[i];
             if (strcmp(packing_spec->extra_settings[i].name, "global")==0 &&
-                packing_spec->extra_settings[i].long_value == 1)
+                    packing_spec->extra_settings[i].long_value == 1)
             {
                 /* GRIB-922: Request is for a global grid. Setting this key will
                  * calculate the lat/lon values. So the spec's lat/lon can be ignored */
@@ -1175,7 +1187,7 @@ grib_handle* grib_util_set_spec2(grib_handle* h,
 
     if((*err = grib_set_values(outh,values,count)) != 0)
     {
-        fprintf(stderr,"SET_GRID_DATA_DESCRIPTION: Cannot set values  %s\n",grib_get_error_message(*err));
+        fprintf(stderr,"SET_GRID_DATA_DESCRIPTION: Cannot set key values: %s\n",grib_get_error_message(*err));
 
         for(i = 0; i < count; i++)
             if(values[i].error)
@@ -1204,18 +1216,17 @@ grib_handle* grib_util_set_spec2(grib_handle* h,
             grib_write_message(outh,"error.grib","w");
         goto cleanup;
     }
+
     /* grib_write_message(outh,"h.grib","w"); */
     /* if the field is empty GRIBEX is packing as simple*/
-    /*
-	if (!strcmp(input_packing_type,"grid_simple_matrix")) {
+    /*	if (!strcmp(input_packing_type,"grid_simple_matrix")) {
 		long numberOfValues;
 		grib_get_long(outh,"numberOfValues",&numberOfValues);
 		if (numberOfValues==0)  {
 			slen=11;
 			grib_set_string(outh,"packingType","grid_simple",&slen);
 		}
-	}
-     */
+	}   */
 
     if (grib1_high_resolution_fix) {
         /* GRIB-863: must set increments to MISSING */
@@ -1232,26 +1243,13 @@ grib_handle* grib_util_set_spec2(grib_handle* h,
 
     /*grib_dump_content(outh, stdout,"debug", ~0, NULL);*/
 
-    /* convert to second_order if not constant field */
+    /* convert to second_order if not constant field. (Also see ECC-326) */
     if (setSecondOrder ) {
-        int ii=0;
-        int constant=1;
+        int constant = 0;
         double missingValue=0;
-        double value=missingValue;
-
         grib_get_double(outh,"missingValue",&missingValue);
-        for (ii=0;ii<data_values_count;ii++) {
-            if (data_values[ii]!=missingValue) {
-                if (value==missingValue) {
-                    value=data_values[ii];
-                } else {
-                    if (value!=data_values[ii]) {
-                        constant=0;
-                        break;
-                    }
-                }
-            }
-        }
+        constant = is_constant_field(missingValue, data_values, data_values_count);
+
         if (!constant) {
             if (editionNumber == 1 ) {
                 long numberOfGroups=0;
@@ -1272,19 +1270,35 @@ grib_handle* grib_util_set_spec2(grib_handle* h,
             } else {
                 slen=17;
                 grib_set_string(outh,"packingType","grid_second_order",&slen);
-                grib_set_double_array(outh,"values",data_values,data_values_count);
+                *err = grib_set_double_array(outh,"values", data_values, data_values_count);
+                if (*err != GRIB_SUCCESS) {
+                    fprintf(stderr,"GRIB_UTIL_SET_SPEC: setting data values failed! %s\n", grib_get_error_message(*err));
+                    goto cleanup;
+                }
             }
         } else {
             if (outh->context->gribex_mode_on) {
                 outh->context->gribex_mode_on=0;
-                grib_set_double_array(outh,"values",data_values,data_values_count);
+                grib_set_double_array(outh,"values", data_values, data_values_count);
                 outh->context->gribex_mode_on=1;
             }
         }
     }
 
-    if(packing_spec->editionNumber && packing_spec->editionNumber!=editionNumber)
-        grib_set_long(outh,"edition", packing_spec->editionNumber);
+    if (packing_spec->editionNumber && packing_spec->editionNumber!=editionNumber) {
+        *err = grib_set_long(outh,"edition", packing_spec->editionNumber);
+        if (*err != GRIB_SUCCESS) {
+            fprintf(stderr,"GRIB_UTIL_SET_SPEC: Failed to change edition to %ld: %s\n",
+                    packing_spec->editionNumber, grib_get_error_message(*err));
+            goto cleanup;
+        }
+    }
+
+    if (packing_spec->deleteLocalDefinition) {
+        /* TODO: We need two calls because of grib1/grib2 issues re removing local defs! */
+        grib_set_long(outh,"setLocalDefinition", 0);
+        grib_set_long(outh,"deleteLocalDefinition", 1);
+    }
 
     if ( (*err = check_handle_against_spec(outh, editionNumber, spec, global_grid)) != GRIB_SUCCESS)
     {
@@ -1303,7 +1317,7 @@ grib_handle* grib_util_set_spec2(grib_handle* h,
 
     return outh;
 
-    cleanup:
+cleanup:
     if(outh)  grib_handle_delete(outh);
     return NULL;
 }
@@ -1641,7 +1655,6 @@ int is_gaussian_global(
     return global;
 }
 
-#define STR_EQUAL(s1, s2) (strcmp((s1), (s2)) == 0)
 char* codes_getenv(const char* name)
 {
     /* Look for the new ecCodes environment variable names */
@@ -1650,26 +1663,26 @@ char* codes_getenv(const char* name)
     char* result = NULL;
 
     /* Test the most commonly used variables first */
-    if      (STR_EQUAL(name, "ECCODES_SAMPLES_PATH")) old_name="GRIB_SAMPLES_PATH";
-    else if (STR_EQUAL(name, "ECCODES_DEFINITION_PATH")) old_name="GRIB_DEFINITION_PATH";
-    else if (STR_EQUAL(name, "ECCODES_DEBUG")) old_name="GRIB_API_DEBUG";
-
-    else if (STR_EQUAL(name, "ECCODES_FAIL_IF_LOG_MESSAGE")) old_name="GRIB_API_FAIL_IF_LOG_MESSAGE";
-    else if (STR_EQUAL(name, "ECCODES_GRIB_WRITE_ON_FAIL")) old_name="GRIB_API_WRITE_ON_FAIL";
-    else if (STR_EQUAL(name, "ECCODES_GRIB_LARGE_CONSTANT_FIELDS")) old_name="GRIB_API_LARGE_CONSTANT_FIELDS";
-    else if (STR_EQUAL(name, "ECCODES_NO_ABORT")) old_name="GRIB_API_NO_ABORT";
-    else if (STR_EQUAL(name, "ECCODES_GRIBEX_MODE_ON")) old_name="GRIB_GRIBEX_MODE_ON";
-    else if (STR_EQUAL(name, "ECCODES_GRIB_IEEE_PACKING")) old_name="GRIB_IEEE_PACKING";
-    else if (STR_EQUAL(name, "ECCODES_IO_BUFFER_SIZE")) old_name="GRIB_API_IO_BUFFER_SIZE";
-    else if (STR_EQUAL(name, "ECCODES_LOG_STREAM")) old_name="GRIB_API_LOG_STREAM";
-    else if (STR_EQUAL(name, "ECCODES_GRIB_NO_BIG_GROUP_SPLIT")) old_name="GRIB_API_NO_BIG_GROUP_SPLIT";
-    else if (STR_EQUAL(name, "ECCODES_GRIB_NO_SPD")) old_name="GRIB_API_NO_SPD";
-    else if (STR_EQUAL(name, "ECCODES_GRIB_KEEP_MATRIX")) old_name="GRIB_API_KEEP_MATRIX";
-    else if (STR_EQUAL(name, "_ECCODES_ECMWF_TEST_DEFINITION_PATH")) old_name="_GRIB_API_ECMWF_TEST_DEFINITION_PATH";
-    else if (STR_EQUAL(name, "_ECCODES_ECMWF_TEST_SAMPLES_PATH")) old_name="_GRIB_API_ECMWF_TEST_SAMPLES_PATH";
-    else if (STR_EQUAL(name, "ECCODES_GRIB_JPEG")) old_name="GRIB_JPEG";
-    else if (STR_EQUAL(name, "ECCODES_GRIB_DUMP_JPG_FILE")) old_name="GRIB_DUMP_JPG_FILE";
-    else if (STR_EQUAL(name, "ECCODES_PRINT_MISSING")) old_name="GRIB_PRINT_MISSING";
+    if      (STR_EQ(name, "ECCODES_SAMPLES_PATH")) old_name="GRIB_SAMPLES_PATH";
+    else if (STR_EQ(name, "ECCODES_DEFINITION_PATH")) old_name="GRIB_DEFINITION_PATH";
+    else if (STR_EQ(name, "ECCODES_DEBUG")) old_name="GRIB_API_DEBUG";
+
+    else if (STR_EQ(name, "ECCODES_FAIL_IF_LOG_MESSAGE")) old_name="GRIB_API_FAIL_IF_LOG_MESSAGE";
+    else if (STR_EQ(name, "ECCODES_GRIB_WRITE_ON_FAIL")) old_name="GRIB_API_WRITE_ON_FAIL";
+    else if (STR_EQ(name, "ECCODES_GRIB_LARGE_CONSTANT_FIELDS")) old_name="GRIB_API_LARGE_CONSTANT_FIELDS";
+    else if (STR_EQ(name, "ECCODES_NO_ABORT")) old_name="GRIB_API_NO_ABORT";
+    else if (STR_EQ(name, "ECCODES_GRIBEX_MODE_ON")) old_name="GRIB_GRIBEX_MODE_ON";
+    else if (STR_EQ(name, "ECCODES_GRIB_IEEE_PACKING")) old_name="GRIB_IEEE_PACKING";
+    else if (STR_EQ(name, "ECCODES_IO_BUFFER_SIZE")) old_name="GRIB_API_IO_BUFFER_SIZE";
+    else if (STR_EQ(name, "ECCODES_LOG_STREAM")) old_name="GRIB_API_LOG_STREAM";
+    else if (STR_EQ(name, "ECCODES_GRIB_NO_BIG_GROUP_SPLIT")) old_name="GRIB_API_NO_BIG_GROUP_SPLIT";
+    else if (STR_EQ(name, "ECCODES_GRIB_NO_SPD")) old_name="GRIB_API_NO_SPD";
+    else if (STR_EQ(name, "ECCODES_GRIB_KEEP_MATRIX")) old_name="GRIB_API_KEEP_MATRIX";
+    else if (STR_EQ(name, "_ECCODES_ECMWF_TEST_DEFINITION_PATH")) old_name="_GRIB_API_ECMWF_TEST_DEFINITION_PATH";
+    else if (STR_EQ(name, "_ECCODES_ECMWF_TEST_SAMPLES_PATH")) old_name="_GRIB_API_ECMWF_TEST_SAMPLES_PATH";
+    else if (STR_EQ(name, "ECCODES_GRIB_JPEG")) old_name="GRIB_JPEG";
+    else if (STR_EQ(name, "ECCODES_GRIB_DUMP_JPG_FILE")) old_name="GRIB_DUMP_JPG_FILE";
+    else if (STR_EQ(name, "ECCODES_PRINT_MISSING")) old_name="GRIB_PRINT_MISSING";
 
     result = getenv(name);
     if (result == NULL) {
@@ -1677,3 +1690,44 @@ char* codes_getenv(const char* name)
     }
     return result;
 }
+
+/* Return the rank of the key using list of keys (For BUFR keys) */
+/* The argument 'keys' is an input as well as output from each call */
+int compute_key_rank(grib_handle* h, grib_string_list* keys, const char* key)
+{
+    grib_string_list* next=keys;
+    grib_string_list* prev=keys;
+    int theRank=0;
+    size_t size=0;
+    grib_context* c=h->context;
+    Assert(h->product_kind == PRODUCT_BUFR);
+
+    while (next && next->value && strcmp(next->value,key)) {
+        prev=next;
+        next=next->next;
+    }
+    if (!next) {
+        prev->next=(grib_string_list*)grib_context_malloc_clear(c,sizeof(grib_string_list));
+        next=prev->next;
+    }
+    if (!next->value) {
+        next->value=strdup(key);
+        next->count=0;
+    }
+
+    next->count++;
+    theRank=next->count;
+    if (theRank==1) {
+        /* If the count is 1 it could mean two things: */
+        /*   This is the first instance of the key and there is another one */
+        /*   This is the first and only instance of the key */
+        /* So we check if there is a second one of this key, */
+        /* If not, then rank is zero i.e. this is the only instance */
+        char* s=grib_context_malloc_clear(c,strlen(key)+5);
+        sprintf(s,"#2#%s",key);
+        if (grib_get_size(h,s,&size)==GRIB_NOT_FOUND) theRank=0;
+        grib_context_free(c, s);
+    }
+
+    return theRank;
+}
diff --git a/src/grib_value.c b/src/grib_value.c
index 7ffe29f..5fc53ad 100644
--- a/src/grib_value.c
+++ b/src/grib_value.c
@@ -379,7 +379,7 @@ int grib_set_string(grib_handle* h, const char* name, const char* val, size_t *l
     a = grib_find_accessor(h, name);
 
     if (h->context->debug)
-        printf("ECCODES DEBUG grib_set_string %s=%s\n",name,val);
+        printf("ECCODES DEBUG grib_set_string %s=|%s|\n",name,val);
 
     if(a)
     {
@@ -541,6 +541,26 @@ int grib_is_missing_double(grib_accessor* a,double x)
     return ret;
 }
 
+int grib_is_missing_string(grib_accessor* a, unsigned char* x, size_t len)
+{
+    /* For a string value to be missing, every character has to be */
+    /* all 1's (i.e. 0xFF) */
+    int ret;
+    size_t i=0;
+
+    if (len==0) return 0;
+    ret=1;
+    for (i=0;i<len;i++) {
+        if (x[i] != 0xFF ) {
+            ret=0;
+            break;
+        }
+    }
+
+    ret = ( a==NULL || ( (a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) && ret==1 )) ? 1 : 0;
+    return ret;
+}
+
 int grib_accessor_is_missing(grib_accessor* a,int* err)
 {
     *err=GRIB_SUCCESS;
@@ -769,7 +789,15 @@ static int _grib_set_long_array(grib_handle* h, const char* name, const long* va
 {
     size_t encoded = 0;
     grib_accessor* a = grib_find_accessor(h, name);
-    int err = a ?_grib_set_long_array_internal(h,a,val,length,&encoded,check) : GRIB_NOT_FOUND ;
+    int err =0;
+
+    if (!a) return GRIB_NOT_FOUND ;
+    if (name[0]=='/' || name[0]=='#' ) {
+        if(check && (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY))
+            return GRIB_READ_ONLY;
+        err=grib_pack_long(a, val, &length);
+        encoded=length;
+    } else err=_grib_set_long_array_internal(h,a,val,length,&encoded,check);
 
     if(err == GRIB_SUCCESS && length > encoded)
         err = GRIB_ARRAY_TOO_SMALL;
diff --git a/src/grib_yacc.c b/src/grib_yacc.c
index a94f29d..266554a 100644
--- a/src/grib_yacc.c
+++ b/src/grib_yacc.c
@@ -653,16 +653,16 @@ union grib_yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  214
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1789
+#define YYLAST   1684
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  144
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  50
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  270
+#define YYNRULES  266
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  899
+#define YYNSTATES  897
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -729,25 +729,24 @@ static const grib_yytype_uint16 grib_yyprhs[] =
      290,   299,   308,   317,   328,   337,   347,   355,   358,   361,
      366,   371,   376,   381,   386,   391,   396,   401,   406,   411,
      416,   421,   426,   431,   436,   444,   451,   459,   462,   468,
-     474,   481,   486,   493,   501,   504,   510,   517,   526,   535,
-     539,   545,   551,   557,   563,   570,   574,   578,   582,   586,
-     592,   595,   603,   608,   617,   628,   634,   640,   646,   652,
-     655,   662,   667,   671,   676,   681,   688,   695,   700,   703,
-     705,   711,   716,   719,   721,   727,   732,   737,   740,   746,
-     752,   754,   762,   774,   782,   794,   801,   809,   821,   826,
-     831,   834,   838,   840,   843,   845,   848,   850,   854,   856,
-     858,   860,   862,   864,   866,   868,   870,   872,   874,   876,
-     878,   880,   882,   884,   886,   888,   897,   905,   913,   920,
-     930,   943,   958,   969,   984,   997,  1006,  1018,  1025,  1035,
-    1048,  1059,  1074,  1087,  1096,  1108,  1110,  1113,  1115,  1118,
-    1125,  1138,  1140,  1143,  1148,  1159,  1169,  1177,  1183,  1189,
-    1195,  1201,  1203,  1206,  1211,  1218,  1224,  1230,  1239,  1241,
-    1250,  1252,  1254,  1256,  1258,  1260,  1262,  1266,  1269,  1273,
-    1278,  1282,  1284,  1288,  1292,  1296,  1300,  1304,  1306,  1311,
-    1318,  1325,  1332,  1341,  1346,  1350,  1354,  1356,  1360,  1364,
-    1368,  1372,  1376,  1380,  1384,  1387,  1389,  1393,  1395,  1399,
-    1401,  1403,  1405,  1407,  1412,  1415,  1417,  1420,  1422,  1430,
-    1432
+     474,   482,   487,   494,   502,   505,   512,   521,   530,   534,
+     540,   546,   552,   558,   565,   569,   573,   577,   581,   587,
+     590,   598,   603,   612,   623,   629,   635,   641,   647,   650,
+     657,   662,   666,   671,   676,   683,   690,   695,   698,   700,
+     706,   711,   714,   716,   722,   727,   732,   735,   741,   747,
+     749,   757,   769,   777,   789,   796,   804,   816,   821,   826,
+     829,   833,   835,   838,   840,   843,   845,   849,   851,   853,
+     855,   857,   859,   861,   863,   865,   867,   869,   871,   873,
+     875,   877,   886,   894,   902,   909,   919,   932,   947,   958,
+     973,   986,   995,  1007,  1014,  1024,  1037,  1048,  1063,  1076,
+    1085,  1097,  1099,  1102,  1104,  1107,  1114,  1127,  1129,  1132,
+    1137,  1148,  1158,  1166,  1172,  1178,  1184,  1190,  1192,  1195,
+    1200,  1207,  1213,  1219,  1228,  1230,  1239,  1241,  1243,  1245,
+    1247,  1249,  1251,  1255,  1258,  1262,  1267,  1271,  1273,  1277,
+    1281,  1285,  1289,  1293,  1295,  1300,  1307,  1314,  1321,  1330,
+    1335,  1339,  1343,  1345,  1349,  1353,  1357,  1361,  1365,  1369,
+    1373,  1376,  1378,  1382,  1384,  1388,  1390,  1392,  1394,  1396,
+    1401,  1404,  1406,  1409,  1411,  1419,  1421
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -801,102 +800,101 @@ static const grib_yytype_int16 grib_yyrhs[] =
       -1,    26,   123,   129,   155,   130,   161,   162,    -1,    52,
      123,    -1,    53,   123,   133,   155,   162,    -1,    54,   123,
      133,   155,   162,    -1,    54,   123,   133,   135,   147,   136,
-      -1,   126,   123,   161,   162,    -1,   126,   123,   134,   123,
-     161,   162,    -1,   126,   123,   129,   155,   130,   161,   162,
-      -1,    96,   123,    -1,    99,   129,   125,   130,   123,    -1,
-      99,   129,   125,   130,   123,   161,    -1,    97,   129,   125,
-     130,   123,   131,   153,   132,    -1,    98,   129,   125,   130,
-     123,   131,   153,   132,    -1,   105,   123,   155,    -1,    89,
-     123,   131,   153,   132,    -1,    93,   123,   131,   153,   132,
-      -1,    94,   123,   131,   153,   132,    -1,    95,   123,   131,
-     153,   132,    -1,    91,   129,   125,   130,   123,   162,    -1,
-      92,   123,   162,    -1,    90,   123,   162,    -1,    10,   123,
-     124,    -1,    11,   123,   124,    -1,    49,   123,   133,   123,
-     162,    -1,    50,   123,    -1,    49,   123,   134,   123,   133,
-     123,   162,    -1,    50,   123,   134,   123,    -1,    51,   123,
-     123,   131,   153,   132,   161,   162,    -1,    51,   123,   134,
-     123,   123,   131,   153,   132,   161,   162,    -1,   102,   123,
-     131,   153,   132,    -1,   103,   123,   131,   153,   132,    -1,
-     104,   123,   131,   153,   132,    -1,    85,   123,   131,   153,
-     132,    -1,    86,   153,    -1,    87,   131,   123,   127,   123,
-     132,    -1,   106,   131,   187,   132,    -1,    62,   123,   162,
-      -1,    80,   123,   133,    76,    -1,    80,   123,   133,   187,
-      -1,    80,   123,   133,   135,   147,   136,    -1,    80,   123,
-     133,   135,   148,   136,    -1,    81,   123,   133,   187,    -1,
-      82,   124,    -1,    82,    -1,    82,   131,   125,   132,   124,
-      -1,    82,   131,   125,   132,    -1,    83,   124,    -1,    83,
-      -1,    83,   131,   125,   132,   124,    -1,    83,   131,   125,
-     132,    -1,     8,   131,   123,   132,    -1,    84,   124,    -1,
-      84,   131,   124,   132,   124,    -1,    84,   131,   123,   132,
-     124,    -1,    84,    -1,     4,   131,   187,   132,   135,   150,
-     136,    -1,     4,   131,   187,   132,   135,   150,   136,     6,
-     135,   150,   136,    -1,     5,   131,   187,   132,   135,   150,
-     136,    -1,     5,   131,   187,   132,   135,   150,   136,     6,
-     135,   150,   136,    -1,    79,   131,   187,   132,   159,   152,
-      -1,    79,   131,   187,   132,   135,   160,   136,    -1,    79,
-     131,   187,   132,   135,   160,   136,     6,   135,   160,   136,
-      -1,    80,   123,   133,   187,    -1,    81,   123,   133,   187,
-      -1,   159,   152,    -1,   160,   159,   152,    -1,   146,    -1,
-     133,   153,    -1,   146,    -1,   137,   163,    -1,   164,    -1,
-     163,   127,   164,    -1,    63,    -1,     3,    -1,    68,    -1,
-      69,    -1,    70,    -1,    67,    -1,    71,    -1,    74,    -1,
-      72,    -1,    75,    -1,    77,    -1,    73,    -1,    78,    -1,
-      54,    -1,    64,    -1,    65,    -1,    66,    -1,   123,    18,
-     131,   187,   132,   135,   150,   136,    -1,    25,   131,   187,
-     132,   135,   150,   136,    -1,    12,   131,   153,   132,   135,
-     150,   136,    -1,    56,   123,   135,   169,   136,   162,    -1,
-      56,   123,   131,   123,   132,   135,   169,   136,   162,    -1,
-      56,   123,   131,   123,   127,   124,   127,   123,   127,   123,
-     132,   162,    -1,    56,   123,   131,   123,   127,   124,   127,
-     123,   127,   123,   127,   123,   132,   162,    -1,    56,   123,
-     131,   123,   127,   124,   127,   123,   132,   162,    -1,    56,
-     123,   134,   123,   131,   123,   127,   124,   127,   123,   127,
-     123,   132,   162,    -1,    56,   123,   134,   123,   131,   123,
-     127,   124,   127,   123,   132,   162,    -1,    56,   123,   134,
-     123,   135,   169,   136,   162,    -1,    56,   123,   134,   123,
-     131,   123,   132,   135,   169,   136,   162,    -1,    59,   123,
-     135,   169,   136,   162,    -1,    59,   123,   131,   123,   132,
-     135,   169,   136,   162,    -1,    59,   123,   131,   123,   127,
-     124,   127,   123,   127,   123,   132,   162,    -1,    59,   123,
-     131,   123,   127,   124,   127,   123,   132,   162,    -1,    59,
-     123,   134,   123,   131,   123,   127,   124,   127,   123,   127,
-     123,   132,   162,    -1,    59,   123,   134,   123,   131,   123,
-     127,   124,   127,   123,   132,   162,    -1,    59,   123,   134,
-     123,   135,   169,   136,   162,    -1,    59,   123,   134,   123,
-     131,   123,   132,   135,   169,   136,   162,    -1,   175,    -1,
-     169,   175,    -1,   178,    -1,   170,   178,    -1,    58,   123,
-     135,   170,   136,   162,    -1,    58,   123,   131,   123,   127,
-     124,   127,   123,   127,   123,   132,   162,    -1,   173,    -1,
-     172,   173,    -1,   108,   154,   137,   150,    -1,   109,   131,
-     153,   132,   135,   172,   110,   137,   150,   136,    -1,   109,
-     131,   153,   132,   135,   172,   110,   137,   136,    -1,   109,
-     131,   153,   132,   135,   172,   136,    -1,   124,   133,   135,
-     176,   136,    -1,   123,   133,   135,   176,   136,    -1,   125,
-     133,   135,   176,   136,    -1,   126,   133,   135,   176,   136,
-      -1,   177,    -1,   177,   176,    -1,   123,   133,   187,   128,
-      -1,   123,   133,   129,   149,   130,   128,    -1,   124,   133,
-     129,   149,   130,    -1,   123,   133,   129,   149,   130,    -1,
-     107,   131,   123,   127,   125,   127,   125,   132,    -1,   123,
-      -1,   107,   131,   124,   127,   125,   127,   125,   132,    -1,
-     124,    -1,   179,    -1,   125,    -1,   126,    -1,    60,    -1,
-      61,    -1,   131,   187,   132,    -1,   138,   180,    -1,   123,
-     131,   132,    -1,   123,   131,   153,   132,    -1,   180,   139,
-     181,    -1,   180,    -1,   182,   140,   181,    -1,   182,   141,
-     181,    -1,   182,   142,   181,    -1,   182,   117,   181,    -1,
-     182,   118,   181,    -1,   181,    -1,   100,   131,   123,   132,
-      -1,    19,   131,   123,   127,   124,   132,    -1,    20,   131,
-     123,   127,   124,   132,    -1,    21,   131,   123,   127,   125,
-     132,    -1,    21,   131,   123,   127,   125,   127,   125,   132,
-      -1,    21,   131,   123,   132,    -1,   183,   143,   182,    -1,
-     183,   138,   182,    -1,   182,    -1,   184,   116,   183,    -1,
-     184,   111,   183,    -1,   184,   115,   183,    -1,   184,   113,
-     183,    -1,   184,   114,   183,    -1,   184,   112,   183,    -1,
-     179,   122,   179,    -1,   121,   184,    -1,   183,    -1,   185,
-     119,   184,    -1,   184,    -1,   186,   120,   185,    -1,   185,
-      -1,   186,    -1,   191,    -1,   192,    -1,   123,   133,   187,
-     128,    -1,    88,   128,    -1,   189,    -1,   189,   190,    -1,
-     189,    -1,     4,   131,   187,   132,   135,   190,   136,    -1,
-     188,    -1,   188,   193,    -1
+     162,    -1,   126,   123,   161,   162,    -1,   126,   123,   134,
+     123,   161,   162,    -1,   126,   123,   129,   155,   130,   161,
+     162,    -1,    96,   123,    -1,    99,   129,   125,   130,   123,
+     161,    -1,    97,   129,   125,   130,   123,   131,   153,   132,
+      -1,    98,   129,   125,   130,   123,   131,   153,   132,    -1,
+     105,   123,   155,    -1,    89,   123,   131,   153,   132,    -1,
+      93,   123,   131,   153,   132,    -1,    94,   123,   131,   153,
+     132,    -1,    95,   123,   131,   153,   132,    -1,    91,   129,
+     125,   130,   123,   162,    -1,    92,   123,   162,    -1,    90,
+     123,   162,    -1,    10,   123,   124,    -1,    11,   123,   124,
+      -1,    49,   123,   133,   123,   162,    -1,    50,   123,    -1,
+      49,   123,   134,   123,   133,   123,   162,    -1,    50,   123,
+     134,   123,    -1,    51,   123,   123,   131,   153,   132,   161,
+     162,    -1,    51,   123,   134,   123,   123,   131,   153,   132,
+     161,   162,    -1,   102,   123,   131,   153,   132,    -1,   103,
+     123,   131,   153,   132,    -1,   104,   123,   131,   153,   132,
+      -1,    85,   123,   131,   153,   132,    -1,    86,   153,    -1,
+      87,   131,   123,   127,   123,   132,    -1,   106,   131,   187,
+     132,    -1,    62,   123,   162,    -1,    80,   123,   133,    76,
+      -1,    80,   123,   133,   187,    -1,    80,   123,   133,   135,
+     147,   136,    -1,    80,   123,   133,   135,   148,   136,    -1,
+      81,   123,   133,   187,    -1,    82,   124,    -1,    82,    -1,
+      82,   131,   125,   132,   124,    -1,    82,   131,   125,   132,
+      -1,    83,   124,    -1,    83,    -1,    83,   131,   125,   132,
+     124,    -1,    83,   131,   125,   132,    -1,     8,   131,   123,
+     132,    -1,    84,   124,    -1,    84,   131,   124,   132,   124,
+      -1,    84,   131,   123,   132,   124,    -1,    84,    -1,     4,
+     131,   187,   132,   135,   150,   136,    -1,     4,   131,   187,
+     132,   135,   150,   136,     6,   135,   150,   136,    -1,     5,
+     131,   187,   132,   135,   150,   136,    -1,     5,   131,   187,
+     132,   135,   150,   136,     6,   135,   150,   136,    -1,    79,
+     131,   187,   132,   159,   152,    -1,    79,   131,   187,   132,
+     135,   160,   136,    -1,    79,   131,   187,   132,   135,   160,
+     136,     6,   135,   160,   136,    -1,    80,   123,   133,   187,
+      -1,    81,   123,   133,   187,    -1,   159,   152,    -1,   160,
+     159,   152,    -1,   146,    -1,   133,   153,    -1,   146,    -1,
+     137,   163,    -1,   164,    -1,   163,   127,   164,    -1,    63,
+      -1,     3,    -1,    68,    -1,    67,    -1,    71,    -1,    74,
+      -1,    72,    -1,    75,    -1,    77,    -1,    78,    -1,    54,
+      -1,    64,    -1,    65,    -1,    66,    -1,   123,    18,   131,
+     187,   132,   135,   150,   136,    -1,    25,   131,   187,   132,
+     135,   150,   136,    -1,    12,   131,   153,   132,   135,   150,
+     136,    -1,    56,   123,   135,   169,   136,   162,    -1,    56,
+     123,   131,   123,   132,   135,   169,   136,   162,    -1,    56,
+     123,   131,   123,   127,   124,   127,   123,   127,   123,   132,
+     162,    -1,    56,   123,   131,   123,   127,   124,   127,   123,
+     127,   123,   127,   123,   132,   162,    -1,    56,   123,   131,
+     123,   127,   124,   127,   123,   132,   162,    -1,    56,   123,
+     134,   123,   131,   123,   127,   124,   127,   123,   127,   123,
+     132,   162,    -1,    56,   123,   134,   123,   131,   123,   127,
+     124,   127,   123,   132,   162,    -1,    56,   123,   134,   123,
+     135,   169,   136,   162,    -1,    56,   123,   134,   123,   131,
+     123,   132,   135,   169,   136,   162,    -1,    59,   123,   135,
+     169,   136,   162,    -1,    59,   123,   131,   123,   132,   135,
+     169,   136,   162,    -1,    59,   123,   131,   123,   127,   124,
+     127,   123,   127,   123,   132,   162,    -1,    59,   123,   131,
+     123,   127,   124,   127,   123,   132,   162,    -1,    59,   123,
+     134,   123,   131,   123,   127,   124,   127,   123,   127,   123,
+     132,   162,    -1,    59,   123,   134,   123,   131,   123,   127,
+     124,   127,   123,   132,   162,    -1,    59,   123,   134,   123,
+     135,   169,   136,   162,    -1,    59,   123,   134,   123,   131,
+     123,   132,   135,   169,   136,   162,    -1,   175,    -1,   169,
+     175,    -1,   178,    -1,   170,   178,    -1,    58,   123,   135,
+     170,   136,   162,    -1,    58,   123,   131,   123,   127,   124,
+     127,   123,   127,   123,   132,   162,    -1,   173,    -1,   172,
+     173,    -1,   108,   154,   137,   150,    -1,   109,   131,   153,
+     132,   135,   172,   110,   137,   150,   136,    -1,   109,   131,
+     153,   132,   135,   172,   110,   137,   136,    -1,   109,   131,
+     153,   132,   135,   172,   136,    -1,   124,   133,   135,   176,
+     136,    -1,   123,   133,   135,   176,   136,    -1,   125,   133,
+     135,   176,   136,    -1,   126,   133,   135,   176,   136,    -1,
+     177,    -1,   177,   176,    -1,   123,   133,   187,   128,    -1,
+     123,   133,   129,   149,   130,   128,    -1,   124,   133,   129,
+     149,   130,    -1,   123,   133,   129,   149,   130,    -1,   107,
+     131,   123,   127,   125,   127,   125,   132,    -1,   123,    -1,
+     107,   131,   124,   127,   125,   127,   125,   132,    -1,   124,
+      -1,   179,    -1,   125,    -1,   126,    -1,    60,    -1,    61,
+      -1,   131,   187,   132,    -1,   138,   180,    -1,   123,   131,
+     132,    -1,   123,   131,   153,   132,    -1,   180,   139,   181,
+      -1,   180,    -1,   182,   140,   181,    -1,   182,   141,   181,
+      -1,   182,   142,   181,    -1,   182,   117,   181,    -1,   182,
+     118,   181,    -1,   181,    -1,   100,   131,   123,   132,    -1,
+      19,   131,   123,   127,   124,   132,    -1,    20,   131,   123,
+     127,   124,   132,    -1,    21,   131,   123,   127,   125,   132,
+      -1,    21,   131,   123,   127,   125,   127,   125,   132,    -1,
+      21,   131,   123,   132,    -1,   183,   143,   182,    -1,   183,
+     138,   182,    -1,   182,    -1,   184,   116,   183,    -1,   184,
+     111,   183,    -1,   184,   115,   183,    -1,   184,   113,   183,
+      -1,   184,   114,   183,    -1,   184,   112,   183,    -1,   179,
+     122,   179,    -1,   121,   184,    -1,   183,    -1,   185,   119,
+     184,    -1,   184,    -1,   186,   120,   185,    -1,   185,    -1,
+     186,    -1,   191,    -1,   192,    -1,   123,   133,   187,   128,
+      -1,    88,   128,    -1,   189,    -1,   189,   190,    -1,   189,
+      -1,     4,   131,   187,   132,   135,   190,   136,    -1,   188,
+      -1,   188,   193,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -912,24 +910,23 @@ static const grib_yytype_uint16 grib_yyrline[] =
      427,   430,   433,   436,   439,   442,   445,   448,   451,   454,
      457,   460,   463,   466,   469,   473,   476,   479,   482,   485,
      487,   490,   493,   496,   499,   502,   505,   508,   511,   514,
-     517,   520,   523,   526,   529,   532,   535,   537,   539,   542,
-     545,   548,   552,   556,   559,   562,   574,   586,   598,   601,
-     604,   606,   609,   612,   613,   614,   615,   617,   620,   621,
-     622,   623,   624,   625,   626,   627,   629,   630,   631,   632,
-     633,   637,   638,   639,   640,   644,   645,   646,   649,   650,
-     653,   654,   658,   659,   662,   663,   666,   667,   670,   671,
-     672,   673,   674,   675,   676,   677,   678,   679,   680,   681,
-     682,   683,   684,   685,   686,   689,   692,   695,   698,   699,
-     700,   701,   702,   703,   704,   705,   706,   707,   708,   709,
-     710,   711,   712,   713,   714,   718,   719,   722,   723,   726,
-     727,   730,   731,   734,   738,   739,   740,   743,   745,   747,
-     749,   753,   754,   757,   758,   762,   764,   768,   769,   770,
-     771,   774,   775,   776,   778,   779,   780,   781,   782,   783,
-     787,   788,   791,   792,   793,   794,   795,   796,   797,   798,
-     799,   800,   801,   802,   805,   806,   807,   810,   812,   813,
-     814,   815,   816,   817,   822,   823,   826,   827,   830,   831,
-     834,   840,   841,   844,   845,   848,   849,   852,   856,   859,
-     860
+     517,   520,   523,   526,   529,   532,   534,   536,   539,   542,
+     545,   549,   553,   556,   559,   571,   583,   595,   598,   601,
+     603,   606,   609,   610,   611,   612,   614,   617,   618,   619,
+     620,   621,   622,   623,   624,   626,   627,   628,   629,   630,
+     634,   635,   636,   637,   641,   642,   643,   646,   647,   650,
+     651,   655,   656,   659,   660,   663,   664,   667,   668,   669,
+     670,   671,   672,   673,   674,   675,   676,   677,   678,   679,
+     680,   683,   686,   689,   692,   693,   694,   695,   696,   697,
+     698,   699,   700,   701,   702,   703,   704,   705,   706,   707,
+     708,   712,   713,   716,   717,   720,   721,   724,   725,   728,
+     732,   733,   734,   737,   739,   741,   743,   747,   748,   751,
+     752,   756,   758,   762,   763,   764,   765,   768,   769,   770,
+     772,   773,   774,   775,   776,   777,   781,   782,   785,   786,
+     787,   788,   789,   790,   791,   792,   793,   794,   795,   796,
+     799,   800,   801,   804,   806,   807,   808,   809,   810,   811,
+     816,   817,   820,   821,   824,   825,   828,   834,   835,   838,
+     839,   842,   843,   846,   850,   853,   854
 };
 #endif
 
@@ -1014,20 +1011,19 @@ static const grib_yytype_uint8 grib_yyr1[] =
      156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
      156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
      156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
-     156,   157,   157,   157,   157,   158,   158,   158,   159,   159,
-     160,   160,   161,   161,   162,   162,   163,   163,   164,   164,
+     157,   157,   157,   157,   158,   158,   158,   159,   159,   160,
+     160,   161,   161,   162,   162,   163,   163,   164,   164,   164,
      164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
-     164,   164,   164,   164,   164,   165,   166,   167,   168,   168,
+     164,   165,   166,   167,   168,   168,   168,   168,   168,   168,
      168,   168,   168,   168,   168,   168,   168,   168,   168,   168,
-     168,   168,   168,   168,   168,   169,   169,   170,   170,   171,
-     171,   172,   172,   173,   174,   174,   174,   175,   175,   175,
-     175,   176,   176,   177,   177,   178,   178,   179,   179,   179,
-     179,   180,   180,   180,   180,   180,   180,   180,   180,   180,
-     181,   181,   182,   182,   182,   182,   182,   182,   182,   182,
-     182,   182,   182,   182,   183,   183,   183,   184,   184,   184,
-     184,   184,   184,   184,   184,   184,   185,   185,   186,   186,
-     187,   188,   188,   189,   189,   190,   190,   191,   192,   193,
-     193
+     168,   169,   169,   170,   170,   171,   171,   172,   172,   173,
+     174,   174,   174,   175,   175,   175,   175,   176,   176,   177,
+     177,   178,   178,   179,   179,   179,   179,   180,   180,   180,
+     180,   180,   180,   180,   180,   180,   181,   181,   182,   182,
+     182,   182,   182,   182,   182,   182,   182,   182,   182,   182,
+     183,   183,   183,   184,   184,   184,   184,   184,   184,   184,
+     184,   184,   185,   185,   186,   186,   187,   188,   188,   189,
+     189,   190,   190,   191,   192,   193,   193
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1042,25 +1038,24 @@ static const grib_yytype_uint8 grib_yyr2[] =
        8,     8,     8,    10,     8,     9,     7,     2,     2,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
        4,     4,     4,     4,     7,     6,     7,     2,     5,     5,
-       6,     4,     6,     7,     2,     5,     6,     8,     8,     3,
-       5,     5,     5,     5,     6,     3,     3,     3,     3,     5,
-       2,     7,     4,     8,    10,     5,     5,     5,     5,     2,
-       6,     4,     3,     4,     4,     6,     6,     4,     2,     1,
-       5,     4,     2,     1,     5,     4,     4,     2,     5,     5,
-       1,     7,    11,     7,    11,     6,     7,    11,     4,     4,
-       2,     3,     1,     2,     1,     2,     1,     3,     1,     1,
+       7,     4,     6,     7,     2,     6,     8,     8,     3,     5,
+       5,     5,     5,     6,     3,     3,     3,     3,     5,     2,
+       7,     4,     8,    10,     5,     5,     5,     5,     2,     6,
+       4,     3,     4,     4,     6,     6,     4,     2,     1,     5,
+       4,     2,     1,     5,     4,     4,     2,     5,     5,     1,
+       7,    11,     7,    11,     6,     7,    11,     4,     4,     2,
+       3,     1,     2,     1,     2,     1,     3,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     8,     7,     7,     6,     9,
-      12,    14,    10,    14,    12,     8,    11,     6,     9,    12,
-      10,    14,    12,     8,    11,     1,     2,     1,     2,     6,
-      12,     1,     2,     4,    10,     9,     7,     5,     5,     5,
-       5,     1,     2,     4,     6,     5,     5,     8,     1,     8,
-       1,     1,     1,     1,     1,     1,     3,     2,     3,     4,
-       3,     1,     3,     3,     3,     3,     3,     1,     4,     6,
-       6,     6,     8,     4,     3,     3,     1,     3,     3,     3,
-       3,     3,     3,     3,     2,     1,     3,     1,     3,     1,
-       1,     1,     1,     4,     2,     1,     2,     1,     7,     1,
-       2
+       1,     8,     7,     7,     6,     9,    12,    14,    10,    14,
+      12,     8,    11,     6,     9,    12,    10,    14,    12,     8,
+      11,     1,     2,     1,     2,     6,    12,     1,     2,     4,
+      10,     9,     7,     5,     5,     5,     5,     1,     2,     4,
+       6,     5,     5,     8,     1,     8,     1,     1,     1,     1,
+       1,     1,     3,     2,     3,     4,     3,     1,     3,     3,
+       3,     3,     3,     1,     4,     6,     6,     6,     8,     4,
+       3,     3,     1,     3,     3,     3,     3,     3,     3,     3,
+       2,     1,     3,     1,     3,     1,     1,     1,     1,     4,
+       2,     1,     2,     1,     7,     1,     2
 };
 
 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
@@ -1073,208 +1068,208 @@ static const grib_yytype_uint16 grib_yydefact[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   129,   133,   140,     0,     8,     0,     0,     0,     0,
+       0,   128,   132,   139,     0,     8,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     2,     5,    17,     0,    22,    28,    23,    24,    25,
-      26,     3,     4,    27,    29,   195,   197,   269,   267,   261,
-     262,     6,     0,     0,     0,     0,     0,     0,     0,     8,
+      26,     3,     4,    27,    29,   191,   193,   265,   263,   257,
+     258,     6,     0,     0,     0,     0,     0,     0,     0,     8,
        0,     8,     8,     0,    67,    68,     0,     8,     0,     0,
        8,     8,     8,     8,     8,     8,     8,     8,     8,     8,
        8,     8,     8,     8,     0,     0,     0,     0,     0,     0,
-       0,   110,     0,    87,     0,     0,     0,     0,     0,     0,
-       8,     0,     0,     0,   128,     0,   132,     0,   137,     0,
-       0,     0,     0,     0,   224,   225,     0,     0,     0,   218,
-     220,   222,   223,     0,     0,    32,   119,    33,    34,   221,
-     231,   237,   246,   255,   257,   259,   260,    36,     0,   264,
+       0,   109,     0,    87,     0,     0,     0,     0,     0,     0,
+       8,     0,     0,     0,   127,     0,   131,     0,   136,     0,
+       0,     0,     0,     0,   220,   221,     0,     0,     0,   214,
+     216,   218,   219,     0,     0,    32,   118,    33,    34,   217,
+     227,   233,   242,   251,   253,   255,   256,    36,     0,   260,
        0,     8,     0,     8,     0,     0,     0,    94,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     8,     0,     0,
        0,     0,     8,     0,     1,     0,     0,     0,    20,    18,
-      21,     0,     0,     0,   196,     0,     0,   198,     0,     0,
-     270,     0,     0,     0,     0,     0,   107,   108,     0,     0,
-       8,     8,   152,     8,     8,     0,     0,     0,     0,     8,
+      21,     0,     0,     0,   192,     0,     0,   194,     0,     0,
+     266,     0,     0,     0,     0,     0,   106,   107,     0,     0,
+       8,     8,   151,     8,     8,     0,     0,     0,     0,     8,
        0,     0,     8,     8,     8,     8,     8,     8,     8,     8,
        8,     8,     8,     8,     8,     8,     8,     0,     0,     8,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     8,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   154,
-     122,     0,     0,     0,     0,     0,     0,     0,     8,     0,
-       0,     0,     0,     0,   254,     0,     0,   221,   227,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   153,
+     121,     0,     0,     0,     0,     0,     0,     0,     8,     0,
+       0,     0,     0,     0,   250,     0,     0,   217,   223,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     8,   106,
-       0,   105,     8,     8,     8,     0,     0,     0,     0,     8,
-       8,     8,    99,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     8,   105,
+       0,   104,     8,     8,     8,     0,     0,     0,     0,     8,
+       8,     8,    98,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     8,
        0,     0,     0,    19,     0,     0,     0,     0,     0,     0,
-       0,     0,   136,     0,     0,     0,     0,     0,   153,    42,
+       0,     0,   135,     0,     0,     0,     0,     0,   152,    42,
       47,     0,     0,     0,     8,    69,     0,     0,    71,    70,
       73,    72,    75,    74,    77,    76,    79,    78,    81,    80,
       83,    82,     0,     0,     0,     0,     0,     0,     8,     0,
-     112,     8,     0,     8,     0,     8,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   159,   171,   158,   172,   173,
-     174,   163,   160,   161,   162,   164,   166,   169,   165,   167,
-     168,   170,   155,   156,     0,   123,     0,   124,   127,   131,
-     135,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     228,     0,   226,    35,   218,   253,   230,   235,   236,   232,
-     233,   234,   245,   244,   248,   252,   250,   251,   249,   247,
-     256,   258,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   121,     0,     0,     8,     8,
-       8,     8,     8,    15,     0,     0,     0,   211,   263,     0,
-       0,     0,     0,     8,    91,     0,     0,     0,     0,     0,
-       8,     8,     0,     8,     8,     8,     8,     0,     8,     8,
-       8,     8,     8,     8,     0,     8,     0,     0,   109,     0,
-       0,     0,    88,    11,     9,     0,    89,     8,     0,     0,
-       0,     0,     8,     0,     8,     0,     0,     0,     0,     8,
-       0,     0,     0,     0,     0,    13,     0,     0,   130,   134,
-     139,   138,   118,     0,     0,     0,   243,   238,     0,     0,
-     229,     0,   100,     8,   101,   102,   103,     0,     0,     8,
-       0,   115,   116,   117,     0,     0,     0,     0,     0,     0,
-       0,     0,   216,     0,   208,   212,   215,   207,   209,     8,
-       8,   210,     0,     0,     0,     0,   265,     0,     0,     8,
-       8,     8,     8,     0,     8,     8,     8,     8,     0,     8,
-      85,     8,     8,     8,     8,     8,     8,     8,     8,     8,
-       8,     8,     8,     8,     8,     8,     8,     0,    90,     8,
-       0,     0,     0,     0,   178,     0,   199,     0,     0,     0,
-       0,   187,   157,     0,     0,     0,     0,    30,   145,   125,
-       0,   126,     0,     0,     0,     0,     0,   120,   104,     8,
-       8,    96,     8,     0,     0,   201,     0,     8,     8,     8,
-       8,     8,    16,     0,     0,     8,    92,     0,     0,     0,
-     141,   266,   268,   143,     0,    37,     0,    39,   177,    41,
-      48,    43,    51,   176,    86,     0,    52,     0,    54,    84,
-       0,    49,     0,    36,     8,    59,     0,     8,     0,   111,
-       8,     0,    12,    10,    66,     0,     0,     0,     0,     8,
-       0,     0,     0,     0,     0,     8,     0,     0,   150,   146,
-       0,    31,    14,   239,   240,     0,   241,     0,     0,     0,
-       0,     8,     0,     0,   206,   202,     0,    44,    46,    45,
-       8,     8,     0,   213,    93,     0,     0,     8,     8,     8,
-       8,     8,     8,     0,    56,     8,    62,     8,   113,     8,
-       0,     8,     0,     0,   185,     0,     0,     8,     0,     0,
-     193,   148,   149,     0,   151,     0,     0,     0,    97,    98,
-      64,     0,     0,   175,    60,    61,     0,     0,     0,     8,
-       8,     8,     8,     8,     8,     0,     8,    65,     8,     0,
-       8,   179,     0,     0,     0,     0,     8,   188,     0,     0,
-       0,   242,   217,   219,   203,   205,     0,   214,     0,     0,
-      38,    40,    53,    55,    50,    58,     0,    63,   114,     0,
-     182,     0,     8,     0,     0,   190,     0,     8,     0,   204,
-     142,   144,     8,     0,     8,     0,     8,   186,     8,     8,
-       0,     8,   194,   147,    57,     0,   180,     0,   184,   200,
-     189,     0,   192,     8,     8,     8,   181,   183,   191
+     111,     8,     0,     8,     0,     8,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   158,   167,   157,   168,   169,
+     170,   160,   159,   161,   163,   162,   164,   165,   166,   154,
+     155,     0,   122,     0,   123,   126,   130,   134,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   224,     0,   222,
+      35,   214,   249,   226,   231,   232,   228,   229,   230,   241,
+     240,   244,   248,   246,   247,   245,   243,   252,   254,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   120,     0,     0,     8,     8,     8,     8,     8,
+      15,     0,     0,     0,   207,   259,     0,     0,     0,     0,
+       8,    91,     0,     0,     0,     0,     0,     8,     8,     0,
+       8,     8,     8,     8,     0,     8,     8,     8,     8,     8,
+       8,     0,     8,     0,     0,   108,     0,     0,     0,    88,
+      11,     9,     0,    89,     8,     0,     0,     0,     0,     8,
+       0,     8,     0,     0,     0,     0,     8,     0,     0,     0,
+       0,     0,    13,     0,     0,   129,   133,   138,   137,   117,
+       0,     0,     0,   239,   234,     0,     0,   225,     0,    99,
+       8,   100,   101,   102,     0,     0,     8,     0,   114,   115,
+     116,     0,     0,     0,     0,     0,     0,     0,     0,   212,
+       0,   204,   208,   211,   203,   205,     8,     8,   206,     0,
+       0,     0,     0,   261,     0,     0,     8,     8,     8,     8,
+       0,     8,     8,     8,     8,     0,     8,    85,     8,     8,
+       8,     8,     8,     8,     8,     8,     8,     8,     8,     8,
+       8,     8,     8,     8,     0,     8,     8,     0,     0,     0,
+       0,   174,     0,   195,     0,     0,     0,     0,   183,   156,
+       0,     0,     0,     0,    30,   144,   124,     0,   125,     0,
+       0,     0,     0,     0,   119,   103,     8,     8,    95,     8,
+       0,     0,   197,     0,     8,     8,     8,     8,     8,    16,
+       0,     0,     8,    92,     0,     0,     0,   140,   262,   264,
+     142,     0,    37,     0,    39,   173,    41,    48,    43,    51,
+     172,    86,     0,    52,     0,    54,    84,     0,    49,     0,
+      36,     8,    59,     0,     8,     0,   110,     8,     0,    12,
+      10,    90,    66,     0,     0,     0,     0,     8,     0,     0,
+       0,     0,     0,     8,     0,     0,   149,   145,     0,    31,
+      14,   235,   236,     0,   237,     0,     0,     0,     0,     8,
+       0,     0,   202,   198,     0,    44,    46,    45,     8,     8,
+       0,   209,    93,     0,     0,     8,     8,     8,     8,     8,
+       8,     0,    56,     8,    62,     8,   112,     8,     0,     8,
+       0,     0,   181,     0,     0,     8,     0,     0,   189,   147,
+     148,     0,   150,     0,     0,     0,    96,    97,    64,     0,
+       0,   171,    60,    61,     0,     0,     0,     8,     8,     8,
+       8,     8,     8,     0,     8,    65,     8,     0,     8,   175,
+       0,     0,     0,     0,     8,   184,     0,     0,     0,   238,
+     213,   215,   199,   201,     0,   210,     0,     0,    38,    40,
+      53,    55,    50,    58,     0,    63,   113,     0,   178,     0,
+       8,     0,     0,   186,     0,     8,     0,   200,   141,   143,
+       8,     0,     8,     0,     8,   182,     8,     8,     0,     8,
+     190,   146,    57,     0,   176,     0,   180,   196,   185,     0,
+     188,     8,     8,     8,   177,   179,   187
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const grib_yytype_int16 grib_yydefgoto[] =
 {
-      -1,    80,   289,   545,   567,   504,   615,    83,   668,   176,
-     177,   178,    84,    85,    86,   665,   666,   243,   290,   442,
-     443,    87,    88,    89,    90,    91,    92,    93,   684,   685,
-      94,    95,   506,   507,    96,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,    97,   616,   617,    99,   100,   101
+      -1,    80,   289,   542,   564,   501,   612,    83,   665,   176,
+     177,   178,    84,    85,    86,   662,   663,   243,   290,   439,
+     440,    87,    88,    89,    90,    91,    92,    93,   681,   682,
+      94,    95,   503,   504,    96,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,    97,   613,   614,    99,   100,   101
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -655
+#define YYPACT_NINF -651
 static const grib_yytype_int16 grib_yypact[] =
 {
-    1332,  -655,  -107,   -78,   -33,   131,   -15,    18,    20,    28,
-      55,    64,    93,    78,   130,   150,   141,   173,   211,   213,
-     220,   232,   236,   265,   267,   268,   269,   270,   271,   273,
-     275,   276,   165,   192,   277,   272,   274,   279,   282,   283,
-     284,   285,   286,   287,   288,   290,   291,   292,   289,   294,
-     295,   -85,   -49,    25,   296,   897,   293,   299,   298,   300,
-     301,   305,   306,   308,   309,   310,   319,   322,   323,   330,
-     311,   337,   338,   339,   332,   333,   -12,   335,   336,   -42,
-     422,  -655,  -655,  1435,   342,  -655,  -655,  -655,  -655,  -655,
-    -655,   224,   118,  -655,  -655,  -655,  -655,    16,  -655,  -655,
-    -655,  -655,   897,   897,   343,   340,   346,   348,   355,   897,
-     356,   -86,   354,   363,  -655,  -655,   897,    59,   364,   365,
-     354,   354,   354,   354,   354,   354,   354,   354,   354,   354,
-     354,   354,   354,   354,   367,   368,   373,   361,   374,   376,
-     186,   375,   -29,  -655,   369,   377,   366,    46,   -11,   171,
-     371,   897,   379,   380,  -655,   392,  -655,   395,  -655,   128,
-     393,   401,   411,   412,  -655,  -655,   413,   415,   897,   416,
-    -655,  -655,  -655,   897,   -46,  -655,  -655,  -655,   421,   428,
-     414,  -655,   -53,   -48,   143,   432,   436,  -655,   439,  -655,
-     433,   371,   438,   371,   435,   437,   440,  -655,   442,   445,
-     448,   449,   450,   451,   455,   897,   897,   897,   457,   454,
-      24,   456,    61,   458,  -655,   459,     7,   472,  1663,  -655,
-    -655,   463,   464,   465,  -655,   466,   467,  -655,   470,   469,
-    -655,   474,   475,   476,   479,   478,  -655,  -655,   480,   481,
-     897,   897,  -655,   371,   371,   483,   484,   897,   495,   371,
-     489,   491,   371,   371,   371,   371,   371,   371,   371,   371,
-     371,   371,   371,   371,   371,   371,   897,   498,   499,   897,
-     501,   502,   510,   511,   512,   473,   516,   897,   739,   897,
-     517,   519,   224,   526,   118,   530,   531,   224,   372,  -655,
-    -655,   523,   702,   897,   524,   525,   527,   533,   897,   545,
-     560,   565,   566,   206,   143,    82,   558,  -655,  -655,   897,
-     -73,   -46,   -46,   -46,   -46,   -46,   -46,  1029,  1029,  1029,
-    1029,  1029,  1029,  1029,  1029,   897,   897,   494,   897,  -655,
-     564,  -655,   897,   897,   897,   567,   568,   569,   570,   897,
-     897,   897,  -655,   571,   572,   897,   574,   575,   576,   577,
-     578,   585,   579,   573,   585,   579,   579,   897,   588,   371,
-     579,   897,    13,  -655,   580,   581,   583,   584,   897,   897,
-     582,   589,  -655,   591,   596,   590,   230,   594,  -655,  -655,
-    -655,   597,   592,   599,   354,  -655,   608,   613,  -655,  -655,
-    -655,  -655,  -655,  -655,  -655,  -655,  -655,  -655,  -655,  -655,
-    -655,  -655,   609,   615,   618,   612,   623,   624,   371,   617,
-    -655,   897,   628,   371,   254,   371,   621,    77,    19,   -82,
-     627,   -52,    84,   178,   -68,  -655,  -655,  -655,  -655,  -655,
-    -655,  -655,  -655,  -655,  -655,  -655,  -655,  -655,  -655,  -655,
-    -655,  -655,   629,  -655,   -59,  -655,   107,  -655,  -655,   640,
-     641,   642,   643,   636,   644,   645,    94,   637,   646,   647,
-    -655,   638,  -655,  -655,  -655,  -655,  -655,  -655,  -655,  -655,
-    -655,  -655,   -53,   -53,   -48,   -48,   -48,   -48,   -48,   -48,
-     143,   432,   652,   648,   653,   649,   656,   657,   654,   668,
-     669,   670,   666,   672,   673,  -655,   671,   675,   897,   897,
-     897,   897,   897,  -655,   181,   677,   665,   579,  -655,   247,
-     678,   679,   683,   354,  -655,   680,   676,   687,  1560,  1663,
-     -66,    86,  1663,   354,   354,   354,   354,  1663,   354,   371,
-     193,   198,   354,   199,   933,   354,   986,   689,  -655,   698,
-     690,   693,  -655,  -655,  -655,  -104,  -655,   354,   655,   694,
-     707,   224,   371,   710,   371,   712,   696,   718,   224,   371,
-     372,   719,   720,   302,   716,  -655,   -21,   -18,  -655,  -655,
-    -655,  -655,  -655,   721,   724,   725,  -655,  -655,   726,   727,
-    -655,   717,  -655,   371,  -655,  -655,  -655,   723,   728,   354,
-     897,  -655,  -655,  -655,   747,   722,   729,   734,   735,   736,
-     740,   731,  -655,   888,  -655,  -655,  -655,  -655,  -655,   354,
-     371,  -655,   738,   741,    11,   744,   -71,   745,   746,   897,
-     371,   897,   371,   748,   371,   371,   371,   371,   749,   371,
-    -655,   897,   371,   897,   371,   371,   897,   371,   897,   354,
-     371,   897,   354,   897,   371,   354,   897,   259,  -655,   371,
-     756,   224,   116,   -13,  -655,   759,  -655,   760,   224,   117,
-      22,  -655,  -655,   742,   755,   716,   -62,  -655,   730,  -655,
-     765,  -655,   758,   761,   154,   764,   767,  -655,  -655,   897,
-     897,  -655,   354,   897,   -70,  -655,  1663,   371,   371,   371,
-     354,   354,  -655,   585,   743,   371,  -655,  1663,   -71,   434,
-     886,  -655,  -655,   890,   768,  -655,   770,  -655,  -655,  -655,
-    -655,  -655,  -655,  -655,  -655,   771,  -655,   772,  -655,  -655,
-     773,  -655,   774,   558,   -64,  -655,   778,   371,   779,  -655,
-     371,   780,  -655,  -655,  -655,   781,    60,   789,   762,   371,
-     791,   792,    74,   795,   785,   371,   897,   897,   730,   915,
-     716,  -655,  -655,  -655,  -655,   797,  -655,   798,   799,   793,
-     794,   371,   800,   802,  -655,  -655,   804,  -655,  -655,  -655,
-     371,   371,   251,  -655,  -655,   806,   807,   354,   354,   354,
-     354,   354,   354,   812,  -655,   354,  -655,   371,  -655,   354,
-     156,   371,   808,   224,  -655,   818,   158,   371,   819,   224,
-    -655,  -655,  -655,   815,   730,   823,   824,   827,  -655,  -655,
-    -655,  1663,  1170,  -655,  -655,  -655,   832,  1663,  1663,   371,
-     371,   371,   371,   371,   371,   828,   371,  -655,   371,   838,
-     371,  -655,   839,   104,   840,   841,   371,  -655,   842,   111,
-     302,  -655,  -655,  -655,  -655,  -655,   811,  -655,   830,   831,
-    -655,  -655,  -655,  -655,  -655,  -655,   836,  -655,  -655,   160,
-    -655,   166,   371,   837,   844,  -655,   168,   371,   -50,  -655,
-    -655,  -655,   371,   848,   371,   849,   371,  -655,   371,   371,
-     850,   371,  -655,  -655,  -655,   845,  -655,   846,  -655,  -655,
-    -655,   847,  -655,   371,   371,   371,  -655,  -655,  -655
+    1124,  -651,  -109,   -76,   -70,    52,   -14,    40,    59,    81,
+      96,   101,   132,   -54,   103,   146,   268,   158,   166,   171,
+     183,   193,   200,   218,   249,   278,   286,   297,   299,   300,
+     302,   304,   301,   306,   314,   313,   321,   328,   331,   339,
+     340,   342,   343,   344,   345,   346,   350,   351,   347,   352,
+     353,   -18,   -12,    56,   354,   780,   348,   -36,   357,   358,
+     359,   364,   366,   367,   368,   369,   365,   370,   376,   377,
+     372,   373,   375,   384,   362,   378,     7,   381,   388,   -75,
+     508,  -651,  -651,  1227,   382,  -651,  -651,  -651,  -651,  -651,
+    -651,   227,    78,  -651,  -651,  -651,  -651,    16,  -651,  -651,
+    -651,  -651,   780,   780,   406,   411,   413,   407,   415,   780,
+     416,   269,   409,   418,  -651,  -651,   780,    92,   419,   420,
+     409,   409,   409,   409,   409,   409,   409,   409,   409,   409,
+     409,   409,   409,   409,   417,   423,   427,   424,   429,   431,
+     222,   425,  -104,  -651,   428,   430,   426,    57,   -40,   178,
+     403,   780,   432,   434,  -651,   439,  -651,   443,  -651,   267,
+     440,   442,   447,   448,  -651,  -651,   449,   450,   780,   452,
+    -651,  -651,  -651,   780,   -45,  -651,  -651,  -651,   457,   463,
+     453,  -651,    44,   -86,    39,   468,   473,  -651,   465,  -651,
+     464,   403,   445,   403,   466,   469,   470,  -651,   471,   477,
+     479,   481,   476,   478,   482,   780,   780,   780,   483,   176,
+    -108,   459,   110,   475,  -651,   485,     8,   489,  1455,  -651,
+    -651,   486,   491,   493,  -651,   495,   496,  -651,   487,   499,
+    -651,   502,   504,   505,   509,   517,  -651,  -651,   518,   521,
+     780,   780,  -651,   403,   403,   523,   525,   780,   532,   403,
+     528,   527,   403,   403,   403,   403,   403,   403,   403,   403,
+     403,   403,   403,   403,   403,   403,   780,   530,   535,   780,
+     536,   537,   539,   545,   546,   540,   547,   780,   451,   780,
+     549,   550,   227,   551,    78,   552,   553,   227,  1521,  -651,
+    -651,   563,   696,   780,   564,   565,   567,   568,   780,   555,
+     556,   578,   579,   281,    39,    82,   571,  -651,  -651,   780,
+     -60,   -45,   -45,   -45,   -45,   -45,   -45,  1546,  1546,  1546,
+    1546,  1546,  1546,  1546,  1546,   780,   780,   577,   780,  -651,
+     575,  -651,   780,   780,   780,   576,   580,   581,   583,   780,
+     780,   780,  -651,   582,   586,   780,   588,   589,   590,   592,
+     594,   584,   585,   480,   584,   585,   585,   780,   607,   403,
+     585,   780,    43,  -651,   572,   597,   604,   606,   780,   780,
+     605,   609,  -651,   618,   622,   612,   284,   616,  -651,  -651,
+    -651,   629,   619,   623,   409,  -651,   632,   635,  -651,  -651,
+    -651,  -651,  -651,  -651,  -651,  -651,  -651,  -651,  -651,  -651,
+    -651,  -651,   630,   636,   638,   631,   639,   641,   403,   637,
+    -651,   780,   645,   403,   287,   403,   642,    77,   -20,    23,
+     644,   -49,    84,   -11,   106,  -651,  -651,  -651,  -651,  -651,
+    -651,  -651,  -651,  -651,  -651,  -651,  -651,  -651,  -651,   646,
+    -651,   -27,  -651,   259,  -651,  -651,   651,   652,   653,   654,
+     647,   666,   667,   108,   663,   671,   675,  -651,   672,  -651,
+    -651,  -651,  -651,  -651,  -651,  -651,  -651,  -651,  -651,    44,
+      44,   -86,   -86,   -86,   -86,   -86,   -86,    39,   468,   682,
+     676,   688,   680,   681,   686,   691,   700,   701,   702,   698,
+     703,   704,  -651,   634,   705,   780,   780,   780,   780,   780,
+    -651,    -9,   695,   697,   585,  -651,   111,   707,   708,   709,
+     409,  -651,   711,   706,   713,  1352,  1455,   -61,   175,  1455,
+     409,   409,   409,   409,  1455,   409,   403,   189,   196,   409,
+     214,  1502,   409,  1511,   718,  -651,   727,   719,   721,  -651,
+    -651,  -651,   -42,  -651,   409,   736,   726,   739,   227,   403,
+     741,   403,   742,   728,   745,   227,   403,  1521,   753,   755,
+     334,   751,  -651,   -39,   -37,  -651,  -651,  -651,  -651,  -651,
+     758,   759,   760,  -651,  -651,   761,   763,  -651,   757,  -651,
+     403,  -651,  -651,  -651,   762,   766,   409,   780,  -651,  -651,
+    -651,   783,   764,   770,   775,   776,   777,   778,   773,  -651,
+     746,  -651,  -651,  -651,  -651,  -651,   409,   403,  -651,   779,
+     781,    27,   784,   -64,   785,   792,   780,   403,   780,   403,
+     794,   403,   403,   403,   403,   796,   403,  -651,   780,   403,
+     780,   403,   403,   780,   403,   780,   409,   403,   780,   409,
+     780,   403,   409,   780,   293,   403,   403,   786,   227,   120,
+     134,  -651,   788,  -651,   790,   227,   122,   139,  -651,  -651,
+     801,   803,   751,   -63,  -651,   791,  -651,   813,  -651,   806,
+     808,   123,   814,   816,  -651,  -651,   780,   780,  -651,   409,
+     780,   -26,  -651,  1455,   403,   403,   403,   409,   409,  -651,
+     584,   817,   403,  -651,  1455,   -64,   835,   906,  -651,  -651,
+     938,   818,  -651,   819,  -651,  -651,  -651,  -651,  -651,  -651,
+    -651,  -651,   820,  -651,   821,  -651,  -651,   822,  -651,   815,
+     571,   -66,  -651,   823,   403,   825,  -651,   403,   830,  -651,
+    -651,  -651,  -651,   831,   154,   829,   811,   403,   840,   841,
+     252,   843,   833,   403,   780,   780,   791,   963,   751,  -651,
+    -651,  -651,  -651,   846,  -651,   847,   849,   844,   848,   403,
+     850,   851,  -651,  -651,   842,  -651,  -651,  -651,   403,   403,
+     244,  -651,  -651,   854,   855,   409,   409,   409,   409,   409,
+     409,   852,  -651,   409,  -651,   403,  -651,   409,   140,   403,
+     858,   227,  -651,   859,   141,   403,   864,   227,  -651,  -651,
+    -651,   857,   791,   861,   862,   863,  -651,  -651,  -651,  1455,
+     995,  -651,  -651,  -651,   873,  1455,  1455,   403,   403,   403,
+     403,   403,   403,   879,   403,  -651,   403,   890,   403,  -651,
+     891,   256,   892,   893,   403,  -651,   894,   270,   334,  -651,
+    -651,  -651,  -651,  -651,   882,  -651,   883,   905,  -651,  -651,
+    -651,  -651,  -651,  -651,   920,  -651,  -651,   155,  -651,   159,
+     403,   923,   924,  -651,   161,   403,   -31,  -651,  -651,  -651,
+     403,   935,   403,   936,   403,  -651,   403,   403,   937,   403,
+    -651,  -651,  -651,   929,  -651,   930,  -651,  -651,  -651,   931,
+    -651,   403,   403,   403,  -651,  -651,  -651
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const grib_yytype_int16 grib_yypgoto[] =
 {
-    -655,  -655,     5,   528,  -655,  -351,     0,  -655,  -654,   -16,
-    -307,  -178,  -655,  -655,  -655,  -443,   145,   549,   108,  -655,
-     423,  -655,  -655,  -655,  -655,  -254,   697,  -655,  -655,   307,
-    -655,   -84,  -347,  -655,   -80,  -148,   816,   -47,    69,   -44,
-    -164,   674,  -655,   -54,  -655,    10,   382,  -655,  -655,   895
+    -651,  -651,     5,   621,  -651,  -348,     0,  -651,  -650,   -13,
+    -307,  -201,  -651,  -651,  -651,  -440,   228,   -89,   105,  -651,
+     510,  -651,  -651,  -651,  -651,  -231,   787,  -651,  -651,   387,
+    -651,   -88,  -347,  -651,   -81,  -145,   895,   133,   135,   137,
+    -161,   744,  -651,    42,  -651,    10,   460,  -651,  -651,   968
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1283,140 +1278,142 @@ static const grib_yytype_int16 grib_yypgoto[] =
 #define YYTABLE_NINF -9
 static const grib_yytype_int16 grib_yytable[] =
 {
-      82,   564,   463,   509,   304,    81,   208,   224,   510,   511,
-      98,   748,   227,   515,   164,   165,   783,    57,   561,   562,
-     228,   561,   562,   647,   102,   208,   307,   342,   419,   208,
-     561,   562,   648,   424,   167,   346,   347,   348,   683,   154,
-     763,   221,   222,    78,   223,   240,   155,   241,   231,   232,
-     464,   170,   229,   103,   552,   221,   222,    78,   223,   349,
-     175,   167,   246,   619,   312,   313,   764,   241,   559,   383,
-     350,   225,   226,   288,   749,   156,   563,   169,   170,   171,
-     172,   212,   157,   219,   554,   173,   883,   314,   315,   316,
-     317,   213,   174,   238,   275,   318,   804,   291,   104,   413,
-     415,   161,   162,   163,    57,   276,   647,    98,   107,   670,
-     221,   222,    78,   223,   175,   669,   242,   242,   671,   306,
-     283,   209,   242,   739,   284,   242,   242,   242,   242,   242,
+      82,   561,   460,   224,   342,    81,   506,   304,   507,   508,
+      98,   227,   746,   512,   781,   164,   165,   558,   559,   275,
+     228,   354,   102,   244,    57,   208,   208,   355,   249,   307,
+     276,   252,   253,   254,   255,   256,   257,   258,   259,   260,
+     261,   262,   263,   264,   265,   208,   383,   167,   212,   558,
+     559,   419,   317,   558,   559,   103,   424,   318,   213,   229,
+     175,   104,   167,   461,   170,   346,   347,   348,   616,   114,
+     115,   288,   241,   747,   225,   226,   413,   415,   169,   170,
+     171,   172,   680,   219,   761,   644,   173,   551,   644,   349,
+     667,   283,   189,   174,   645,   284,   238,   666,   802,   668,
+     350,   161,   162,   163,    57,   881,   154,    98,   560,   107,
+     762,   547,   156,   155,   175,   548,   242,   242,   598,   157,
+     554,   599,   242,   359,   555,   242,   242,   242,   242,   242,
      242,   242,   242,   242,   242,   242,   242,   242,   242,   229,
-     362,   108,   164,   165,   699,   221,   222,    78,   223,   158,
-     550,   109,   343,   354,   551,   353,   159,   110,   745,   355,
-     605,   480,   465,   307,   307,   307,   307,   307,   307,   307,
-     307,   307,   307,   307,   307,   307,   307,   280,   111,   512,
-     281,   282,   166,   221,   222,    78,   223,   112,   247,   167,
-     357,   344,   241,   248,   241,   358,   791,   221,   222,    78,
-     223,   114,   115,   168,   548,   169,   170,   171,   172,   549,
-     797,   555,   175,   173,   460,   621,   556,   242,   363,   241,
-     174,   575,   113,   750,   377,   378,   576,   221,   222,    78,
-     223,   565,   543,   544,   221,   222,    78,   223,   447,   448,
-     862,   225,   226,   737,   743,   175,   175,   867,   738,   744,
-     402,   296,   297,   405,   319,   320,   321,   322,   323,   324,
-     105,   116,   106,   416,   466,   467,   468,   469,   470,   471,
-     118,   175,   119,   117,   175,   474,   475,   476,   477,   478,
-     479,   755,   453,   829,   175,   835,   756,   873,   830,   461,
-     836,   497,   874,   875,   135,   880,   120,   653,   876,   329,
-     881,   331,   285,   175,   660,   286,   287,   516,   601,   557,
-     175,   602,   483,   558,   517,   353,   485,   486,   487,   272,
-     273,   136,   631,   492,   493,   494,   241,   633,   636,   458,
-     459,   241,   241,   175,   121,   224,   122,   175,   175,   175,
-     224,   227,   772,   123,   175,   175,   175,   221,   222,    78,
-     223,   379,   380,   523,   524,   124,   639,   385,   642,   125,
-     388,   389,   390,   391,   392,   393,   394,   395,   396,   397,
-     398,   399,   400,   401,   601,   425,   762,   606,   601,   543,
-     544,   816,   561,   562,   732,   733,   472,   473,   126,   242,
-     127,   128,   129,   130,   131,   540,   132,   736,   133,   134,
-     137,   138,   140,   139,   742,   141,   142,   143,   144,   145,
-     146,   147,   682,   148,   149,   150,   175,   152,   153,   160,
-     151,   190,   214,   191,   188,   750,   426,   189,   193,   194,
-     192,   195,   196,   197,   202,   427,   428,   429,   430,   431,
-     432,   433,   434,   435,   436,   437,   438,   439,   198,   440,
-     441,   199,   200,   161,   162,   163,   346,   347,   348,   201,
-     203,   204,   205,   206,   207,   234,   233,   514,   210,   211,
-     220,   235,   236,   161,   162,   163,   346,   347,   348,   237,
-     349,   239,   596,   597,   598,   599,   600,   241,   245,   250,
-     251,   350,   269,   267,   164,   165,   266,   279,   268,   270,
-     349,   271,   277,   175,   175,   175,   175,   175,   288,   274,
-     278,   350,   292,   293,   164,   165,   538,   294,   242,   618,
-     295,   542,   623,   546,   298,   242,   242,   628,   242,   242,
-     242,   242,   299,   242,   166,   242,   242,   242,   242,   833,
-     242,   167,   300,   301,   302,   839,   303,   305,   309,   694,
-     310,   325,   242,   311,   166,   168,   326,   169,   170,   171,
-     172,   167,   327,   330,   328,   173,   332,   335,   333,   224,
-     336,   334,   174,   337,   338,   168,   224,   169,   170,   171,
-     172,   339,   340,   351,   723,   173,   341,   723,   345,   352,
-     361,   356,   174,   360,   242,   212,   364,   365,   213,   366,
-     367,   368,   369,   704,   411,   706,   370,   371,   372,   373,
-     374,   376,   375,   381,   242,   715,   382,   717,   384,   386,
-     720,   482,   722,   387,   175,   726,   175,   728,   403,   404,
-     731,   406,   407,   408,   409,   410,   175,   630,   175,   412,
-     417,   175,   418,   175,   242,   353,   175,   242,   175,   420,
-     242,   175,   224,   422,   423,   444,   449,   450,   224,   451,
-     654,   244,   656,   759,   760,   452,   249,   661,   454,   252,
-     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
-     263,   264,   265,   455,   175,   175,   766,   242,   456,   457,
-     462,   678,   801,   802,   484,   242,   242,   488,   489,   490,
-     491,   508,   505,   495,   496,   498,   499,   500,   501,   502,
-     503,   513,   351,   354,   520,   352,   355,   518,   696,   521,
-     526,   161,   162,   163,   519,   522,   525,   527,   705,   528,
-     707,   530,   709,   710,   711,   712,   531,   714,   533,   532,
-     716,   534,   718,   719,   535,   721,   536,   537,   725,   224,
-     539,   541,   729,   547,   553,   224,   560,   734,   161,   162,
-     163,   359,   164,   165,   568,   569,   570,   571,   572,   577,
-     580,   573,   574,   578,   579,   581,   583,   587,   445,   650,
-     582,   584,   242,   242,   242,   242,   242,   242,   585,   586,
-     242,   588,   589,   590,   242,   767,   768,   769,   591,   164,
-     165,   604,   166,   774,   592,   593,   594,   595,   612,   167,
-     603,   844,   846,   609,   607,   608,   611,   848,   849,   613,
-     643,   644,   645,   168,   646,   169,   170,   171,   172,   651,
-     652,   658,   784,   173,   655,   786,   657,   446,   788,   166,
-     174,   659,   663,   664,   667,   672,   167,   794,   673,   677,
-     674,   675,   676,   800,   679,   683,   692,   686,   751,   680,
-     168,   687,   169,   170,   171,   172,   688,   689,   690,   810,
-     173,   773,   691,   697,   414,   746,   698,   174,   814,   815,
-     700,   702,   703,   735,   708,   713,   740,   741,   747,   752,
-     753,   757,   775,   754,   758,   827,   776,   793,   777,   831,
-     778,   779,   780,   781,   790,   837,   782,   161,   162,   163,
-     785,   787,   789,   792,   795,   796,   161,   162,   163,   798,
-     799,   803,   805,   806,   807,   808,   809,   850,   851,   852,
-     853,   854,   855,   529,   857,   832,   858,   811,   860,   812,
-     813,   817,   818,   825,   865,   834,   838,   869,   164,   165,
-     840,   856,   161,   162,   163,   841,   842,   164,   165,   843,
-     847,   859,   861,   863,   864,   866,   870,   871,   872,   878,
-     877,   885,   887,   891,   566,   882,   879,   893,   894,   895,
-     884,   421,   886,   662,   888,   868,   889,   890,   166,   892,
-     308,   765,   230,   164,   165,   167,     0,   166,   701,     0,
-     481,   896,   897,   898,   167,   161,   162,   163,     0,   168,
-       0,   169,   170,   171,   172,     0,     0,   693,   168,   173,
-     169,   170,   171,   172,     0,     0,   174,     0,   173,     0,
-       0,     0,     0,   166,     0,   174,     0,     0,     0,     0,
-     167,     0,     0,     0,     0,     0,   164,   165,   161,   162,
-     163,     0,     0,     0,   168,     0,   169,   170,   171,   172,
-       0,     0,   610,     0,   638,     0,     0,     0,     0,   620,
-     622,   174,   624,   625,   626,   627,     0,   629,     0,   632,
-     634,   635,   637,     0,   640,     0,   166,     0,     0,   164,
-     165,     0,     0,   167,     0,     0,   649,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   168,     0,   169,
-     170,   171,   172,     0,     0,     0,     0,   641,     0,     0,
-       0,     0,     0,     0,   174,     0,     0,     0,     0,   166,
-       0,     0,     0,     0,     0,     0,   167,     0,   681,     0,
+     209,   362,   164,   165,   231,   232,   221,   222,    78,   223,
+     319,   320,   321,   322,   323,   324,   509,   602,   246,   549,
+     696,   312,   313,   108,   477,   462,   307,   307,   307,   307,
+     307,   307,   307,   307,   307,   307,   307,   307,   307,   307,
+     158,   105,   166,   106,   314,   315,   316,   159,   280,   167,
+     109,   281,   282,   291,   344,   161,   162,   163,   346,   347,
+     348,   225,   226,   168,   545,   169,   170,   171,   172,   546,
+     110,   552,   175,   173,   457,   306,   553,   242,   363,   111,
+     174,   247,   349,   748,   112,   241,   248,   377,   378,   221,
+     222,    78,   223,   350,   116,   572,   164,   165,   598,   357,
+     573,   603,   556,   241,   358,   175,   175,   735,   343,   741,
+     753,   353,   736,   402,   742,   754,   405,   221,   222,    78,
+     223,   113,   221,   222,    78,   223,   416,   827,   833,   117,
+     737,   175,   828,   834,   175,   743,   166,   221,   222,    78,
+     223,   120,   871,   167,   175,   450,   873,   872,   878,   121,
+     789,   874,   458,   879,   122,   526,   329,   168,   331,   169,
+     170,   171,   172,   175,   618,   351,   123,   173,   241,   285,
+     175,   352,   286,   287,   174,   480,   124,   650,   628,   482,
+     483,   484,   241,   125,   657,   630,   489,   490,   491,   241,
+     636,   224,   639,   175,   444,   445,   224,   175,   175,   175,
+     227,   126,   770,   633,   175,   175,   175,   241,   379,   380,
+     221,   222,    78,   223,   385,   272,   273,   388,   389,   390,
+     391,   392,   393,   394,   395,   396,   397,   398,   399,   400,
+     401,   598,   127,   760,   814,   221,   222,    78,   223,   221,
+     222,    78,   223,   562,   540,   541,   679,   494,   795,   242,
+     296,   297,   860,   221,   222,    78,   223,   118,   537,   119,
+     240,   128,   241,   513,   455,   456,   865,   520,   521,   129,
+     514,   353,   540,   541,   558,   559,   175,   734,   729,   730,
+     130,   607,   131,   132,   740,   133,   748,   134,   617,   619,
+     135,   621,   622,   623,   624,   136,   626,   137,   629,   631,
+     632,   634,   138,   637,   463,   464,   465,   466,   467,   468,
+     139,   140,   469,   470,   141,   646,   471,   472,   473,   474,
+     475,   476,   142,   143,   511,   144,   145,   146,   147,   148,
+     161,   162,   163,   149,   150,   152,   153,   160,   151,   188,
+     190,   191,   593,   594,   595,   596,   597,   193,   192,   194,
+     195,   196,   197,   206,   198,   202,   203,   678,   204,   199,
+     175,   175,   175,   175,   175,   200,   201,   205,   214,   207,
+     220,   164,   165,   535,   210,   242,   615,   692,   539,   620,
+     543,   211,   242,   242,   625,   242,   242,   242,   242,   233,
+     242,   236,   242,   242,   242,   242,   234,   242,   235,   237,
+     288,   239,   241,   245,   250,   251,   266,   721,   267,   242,
+     724,   166,   268,   727,   270,   269,   271,   279,   167,   274,
+     831,   277,   224,   278,   294,   292,   837,   293,   295,   224,
+     330,   298,   168,   299,   169,   170,   171,   172,   300,   301,
+     302,   303,   173,   305,   309,   310,   414,   325,   327,   174,
+     759,   242,   311,   326,   356,   328,   335,   332,   768,   769,
+     333,   334,   336,   701,   337,   703,   338,   339,   505,   340,
+     360,   242,   212,   341,   345,   712,   361,   714,   368,   364,
+     717,   175,   719,   175,   365,   723,   213,   725,   366,   367,
+     728,   627,   369,   175,   370,   175,   371,   372,   175,   373,
+     175,   242,   691,   175,   242,   175,   224,   242,   175,   374,
+     375,   376,   224,   381,   651,   384,   653,   382,   386,   387,
+     403,   658,   408,   757,   758,   404,   406,   407,   409,   410,
+     412,   411,   417,   418,   420,   422,   423,   720,   451,   452,
+     720,   175,   175,   764,   242,   675,   817,   818,   819,   820,
+     821,   822,   242,   242,   824,   441,   446,   447,   826,   448,
+     449,   453,   454,   459,   479,   481,   485,   352,   502,   500,
+     486,   487,   693,   488,   492,   161,   162,   163,   493,   495,
+     496,   497,   702,   498,   704,   499,   706,   707,   708,   709,
+     510,   711,   355,   351,   713,   354,   715,   716,   353,   718,
+     515,   517,   722,   224,   516,   518,   726,   519,   522,   224,
+     731,   732,   523,   525,   524,   527,   164,   165,   528,   530,
+     529,   531,   533,   532,   534,   161,   162,   163,   538,   591,
+     536,   550,   442,   557,   544,   565,   566,   567,   568,   569,
+     242,   242,   242,   242,   242,   242,   799,   800,   242,   765,
+     766,   767,   242,   570,   571,   574,   166,   772,   575,   161,
+     162,   163,   576,   167,   577,   578,   164,   165,   579,   842,
+     844,   580,   581,   582,   584,   846,   847,   168,   583,   169,
+     170,   171,   172,   585,   586,   587,   782,   173,   600,   784,
+     588,   443,   786,   601,   174,   589,   590,   592,   609,   606,
+     164,   165,   792,   604,   605,   610,   166,   608,   798,   640,
+     641,   642,   643,   167,   161,   162,   163,   346,   347,   348,
+     647,   648,   649,   655,   808,   652,   654,   168,   656,   169,
+     170,   171,   172,   812,   813,   690,   660,   173,   661,   664,
+     166,   349,   669,   670,   174,   671,   672,   167,   673,   674,
+     825,   680,   350,   676,   829,   164,   165,   677,   689,   683,
+     835,   168,   684,   169,   170,   171,   172,   685,   686,   687,
+     688,   173,   773,   733,   694,   738,   695,   739,   174,   749,
+     697,   699,   848,   849,   850,   851,   852,   853,   700,   855,
+     705,   856,   710,   858,   744,   166,   745,   750,   751,   863,
+     752,   755,   167,   756,   774,   771,   791,   780,   775,   776,
+     777,   778,   779,   790,   788,   783,   168,   785,   169,   170,
+     171,   172,   787,   793,   794,   875,   173,   796,   797,   801,
+     880,   803,   804,   174,   805,   882,   806,   884,   811,   886,
+     807,   887,   888,   823,   890,   830,   832,   809,   810,   815,
+     816,   836,   838,   839,   840,   841,   894,   895,   896,   215,
+       3,   845,   854,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,   857,   859,   861,   862,   864,   867,   868,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,   869,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,   870,    45,    46,   876,   877,    47,   883,   885,
+     889,   891,   892,   893,   563,   230,   866,   659,   763,   308,
+     478,   421,     0,   698,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,     0,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,     0,    69,    70,    71,    72,
+      73,    74,     0,     0,    75,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   216,     0,
+       0,   217,     0,     0,    -8,     1,     0,     0,     2,     3,
+       0,   843,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,     0,     0,     0,     0,     0,     0,     0,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+       0,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,     0,    45,    46,     0,     0,    47,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   169,   170,   171,   172,     0,     0,   695,     0,
-     173,     0,     0,     0,     0,     0,     0,   174,     0,     0,
-       0,     0,     0,     0,   215,     3,     0,     0,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,   724,     0,
-       0,   727,     0,     0,   730,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,     0,    35,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,     0,    45,    46,
-       0,   761,    47,     0,     0,     0,     0,     0,     0,   770,
-     771,     0,     0,     0,     0,     0,     0,     0,     0,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,     0,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-       0,    69,    70,    71,    72,    73,    74,     0,     0,    75,
+       0,     0,     0,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,     0,    69,    70,    71,    72,    73,
+      74,   215,     3,    75,     0,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,     0,     0,    76,    77,    78,
+      79,     0,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,     0,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,     0,    45,    46,     0,     0,    47,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   216,     0,     0,   217,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   845,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,     0,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,     0,    69,    70,
+      71,    72,    73,    74,     0,     0,    75,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   819,   820,   821,   822,
-     823,   824,    -8,     1,   826,     0,     2,     3,   828,     0,
+     216,     0,     0,   217,     0,   218,   215,     3,     0,     0,
        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
        0,     0,     0,     0,     0,     0,     0,    14,    15,    16,
       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
@@ -1428,184 +1425,174 @@ static const grib_yytype_int16 grib_yytable[] =
       57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
       67,    68,     0,    69,    70,    71,    72,    73,    74,   215,
        3,    75,     0,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,     0,     0,    76,    77,    78,    79,     0,
+      11,    12,    13,     0,     0,   611,     0,     0,   217,     0,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
       34,     0,    35,    36,    37,    38,    39,    40,    41,    42,
       43,    44,     0,    45,    46,     0,     0,    47,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    48,    49,    50,    51,    52,    53,
+       0,   161,   162,   163,   425,     0,     0,     0,     0,     0,
+     161,   162,   163,     0,    48,    49,    50,    51,    52,    53,
       54,    55,    56,     0,    58,    59,    60,    61,    62,    63,
       64,    65,    66,    67,    68,     0,    69,    70,    71,    72,
-      73,    74,     0,     0,    75,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   216,     0,
-       0,   217,     0,   218,   215,     3,     0,     0,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,     0,     0,
-       0,     0,     0,     0,     0,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,     0,    35,    36,    37,
-      38,    39,    40,    41,    42,    43,    44,     0,    45,    46,
-       0,     0,    47,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-       0,    69,    70,    71,    72,    73,    74,   215,     3,    75,
-       0,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,     0,     0,   614,     0,     0,   217,     0,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,     0,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-       0,    45,    46,     0,     0,    47,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,     0,    58,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,     0,    69,    70,    71,    72,    73,    74,
-       0,     0,    75,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   216,     0,     0,   217
+      73,    74,   164,   165,    75,   161,   162,   163,     0,     0,
+       0,   164,   165,     0,     0,   426,     0,     0,   216,     0,
+       0,   217,     0,     0,   427,   428,   429,   430,   431,   432,
+       0,     0,   433,   434,     0,   435,   436,     0,   437,   438,
+       0,     0,   166,     0,     0,     0,   164,   165,     0,   167,
+       0,   166,     0,     0,     0,     0,     0,     0,   167,     0,
+       0,     0,     0,   168,     0,   169,   170,   171,   172,     0,
+       0,     0,   168,   635,   169,   170,   171,   172,     0,     0,
+     174,     0,   638,     0,     0,     0,   166,     0,     0,   174,
+       0,     0,     0,   167,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   169,
+     170,   171,   172,     0,     0,     0,     0,   173,     0,     0,
+       0,     0,     0,     0,   174
 };
 
 #define grib_yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-655)))
+  (!!((Yystate) == (-651)))
 
 #define grib_yytable_value_is_error(Yytable_value) \
   YYID (0)
 
 static const grib_yytype_int16 grib_yycheck[] =
 {
-       0,   444,   309,   354,   168,     0,    18,    91,   355,   356,
-       0,   665,    92,   360,    60,    61,    80,    88,    80,    81,
-       4,    80,    81,   127,   131,    18,   174,   205,   282,    18,
-      80,    81,   136,   287,   107,    22,    23,    24,   108,   124,
-     110,   123,   124,   125,   126,   131,   131,   133,   102,   103,
-     123,   124,   123,   131,   136,   123,   124,   125,   126,    46,
-      55,   107,   116,   129,   117,   118,   136,   133,   136,   247,
-      57,   123,   124,   137,   136,   124,   135,   123,   124,   125,
-     126,   123,   131,    83,   136,   131,   136,   140,   141,   142,
-     138,   133,   138,   109,   123,   143,   750,   151,   131,   277,
-     278,    19,    20,    21,    88,   134,   127,    97,   123,   127,
-     123,   124,   125,   126,   109,   136,   111,   112,   136,   173,
-     131,   133,   117,   136,   135,   120,   121,   122,   123,   124,
+       0,   441,   309,    91,   205,     0,   354,   168,   355,   356,
+       0,    92,   662,   360,    80,    60,    61,    80,    81,   123,
+       4,   129,   131,   112,    88,    18,    18,   135,   117,   174,
+     134,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,    18,   247,   107,   123,    80,
+      81,   282,   138,    80,    81,   131,   287,   143,   133,   123,
+      55,   131,   107,   123,   124,    22,    23,    24,   129,   123,
+     124,   137,   133,   136,   123,   124,   277,   278,   123,   124,
+     125,   126,   108,    83,   110,   127,   131,   136,   127,    46,
+     127,   131,   128,   138,   136,   135,   109,   136,   748,   136,
+      57,    19,    20,    21,    88,   136,   124,    97,   135,   123,
+     136,   131,   124,   131,   109,   135,   111,   112,   127,   131,
+     131,   130,   117,   212,   135,   120,   121,   122,   123,   124,
      125,   126,   127,   128,   129,   130,   131,   132,   133,   123,
-     133,   123,    60,    61,   133,   123,   124,   125,   126,   124,
-     131,   131,   206,   129,   135,   209,   131,   129,   136,   135,
-     507,   325,   310,   311,   312,   313,   314,   315,   316,   317,
-     318,   319,   320,   321,   322,   323,   324,   131,   123,   357,
-     134,   135,   100,   123,   124,   125,   126,   123,   129,   107,
-     129,   207,   133,   134,   133,   134,   136,   123,   124,   125,
-     126,   123,   124,   121,   127,   123,   124,   125,   126,   132,
-     136,   127,   207,   131,   132,   129,   132,   212,   218,   133,
-     138,   127,   129,   666,   240,   241,   132,   123,   124,   125,
-     126,   124,   125,   126,   123,   124,   125,   126,   292,   293,
-     136,   123,   124,   127,   127,   240,   241,   136,   132,   132,
-     266,   123,   124,   269,   111,   112,   113,   114,   115,   116,
-     129,   131,   131,   279,   311,   312,   313,   314,   315,   316,
-     129,   266,   131,   123,   269,   319,   320,   321,   322,   323,
-     324,   127,   298,   127,   279,   127,   132,   127,   132,   305,
-     132,   345,   132,   127,   129,   127,   123,   551,   132,   191,
-     132,   193,   131,   298,   558,   134,   135,   361,   127,   131,
-     305,   130,   328,   135,   368,   369,   332,   333,   334,   133,
-     134,   129,   129,   339,   340,   341,   133,   129,   129,   123,
-     124,   133,   133,   328,   123,   419,   123,   332,   333,   334,
-     424,   421,   693,   123,   339,   340,   341,   123,   124,   125,
-     126,   243,   244,   123,   124,   123,   534,   249,   536,   123,
-     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
-     262,   263,   264,   265,   127,     3,   683,   130,   127,   125,
-     126,   130,    80,    81,   125,   126,   317,   318,   123,   384,
-     123,   123,   123,   123,   123,   411,   123,   651,   123,   123,
-     123,   129,   123,   129,   658,   123,   123,   123,   123,   123,
-     123,   123,   590,   123,   123,   123,   411,   123,   123,   123,
-     131,   123,     0,   123,   131,   868,    54,   128,   123,   123,
-     129,   123,   123,   123,   123,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,   129,    77,
-      78,   129,   129,    19,    20,    21,    22,    23,    24,   129,
-     123,   123,   123,   131,   131,   125,   123,   359,   133,   133,
-     128,   125,   124,    19,    20,    21,    22,    23,    24,   124,
-      46,   125,   498,   499,   500,   501,   502,   133,   125,   125,
-     125,    57,   131,   125,    60,    61,   129,   131,   125,   125,
-      46,   125,   133,   498,   499,   500,   501,   502,   137,   134,
-     133,    57,   133,   133,    60,    61,   408,   125,   513,   519,
-     125,   413,   522,   415,   131,   520,   521,   527,   523,   524,
-     525,   526,   131,   528,   100,   530,   531,   532,   533,   793,
-     535,   107,   131,   131,   131,   799,   131,   131,   127,   603,
-     122,   119,   547,   139,   100,   121,   120,   123,   124,   125,
-     126,   107,   123,   125,   131,   131,   131,   125,   131,   653,
-     125,   131,   138,   125,   125,   121,   660,   123,   124,   125,
-     126,   131,   131,   129,   638,   131,   131,   641,   131,   135,
-     131,   135,   138,   135,   589,   123,   133,   133,   133,   133,
-     133,   131,   133,   619,   131,   621,   132,   132,   132,   130,
-     132,   130,   132,   130,   609,   631,   132,   633,   123,   130,
-     636,   127,   638,   132,   619,   641,   621,   643,   130,   130,
-     646,   130,   130,   123,   123,   123,   631,   529,   633,   123,
-     123,   636,   123,   638,   639,   699,   641,   642,   643,   123,
-     645,   646,   736,   123,   123,   132,   132,   132,   742,   132,
-     552,   112,   554,   679,   680,   132,   117,   559,   123,   120,
-     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
-     131,   132,   133,   123,   679,   680,   686,   682,   123,   123,
-     132,   583,   746,   747,   130,   690,   691,   130,   130,   130,
-     130,   128,   123,   132,   132,   131,   131,   131,   131,   131,
-     125,   123,   129,   129,   123,   135,   135,   135,   610,   123,
-     123,    19,    20,    21,   135,   135,   132,   135,   620,   130,
-     622,   123,   624,   625,   626,   627,   123,   629,   123,   130,
-     632,   123,   634,   635,   132,   637,   123,   123,   640,   833,
-     133,   123,   644,   132,   127,   839,   127,   649,    19,    20,
-      21,   212,    60,    61,   124,   124,   124,   124,   132,   132,
-     132,   127,   127,   127,   127,   123,   123,   123,    76,   124,
-     132,   132,   777,   778,   779,   780,   781,   782,   132,   132,
-     785,   123,   123,   123,   789,   687,   688,   689,   132,    60,
-      61,   136,   100,   695,   132,   132,   135,   132,   132,   107,
-     133,   811,   812,   130,   136,   136,   136,   817,   818,   132,
-     131,   123,   132,   121,   131,   123,   124,   125,   126,   135,
-     123,   135,   724,   131,   124,   727,   124,   135,   730,   100,
-     138,   123,   123,   123,   128,   124,   107,   739,   124,   132,
-     125,   125,   125,   745,   131,   108,   125,   135,   128,   131,
-     121,   132,   123,   124,   125,   126,   132,   132,   132,   761,
-     131,   128,   132,   135,   135,   133,   135,   138,   770,   771,
-     136,   136,   136,   127,   136,   136,   127,   127,   133,   124,
-     132,   127,     6,   132,   127,   787,     6,   135,   130,   791,
-     130,   130,   130,   130,   123,   797,   132,    19,    20,    21,
-     132,   132,   132,   124,   123,   123,    19,    20,    21,   124,
-     135,     6,   125,   125,   125,   132,   132,   819,   820,   821,
-     822,   823,   824,   384,   826,   127,   828,   137,   830,   137,
-     136,   135,   135,   131,   836,   127,   127,   136,    60,    61,
-     135,   123,    19,    20,    21,   132,   132,    60,    61,   132,
-     128,   123,   123,   123,   123,   123,   136,   136,   132,   132,
-     862,   123,   123,   123,   446,   867,   132,   132,   132,   132,
-     872,   284,   874,   560,   876,   840,   878,   879,   100,   881,
-     174,   684,    97,    60,    61,   107,    -1,   100,   616,    -1,
-     326,   893,   894,   895,   107,    19,    20,    21,    -1,   121,
-      -1,   123,   124,   125,   126,    -1,    -1,   129,   121,   131,
-     123,   124,   125,   126,    -1,    -1,   138,    -1,   131,    -1,
-      -1,    -1,    -1,   100,    -1,   138,    -1,    -1,    -1,    -1,
-     107,    -1,    -1,    -1,    -1,    -1,    60,    61,    19,    20,
-      21,    -1,    -1,    -1,   121,    -1,   123,   124,   125,   126,
-      -1,    -1,   513,    -1,   131,    -1,    -1,    -1,    -1,   520,
-     521,   138,   523,   524,   525,   526,    -1,   528,    -1,   530,
-     531,   532,   533,    -1,   535,    -1,   100,    -1,    -1,    60,
-      61,    -1,    -1,   107,    -1,    -1,   547,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   121,    -1,   123,
-     124,   125,   126,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-      -1,    -1,    -1,    -1,   138,    -1,    -1,    -1,    -1,   100,
-      -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,   589,    -1,
+     133,   133,    60,    61,   102,   103,   123,   124,   125,   126,
+     111,   112,   113,   114,   115,   116,   357,   504,   116,   136,
+     133,   117,   118,   123,   325,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     124,   129,   100,   131,   140,   141,   142,   131,   131,   107,
+     131,   134,   135,   151,   207,    19,    20,    21,    22,    23,
+      24,   123,   124,   121,   127,   123,   124,   125,   126,   132,
+     129,   127,   207,   131,   132,   173,   132,   212,   218,   123,
+     138,   129,    46,   663,   123,   133,   134,   240,   241,   123,
+     124,   125,   126,    57,   131,   127,    60,    61,   127,   129,
+     132,   130,   136,   133,   134,   240,   241,   127,   206,   127,
+     127,   209,   132,   266,   132,   132,   269,   123,   124,   125,
+     126,   129,   123,   124,   125,   126,   279,   127,   127,   123,
+     136,   266,   132,   132,   269,   136,   100,   123,   124,   125,
+     126,   123,   127,   107,   279,   298,   127,   132,   127,   123,
+     136,   132,   305,   132,   123,   384,   191,   121,   193,   123,
+     124,   125,   126,   298,   129,   129,   123,   131,   133,   131,
+     305,   135,   134,   135,   138,   328,   123,   548,   129,   332,
+     333,   334,   133,   123,   555,   129,   339,   340,   341,   133,
+     531,   419,   533,   328,   292,   293,   424,   332,   333,   334,
+     421,   123,   690,   129,   339,   340,   341,   133,   243,   244,
+     123,   124,   125,   126,   249,   133,   134,   252,   253,   254,
+     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   127,   123,   680,   130,   123,   124,   125,   126,   123,
+     124,   125,   126,   124,   125,   126,   587,   345,   136,   384,
+     123,   124,   136,   123,   124,   125,   126,   129,   411,   131,
+     131,   123,   133,   361,   123,   124,   136,   123,   124,   123,
+     368,   369,   125,   126,    80,    81,   411,   648,   125,   126,
+     123,   510,   123,   123,   655,   123,   866,   123,   517,   518,
+     129,   520,   521,   522,   523,   129,   525,   123,   527,   528,
+     529,   530,   129,   532,   311,   312,   313,   314,   315,   316,
+     129,   123,   317,   318,   123,   544,   319,   320,   321,   322,
+     323,   324,   123,   123,   359,   123,   123,   123,   123,   123,
+      19,    20,    21,   123,   123,   123,   123,   123,   131,   131,
+     123,   123,   495,   496,   497,   498,   499,   123,   129,   123,
+     123,   123,   123,   131,   129,   123,   123,   586,   123,   129,
+     495,   496,   497,   498,   499,   129,   129,   123,     0,   131,
+     128,    60,    61,   408,   133,   510,   516,   606,   413,   519,
+     415,   133,   517,   518,   524,   520,   521,   522,   523,   123,
+     525,   124,   527,   528,   529,   530,   125,   532,   125,   124,
+     137,   125,   133,   125,   125,   125,   129,   636,   125,   544,
+     639,   100,   125,   642,   125,   131,   125,   131,   107,   134,
+     791,   133,   650,   133,   125,   133,   797,   133,   125,   657,
+     125,   131,   121,   131,   123,   124,   125,   126,   131,   131,
+     131,   131,   131,   131,   127,   122,   135,   119,   123,   138,
+     679,   586,   139,   120,   135,   131,   125,   131,   687,   688,
+     131,   131,   125,   616,   125,   618,   125,   131,   128,   131,
+     135,   606,   123,   131,   131,   628,   131,   630,   131,   133,
+     633,   616,   635,   618,   133,   638,   133,   640,   133,   133,
+     643,   526,   133,   628,   132,   630,   132,   132,   633,   130,
+     635,   636,   600,   638,   639,   640,   734,   642,   643,   132,
+     132,   130,   740,   130,   549,   123,   551,   132,   130,   132,
+     130,   556,   123,   676,   677,   130,   130,   130,   123,   123,
+     123,   131,   123,   123,   123,   123,   123,   635,   123,   123,
+     638,   676,   677,   683,   679,   580,   775,   776,   777,   778,
+     779,   780,   687,   688,   783,   132,   132,   132,   787,   132,
+     132,   123,   123,   132,   127,   130,   130,   135,   123,   125,
+     130,   130,   607,   130,   132,    19,    20,    21,   132,   131,
+     131,   131,   617,   131,   619,   131,   621,   622,   623,   624,
+     123,   626,   135,   129,   629,   129,   631,   632,   696,   634,
+     135,   123,   637,   831,   135,   123,   641,   135,   132,   837,
+     645,   646,   123,   130,   135,   123,    60,    61,   123,   123,
+     130,   123,   123,   132,   123,    19,    20,    21,   123,   135,
+     133,   127,    76,   127,   132,   124,   124,   124,   124,   132,
+     775,   776,   777,   778,   779,   780,   744,   745,   783,   684,
+     685,   686,   787,   127,   127,   132,   100,   692,   127,    19,
+      20,    21,   127,   107,   132,   123,    60,    61,   132,   809,
+     810,   123,   132,   132,   123,   815,   816,   121,   132,   123,
+     124,   125,   126,   123,   123,   123,   721,   131,   133,   724,
+     132,   135,   727,   136,   138,   132,   132,   132,   132,   130,
+      60,    61,   737,   136,   136,   132,   100,   136,   743,   131,
+     123,   132,   131,   107,    19,    20,    21,    22,    23,    24,
+     124,   135,   123,   135,   759,   124,   124,   121,   123,   123,
+     124,   125,   126,   768,   769,   129,   123,   131,   123,   128,
+     100,    46,   124,   124,   138,   125,   125,   107,   125,   132,
+     785,   108,    57,   131,   789,    60,    61,   131,   125,   135,
+     795,   121,   132,   123,   124,   125,   126,   132,   132,   132,
+     132,   131,     6,   127,   135,   127,   135,   127,   138,   128,
+     136,   136,   817,   818,   819,   820,   821,   822,   136,   824,
+     136,   826,   136,   828,   133,   100,   133,   124,   132,   834,
+     132,   127,   107,   127,     6,   128,   135,   132,   130,   130,
+     130,   130,   130,   124,   123,   132,   121,   132,   123,   124,
+     125,   126,   132,   123,   123,   860,   131,   124,   135,     6,
+     865,   125,   125,   138,   125,   870,   132,   872,   136,   874,
+     132,   876,   877,   131,   879,   127,   127,   137,   137,   135,
+     135,   127,   135,   132,   132,   132,   891,   892,   893,     4,
+       5,   128,   123,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,   123,   123,   123,   123,   123,   136,   136,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,   136,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,   132,    58,    59,   132,   132,    62,   123,   123,
+     123,   132,   132,   132,   443,    97,   838,   557,   681,   174,
+     326,   284,    -1,   613,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    -1,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,    -1,   101,   102,   103,   104,
+     105,   106,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   123,    -1,
+      -1,   126,    -1,    -1,     0,     1,    -1,    -1,     4,     5,
+      -1,   136,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      -1,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    -1,    58,    59,    -1,    -1,    62,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   123,   124,   125,   126,    -1,    -1,   609,    -1,
-     131,    -1,    -1,    -1,    -1,    -1,    -1,   138,    -1,    -1,
-      -1,    -1,    -1,    -1,     4,     5,    -1,    -1,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,   639,    -1,
-      -1,   642,    -1,    -1,   645,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    -1,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
-      -1,   682,    62,    -1,    -1,    -1,    -1,    -1,    -1,   690,
-     691,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
-      80,    81,    82,    83,    84,    85,    86,    87,    -1,    89,
-      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
-      -1,   101,   102,   103,   104,   105,   106,    -1,    -1,   109,
+      -1,    -1,    -1,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,    -1,   101,   102,   103,   104,   105,
+     106,     4,     5,   109,    -1,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    -1,    -1,   123,   124,   125,
+     126,    -1,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    44,    45,    -1,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    -1,    58,    59,    -1,    -1,    62,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   123,    -1,    -1,   126,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   136,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    82,
+      83,    84,    85,    86,    87,    -1,    89,    90,    91,    92,
+      93,    94,    95,    96,    97,    98,    99,    -1,   101,   102,
+     103,   104,   105,   106,    -1,    -1,   109,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   777,   778,   779,   780,
-     781,   782,     0,     1,   785,    -1,     4,     5,   789,    -1,
+     123,    -1,    -1,   126,    -1,   128,     4,     5,    -1,    -1,
        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
@@ -1617,40 +1604,28 @@ static const grib_yytype_int16 grib_yycheck[] =
       88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
       98,    99,    -1,   101,   102,   103,   104,   105,   106,     4,
        5,   109,    -1,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    -1,    -1,   123,   124,   125,   126,    -1,
+      15,    16,    17,    -1,    -1,   123,    -1,    -1,   126,    -1,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
       45,    -1,    47,    48,    49,    50,    51,    52,    53,    54,
       55,    56,    -1,    58,    59,    -1,    -1,    62,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    79,    80,    81,    82,    83,    84,
+      -1,    19,    20,    21,     3,    -1,    -1,    -1,    -1,    -1,
+      19,    20,    21,    -1,    79,    80,    81,    82,    83,    84,
       85,    86,    87,    -1,    89,    90,    91,    92,    93,    94,
       95,    96,    97,    98,    99,    -1,   101,   102,   103,   104,
-     105,   106,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   123,    -1,
-      -1,   126,    -1,   128,     4,     5,    -1,    -1,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    -1,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
-      -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
-      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
-      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
-      -1,   101,   102,   103,   104,   105,   106,     4,     5,   109,
-      -1,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    -1,    -1,   123,    -1,    -1,   126,    -1,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    43,    44,    45,    -1,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      -1,    58,    59,    -1,    -1,    62,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    79,    80,    81,    82,    83,    84,    85,    86,
-      87,    -1,    89,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,    99,    -1,   101,   102,   103,   104,   105,   106,
-      -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   123,    -1,    -1,   126
+     105,   106,    60,    61,   109,    19,    20,    21,    -1,    -1,
+      -1,    60,    61,    -1,    -1,    54,    -1,    -1,   123,    -1,
+      -1,   126,    -1,    -1,    63,    64,    65,    66,    67,    68,
+      -1,    -1,    71,    72,    -1,    74,    75,    -1,    77,    78,
+      -1,    -1,   100,    -1,    -1,    -1,    60,    61,    -1,   107,
+      -1,   100,    -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,
+      -1,    -1,    -1,   121,    -1,   123,   124,   125,   126,    -1,
+      -1,    -1,   121,   131,   123,   124,   125,   126,    -1,    -1,
+     138,    -1,   131,    -1,    -1,    -1,   100,    -1,    -1,   138,
+      -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   123,
+     124,   125,   126,    -1,    -1,    -1,    -1,   131,    -1,    -1,
+      -1,    -1,    -1,    -1,   138
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1700,53 +1675,53 @@ static const grib_yytype_uint8 grib_yystos[] =
      162,   162,   153,   130,   130,   153,   130,   130,   123,   123,
      123,   131,   123,   155,   135,   155,   153,   123,   123,   169,
      123,   170,   123,   123,   169,     3,    54,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      77,    78,   163,   164,   132,    76,   135,   187,   187,   132,
-     132,   132,   132,   153,   123,   123,   123,   123,   123,   124,
-     132,   153,   132,   154,   123,   179,   181,   181,   181,   181,
-     181,   181,   182,   182,   183,   183,   183,   183,   183,   183,
-     184,   185,   127,   153,   130,   153,   153,   153,   130,   130,
-     130,   130,   153,   153,   153,   132,   132,   187,   131,   131,
-     131,   131,   131,   125,   149,   123,   176,   177,   128,   149,
-     176,   176,   155,   123,   162,   176,   187,   187,   135,   135,
-     123,   123,   135,   123,   124,   132,   123,   135,   130,   161,
-     123,   123,   130,   123,   123,   132,   123,   123,   162,   133,
-     153,   123,   162,   125,   126,   147,   162,   132,   127,   132,
-     131,   135,   136,   127,   136,   127,   132,   131,   135,   136,
-     127,    80,    81,   135,   159,   124,   147,   148,   124,   124,
-     124,   124,   132,   127,   127,   127,   132,   132,   127,   127,
-     132,   123,   132,   123,   132,   132,   132,   123,   123,   123,
-     123,   132,   132,   132,   135,   132,   153,   153,   153,   153,
-     153,   127,   130,   133,   136,   176,   130,   136,   136,   130,
-     161,   136,   132,   132,   123,   150,   189,   190,   150,   129,
-     161,   129,   161,   150,   161,   161,   161,   161,   150,   161,
-     162,   129,   161,   129,   161,   161,   129,   161,   131,   155,
-     161,   131,   155,   131,   123,   132,   131,   127,   136,   161,
-     124,   135,   123,   169,   162,   124,   162,   124,   135,   123,
-     169,   162,   164,   123,   123,   159,   160,   128,   152,   136,
-     127,   136,   124,   124,   125,   125,   125,   132,   162,   131,
-     131,   161,   155,   108,   172,   173,   135,   132,   132,   132,
-     132,   132,   125,   129,   187,   161,   162,   135,   135,   133,
-     136,   190,   136,   136,   153,   162,   153,   162,   136,   162,
-     162,   162,   162,   136,   162,   153,   162,   153,   162,   162,
-     153,   162,   153,   187,   161,   162,   153,   161,   153,   162,
-     161,   153,   125,   126,   162,   127,   169,   127,   132,   136,
-     127,   127,   169,   127,   132,   136,   133,   133,   152,   136,
-     159,   128,   124,   132,   132,   127,   132,   127,   127,   153,
-     153,   161,   154,   110,   136,   173,   150,   162,   162,   162,
-     161,   161,   149,   128,   162,     6,     6,   130,   130,   130,
-     130,   130,   132,    80,   162,   132,   162,   132,   162,   132,
-     123,   136,   124,   135,   162,   123,   123,   136,   124,   135,
-     162,   187,   187,     6,   152,   125,   125,   125,   132,   132,
-     162,   137,   137,   136,   162,   162,   130,   135,   135,   161,
-     161,   161,   161,   161,   161,   131,   161,   162,   161,   127,
-     132,   162,   127,   169,   127,   127,   132,   162,   127,   169,
-     135,   132,   132,   132,   150,   136,   150,   128,   150,   150,
-     162,   162,   162,   162,   162,   162,   123,   162,   162,   123,
-     162,   123,   136,   123,   123,   162,   123,   136,   160,   136,
-     136,   136,   132,   127,   132,   127,   132,   162,   132,   132,
-     127,   132,   162,   136,   162,   123,   162,   123,   162,   162,
-     162,   123,   162,   132,   132,   132,   162,   162,   162
+      66,    67,    68,    71,    72,    74,    75,    77,    78,   163,
+     164,   132,    76,   135,   187,   187,   132,   132,   132,   132,
+     153,   123,   123,   123,   123,   123,   124,   132,   153,   132,
+     154,   123,   179,   181,   181,   181,   181,   181,   181,   182,
+     182,   183,   183,   183,   183,   183,   183,   184,   185,   127,
+     153,   130,   153,   153,   153,   130,   130,   130,   130,   153,
+     153,   153,   132,   132,   187,   131,   131,   131,   131,   131,
+     125,   149,   123,   176,   177,   128,   149,   176,   176,   155,
+     123,   162,   176,   187,   187,   135,   135,   123,   123,   135,
+     123,   124,   132,   123,   135,   130,   161,   123,   123,   130,
+     123,   123,   132,   123,   123,   162,   133,   153,   123,   162,
+     125,   126,   147,   162,   132,   127,   132,   131,   135,   136,
+     127,   136,   127,   132,   131,   135,   136,   127,    80,    81,
+     135,   159,   124,   147,   148,   124,   124,   124,   124,   132,
+     127,   127,   127,   132,   132,   127,   127,   132,   123,   132,
+     123,   132,   132,   132,   123,   123,   123,   123,   132,   132,
+     132,   135,   132,   153,   153,   153,   153,   153,   127,   130,
+     133,   136,   176,   130,   136,   136,   130,   161,   136,   132,
+     132,   123,   150,   189,   190,   150,   129,   161,   129,   161,
+     150,   161,   161,   161,   161,   150,   161,   162,   129,   161,
+     129,   161,   161,   129,   161,   131,   155,   161,   131,   155,
+     131,   123,   132,   131,   127,   136,   161,   124,   135,   123,
+     169,   162,   124,   162,   124,   135,   123,   169,   162,   164,
+     123,   123,   159,   160,   128,   152,   136,   127,   136,   124,
+     124,   125,   125,   125,   132,   162,   131,   131,   161,   155,
+     108,   172,   173,   135,   132,   132,   132,   132,   132,   125,
+     129,   187,   161,   162,   135,   135,   133,   136,   190,   136,
+     136,   153,   162,   153,   162,   136,   162,   162,   162,   162,
+     136,   162,   153,   162,   153,   162,   162,   153,   162,   153,
+     187,   161,   162,   153,   161,   153,   162,   161,   153,   125,
+     126,   162,   162,   127,   169,   127,   132,   136,   127,   127,
+     169,   127,   132,   136,   133,   133,   152,   136,   159,   128,
+     124,   132,   132,   127,   132,   127,   127,   153,   153,   161,
+     154,   110,   136,   173,   150,   162,   162,   162,   161,   161,
+     149,   128,   162,     6,     6,   130,   130,   130,   130,   130,
+     132,    80,   162,   132,   162,   132,   162,   132,   123,   136,
+     124,   135,   162,   123,   123,   136,   124,   135,   162,   187,
+     187,     6,   152,   125,   125,   125,   132,   132,   162,   137,
+     137,   136,   162,   162,   130,   135,   135,   161,   161,   161,
+     161,   161,   161,   131,   161,   162,   161,   127,   132,   162,
+     127,   169,   127,   127,   132,   162,   127,   169,   135,   132,
+     132,   132,   150,   136,   150,   128,   150,   150,   162,   162,
+     162,   162,   162,   162,   123,   162,   162,   123,   162,   123,
+     136,   123,   123,   162,   123,   136,   160,   136,   136,   136,
+     132,   127,   132,   127,   132,   162,   132,   132,   127,   132,
+     162,   136,   162,   123,   162,   123,   162,   162,   162,   123,
+     162,   132,   132,   132,   162,   162,   162
 };
 
 #define grib_yyerrok		(grib_yyerrstatus = 0)
@@ -2990,7 +2965,7 @@ grib_yyreduce:
   case 90:
 /* Line 1792 of yacc.c  */
 #line 488 "griby.y"
-    { (grib_yyval.act) = grib_action_create_transient_darray(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(5) - (6)].dvalue)); free((grib_yyvsp[(2) - (6)].str)); }
+    { (grib_yyval.act) = grib_action_create_transient_darray(grib_parser_context,(grib_yyvsp[(2) - (7)].str),(grib_yyvsp[(5) - (7)].dvalue),(grib_yyvsp[(7) - (7)].lval)); free((grib_yyvsp[(2) - (7)].str)); }
     break;
 
   case 91:
@@ -3020,130 +2995,124 @@ grib_yyreduce:
   case 95:
 /* Line 1792 of yacc.c  */
 #line 503 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (5)].str),"section_length",(grib_yyvsp[(3) - (5)].lval),NULL,NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (5)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (6)].str),"section_length",(grib_yyvsp[(3) - (6)].lval),NULL,(grib_yyvsp[(6) - (6)].explist),0,NULL,NULL);free((grib_yyvsp[(5) - (6)].str));  }
     break;
 
   case 96:
 /* Line 1792 of yacc.c  */
 #line 506 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (6)].str),"section_length",(grib_yyvsp[(3) - (6)].lval),NULL,(grib_yyvsp[(6) - (6)].explist),0,NULL,NULL);free((grib_yyvsp[(5) - (6)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"g1_message_length",(grib_yyvsp[(3) - (8)].lval),(grib_yyvsp[(7) - (8)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (8)].str));  }
     break;
 
   case 97:
 /* Line 1792 of yacc.c  */
 #line 509 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"g1_message_length",(grib_yyvsp[(3) - (8)].lval),(grib_yyvsp[(7) - (8)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (8)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"g1_section4_length",(grib_yyvsp[(3) - (8)].lval),(grib_yyvsp[(7) - (8)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (8)].str));  }
     break;
 
   case 98:
 /* Line 1792 of yacc.c  */
 #line 512 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (8)].str),"g1_section4_length",(grib_yyvsp[(3) - (8)].lval),(grib_yyvsp[(7) - (8)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(5) - (8)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"ksec",0,(grib_yyvsp[(3) - (3)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(2) - (3)].str)); }
     break;
 
   case 99:
 /* Line 1792 of yacc.c  */
 #line 515 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"ksec",0,(grib_yyvsp[(3) - (3)].explist),NULL,0,NULL,NULL);free((grib_yyvsp[(2) - (3)].str)); }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"pad",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL);   free((grib_yyvsp[(2) - (5)].str)); }
     break;
 
   case 100:
 /* Line 1792 of yacc.c  */
 #line 518 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"pad",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL);   free((grib_yyvsp[(2) - (5)].str)); }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padto",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL);   free((grib_yyvsp[(2) - (5)].str)); }
     break;
 
   case 101:
 /* Line 1792 of yacc.c  */
 #line 521 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padto",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL);   free((grib_yyvsp[(2) - (5)].str)); }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padtoeven",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL);   free((grib_yyvsp[(2) - (5)].str)); }
     break;
 
   case 102:
 /* Line 1792 of yacc.c  */
 #line 524 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padtoeven",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL);   free((grib_yyvsp[(2) - (5)].str)); }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padtomultiple",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL);   free((grib_yyvsp[(2) - (5)].str)); }
     break;
 
   case 103:
 /* Line 1792 of yacc.c  */
 #line 527 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (5)].str),"padtomultiple",0,(grib_yyvsp[(4) - (5)].explist),0,0,NULL,NULL);   free((grib_yyvsp[(2) - (5)].str)); }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (6)].str),"message",(grib_yyvsp[(3) - (6)].lval),0,0,(grib_yyvsp[(6) - (6)].lval),NULL,NULL);   free((grib_yyvsp[(5) - (6)].str));  }
     break;
 
   case 104:
 /* Line 1792 of yacc.c  */
 #line 530 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(5) - (6)].str),"message",(grib_yyvsp[(3) - (6)].lval),0,0,(grib_yyvsp[(6) - (6)].lval),NULL,NULL);   free((grib_yyvsp[(5) - (6)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"message_copy",0,0,0,(grib_yyvsp[(3) - (3)].lval),NULL,NULL);   free((grib_yyvsp[(2) - (3)].str));  }
     break;
 
   case 105:
 /* Line 1792 of yacc.c  */
 #line 533 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"message_copy",0,0,0,(grib_yyvsp[(3) - (3)].lval),NULL,NULL);   free((grib_yyvsp[(2) - (3)].str));  }
+    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"section_padding",0,0,0,(grib_yyvsp[(3) - (3)].lval),NULL,NULL);   free((grib_yyvsp[(2) - (3)].str));  }
     break;
 
   case 106:
 /* Line 1792 of yacc.c  */
-#line 536 "griby.y"
-    { (grib_yyval.act) = grib_action_create_gen(grib_parser_context,(grib_yyvsp[(2) - (3)].str),"section_padding",0,0,0,(grib_yyvsp[(3) - (3)].lval),NULL,NULL);   free((grib_yyvsp[(2) - (3)].str));  }
+#line 535 "griby.y"
+    { (grib_yyval.act) = grib_action_create_template(grib_parser_context,0,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].str)); free((grib_yyvsp[(2) - (3)].str)); free((grib_yyvsp[(3) - (3)].str));}
     break;
 
   case 107:
 /* Line 1792 of yacc.c  */
-#line 538 "griby.y"
-    { (grib_yyval.act) = grib_action_create_template(grib_parser_context,0,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].str)); free((grib_yyvsp[(2) - (3)].str)); free((grib_yyvsp[(3) - (3)].str));}
+#line 537 "griby.y"
+    { (grib_yyval.act) = grib_action_create_template(grib_parser_context,1,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].str)); free((grib_yyvsp[(2) - (3)].str)); free((grib_yyvsp[(3) - (3)].str));}
     break;
 
   case 108:
 /* Line 1792 of yacc.c  */
 #line 540 "griby.y"
-    { (grib_yyval.act) = grib_action_create_template(grib_parser_context,1,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].str)); free((grib_yyvsp[(2) - (3)].str)); free((grib_yyvsp[(3) - (3)].str));}
+    { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(2) - (5)].str),(grib_yyvsp[(4) - (5)].str),NULL,(grib_yyvsp[(5) - (5)].lval));  free((grib_yyvsp[(2) - (5)].str)); free((grib_yyvsp[(4) - (5)].str)); }
     break;
 
   case 109:
 /* Line 1792 of yacc.c  */
 #line 543 "griby.y"
-    { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(2) - (5)].str),(grib_yyvsp[(4) - (5)].str),NULL,(grib_yyvsp[(5) - (5)].lval));  free((grib_yyvsp[(2) - (5)].str)); free((grib_yyvsp[(4) - (5)].str)); }
+    { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(2) - (2)].str),NULL,NULL,0);  free((grib_yyvsp[(2) - (2)].str)); }
     break;
 
   case 110:
 /* Line 1792 of yacc.c  */
 #line 546 "griby.y"
-    { (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(2) - (2)].str),NULL,NULL,0);  free((grib_yyvsp[(2) - (2)].str)); }
-    break;
-
-  case 111:
-/* Line 1792 of yacc.c  */
-#line 549 "griby.y"
     {
          (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(4) - (7)].str),(grib_yyvsp[(6) - (7)].str),(grib_yyvsp[(2) - (7)].str),(grib_yyvsp[(7) - (7)].lval));  free((grib_yyvsp[(2) - (7)].str)); free((grib_yyvsp[(4) - (7)].str)); free((grib_yyvsp[(6) - (7)].str));
     }
     break;
 
-  case 112:
+  case 111:
 /* Line 1792 of yacc.c  */
-#line 553 "griby.y"
+#line 550 "griby.y"
     {
          (grib_yyval.act) = grib_action_create_alias(grib_parser_context,(grib_yyvsp[(4) - (4)].str),NULL,(grib_yyvsp[(2) - (4)].str),0);  free((grib_yyvsp[(2) - (4)].str)); free((grib_yyvsp[(4) - (4)].str)); 
     }
     break;
 
-  case 113:
+  case 112:
 /* Line 1792 of yacc.c  */
-#line 557 "griby.y"
+#line 554 "griby.y"
     { (grib_yyval.act) = grib_action_create_meta(grib_parser_context,(grib_yyvsp[(2) - (8)].str),(grib_yyvsp[(3) - (8)].str),(grib_yyvsp[(5) - (8)].explist),(grib_yyvsp[(7) - (8)].explist),(grib_yyvsp[(8) - (8)].lval),NULL); free((grib_yyvsp[(2) - (8)].str));free((grib_yyvsp[(3) - (8)].str));}
     break;
 
-  case 114:
+  case 113:
 /* Line 1792 of yacc.c  */
-#line 560 "griby.y"
+#line 557 "griby.y"
     { (grib_yyval.act) = grib_action_create_meta(grib_parser_context,(grib_yyvsp[(4) - (10)].str),(grib_yyvsp[(5) - (10)].str),(grib_yyvsp[(7) - (10)].explist),(grib_yyvsp[(9) - (10)].explist),(grib_yyvsp[(10) - (10)].lval),(grib_yyvsp[(2) - (10)].str)); free((grib_yyvsp[(4) - (10)].str));free((grib_yyvsp[(5) - (10)].str));free((grib_yyvsp[(2) - (10)].str));}
     break;
 
-  case 115:
+  case 114:
 /* Line 1792 of yacc.c  */
-#line 563 "griby.y"
+#line 560 "griby.y"
     {
       grib_arguments* a = grib_arguments_new(
         grib_parser_context,
@@ -3157,9 +3126,9 @@ grib_yyreduce:
     }
     break;
 
-  case 116:
+  case 115:
 /* Line 1792 of yacc.c  */
-#line 575 "griby.y"
+#line 572 "griby.y"
     {
       grib_arguments* a = grib_arguments_new(
         grib_parser_context,
@@ -3173,9 +3142,9 @@ grib_yyreduce:
     }
     break;
 
-  case 117:
+  case 116:
 /* Line 1792 of yacc.c  */
-#line 587 "griby.y"
+#line 584 "griby.y"
     {
       grib_arguments* a = grib_arguments_new(
         grib_parser_context,
@@ -3189,825 +3158,807 @@ grib_yyreduce:
     }
     break;
 
+  case 117:
+/* Line 1792 of yacc.c  */
+#line 596 "griby.y"
+    { (grib_yyval.act) = grib_action_create_put(grib_parser_context,(grib_yyvsp[(2) - (5)].str),(grib_yyvsp[(4) - (5)].explist));free((grib_yyvsp[(2) - (5)].str));}
+    break;
+
   case 118:
 /* Line 1792 of yacc.c  */
 #line 599 "griby.y"
-    { (grib_yyval.act) = grib_action_create_put(grib_parser_context,(grib_yyvsp[(2) - (5)].str),(grib_yyvsp[(4) - (5)].explist));free((grib_yyvsp[(2) - (5)].str));}
+    { (grib_yyval.act) = grib_action_create_remove(grib_parser_context,(grib_yyvsp[(2) - (2)].explist));}
     break;
 
   case 119:
 /* Line 1792 of yacc.c  */
-#line 602 "griby.y"
-    { (grib_yyval.act) = grib_action_create_remove(grib_parser_context,(grib_yyvsp[(2) - (2)].explist));}
+#line 601 "griby.y"
+    { (grib_yyval.act) = grib_action_create_rename(grib_parser_context,(grib_yyvsp[(3) - (6)].str),(grib_yyvsp[(5) - (6)].str));free((grib_yyvsp[(3) - (6)].str));free((grib_yyvsp[(5) - (6)].str));}
     break;
 
   case 120:
 /* Line 1792 of yacc.c  */
 #line 604 "griby.y"
-    { (grib_yyval.act) = grib_action_create_rename(grib_parser_context,(grib_yyvsp[(3) - (6)].str),(grib_yyvsp[(5) - (6)].str));free((grib_yyvsp[(3) - (6)].str));free((grib_yyvsp[(5) - (6)].str));}
+    { (grib_yyval.act) = grib_action_create_assert(grib_parser_context,(grib_yyvsp[(3) - (4)].exp));}
     break;
 
   case 121:
 /* Line 1792 of yacc.c  */
 #line 607 "griby.y"
-    { (grib_yyval.act) = grib_action_create_assert(grib_parser_context,(grib_yyvsp[(3) - (4)].exp));}
+    { (grib_yyval.act) = grib_action_create_modify(grib_parser_context,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].lval)); free((grib_yyvsp[(2) - (3)].str));}
     break;
 
   case 122:
 /* Line 1792 of yacc.c  */
-#line 610 "griby.y"
-    { (grib_yyval.act) = grib_action_create_modify(grib_parser_context,(grib_yyvsp[(2) - (3)].str),(grib_yyvsp[(3) - (3)].lval)); free((grib_yyvsp[(2) - (3)].str));}
+#line 609 "griby.y"
+    { (grib_yyval.act) = grib_action_create_set_missing(grib_parser_context,(grib_yyvsp[(2) - (4)].str)); free((grib_yyvsp[(2) - (4)].str)); }
     break;
 
   case 123:
 /* Line 1792 of yacc.c  */
-#line 612 "griby.y"
-    { (grib_yyval.act) = grib_action_create_set_missing(grib_parser_context,(grib_yyvsp[(2) - (4)].str)); free((grib_yyvsp[(2) - (4)].str)); }
+#line 610 "griby.y"
+    { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),0); free((grib_yyvsp[(2) - (4)].str)); }
     break;
 
   case 124:
 /* Line 1792 of yacc.c  */
-#line 613 "griby.y"
-    { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),0); free((grib_yyvsp[(2) - (4)].str)); }
+#line 611 "griby.y"
+    { (grib_yyval.act) = grib_action_create_set_darray(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(5) - (6)].dvalue)); free((grib_yyvsp[(2) - (6)].str)); }
     break;
 
   case 125:
 /* Line 1792 of yacc.c  */
-#line 614 "griby.y"
-    { (grib_yyval.act) = grib_action_create_set_darray(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(5) - (6)].dvalue)); free((grib_yyvsp[(2) - (6)].str)); }
+#line 612 "griby.y"
+    { (grib_yyval.act) = grib_action_create_set_sarray(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(5) - (6)].svalue)); free((grib_yyvsp[(2) - (6)].str)); }
     break;
 
   case 126:
 /* Line 1792 of yacc.c  */
-#line 615 "griby.y"
-    { (grib_yyval.act) = grib_action_create_set_sarray(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(5) - (6)].svalue)); free((grib_yyvsp[(2) - (6)].str)); }
+#line 614 "griby.y"
+    { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),1); free((grib_yyvsp[(2) - (4)].str)); }
     break;
 
   case 127:
 /* Line 1792 of yacc.c  */
 #line 617 "griby.y"
-    { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),1); free((grib_yyvsp[(2) - (4)].str)); }
+    { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(2) - (2)].str),0,0); free((grib_yyvsp[(2) - (2)].str));}
     break;
 
   case 128:
 /* Line 1792 of yacc.c  */
-#line 620 "griby.y"
-    { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(2) - (2)].str),0,0); free((grib_yyvsp[(2) - (2)].str));}
+#line 618 "griby.y"
+    { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,0); }
     break;
 
   case 129:
 /* Line 1792 of yacc.c  */
-#line 621 "griby.y"
-    { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,0); }
+#line 619 "griby.y"
+    { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(5) - (5)].str),0,(grib_yyvsp[(3) - (5)].lval)); free((grib_yyvsp[(5) - (5)].str));}
     break;
 
   case 130:
 /* Line 1792 of yacc.c  */
-#line 622 "griby.y"
-    { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(5) - (5)].str),0,(grib_yyvsp[(3) - (5)].lval)); free((grib_yyvsp[(5) - (5)].str));}
+#line 620 "griby.y"
+    { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,(grib_yyvsp[(3) - (4)].lval)); }
     break;
 
   case 131:
 /* Line 1792 of yacc.c  */
-#line 623 "griby.y"
-    { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",0,(grib_yyvsp[(3) - (4)].lval)); }
+#line 621 "griby.y"
+    { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(2) - (2)].str),1,0); free((grib_yyvsp[(2) - (2)].str));}
     break;
 
   case 132:
 /* Line 1792 of yacc.c  */
-#line 624 "griby.y"
-    { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(2) - (2)].str),1,0); free((grib_yyvsp[(2) - (2)].str));}
+#line 622 "griby.y"
+    { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,0); }
     break;
 
   case 133:
 /* Line 1792 of yacc.c  */
-#line 625 "griby.y"
-    { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,0); }
+#line 623 "griby.y"
+    { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(5) - (5)].str),1,(grib_yyvsp[(3) - (5)].lval)); free((grib_yyvsp[(5) - (5)].str));}
     break;
 
   case 134:
 /* Line 1792 of yacc.c  */
-#line 626 "griby.y"
-    { (grib_yyval.act) = grib_action_create_write(grib_parser_context,(grib_yyvsp[(5) - (5)].str),1,(grib_yyvsp[(3) - (5)].lval)); free((grib_yyvsp[(5) - (5)].str));}
+#line 624 "griby.y"
+    { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,(grib_yyvsp[(3) - (4)].lval)); }
     break;
 
   case 135:
 /* Line 1792 of yacc.c  */
-#line 627 "griby.y"
-    { (grib_yyval.act) = grib_action_create_write(grib_parser_context,"",1,(grib_yyvsp[(3) - (4)].lval)); }
+#line 626 "griby.y"
+    { (grib_yyval.act) = grib_action_create_close(grib_parser_context,(grib_yyvsp[(3) - (4)].str)); free((grib_yyvsp[(3) - (4)].str));}
     break;
 
   case 136:
 /* Line 1792 of yacc.c  */
-#line 629 "griby.y"
-    { (grib_yyval.act) = grib_action_create_close(grib_parser_context,(grib_yyvsp[(3) - (4)].str)); free((grib_yyvsp[(3) - (4)].str));}
+#line 627 "griby.y"
+    { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[(2) - (2)].str),0); free((grib_yyvsp[(2) - (2)].str)); }
     break;
 
   case 137:
 /* Line 1792 of yacc.c  */
-#line 630 "griby.y"
-    { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[(2) - (2)].str),0); free((grib_yyvsp[(2) - (2)].str)); }
+#line 628 "griby.y"
+    { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[(5) - (5)].str),(grib_yyvsp[(3) - (5)].str)); free((grib_yyvsp[(5) - (5)].str)); free((grib_yyvsp[(3) - (5)].str));}
     break;
 
   case 138:
 /* Line 1792 of yacc.c  */
-#line 631 "griby.y"
+#line 629 "griby.y"
     { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[(5) - (5)].str),(grib_yyvsp[(3) - (5)].str)); free((grib_yyvsp[(5) - (5)].str)); free((grib_yyvsp[(3) - (5)].str));}
     break;
 
   case 139:
 /* Line 1792 of yacc.c  */
-#line 632 "griby.y"
-    { (grib_yyval.act) = grib_action_create_print(grib_parser_context,(grib_yyvsp[(5) - (5)].str),(grib_yyvsp[(3) - (5)].str)); free((grib_yyvsp[(5) - (5)].str)); free((grib_yyvsp[(3) - (5)].str));}
+#line 630 "griby.y"
+    { (grib_yyval.act) = grib_action_create_print(grib_parser_context,"",0);  }
     break;
 
   case 140:
 /* Line 1792 of yacc.c  */
-#line 633 "griby.y"
-    { (grib_yyval.act) = grib_action_create_print(grib_parser_context,"",0);  }
+#line 634 "griby.y"
+    { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),0,0,grib_yylineno,file_being_parsed()); }
     break;
 
   case 141:
 /* Line 1792 of yacc.c  */
-#line 637 "griby.y"
-    { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),0,0,grib_yylineno,file_being_parsed()); }
+#line 635 "griby.y"
+    { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act),0,grib_yylineno,file_being_parsed()); }
     break;
 
   case 142:
 /* Line 1792 of yacc.c  */
-#line 638 "griby.y"
-    { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act),0,grib_yylineno,file_being_parsed()); }
+#line 636 "griby.y"
+    { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),0,1,grib_yylineno,file_being_parsed()); }
     break;
 
   case 143:
 /* Line 1792 of yacc.c  */
-#line 639 "griby.y"
-    { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),0,1,grib_yylineno,file_being_parsed()); }
+#line 637 "griby.y"
+    { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act),1,grib_yylineno,file_being_parsed()); }
     break;
 
   case 144:
 /* Line 1792 of yacc.c  */
-#line 640 "griby.y"
-    { (grib_yyval.act) = grib_action_create_if(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act),1,grib_yylineno,file_being_parsed()); }
+#line 641 "griby.y"
+    { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (6)].exp),(grib_yyvsp[(5) - (6)].act),NULL); }
     break;
 
   case 145:
 /* Line 1792 of yacc.c  */
-#line 644 "griby.y"
-    { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (6)].exp),(grib_yyvsp[(5) - (6)].act),NULL); }
+#line 642 "griby.y"
+    { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),NULL); }
     break;
 
   case 146:
 /* Line 1792 of yacc.c  */
-#line 645 "griby.y"
-    { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act),NULL); }
+#line 643 "griby.y"
+    { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act)); }
     break;
 
   case 147:
 /* Line 1792 of yacc.c  */
 #line 646 "griby.y"
-    { (grib_yyval.act) = grib_action_create_when(grib_parser_context,(grib_yyvsp[(3) - (11)].exp),(grib_yyvsp[(6) - (11)].act),(grib_yyvsp[(10) - (11)].act)); }
+    { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),0); free((grib_yyvsp[(2) - (4)].str)); }
     break;
 
   case 148:
 /* Line 1792 of yacc.c  */
-#line 649 "griby.y"
-    { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),0); free((grib_yyvsp[(2) - (4)].str)); }
+#line 647 "griby.y"
+    { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),1); free((grib_yyvsp[(2) - (4)].str)); }
     break;
 
-  case 149:
+  case 150:
 /* Line 1792 of yacc.c  */
-#line 650 "griby.y"
-    { (grib_yyval.act) = grib_action_create_set(grib_parser_context,(grib_yyvsp[(2) - (4)].str),(grib_yyvsp[(4) - (4)].exp),1); free((grib_yyvsp[(2) - (4)].str)); }
+#line 651 "griby.y"
+    { (grib_yyvsp[(1) - (3)].act)->next = (grib_yyvsp[(2) - (3)].act); (grib_yyval.act) = (grib_yyvsp[(1) - (3)].act); }
     break;
 
   case 151:
 /* Line 1792 of yacc.c  */
-#line 654 "griby.y"
-    { (grib_yyvsp[(1) - (3)].act)->next = (grib_yyvsp[(2) - (3)].act); (grib_yyval.act) = (grib_yyvsp[(1) - (3)].act); }
+#line 655 "griby.y"
+    { (grib_yyval.explist) = NULL ;}
     break;
 
   case 152:
 /* Line 1792 of yacc.c  */
-#line 658 "griby.y"
-    { (grib_yyval.explist) = NULL ;}
+#line 656 "griby.y"
+    { (grib_yyval.explist) = (grib_yyvsp[(2) - (2)].explist) ;}
     break;
 
   case 153:
 /* Line 1792 of yacc.c  */
 #line 659 "griby.y"
-    { (grib_yyval.explist) = (grib_yyvsp[(2) - (2)].explist) ;}
+    { (grib_yyval.lval) = 0 ; }
     break;
 
   case 154:
 /* Line 1792 of yacc.c  */
-#line 662 "griby.y"
-    { (grib_yyval.lval) = 0 ; }
+#line 660 "griby.y"
+    { (grib_yyval.lval) = (grib_yyvsp[(2) - (2)].lval); }
     break;
 
-  case 155:
+  case 156:
 /* Line 1792 of yacc.c  */
-#line 663 "griby.y"
-    { (grib_yyval.lval) = (grib_yyvsp[(2) - (2)].lval); }
+#line 664 "griby.y"
+    { (grib_yyval.lval) = (grib_yyvsp[(1) - (3)].lval) | (grib_yyvsp[(3) - (3)].lval); }
     break;
 
   case 157:
 /* Line 1792 of yacc.c  */
 #line 667 "griby.y"
-    { (grib_yyval.lval) = (grib_yyvsp[(1) - (3)].lval) | (grib_yyvsp[(3) - (3)].lval); }
+    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_READ_ONLY; }
     break;
 
   case 158:
 /* Line 1792 of yacc.c  */
-#line 670 "griby.y"
-    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_READ_ONLY; }
+#line 668 "griby.y"
+    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LOWERCASE; }
     break;
 
   case 159:
 /* Line 1792 of yacc.c  */
-#line 671 "griby.y"
-    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LOWERCASE; }
+#line 669 "griby.y"
+    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DUMP; }
     break;
 
   case 160:
 /* Line 1792 of yacc.c  */
-#line 672 "griby.y"
-    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DUMP; }
+#line 670 "griby.y"
+    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_COPY; }
     break;
 
   case 161:
 /* Line 1792 of yacc.c  */
-#line 673 "griby.y"
-    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_JSON; }
+#line 671 "griby.y"
+    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_FAIL; }
     break;
 
   case 162:
 /* Line 1792 of yacc.c  */
-#line 674 "griby.y"
-    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_XML; }
+#line 672 "griby.y"
+    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_HIDDEN; }
     break;
 
   case 163:
 /* Line 1792 of yacc.c  */
-#line 675 "griby.y"
-    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_COPY; }
+#line 673 "griby.y"
+    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC; }
     break;
 
   case 164:
 /* Line 1792 of yacc.c  */
-#line 676 "griby.y"
-    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_NO_FAIL; }
+#line 674 "griby.y"
+    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CAN_BE_MISSING; }
     break;
 
   case 165:
 /* Line 1792 of yacc.c  */
-#line 677 "griby.y"
-    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_HIDDEN; }
+#line 675 "griby.y"
+    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CONSTRAINT; }
     break;
 
   case 166:
 /* Line 1792 of yacc.c  */
-#line 678 "griby.y"
-    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC; }
+#line 676 "griby.y"
+    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_COPY_OK; }
     break;
 
   case 167:
 /* Line 1792 of yacc.c  */
-#line 679 "griby.y"
-    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CAN_BE_MISSING; }
+#line 677 "griby.y"
+    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_TRANSIENT; }
     break;
 
   case 168:
 /* Line 1792 of yacc.c  */
-#line 680 "griby.y"
-    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_CONSTRAINT; }
+#line 678 "griby.y"
+    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_STRING_TYPE; }
     break;
 
   case 169:
 /* Line 1792 of yacc.c  */
-#line 681 "griby.y"
-    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_OVERRIDE; }
+#line 679 "griby.y"
+    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LONG_TYPE; }
     break;
 
   case 170:
 /* Line 1792 of yacc.c  */
-#line 682 "griby.y"
-    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_COPY_OK; }
+#line 680 "griby.y"
+    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DOUBLE_TYPE; }
     break;
 
   case 171:
 /* Line 1792 of yacc.c  */
 #line 683 "griby.y"
-    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_TRANSIENT; }
+    { (grib_yyval.act) = grib_action_create_list(grib_parser_context,(grib_yyvsp[(1) - (8)].str),(grib_yyvsp[(4) - (8)].exp),(grib_yyvsp[(7) - (8)].act)); free((grib_yyvsp[(1) - (8)].str)); }
     break;
 
   case 172:
 /* Line 1792 of yacc.c  */
-#line 684 "griby.y"
-    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_STRING_TYPE; }
+#line 686 "griby.y"
+    { (grib_yyval.act) = grib_action_create_while(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act));  }
     break;
 
   case 173:
 /* Line 1792 of yacc.c  */
-#line 685 "griby.y"
-    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_LONG_TYPE; }
+#line 689 "griby.y"
+    { (grib_yyval.act) = grib_action_create_trigger(grib_parser_context,(grib_yyvsp[(3) - (7)].explist),(grib_yyvsp[(6) - (7)].act));  }
     break;
 
   case 174:
 /* Line 1792 of yacc.c  */
-#line 686 "griby.y"
-    { (grib_yyval.lval) = GRIB_ACCESSOR_FLAG_DOUBLE_TYPE; }
+#line 692 "griby.y"
+    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(4) - (6)].concept_value),0,0,0,0,0,0,(grib_yyvsp[(6) - (6)].lval),0);  free((grib_yyvsp[(2) - (6)].str)); }
     break;
 
   case 175:
 /* Line 1792 of yacc.c  */
-#line 689 "griby.y"
-    { (grib_yyval.act) = grib_action_create_list(grib_parser_context,(grib_yyvsp[(1) - (8)].str),(grib_yyvsp[(4) - (8)].exp),(grib_yyvsp[(7) - (8)].act)); free((grib_yyvsp[(1) - (8)].str)); }
+#line 693 "griby.y"
+    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (9)].str),(grib_yyvsp[(7) - (9)].concept_value),0,0,(grib_yyvsp[(4) - (9)].str),0,0,0,(grib_yyvsp[(9) - (9)].lval),0);  free((grib_yyvsp[(2) - (9)].str));free((grib_yyvsp[(4) - (9)].str)); }
     break;
 
   case 176:
 /* Line 1792 of yacc.c  */
-#line 692 "griby.y"
-    { (grib_yyval.act) = grib_action_create_while(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].act));  }
+#line 694 "griby.y"
+    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (12)].str),0,(grib_yyvsp[(6) - (12)].str),0,(grib_yyvsp[(4) - (12)].str),(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,(grib_yyvsp[(12) - (12)].lval),0);  free((grib_yyvsp[(2) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); }
     break;
 
   case 177:
 /* Line 1792 of yacc.c  */
 #line 695 "griby.y"
-    { (grib_yyval.act) = grib_action_create_trigger(grib_parser_context,(grib_yyvsp[(3) - (7)].explist),(grib_yyvsp[(6) - (7)].act));  }
+    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (14)].str),0,(grib_yyvsp[(6) - (14)].str),0,(grib_yyvsp[(4) - (14)].str),(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),(grib_yyvsp[(14) - (14)].lval),0);  free((grib_yyvsp[(2) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(10) - (14)].str));free((grib_yyvsp[(12) - (14) [...]
     break;
 
   case 178:
 /* Line 1792 of yacc.c  */
-#line 698 "griby.y"
-    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(4) - (6)].concept_value),0,0,0,0,0,0,(grib_yyvsp[(6) - (6)].lval),0);  free((grib_yyvsp[(2) - (6)].str)); }
+#line 696 "griby.y"
+    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (10)].str),0,(grib_yyvsp[(6) - (10)].str),0,(grib_yyvsp[(4) - (10)].str),(grib_yyvsp[(8) - (10)].str),0,0,(grib_yyvsp[(10) - (10)].lval),0);  free((grib_yyvsp[(2) - (10)].str));free((grib_yyvsp[(6) - (10)].str));free((grib_yyvsp[(4) - (10)].str));free((grib_yyvsp[(8) - (10)].str)); }
     break;
 
   case 179:
 /* Line 1792 of yacc.c  */
-#line 699 "griby.y"
-    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (9)].str),(grib_yyvsp[(7) - (9)].concept_value),0,0,(grib_yyvsp[(4) - (9)].str),0,0,0,(grib_yyvsp[(9) - (9)].lval),0);  free((grib_yyvsp[(2) - (9)].str));free((grib_yyvsp[(4) - (9)].str)); }
+#line 697 "griby.y"
+    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (14)].str),0,(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(2) - (14)].str),(grib_yyvsp[(6) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),0,(grib_yyvsp[(14) - (14)].lval),0);  free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(10) - (14)].str)); free((grib_yyvsp[(12) - (14)].str)); free((grib_yyvsp[(2) - (1 [...]
     break;
 
   case 180:
 /* Line 1792 of yacc.c  */
-#line 700 "griby.y"
-    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (12)].str),0,(grib_yyvsp[(6) - (12)].str),0,(grib_yyvsp[(4) - (12)].str),(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,(grib_yyvsp[(12) - (12)].lval),0);  free((grib_yyvsp[(2) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); }
+#line 698 "griby.y"
+    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (12)].str),0,(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(2) - (12)].str),(grib_yyvsp[(6) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,0,(grib_yyvsp[(12) - (12)].lval),0);  free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); free((grib_yyvsp[(2) - (12)].str));}
     break;
 
   case 181:
 /* Line 1792 of yacc.c  */
-#line 701 "griby.y"
-    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (14)].str),0,(grib_yyvsp[(6) - (14)].str),0,(grib_yyvsp[(4) - (14)].str),(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),(grib_yyvsp[(14) - (14)].lval),0);  free((grib_yyvsp[(2) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(10) - (14)].str));free((grib_yyvsp[(12) - (14) [...]
+#line 699 "griby.y"
+    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (8)].str),(grib_yyvsp[(6) - (8)].concept_value),0,(grib_yyvsp[(2) - (8)].str),0,0,0,0,(grib_yyvsp[(8) - (8)].lval),0);  free((grib_yyvsp[(2) - (8)].str));free((grib_yyvsp[(4) - (8)].str)); }
     break;
 
   case 182:
 /* Line 1792 of yacc.c  */
-#line 702 "griby.y"
-    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (10)].str),0,(grib_yyvsp[(6) - (10)].str),0,(grib_yyvsp[(4) - (10)].str),(grib_yyvsp[(8) - (10)].str),0,0,(grib_yyvsp[(10) - (10)].lval),0);  free((grib_yyvsp[(2) - (10)].str));free((grib_yyvsp[(6) - (10)].str));free((grib_yyvsp[(4) - (10)].str));free((grib_yyvsp[(8) - (10)].str)); }
+#line 700 "griby.y"
+    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (11)].str),(grib_yyvsp[(9) - (11)].concept_value),0,(grib_yyvsp[(2) - (11)].str),(grib_yyvsp[(6) - (11)].str),0,0,0,(grib_yyvsp[(11) - (11)].lval),0);  free((grib_yyvsp[(2) - (11)].str));free((grib_yyvsp[(4) - (11)].str));free((grib_yyvsp[(6) - (11)].str)); }
     break;
 
   case 183:
 /* Line 1792 of yacc.c  */
-#line 703 "griby.y"
-    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (14)].str),0,(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(2) - (14)].str),(grib_yyvsp[(6) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),0,(grib_yyvsp[(14) - (14)].lval),0);  free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(10) - (14)].str)); free((grib_yyvsp[(12) - (14)].str)); free((grib_yyvsp[(2) - (1 [...]
+#line 701 "griby.y"
+    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(4) - (6)].concept_value),0,0,0,0,0,0,(grib_yyvsp[(6) - (6)].lval),1);  free((grib_yyvsp[(2) - (6)].str)); }
     break;
 
   case 184:
 /* Line 1792 of yacc.c  */
-#line 704 "griby.y"
-    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (12)].str),0,(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(2) - (12)].str),(grib_yyvsp[(6) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,0,(grib_yyvsp[(12) - (12)].lval),0);  free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); free((grib_yyvsp[(2) - (12)].str));}
+#line 702 "griby.y"
+    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (9)].str),(grib_yyvsp[(7) - (9)].concept_value),0,0,(grib_yyvsp[(4) - (9)].str),0,0,0,(grib_yyvsp[(9) - (9)].lval),1);  free((grib_yyvsp[(2) - (9)].str));free((grib_yyvsp[(4) - (9)].str)); }
     break;
 
   case 185:
 /* Line 1792 of yacc.c  */
-#line 705 "griby.y"
-    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (8)].str),(grib_yyvsp[(6) - (8)].concept_value),0,(grib_yyvsp[(2) - (8)].str),0,0,0,0,(grib_yyvsp[(8) - (8)].lval),0);  free((grib_yyvsp[(2) - (8)].str));free((grib_yyvsp[(4) - (8)].str)); }
+#line 703 "griby.y"
+    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (12)].str),0,(grib_yyvsp[(6) - (12)].str),0,(grib_yyvsp[(4) - (12)].str),(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,(grib_yyvsp[(12) - (12)].lval),1);  free((grib_yyvsp[(2) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); }
     break;
 
   case 186:
 /* Line 1792 of yacc.c  */
-#line 706 "griby.y"
-    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (11)].str),(grib_yyvsp[(9) - (11)].concept_value),0,(grib_yyvsp[(2) - (11)].str),(grib_yyvsp[(6) - (11)].str),0,0,0,(grib_yyvsp[(11) - (11)].lval),0);  free((grib_yyvsp[(2) - (11)].str));free((grib_yyvsp[(4) - (11)].str));free((grib_yyvsp[(6) - (11)].str)); }
+#line 704 "griby.y"
+    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (10)].str),0,(grib_yyvsp[(6) - (10)].str),0,(grib_yyvsp[(4) - (10)].str),(grib_yyvsp[(8) - (10)].str),0,0,(grib_yyvsp[(10) - (10)].lval),1);  free((grib_yyvsp[(2) - (10)].str));free((grib_yyvsp[(6) - (10)].str));free((grib_yyvsp[(4) - (10)].str));free((grib_yyvsp[(8) - (10)].str)); }
     break;
 
   case 187:
 /* Line 1792 of yacc.c  */
-#line 707 "griby.y"
-    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(4) - (6)].concept_value),0,0,0,0,0,0,(grib_yyvsp[(6) - (6)].lval),1);  free((grib_yyvsp[(2) - (6)].str)); }
+#line 705 "griby.y"
+    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (14)].str),0,(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(2) - (14)].str),(grib_yyvsp[(6) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),0,(grib_yyvsp[(14) - (14)].lval),1);  free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(10) - (14)].str));free((grib_yyvsp[(12) - (14)].str)); free((grib_yyvsp[(2) - (14 [...]
     break;
 
   case 188:
 /* Line 1792 of yacc.c  */
-#line 708 "griby.y"
-    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (9)].str),(grib_yyvsp[(7) - (9)].concept_value),0,0,(grib_yyvsp[(4) - (9)].str),0,0,0,(grib_yyvsp[(9) - (9)].lval),1);  free((grib_yyvsp[(2) - (9)].str));free((grib_yyvsp[(4) - (9)].str)); }
+#line 706 "griby.y"
+    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (12)].str),0,(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(2) - (12)].str),(grib_yyvsp[(6) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,0,(grib_yyvsp[(12) - (12)].lval),1);  free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); free((grib_yyvsp[(2) - (12)].str));}
     break;
 
   case 189:
 /* Line 1792 of yacc.c  */
-#line 709 "griby.y"
-    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (12)].str),0,(grib_yyvsp[(6) - (12)].str),0,(grib_yyvsp[(4) - (12)].str),(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,(grib_yyvsp[(12) - (12)].lval),1);  free((grib_yyvsp[(2) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); }
+#line 707 "griby.y"
+    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (8)].str),(grib_yyvsp[(6) - (8)].concept_value),0,(grib_yyvsp[(2) - (8)].str),0,0,0,0,(grib_yyvsp[(8) - (8)].lval),1);  free((grib_yyvsp[(2) - (8)].str));free((grib_yyvsp[(4) - (8)].str)); }
     break;
 
   case 190:
 /* Line 1792 of yacc.c  */
-#line 710 "griby.y"
-    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(2) - (10)].str),0,(grib_yyvsp[(6) - (10)].str),0,(grib_yyvsp[(4) - (10)].str),(grib_yyvsp[(8) - (10)].str),0,0,(grib_yyvsp[(10) - (10)].lval),1);  free((grib_yyvsp[(2) - (10)].str));free((grib_yyvsp[(6) - (10)].str));free((grib_yyvsp[(4) - (10)].str));free((grib_yyvsp[(8) - (10)].str)); }
-    break;
-
-  case 191:
-/* Line 1792 of yacc.c  */
-#line 711 "griby.y"
-    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (14)].str),0,(grib_yyvsp[(8) - (14)].str),(grib_yyvsp[(2) - (14)].str),(grib_yyvsp[(6) - (14)].str),(grib_yyvsp[(10) - (14)].str),(grib_yyvsp[(12) - (14)].str),0,(grib_yyvsp[(14) - (14)].lval),1);  free((grib_yyvsp[(4) - (14)].str));free((grib_yyvsp[(8) - (14)].str));free((grib_yyvsp[(6) - (14)].str));free((grib_yyvsp[(10) - (14)].str));free((grib_yyvsp[(12) - (14)].str)); free((grib_yyvsp[(2) - (14 [...]
+#line 708 "griby.y"
+    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (11)].str),(grib_yyvsp[(9) - (11)].concept_value),0,(grib_yyvsp[(2) - (11)].str),(grib_yyvsp[(6) - (11)].str),0,0,0,(grib_yyvsp[(11) - (11)].lval),1);  free((grib_yyvsp[(2) - (11)].str));free((grib_yyvsp[(4) - (11)].str));free((grib_yyvsp[(6) - (11)].str)); }
     break;
 
   case 192:
 /* Line 1792 of yacc.c  */
-#line 712 "griby.y"
-    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (12)].str),0,(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(2) - (12)].str),(grib_yyvsp[(6) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,0,(grib_yyvsp[(12) - (12)].lval),1);  free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); free((grib_yyvsp[(2) - (12)].str));}
-    break;
-
-  case 193:
-/* Line 1792 of yacc.c  */
 #line 713 "griby.y"
-    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (8)].str),(grib_yyvsp[(6) - (8)].concept_value),0,(grib_yyvsp[(2) - (8)].str),0,0,0,0,(grib_yyvsp[(8) - (8)].lval),1);  free((grib_yyvsp[(2) - (8)].str));free((grib_yyvsp[(4) - (8)].str)); }
-    break;
-
-  case 194:
-/* Line 1792 of yacc.c  */
-#line 714 "griby.y"
-    { (grib_yyval.act) = grib_action_create_concept(grib_parser_context,(grib_yyvsp[(4) - (11)].str),(grib_yyvsp[(9) - (11)].concept_value),0,(grib_yyvsp[(2) - (11)].str),(grib_yyvsp[(6) - (11)].str),0,0,0,(grib_yyvsp[(11) - (11)].lval),1);  free((grib_yyvsp[(2) - (11)].str));free((grib_yyvsp[(4) - (11)].str));free((grib_yyvsp[(6) - (11)].str)); }
-    break;
-
-  case 196:
-/* Line 1792 of yacc.c  */
-#line 719 "griby.y"
     { (grib_yyval.concept_value) = (grib_yyvsp[(2) - (2)].concept_value); (grib_yyvsp[(2) - (2)].concept_value)->next = (grib_yyvsp[(1) - (2)].concept_value);   }
     break;
 
-  case 198:
+  case 194:
 /* Line 1792 of yacc.c  */
-#line 723 "griby.y"
+#line 717 "griby.y"
     { (grib_yyval.hash_array_value) = (grib_yyvsp[(2) - (2)].hash_array_value); (grib_yyvsp[(2) - (2)].hash_array_value)->next = (grib_yyvsp[(1) - (2)].hash_array_value);   }
     break;
 
-  case 199:
+  case 195:
 /* Line 1792 of yacc.c  */
-#line 726 "griby.y"
+#line 720 "griby.y"
     { (grib_yyval.act) = grib_action_create_hash_array(grib_parser_context,(grib_yyvsp[(2) - (6)].str),(grib_yyvsp[(4) - (6)].hash_array_value),0,0,0,0,0,0,(grib_yyvsp[(6) - (6)].lval),0);  free((grib_yyvsp[(2) - (6)].str)); }
     break;
 
-  case 200:
+  case 196:
 /* Line 1792 of yacc.c  */
-#line 727 "griby.y"
+#line 721 "griby.y"
     { (grib_yyval.act) = grib_action_create_hash_array(grib_parser_context,(grib_yyvsp[(2) - (12)].str),0,(grib_yyvsp[(6) - (12)].str),0,(grib_yyvsp[(4) - (12)].str),(grib_yyvsp[(8) - (12)].str),(grib_yyvsp[(10) - (12)].str),0,(grib_yyvsp[(12) - (12)].lval),0);  free((grib_yyvsp[(2) - (12)].str));free((grib_yyvsp[(6) - (12)].str));free((grib_yyvsp[(4) - (12)].str));free((grib_yyvsp[(8) - (12)].str));free((grib_yyvsp[(10) - (12)].str)); }
     break;
 
-  case 202:
+  case 198:
 /* Line 1792 of yacc.c  */
-#line 731 "griby.y"
+#line 725 "griby.y"
     { (grib_yyval.case_value) = (grib_yyvsp[(2) - (2)].case_value); (grib_yyvsp[(2) - (2)].case_value)->next = (grib_yyvsp[(1) - (2)].case_value);   }
     break;
 
-  case 203:
+  case 199:
 /* Line 1792 of yacc.c  */
-#line 734 "griby.y"
+#line 728 "griby.y"
     { (grib_yyval.case_value) = grib_case_new(grib_parser_context,(grib_yyvsp[(2) - (4)].explist),(grib_yyvsp[(4) - (4)].act));  }
     break;
 
-  case 204:
+  case 200:
 /* Line 1792 of yacc.c  */
-#line 738 "griby.y"
+#line 732 "griby.y"
     { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[(3) - (10)].explist),(grib_yyvsp[(6) - (10)].case_value),(grib_yyvsp[(9) - (10)].act)); }
     break;
 
-  case 205:
+  case 201:
 /* Line 1792 of yacc.c  */
-#line 739 "griby.y"
+#line 733 "griby.y"
     { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[(3) - (9)].explist),(grib_yyvsp[(6) - (9)].case_value),grib_action_create_noop(grib_parser_context,"continue")); }
     break;
 
-  case 206:
+  case 202:
 /* Line 1792 of yacc.c  */
-#line 740 "griby.y"
+#line 734 "griby.y"
     { (grib_yyval.act) = grib_action_create_switch(grib_parser_context,(grib_yyvsp[(3) - (7)].explist),(grib_yyvsp[(6) - (7)].case_value),0); }
     break;
 
-  case 207:
+  case 203:
 /* Line 1792 of yacc.c  */
-#line 743 "griby.y"
+#line 737 "griby.y"
     {
 	  				(grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].concept_condition)); free((grib_yyvsp[(1) - (5)].str));}
     break;
 
-  case 208:
+  case 204:
 /* Line 1792 of yacc.c  */
-#line 745 "griby.y"
+#line 739 "griby.y"
     {
 	  				(grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].concept_condition)); free((grib_yyvsp[(1) - (5)].str));}
     break;
 
-  case 209:
+  case 205:
 /* Line 1792 of yacc.c  */
-#line 747 "griby.y"
+#line 741 "griby.y"
     {
 					char buf[80]; sprintf(buf,"%ld",(long)(grib_yyvsp[(1) - (5)].lval)); (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,buf,(grib_yyvsp[(4) - (5)].concept_condition));}
     break;
 
-  case 210:
+  case 206:
 /* Line 1792 of yacc.c  */
-#line 749 "griby.y"
+#line 743 "griby.y"
     {
 					char buf[80]; sprintf(buf,"%g",(double)(grib_yyvsp[(1) - (5)].dval)); (grib_yyval.concept_value) = grib_concept_value_new(grib_parser_context,buf,(grib_yyvsp[(4) - (5)].concept_condition));}
     break;
 
-  case 212:
+  case 208:
 /* Line 1792 of yacc.c  */
-#line 754 "griby.y"
+#line 748 "griby.y"
     { (grib_yyvsp[(1) - (2)].concept_condition)->next = (grib_yyvsp[(2) - (2)].concept_condition); (grib_yyval.concept_condition) = (grib_yyvsp[(1) - (2)].concept_condition); }
     break;
 
-  case 213:
+  case 209:
 /* Line 1792 of yacc.c  */
-#line 757 "griby.y"
+#line 751 "griby.y"
     { (grib_yyval.concept_condition) = grib_concept_condition_new(grib_parser_context,(grib_yyvsp[(1) - (4)].str),(grib_yyvsp[(3) - (4)].exp),0); free((grib_yyvsp[(1) - (4)].str)); }
     break;
 
-  case 214:
+  case 210:
 /* Line 1792 of yacc.c  */
-#line 758 "griby.y"
+#line 752 "griby.y"
     { (grib_yyval.concept_condition) = grib_concept_condition_new(grib_parser_context,(grib_yyvsp[(1) - (6)].str),0,(grib_yyvsp[(4) - (6)].ivalue)); free((grib_yyvsp[(1) - (6)].str)); }
     break;
 
-  case 215:
+  case 211:
 /* Line 1792 of yacc.c  */
-#line 762 "griby.y"
+#line 756 "griby.y"
     {
 	  				(grib_yyval.hash_array_value) = grib_integer_hash_array_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].ivalue)); free((grib_yyvsp[(1) - (5)].str));}
     break;
 
-  case 216:
+  case 212:
 /* Line 1792 of yacc.c  */
-#line 764 "griby.y"
+#line 758 "griby.y"
     {
 	  				(grib_yyval.hash_array_value) = grib_integer_hash_array_value_new(grib_parser_context,(grib_yyvsp[(1) - (5)].str),(grib_yyvsp[(4) - (5)].ivalue)); free((grib_yyvsp[(1) - (5)].str));}
     break;
 
-  case 217:
+  case 213:
 /* Line 1792 of yacc.c  */
-#line 768 "griby.y"
+#line 762 "griby.y"
     { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[(3) - (8)].str),(grib_yyvsp[(5) - (8)].lval),(grib_yyvsp[(7) - (8)].lval));  free((grib_yyvsp[(3) - (8)].str)); }
     break;
 
-  case 218:
+  case 214:
 /* Line 1792 of yacc.c  */
-#line 769 "griby.y"
+#line 763 "griby.y"
     { (grib_yyval.exp) = new_accessor_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].str),0,0); free((grib_yyvsp[(1) - (1)].str)); }
     break;
 
-  case 219:
+  case 215:
 /* Line 1792 of yacc.c  */
-#line 770 "griby.y"
+#line 764 "griby.y"
     { (grib_yyval.exp) = new_sub_string_expression(grib_parser_context,(grib_yyvsp[(3) - (8)].str),(grib_yyvsp[(5) - (8)].lval),(grib_yyvsp[(7) - (8)].lval));  free((grib_yyvsp[(3) - (8)].str)); }
     break;
 
-  case 220:
+  case 216:
 /* Line 1792 of yacc.c  */
-#line 771 "griby.y"
+#line 765 "griby.y"
     { (grib_yyval.exp) = new_string_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].str));  free((grib_yyvsp[(1) - (1)].str)); }
     break;
 
-  case 222:
+  case 218:
 /* Line 1792 of yacc.c  */
-#line 775 "griby.y"
+#line 769 "griby.y"
     { (grib_yyval.exp) = new_long_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].lval));  }
     break;
 
-  case 223:
+  case 219:
 /* Line 1792 of yacc.c  */
-#line 776 "griby.y"
+#line 770 "griby.y"
     { (grib_yyval.exp) = new_double_expression(grib_parser_context,(grib_yyvsp[(1) - (1)].dval));  /* TODO: change to new_float_expression*/}
     break;
 
-  case 224:
+  case 220:
 /* Line 1792 of yacc.c  */
-#line 778 "griby.y"
+#line 772 "griby.y"
     { (grib_yyval.exp) = NULL; }
     break;
 
-  case 225:
+  case 221:
 /* Line 1792 of yacc.c  */
-#line 779 "griby.y"
+#line 773 "griby.y"
     { (grib_yyval.exp) = new_true_expression(grib_parser_context); }
     break;
 
-  case 226:
+  case 222:
 /* Line 1792 of yacc.c  */
-#line 780 "griby.y"
+#line 774 "griby.y"
     { (grib_yyval.exp) = (grib_yyvsp[(2) - (3)].exp); }
     break;
 
-  case 227:
+  case 223:
 /* Line 1792 of yacc.c  */
-#line 781 "griby.y"
+#line 775 "griby.y"
     { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_neg,&grib_op_neg_d,(grib_yyvsp[(2) - (2)].exp)); }
     break;
 
-  case 228:
+  case 224:
 /* Line 1792 of yacc.c  */
-#line 782 "griby.y"
+#line 776 "griby.y"
     { (grib_yyval.exp) = new_func_expression(grib_parser_context,(grib_yyvsp[(1) - (3)].str),NULL); free((grib_yyvsp[(1) - (3)].str));}
     break;
 
-  case 229:
+  case 225:
 /* Line 1792 of yacc.c  */
-#line 783 "griby.y"
+#line 777 "griby.y"
     { (grib_yyval.exp) = new_func_expression(grib_parser_context,(grib_yyvsp[(1) - (4)].str),(grib_yyvsp[(3) - (4)].explist)); free((grib_yyvsp[(1) - (4)].str));}
     break;
 
-  case 230:
+  case 226:
 /* Line 1792 of yacc.c  */
-#line 787 "griby.y"
+#line 781 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_pow,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 232:
+  case 228:
 /* Line 1792 of yacc.c  */
-#line 791 "griby.y"
+#line 785 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_mul,&grib_op_mul_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 233:
+  case 229:
 /* Line 1792 of yacc.c  */
-#line 792 "griby.y"
+#line 786 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_div,&grib_op_div_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 234:
+  case 230:
 /* Line 1792 of yacc.c  */
-#line 793 "griby.y"
+#line 787 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_modulo,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 235:
+  case 231:
 /* Line 1792 of yacc.c  */
-#line 794 "griby.y"
+#line 788 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_bit,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 236:
+  case 232:
 /* Line 1792 of yacc.c  */
-#line 795 "griby.y"
+#line 789 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_bitoff,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 238:
+  case 234:
 /* Line 1792 of yacc.c  */
-#line 797 "griby.y"
+#line 791 "griby.y"
     { (grib_yyval.exp) = new_length_expression(grib_parser_context,(grib_yyvsp[(3) - (4)].str)); free((grib_yyvsp[(3) - (4)].str));}
     break;
 
-  case 239:
+  case 235:
 /* Line 1792 of yacc.c  */
-#line 798 "griby.y"
+#line 792 "griby.y"
     { (grib_yyval.exp) = new_is_in_list_expression(grib_parser_context,(grib_yyvsp[(3) - (6)].str),(grib_yyvsp[(5) - (6)].str)); free((grib_yyvsp[(3) - (6)].str));free((grib_yyvsp[(5) - (6)].str));}
     break;
 
-  case 240:
+  case 236:
 /* Line 1792 of yacc.c  */
-#line 799 "griby.y"
+#line 793 "griby.y"
     { (grib_yyval.exp) = new_is_in_dict_expression(grib_parser_context,(grib_yyvsp[(3) - (6)].str),(grib_yyvsp[(5) - (6)].str)); free((grib_yyvsp[(3) - (6)].str));free((grib_yyvsp[(5) - (6)].str));}
     break;
 
-  case 241:
+  case 237:
 /* Line 1792 of yacc.c  */
-#line 800 "griby.y"
+#line 794 "griby.y"
     { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[(3) - (6)].str),(grib_yyvsp[(5) - (6)].lval),0); free((grib_yyvsp[(3) - (6)].str));}
     break;
 
-  case 242:
+  case 238:
 /* Line 1792 of yacc.c  */
-#line 801 "griby.y"
+#line 795 "griby.y"
     { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[(3) - (8)].str),(grib_yyvsp[(5) - (8)].lval),(grib_yyvsp[(7) - (8)].lval)); free((grib_yyvsp[(3) - (8)].str));}
     break;
 
-  case 243:
+  case 239:
 /* Line 1792 of yacc.c  */
-#line 802 "griby.y"
+#line 796 "griby.y"
     { (grib_yyval.exp) = new_is_integer_expression(grib_parser_context,(grib_yyvsp[(3) - (4)].str),0,0); free((grib_yyvsp[(3) - (4)].str));}
     break;
 
-  case 244:
+  case 240:
 /* Line 1792 of yacc.c  */
-#line 805 "griby.y"
+#line 799 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_add,&grib_op_add_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 245:
+  case 241:
 /* Line 1792 of yacc.c  */
-#line 806 "griby.y"
+#line 800 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_sub,&grib_op_sub_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 247:
+  case 243:
 /* Line 1792 of yacc.c  */
-#line 810 "griby.y"
+#line 804 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_gt,&grib_op_gt_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 248:
+  case 244:
 /* Line 1792 of yacc.c  */
-#line 812 "griby.y"
+#line 806 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_eq,&grib_op_eq_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 249:
+  case 245:
 /* Line 1792 of yacc.c  */
-#line 813 "griby.y"
+#line 807 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_lt,&grib_op_lt_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 250:
+  case 246:
 /* Line 1792 of yacc.c  */
-#line 814 "griby.y"
+#line 808 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ge,&grib_op_ge_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 251:
+  case 247:
 /* Line 1792 of yacc.c  */
-#line 815 "griby.y"
+#line 809 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_le,&grib_op_le_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 252:
+  case 248:
 /* Line 1792 of yacc.c  */
-#line 816 "griby.y"
+#line 810 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_ne,&grib_op_ne_d,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 253:
+  case 249:
 /* Line 1792 of yacc.c  */
-#line 817 "griby.y"
+#line 811 "griby.y"
     { (grib_yyval.exp) = new_string_compare_expression(grib_parser_context,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 254:
+  case 250:
 /* Line 1792 of yacc.c  */
-#line 822 "griby.y"
+#line 816 "griby.y"
     { (grib_yyval.exp) = new_unop_expression(grib_parser_context,&grib_op_not,NULL,(grib_yyvsp[(2) - (2)].exp)); }
     break;
 
-  case 256:
+  case 252:
 /* Line 1792 of yacc.c  */
-#line 826 "griby.y"
+#line 820 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_and,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp)); }
     break;
 
-  case 258:
+  case 254:
 /* Line 1792 of yacc.c  */
-#line 830 "griby.y"
+#line 824 "griby.y"
     { (grib_yyval.exp) = new_binop_expression(grib_parser_context,&grib_op_or,NULL,(grib_yyvsp[(1) - (3)].exp),(grib_yyvsp[(3) - (3)].exp));}
     break;
 
-  case 263:
+  case 259:
 /* Line 1792 of yacc.c  */
-#line 844 "griby.y"
+#line 838 "griby.y"
     { (grib_yyval.rule_entry) = grib_new_rule_entry(grib_parser_context,(grib_yyvsp[(1) - (4)].str),(grib_yyvsp[(3) - (4)].exp)); free((grib_yyvsp[(1) - (4)].str)); }
     break;
 
-  case 264:
+  case 260:
 /* Line 1792 of yacc.c  */
-#line 845 "griby.y"
+#line 839 "griby.y"
     { (grib_yyval.rule_entry) = grib_new_rule_entry(grib_parser_context,"skip",0);}
     break;
 
-  case 266:
+  case 262:
 /* Line 1792 of yacc.c  */
-#line 849 "griby.y"
+#line 843 "griby.y"
     { (grib_yyvsp[(1) - (2)].rule_entry)->next = (grib_yyvsp[(2) - (2)].rule_entry); (grib_yyval.rule_entry) = (grib_yyvsp[(1) - (2)].rule_entry); }
     break;
 
-  case 267:
+  case 263:
 /* Line 1792 of yacc.c  */
-#line 852 "griby.y"
+#line 846 "griby.y"
     { (grib_yyval.rules) = grib_new_rule(grib_parser_context,NULL,(grib_yyvsp[(1) - (1)].rule_entry)); }
     break;
 
-  case 268:
+  case 264:
 /* Line 1792 of yacc.c  */
-#line 856 "griby.y"
+#line 850 "griby.y"
     { (grib_yyval.rules) = grib_new_rule(grib_parser_context,(grib_yyvsp[(3) - (7)].exp),(grib_yyvsp[(6) - (7)].rule_entry)); }
     break;
 
-  case 270:
+  case 266:
 /* Line 1792 of yacc.c  */
-#line 860 "griby.y"
+#line 854 "griby.y"
     { (grib_yyvsp[(1) - (2)].rules)->next = (grib_yyvsp[(2) - (2)].rules); (grib_yyval.rules) = (grib_yyvsp[(1) - (2)].rules); }
     break;
 
 
 /* Line 1792 of yacc.c  */
-#line 4011 "y.tab.c"
+#line 3962 "y.tab.c"
       default: break;
     }
   /* User semantic actions sometimes alter grib_yychar, and that requires
@@ -4239,7 +4190,7 @@ grib_yyreturn:
 
 
 /* Line 2055 of yacc.c  */
-#line 864 "griby.y"
+#line 858 "griby.y"
 
 
 static grib_concept_value *_reverse_concept(grib_concept_value *r,grib_concept_value *s)
diff --git a/src/gribl.l b/src/gribl.l
index ee873e3..3f373a1 100644
--- a/src/gribl.l
+++ b/src/gribl.l
@@ -63,7 +63,10 @@ FLOAT3    {NSIGNED}+{EXP}?
 IDENT1     [_A-Za-z]+[_0-9A-Za-z]*
 IDENT2     "\/"{IDENT1}"\="({NSIGNED}|{FLOAT1}|{FLOAT2}|{FLOAT3})"\/"{IDENT1}
 IDENT3     "\#"{NUMB}"\#"{IDENT1}
-IDENT     {IDENT1}|{IDENT2}|{IDENT3}
+IDENT4     {NUMB}+{IDENT1}
+IDENT_ATTR  "->"{IDENT1}
+IDENT5    ({IDENT1}|{IDENT3}|{IDENT4})({IDENT_ATTR})+
+IDENT     {IDENT1}|{IDENT2}|{IDENT3}|{IDENT4}|{IDENT5}
 
 %%
 
@@ -165,8 +168,6 @@ IDENT     {IDENT1}|{IDENT2}|{IDENT3}
 "no_copy"           return NO_COPY;
 "edition_specific"    return EDITION_SPECIFIC;
 "dump"                return DUMP;
-"json"                return JSON;
-"xml"                return XML;
 "no_fail"            return NO_FAIL;
 "hidden"              return HIDDEN;
 "can_be_missing"      return CAN_BE_MISSING;
diff --git a/src/griby.y b/src/griby.y
index 288f597..d81f06e 100644
--- a/src/griby.y
+++ b/src/griby.y
@@ -484,8 +484,8 @@ simple : UNSIGNED '[' INTEGER ']'   IDENT   default flags
 
     | TRANS       IDENT   '=' argument  flags
         { $$ = grib_action_create_variable(grib_parser_context,$2,"transient",0,$4,$4,$5,NULL);   free($2); }
-    | TRANS       IDENT   '=' '{' dvalues '}' 
-        { $$ = grib_action_create_transient_darray(grib_parser_context,$2,$5); free($2); }
+    | TRANS       IDENT   '=' '{' dvalues '}' flags 
+        { $$ = grib_action_create_transient_darray(grib_parser_context,$2,$5,$7); free($2); }
 
     | FLOAT       IDENT    default   flags
 	{ $$ = grib_action_create_gen(grib_parser_context,$2,"ieeefloat",4,NULL,$3,$4,NULL,NULL);   free($2);  }
@@ -499,9 +499,6 @@ simple : UNSIGNED '[' INTEGER ']'   IDENT   default flags
    | G1_HALF_BYTE  IDENT
    { $$ = grib_action_create_gen(grib_parser_context,$2,"g1_half_byte_codeflag",0,NULL,NULL,0,NULL,NULL);free($2);  }
 
-    | SECTION_LENGTH  '[' INTEGER ']'   IDENT
-	{ $$ = grib_action_create_gen(grib_parser_context,$5,"section_length",$3,NULL,NULL,0,NULL,NULL);free($5);  }
-
     | SECTION_LENGTH  '[' INTEGER ']'   IDENT default
 	{ $$ = grib_action_create_gen(grib_parser_context,$5,"section_length",$3,NULL,$6,0,NULL,NULL);free($5);  }
 
@@ -670,15 +667,12 @@ flag_list  : flag
 flag: READ_ONLY         { $$ = GRIB_ACCESSOR_FLAG_READ_ONLY; }
     | LOWERCASE            { $$ = GRIB_ACCESSOR_FLAG_LOWERCASE; }
     | DUMP            { $$ = GRIB_ACCESSOR_FLAG_DUMP; }
-    | JSON            { $$ = GRIB_ACCESSOR_FLAG_JSON; }
-    | XML            { $$ = GRIB_ACCESSOR_FLAG_XML; }
     | NO_COPY            { $$ = GRIB_ACCESSOR_FLAG_NO_COPY; }
-	| NO_FAIL            { $$ = GRIB_ACCESSOR_FLAG_NO_FAIL; }
+	  | NO_FAIL            { $$ = GRIB_ACCESSOR_FLAG_NO_FAIL; }
     | HIDDEN            { $$ = GRIB_ACCESSOR_FLAG_HIDDEN; }
     | EDITION_SPECIFIC  { $$ = GRIB_ACCESSOR_FLAG_EDITION_SPECIFIC; }
     | CAN_BE_MISSING    { $$ = GRIB_ACCESSOR_FLAG_CAN_BE_MISSING; }
     | CONSTRAINT        { $$ = GRIB_ACCESSOR_FLAG_CONSTRAINT; }
-    | OVERRIDE           { $$ = GRIB_ACCESSOR_FLAG_OVERRIDE; }
     | COPY_OK           { $$ = GRIB_ACCESSOR_FLAG_COPY_OK; }
     | TRANS         { $$ = GRIB_ACCESSOR_FLAG_TRANSIENT; }
     | STRING_TYPE         { $$ = GRIB_ACCESSOR_FLAG_STRING_TYPE; }
diff --git a/src/makeyacc b/src/makeyacc
index e04fdd8..82c4e6f 100755
--- a/src/makeyacc
+++ b/src/makeyacc
@@ -7,7 +7,7 @@ sed 's/fgetc/getc/g' < grib_lex1.c > grib_lex.c
 rm -f grib_lex1.c
 rm -f $LEX_OUT
 
-yacc -d griby.y
+yacc -v -d griby.y
 sed 's/yy/grib_yy/g' < y.tab.c > grib_yacc1.c
 sed 's/fgetc/getc/g' < grib_yacc1.c > grib_yacc.c
 rm -f grib_yacc1.c
diff --git a/src/stamp-h1 b/src/stamp-h1
deleted file mode 100644
index 57ea58e..0000000
--- a/src/stamp-h1
+++ /dev/null
@@ -1 +0,0 @@
-timestamp for src/config.h
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 6390fa9..11817fc 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -45,6 +45,8 @@ list( APPEND tests1
 list( APPEND tests2
     grib_double_cmp
     bufr_dump
+    bufr_dump_decode_filter
+    bufr_dump_encode_filter
     bufrdc_desc_ref
     bufrdc_ref
     bufr_compare
@@ -52,10 +54,14 @@ list( APPEND tests2
     bufr_count
     bufr_get
     bufr_filter
+    bufr_filter_extract_datetime
+    bufr_filter_extract_area
     bufr_json
     bufr_ls
     bufr_change_edition
     ecc-197
+    ecc-286
+    ecc-288
     gts_get
     gts_ls
     gts_compare
@@ -98,11 +104,20 @@ list( APPEND tests2
     tigge_conversions
     read_any
     padding
-    debug
+    grib_dump
+    grib_dump_debug
     grib_util_set_spec
     local_MeteoFrance
     neg_fctime
 )
+if( HAVE_FORTRAN AND ENABLE_EXTRA_TESTS )
+    list(APPEND tests2 bufr_dump_encode_fortran)
+    list(APPEND tests2 bufr_dump_decode_fortran)
+endif()
+if( ENABLE_EXTRA_TESTS )
+    list(APPEND tests2 bufr_dump_encode_C)
+    list(APPEND tests2 bufr_dump_decode_C)
+endif()
 
 # These tests do not require any data downloads
 foreach( test ${tests1} )
@@ -131,6 +146,26 @@ foreach( test ${tests2} )
     )
 endforeach()
 
+if( HAVE_FORTRAN AND ENABLE_EXTRA_TESTS )
+    set_tests_properties ( eccodes_t_bufr_dump_encode_fortran PROPERTIES TIMEOUT 2500)
+endif()
+if( ENABLE_EXTRA_TESTS )
+    set_tests_properties ( eccodes_t_bufr_dump_encode_C PROPERTIES TIMEOUT 2500)
+endif()
+
+
+if( HAVE_PYTHON AND ENABLE_EXTRA_TESTS )
+    list( APPEND ptests bufr_dump_encode_python bufr_dump_decode_python )
+    foreach( test ${ptests} )
+        ecbuild_add_test( TARGET eccodes_t_${test}
+                          TYPE SCRIPT
+                          COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/${test}.sh
+                          ENVIRONMENT PYTHON=${PYTHON_EXECUTABLE} PYTHONPATH=${PROJECT_BINARY_DIR}/python
+                          TEST_DEPENDS eccodes_download_bufrs
+        )
+    endforeach()
+endif()
+
 ###########################################
 # Note: the reference file is in the tests dir not data dir!
 ecbuild_add_test( TARGET eccodes_t_lamb_az_eq_area
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 58f0cf5..96642e4 100755
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -53,12 +53,15 @@ TESTS = definitions.sh \
         padding.sh \
         lamb_az_eq_area.sh \
         grib_to_netcdf.sh \
-        debug.sh \
+        grib_dump_debug.sh \
         jpeg.sh \
         ccsds.sh \
         md5.sh \
         grib_util_set_spec.sh \
-        neg_fctime.sh
+        neg_fctime.sh \
+        ecc-197.sh \
+        ecc-286.sh \
+        ecc-288.sh
 
 # First download all the necessary data for testing
 # Note: if download fails, no tests will be done
diff --git a/tests/Makefile.in b/tests/Makefile.in
deleted file mode 100644
index bb696fb..0000000
--- a/tests/Makefile.in
+++ /dev/null
@@ -1,1727 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-noinst_PROGRAMS = packing_check$(EXEEXT) gauss_sub$(EXEEXT) \
-	read_any$(EXEEXT) grib_double_cmp$(EXEEXT) packing$(EXEEXT) \
-	pack_unpack$(EXEEXT) multi_from_message$(EXEEXT) \
-	julian$(EXEEXT) read_index$(EXEEXT) index$(EXEEXT) \
-	gribex_perf$(EXEEXT) jpeg_perf$(EXEEXT) ccsds_perf$(EXEEXT) \
-	so_perf$(EXEEXT) png_perf$(EXEEXT) bpv_limit$(EXEEXT) \
-	laplacian$(EXEEXT) unit_tests$(EXEEXT) \
-	grib_util_set_spec$(EXEEXT)
-subdir = tests
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/config/depcomp $(top_srcdir)/config/test-driver
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-bpv_limit_SOURCES = bpv_limit.c
-bpv_limit_OBJECTS = bpv_limit.$(OBJEXT)
-bpv_limit_LDADD = $(LDADD)
-am__DEPENDENCIES_1 =
-bpv_limit_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-am_ccsds_perf_OBJECTS = ccsds_perf.$(OBJEXT)
-ccsds_perf_OBJECTS = $(am_ccsds_perf_OBJECTS)
-ccsds_perf_LDADD = $(LDADD)
-ccsds_perf_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_gauss_sub_OBJECTS = gauss_sub.$(OBJEXT)
-gauss_sub_OBJECTS = $(am_gauss_sub_OBJECTS)
-gauss_sub_LDADD = $(LDADD)
-gauss_sub_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_grib_double_cmp_OBJECTS = grib_double_cmp.$(OBJEXT)
-grib_double_cmp_OBJECTS = $(am_grib_double_cmp_OBJECTS)
-grib_double_cmp_LDADD = $(LDADD)
-grib_double_cmp_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_grib_util_set_spec_OBJECTS = grib_util_set_spec.$(OBJEXT)
-grib_util_set_spec_OBJECTS = $(am_grib_util_set_spec_OBJECTS)
-grib_util_set_spec_LDADD = $(LDADD)
-grib_util_set_spec_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_gribex_perf_OBJECTS = gribex_perf.$(OBJEXT)
-gribex_perf_OBJECTS = $(am_gribex_perf_OBJECTS)
-gribex_perf_LDADD = $(LDADD)
-gribex_perf_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_index_OBJECTS = index.$(OBJEXT)
-index_OBJECTS = $(am_index_OBJECTS)
-index_LDADD = $(LDADD)
-index_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_jpeg_perf_OBJECTS = jpeg_perf.$(OBJEXT)
-jpeg_perf_OBJECTS = $(am_jpeg_perf_OBJECTS)
-jpeg_perf_LDADD = $(LDADD)
-jpeg_perf_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_julian_OBJECTS = julian.$(OBJEXT)
-julian_OBJECTS = $(am_julian_OBJECTS)
-julian_LDADD = $(LDADD)
-julian_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_laplacian_OBJECTS = laplacian.$(OBJEXT)
-laplacian_OBJECTS = $(am_laplacian_OBJECTS)
-laplacian_LDADD = $(LDADD)
-laplacian_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_multi_from_message_OBJECTS = multi_from_message.$(OBJEXT)
-multi_from_message_OBJECTS = $(am_multi_from_message_OBJECTS)
-multi_from_message_LDADD = $(LDADD)
-multi_from_message_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_pack_unpack_OBJECTS = pack_unpack.$(OBJEXT)
-pack_unpack_OBJECTS = $(am_pack_unpack_OBJECTS)
-pack_unpack_LDADD = $(LDADD)
-pack_unpack_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_packing_OBJECTS = packing.$(OBJEXT)
-packing_OBJECTS = $(am_packing_OBJECTS)
-packing_LDADD = $(LDADD)
-packing_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_packing_check_OBJECTS = packing_check.$(OBJEXT)
-packing_check_OBJECTS = $(am_packing_check_OBJECTS)
-packing_check_LDADD = $(LDADD)
-packing_check_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_png_perf_OBJECTS = png_perf.$(OBJEXT)
-png_perf_OBJECTS = $(am_png_perf_OBJECTS)
-png_perf_LDADD = $(LDADD)
-png_perf_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_read_any_OBJECTS = read_any.$(OBJEXT)
-read_any_OBJECTS = $(am_read_any_OBJECTS)
-read_any_LDADD = $(LDADD)
-read_any_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_read_index_OBJECTS = read_index.$(OBJEXT)
-read_index_OBJECTS = $(am_read_index_OBJECTS)
-read_index_LDADD = $(LDADD)
-read_index_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_so_perf_OBJECTS = so_perf.$(OBJEXT)
-so_perf_OBJECTS = $(am_so_perf_OBJECTS)
-so_perf_LDADD = $(LDADD)
-so_perf_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-am_unit_tests_OBJECTS = unit_tests.$(OBJEXT)
-unit_tests_OBJECTS = $(am_unit_tests_OBJECTS)
-unit_tests_LDADD = $(LDADD)
-unit_tests_DEPENDENCIES = $(top_builddir)/src/libeccodes.la \
-	$(am__DEPENDENCIES_1)
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = bpv_limit.c $(ccsds_perf_SOURCES) $(gauss_sub_SOURCES) \
-	$(grib_double_cmp_SOURCES) $(grib_util_set_spec_SOURCES) \
-	$(gribex_perf_SOURCES) $(index_SOURCES) $(jpeg_perf_SOURCES) \
-	$(julian_SOURCES) $(laplacian_SOURCES) \
-	$(multi_from_message_SOURCES) $(pack_unpack_SOURCES) \
-	$(packing_SOURCES) $(packing_check_SOURCES) \
-	$(png_perf_SOURCES) $(read_any_SOURCES) $(read_index_SOURCES) \
-	$(so_perf_SOURCES) $(unit_tests_SOURCES)
-DIST_SOURCES = bpv_limit.c $(ccsds_perf_SOURCES) $(gauss_sub_SOURCES) \
-	$(grib_double_cmp_SOURCES) $(grib_util_set_spec_SOURCES) \
-	$(gribex_perf_SOURCES) $(index_SOURCES) $(jpeg_perf_SOURCES) \
-	$(julian_SOURCES) $(laplacian_SOURCES) \
-	$(multi_from_message_SOURCES) $(pack_unpack_SOURCES) \
-	$(packing_SOURCES) $(packing_check_SOURCES) \
-	$(png_perf_SOURCES) $(read_any_SOURCES) $(read_index_SOURCES) \
-	$(so_perf_SOURCES) $(unit_tests_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__tty_colors_dummy = \
-  mgn= red= grn= lgn= blu= brg= std=; \
-  am__color_tests=no
-am__tty_colors = { \
-  $(am__tty_colors_dummy); \
-  if test "X$(AM_COLOR_TESTS)" = Xno; then \
-    am__color_tests=no; \
-  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
-    am__color_tests=yes; \
-  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
-    am__color_tests=yes; \
-  fi; \
-  if test $$am__color_tests = yes; then \
-    red=''; \
-    grn=''; \
-    lgn=''; \
-    blu=''; \
-    mgn=''; \
-    brg=''; \
-    std=''; \
-  fi; \
-}
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__recheck_rx = ^[ 	]*:recheck:[ 	]*
-am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
-am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
-# A command that, given a newline-separated list of test names on the
-# standard input, print the name of the tests that are to be re-run
-# upon "make recheck".
-am__list_recheck_tests = $(AWK) '{ \
-  recheck = 1; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-        { \
-          if ((getline line2 < ($$0 ".log")) < 0) \
-	    recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
-        { \
-          recheck = 0; \
-          break; \
-        } \
-      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
-        { \
-          break; \
-        } \
-    }; \
-  if (recheck) \
-    print $$0; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# A command that, given a newline-separated list of test names on the
-# standard input, create the global log from their .trs and .log files.
-am__create_global_log = $(AWK) ' \
-function fatal(msg) \
-{ \
-  print "fatal: making $@: " msg | "cat >&2"; \
-  exit 1; \
-} \
-function rst_section(header) \
-{ \
-  print header; \
-  len = length(header); \
-  for (i = 1; i <= len; i = i + 1) \
-    printf "="; \
-  printf "\n\n"; \
-} \
-{ \
-  copy_in_global_log = 1; \
-  global_test_result = "RUN"; \
-  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
-    { \
-      if (rc < 0) \
-         fatal("failed to read from " $$0 ".trs"); \
-      if (line ~ /$(am__global_test_result_rx)/) \
-        { \
-          sub("$(am__global_test_result_rx)", "", line); \
-          sub("[ 	]*$$", "", line); \
-          global_test_result = line; \
-        } \
-      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
-        copy_in_global_log = 0; \
-    }; \
-  if (copy_in_global_log) \
-    { \
-      rst_section(global_test_result ": " $$0); \
-      while ((rc = (getline line < ($$0 ".log"))) != 0) \
-      { \
-        if (rc < 0) \
-          fatal("failed to read from " $$0 ".log"); \
-        print line; \
-      }; \
-      printf "\n"; \
-    }; \
-  close ($$0 ".trs"); \
-  close ($$0 ".log"); \
-}'
-# Restructured Text title.
-am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-# Solaris 10 'make', and several other traditional 'make' implementations,
-# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
-# by disabling -e (using the XSI extension "set +e") if it's set.
-am__sh_e_setup = case $$- in *e*) set +e;; esac
-# Default flags passed to test drivers.
-am__common_driver_flags = \
-  --color-tests "$$am__color_tests" \
-  --enable-hard-errors "$$am__enable_hard_errors" \
-  --expect-failure "$$am__expect_failure"
-# To be inserted before the command running the test.  Creates the
-# directory for the log if needed.  Stores in $dir the directory
-# containing $f, in $tst the test, in $log the log.  Executes the
-# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
-# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
-# will run the test scripts (or their associated LOG_COMPILER, if
-# thy have one).
-am__check_pre = \
-$(am__sh_e_setup);					\
-$(am__vpath_adj_setup) $(am__vpath_adj)			\
-$(am__tty_colors);					\
-srcdir=$(srcdir); export srcdir;			\
-case "$@" in						\
-  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
-    *) am__odir=.;; 					\
-esac;							\
-test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
-  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
-if test -f "./$$f"; then dir=./;			\
-elif test -f "$$f"; then dir=;				\
-else dir="$(srcdir)/"; fi;				\
-tst=$$dir$$f; log='$@'; 				\
-if test -n '$(DISABLE_HARD_ERRORS)'; then		\
-  am__enable_hard_errors=no; 				\
-else							\
-  am__enable_hard_errors=yes; 				\
-fi; 							\
-case " $(XFAIL_TESTS) " in				\
-  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
-    am__expect_failure=yes;;				\
-  *)							\
-    am__expect_failure=no;;				\
-esac; 							\
-$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-# A shell command to get the names of the tests scripts with any registered
-# extension removed (i.e., equivalently, the names of the test logs, with
-# the '.log' extension removed).  The result is saved in the shell variable
-# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
-# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
-# since that might cause problem with VPATH rewrites for suffix-less tests.
-# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
-am__set_TESTS_bases = \
-  bases='$(TEST_LOGS)'; \
-  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
-  bases=`echo $$bases`
-RECHECK_LOGS = $(TEST_LOGS)
-AM_RECURSIVE_TARGETS = check recheck
-TEST_SUITE_LOG = test-suite.log
-TEST_EXTENSIONS = @EXEEXT@ .test
-LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
-LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
-am__set_b = \
-  case '$@' in \
-    */*) \
-      case '$*' in \
-        */*) b='$*';; \
-          *) b=`echo '$@' | sed 's/\.log$$//'`; \
-       esac;; \
-    *) \
-      b='$*';; \
-  esac
-am__test_logs1 = $(TESTS:=.log)
-am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
-TEST_LOGS = $(am__test_logs2:.test.log=.log)
-TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
-TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
-	$(TEST_LOG_FLAGS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AEC_DIR = @AEC_DIR@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CCSDS_TEST = @CCSDS_TEST@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEVEL_RULES = @DEVEL_RULES@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECCODES_AGE = @ECCODES_AGE@
-ECCODES_CURRENT = @ECCODES_CURRENT@
-ECCODES_DEFINITION_PATH = @ECCODES_DEFINITION_PATH@
-ECCODES_MAIN_VERSION = @ECCODES_MAIN_VERSION@
-ECCODES_MAJOR_VERSION = @ECCODES_MAJOR_VERSION@
-ECCODES_MINOR_VERSION = @ECCODES_MINOR_VERSION@
-ECCODES_PATCH_VERSION = @ECCODES_PATCH_VERSION@
-ECCODES_REVISION = @ECCODES_REVISION@
-ECCODES_SAMPLES_PATH = @ECCODES_SAMPLES_PATH@
-ECCODES_VERSION_STR = @ECCODES_VERSION_STR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB = @EMOS_LIB@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-F90_CHECK = @F90_CHECK@
-F90_MODULE_FLAG = @F90_MODULE_FLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FORTRAN_MOD = @FORTRAN_MOD@
-GREP = @GREP@
-GRIB_API_INC = @GRIB_API_INC@
-GRIB_API_LIB = @GRIB_API_LIB@
-GRIB_DEVEL = @GRIB_DEVEL@
-IFS_SAMPLES_DIR = @IFS_SAMPLES_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JASPER_DIR = @JASPER_DIR@
-JPEG_TEST = @JPEG_TEST@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_AEC = @LIB_AEC@
-LIB_JASPER = @LIB_JASPER@
-LIB_OPENJPEG = @LIB_OPENJPEG@
-LIB_PNG = @LIB_PNG@
-LINUX_DISTRIBUTION_NAME = @LINUX_DISTRIBUTION_NAME@
-LINUX_DISTRIBUTION_VERSION = @LINUX_DISTRIBUTION_VERSION@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENJPEG_DIR = @OPENJPEG_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PERLDIR = @PERLDIR@
-PERL_INSTALL_OPTIONS = @PERL_INSTALL_OPTIONS@
-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_CHECK = @PYTHON_CHECK@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_DATA_HANDLER = @PYTHON_DATA_HANDLER@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RM = @RM@
-RPM_CONFIGURE_ARGS = @RPM_CONFIGURE_ARGS@
-RPM_HOST_CPU = @RPM_HOST_CPU@
-RPM_HOST_OS = @RPM_HOST_OS@
-RPM_HOST_VENDOR = @RPM_HOST_VENDOR@
-RPM_RELEASE = @RPM_RELEASE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_PEDANTIC = @WARN_PEDANTIC@
-WERROR = @WERROR@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-TESTS = definitions.sh \
-        calendar.sh \
-        bufrdc_desc_ref.sh \
-        bufrdc_ref.sh \
-        bufr_dump.sh \
-        bufr_filter.sh \
-        bufr_json.sh \
-        bufr_compare.sh \
-        bufr_copy.sh \
-        bufr_count.sh \
-        bufr_get.sh \
-        bufr_ls.sh \
-        bufr_set.sh \
-        bufr_change_edition.sh \
-        gts_ls.sh \
-        metar_ls.sh \
-        metar_dump.sh \
-        ieee.sh \
-        grib1to2.sh \
-        unit_tests.sh \
-        grib2to1.sh \
-        badgrib.sh \
-        ls.sh \
-        filter.sh  \
-        multi.sh \
-        budg.sh \
-        gridType.sh \
-        octahedral.sh \
-        global.sh \
-        concept.sh \
-        decimalPrecision.sh \
-        bitsPerValue.sh \
-        get_fail.sh \
-        missing.sh \
-        local.sh \
-        step.sh \
-        set.sh \
-        iterator.sh \
-        grib_compare.sh \
-        level.sh \
-        index.sh \
-        bitmap.sh \
-        list.sh \
-        second_order.sh \
-        multi_from_message.sh \
-        change_scanning.sh \
-        julian.sh \
-        statistics.sh \
-        tigge.sh \
-        uerra.sh \
-        tigge_conversions.sh \
-        read_any.sh \
-        padding.sh \
-        lamb_az_eq_area.sh \
-        grib_to_netcdf.sh \
-        debug.sh \
-        jpeg.sh \
-        ccsds.sh \
-        md5.sh \
-        grib_util_set_spec.sh \
-        neg_fctime.sh
-
-multi_from_message_SOURCES = multi_from_message.c
-laplacian_SOURCES = laplacian.c
-packing_SOURCES = packing.c
-packing_check_SOURCES = packing_check.c
-read_any_SOURCES = read_any.c
-grib_double_cmp_SOURCES = grib_double_cmp.c
-pack_unpack_SOURCES = pack_unpack.c
-julian_SOURCES = julian.c
-unit_tests_SOURCES = unit_tests.c
-index_SOURCES = index.c
-read_index_SOURCES = read_index.c
-jpeg_perf_SOURCES = jpeg_perf.c
-so_perf_SOURCES = so_perf.c
-png_perf_SOURCES = png_perf.c
-ccsds_perf_SOURCES = ccsds_perf.c
-gribex_perf_SOURCES = gribex_perf.c
-gauss_sub_SOURCES = gauss_sub.c
-grib_util_set_spec_SOURCES = grib_util_set_spec.c
-LDADD = $(top_builddir)/src/libeccodes.la $(EMOS_LIB)
-INCLUDES = -I$(top_builddir)/src
-EXTRA_DIST = $(TESTS) mf.rules filter_rules include.sh include.ctest.sh.in utils.sh \
-             lamb_az_eq_area.ref CMakeLists.txt number_compare.pl
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu tests/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-
-bpv_limit$(EXEEXT): $(bpv_limit_OBJECTS) $(bpv_limit_DEPENDENCIES) $(EXTRA_bpv_limit_DEPENDENCIES) 
-	@rm -f bpv_limit$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bpv_limit_OBJECTS) $(bpv_limit_LDADD) $(LIBS)
-
-ccsds_perf$(EXEEXT): $(ccsds_perf_OBJECTS) $(ccsds_perf_DEPENDENCIES) $(EXTRA_ccsds_perf_DEPENDENCIES) 
-	@rm -f ccsds_perf$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(ccsds_perf_OBJECTS) $(ccsds_perf_LDADD) $(LIBS)
-
-gauss_sub$(EXEEXT): $(gauss_sub_OBJECTS) $(gauss_sub_DEPENDENCIES) $(EXTRA_gauss_sub_DEPENDENCIES) 
-	@rm -f gauss_sub$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(gauss_sub_OBJECTS) $(gauss_sub_LDADD) $(LIBS)
-
-grib_double_cmp$(EXEEXT): $(grib_double_cmp_OBJECTS) $(grib_double_cmp_DEPENDENCIES) $(EXTRA_grib_double_cmp_DEPENDENCIES) 
-	@rm -f grib_double_cmp$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_double_cmp_OBJECTS) $(grib_double_cmp_LDADD) $(LIBS)
-
-grib_util_set_spec$(EXEEXT): $(grib_util_set_spec_OBJECTS) $(grib_util_set_spec_DEPENDENCIES) $(EXTRA_grib_util_set_spec_DEPENDENCIES) 
-	@rm -f grib_util_set_spec$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_util_set_spec_OBJECTS) $(grib_util_set_spec_LDADD) $(LIBS)
-
-gribex_perf$(EXEEXT): $(gribex_perf_OBJECTS) $(gribex_perf_DEPENDENCIES) $(EXTRA_gribex_perf_DEPENDENCIES) 
-	@rm -f gribex_perf$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(gribex_perf_OBJECTS) $(gribex_perf_LDADD) $(LIBS)
-
-index$(EXEEXT): $(index_OBJECTS) $(index_DEPENDENCIES) $(EXTRA_index_DEPENDENCIES) 
-	@rm -f index$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(index_OBJECTS) $(index_LDADD) $(LIBS)
-
-jpeg_perf$(EXEEXT): $(jpeg_perf_OBJECTS) $(jpeg_perf_DEPENDENCIES) $(EXTRA_jpeg_perf_DEPENDENCIES) 
-	@rm -f jpeg_perf$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(jpeg_perf_OBJECTS) $(jpeg_perf_LDADD) $(LIBS)
-
-julian$(EXEEXT): $(julian_OBJECTS) $(julian_DEPENDENCIES) $(EXTRA_julian_DEPENDENCIES) 
-	@rm -f julian$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(julian_OBJECTS) $(julian_LDADD) $(LIBS)
-
-laplacian$(EXEEXT): $(laplacian_OBJECTS) $(laplacian_DEPENDENCIES) $(EXTRA_laplacian_DEPENDENCIES) 
-	@rm -f laplacian$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(laplacian_OBJECTS) $(laplacian_LDADD) $(LIBS)
-
-multi_from_message$(EXEEXT): $(multi_from_message_OBJECTS) $(multi_from_message_DEPENDENCIES) $(EXTRA_multi_from_message_DEPENDENCIES) 
-	@rm -f multi_from_message$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(multi_from_message_OBJECTS) $(multi_from_message_LDADD) $(LIBS)
-
-pack_unpack$(EXEEXT): $(pack_unpack_OBJECTS) $(pack_unpack_DEPENDENCIES) $(EXTRA_pack_unpack_DEPENDENCIES) 
-	@rm -f pack_unpack$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(pack_unpack_OBJECTS) $(pack_unpack_LDADD) $(LIBS)
-
-packing$(EXEEXT): $(packing_OBJECTS) $(packing_DEPENDENCIES) $(EXTRA_packing_DEPENDENCIES) 
-	@rm -f packing$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(packing_OBJECTS) $(packing_LDADD) $(LIBS)
-
-packing_check$(EXEEXT): $(packing_check_OBJECTS) $(packing_check_DEPENDENCIES) $(EXTRA_packing_check_DEPENDENCIES) 
-	@rm -f packing_check$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(packing_check_OBJECTS) $(packing_check_LDADD) $(LIBS)
-
-png_perf$(EXEEXT): $(png_perf_OBJECTS) $(png_perf_DEPENDENCIES) $(EXTRA_png_perf_DEPENDENCIES) 
-	@rm -f png_perf$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(png_perf_OBJECTS) $(png_perf_LDADD) $(LIBS)
-
-read_any$(EXEEXT): $(read_any_OBJECTS) $(read_any_DEPENDENCIES) $(EXTRA_read_any_DEPENDENCIES) 
-	@rm -f read_any$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(read_any_OBJECTS) $(read_any_LDADD) $(LIBS)
-
-read_index$(EXEEXT): $(read_index_OBJECTS) $(read_index_DEPENDENCIES) $(EXTRA_read_index_DEPENDENCIES) 
-	@rm -f read_index$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(read_index_OBJECTS) $(read_index_LDADD) $(LIBS)
-
-so_perf$(EXEEXT): $(so_perf_OBJECTS) $(so_perf_DEPENDENCIES) $(EXTRA_so_perf_DEPENDENCIES) 
-	@rm -f so_perf$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(so_perf_OBJECTS) $(so_perf_LDADD) $(LIBS)
-
-unit_tests$(EXEEXT): $(unit_tests_OBJECTS) $(unit_tests_DEPENDENCIES) $(EXTRA_unit_tests_DEPENDENCIES) 
-	@rm -f unit_tests$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(unit_tests_OBJECTS) $(unit_tests_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bpv_limit.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ccsds_perf.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gauss_sub.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_double_cmp.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_util_set_spec.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gribex_perf.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/index.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/jpeg_perf.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/julian.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/laplacian.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/multi_from_message.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pack_unpack.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/packing.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/packing_check.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/png_perf.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/read_any.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/read_index.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/so_perf.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/unit_tests.Po at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-# Recover from deleted '.trs' file; this should ensure that
-# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
-# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
-# to avoid problems with "make -n".
-.log.trs:
-	rm -f $< $@
-	$(MAKE) $(AM_MAKEFLAGS) $<
-
-# Leading 'am--fnord' is there to ensure the list of targets does not
-# expand to empty, as could happen e.g. with make check TESTS=''.
-am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
-am--force-recheck:
-	@:
-
-$(TEST_SUITE_LOG): $(TEST_LOGS)
-	@$(am__set_TESTS_bases); \
-	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
-	redo_bases=`for i in $$bases; do \
-	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
-	            done`; \
-	if test -n "$$redo_bases"; then \
-	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
-	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
-	  if $(am__make_dryrun); then :; else \
-	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
-	  fi; \
-	fi; \
-	if test -n "$$am__remaking_logs"; then \
-	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
-	       "recursion detected" >&2; \
-	else \
-	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
-	fi; \
-	if $(am__make_dryrun); then :; else \
-	  st=0;  \
-	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
-	  for i in $$redo_bases; do \
-	    test -f $$i.trs && test -r $$i.trs \
-	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
-	    test -f $$i.log && test -r $$i.log \
-	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
-	  done; \
-	  test $$st -eq 0 || exit 1; \
-	fi
-	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
-	ws='[ 	]'; \
-	results=`for b in $$bases; do echo $$b.trs; done`; \
-	test -n "$$results" || results=/dev/null; \
-	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
-	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
-	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
-	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
-	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
-	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
-	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
-	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
-	  success=true; \
-	else \
-	  success=false; \
-	fi; \
-	br='==================='; br=$$br$$br$$br$$br; \
-	result_count () \
-	{ \
-	    if test x"$$1" = x"--maybe-color"; then \
-	      maybe_colorize=yes; \
-	    elif test x"$$1" = x"--no-color"; then \
-	      maybe_colorize=no; \
-	    else \
-	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
-	    fi; \
-	    shift; \
-	    desc=$$1 count=$$2; \
-	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
-	      color_start=$$3 color_end=$$std; \
-	    else \
-	      color_start= color_end=; \
-	    fi; \
-	    echo "$${color_start}# $$desc $$count$${color_end}"; \
-	}; \
-	create_testsuite_report () \
-	{ \
-	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
-	  result_count $$1 "PASS: " $$pass  "$$grn"; \
-	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
-	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
-	  result_count $$1 "FAIL: " $$fail  "$$red"; \
-	  result_count $$1 "XPASS:" $$xpass "$$red"; \
-	  result_count $$1 "ERROR:" $$error "$$mgn"; \
-	}; \
-	{								\
-	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
-	    $(am__rst_title);						\
-	  create_testsuite_report --no-color;				\
-	  echo;								\
-	  echo ".. contents:: :depth: 2";				\
-	  echo;								\
-	  for b in $$bases; do echo $$b; done				\
-	    | $(am__create_global_log);					\
-	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
-	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
-	if $$success; then						\
-	  col="$$grn";							\
-	 else								\
-	  col="$$red";							\
-	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
-	fi;								\
-	echo "$${col}$$br$${std}"; 					\
-	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
-	echo "$${col}$$br$${std}"; 					\
-	create_testsuite_report --maybe-color;				\
-	echo "$$col$$br$$std";						\
-	if $$success; then :; else					\
-	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
-	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
-	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
-	  fi;								\
-	  echo "$$col$$br$$std";					\
-	fi;								\
-	$$success || exit 1
-
-check-TESTS:
-	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
-	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
-	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
-	exit $$?;
-recheck: all 
-	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-	@set +e; $(am__set_TESTS_bases); \
-	bases=`for i in $$bases; do echo $$i; done \
-	         | $(am__list_recheck_tests)` || exit 1; \
-	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	log_list=`echo $$log_list`; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
-	        am__force_recheck=am--force-recheck \
-	        TEST_LOGS="$$log_list"; \
-	exit $$?
-definitions.sh.log: definitions.sh
-	@p='definitions.sh'; \
-	b='definitions.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-calendar.sh.log: calendar.sh
-	@p='calendar.sh'; \
-	b='calendar.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufrdc_desc_ref.sh.log: bufrdc_desc_ref.sh
-	@p='bufrdc_desc_ref.sh'; \
-	b='bufrdc_desc_ref.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufrdc_ref.sh.log: bufrdc_ref.sh
-	@p='bufrdc_ref.sh'; \
-	b='bufrdc_ref.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_dump.sh.log: bufr_dump.sh
-	@p='bufr_dump.sh'; \
-	b='bufr_dump.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_filter.sh.log: bufr_filter.sh
-	@p='bufr_filter.sh'; \
-	b='bufr_filter.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_json.sh.log: bufr_json.sh
-	@p='bufr_json.sh'; \
-	b='bufr_json.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_compare.sh.log: bufr_compare.sh
-	@p='bufr_compare.sh'; \
-	b='bufr_compare.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_copy.sh.log: bufr_copy.sh
-	@p='bufr_copy.sh'; \
-	b='bufr_copy.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_count.sh.log: bufr_count.sh
-	@p='bufr_count.sh'; \
-	b='bufr_count.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_get.sh.log: bufr_get.sh
-	@p='bufr_get.sh'; \
-	b='bufr_get.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_ls.sh.log: bufr_ls.sh
-	@p='bufr_ls.sh'; \
-	b='bufr_ls.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_set.sh.log: bufr_set.sh
-	@p='bufr_set.sh'; \
-	b='bufr_set.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bufr_change_edition.sh.log: bufr_change_edition.sh
-	@p='bufr_change_edition.sh'; \
-	b='bufr_change_edition.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-gts_ls.sh.log: gts_ls.sh
-	@p='gts_ls.sh'; \
-	b='gts_ls.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-metar_ls.sh.log: metar_ls.sh
-	@p='metar_ls.sh'; \
-	b='metar_ls.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-metar_dump.sh.log: metar_dump.sh
-	@p='metar_dump.sh'; \
-	b='metar_dump.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-ieee.sh.log: ieee.sh
-	@p='ieee.sh'; \
-	b='ieee.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib1to2.sh.log: grib1to2.sh
-	@p='grib1to2.sh'; \
-	b='grib1to2.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-unit_tests.sh.log: unit_tests.sh
-	@p='unit_tests.sh'; \
-	b='unit_tests.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib2to1.sh.log: grib2to1.sh
-	@p='grib2to1.sh'; \
-	b='grib2to1.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-badgrib.sh.log: badgrib.sh
-	@p='badgrib.sh'; \
-	b='badgrib.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-ls.sh.log: ls.sh
-	@p='ls.sh'; \
-	b='ls.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-filter.sh.log: filter.sh
-	@p='filter.sh'; \
-	b='filter.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-multi.sh.log: multi.sh
-	@p='multi.sh'; \
-	b='multi.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-budg.sh.log: budg.sh
-	@p='budg.sh'; \
-	b='budg.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-gridType.sh.log: gridType.sh
-	@p='gridType.sh'; \
-	b='gridType.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-octahedral.sh.log: octahedral.sh
-	@p='octahedral.sh'; \
-	b='octahedral.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-global.sh.log: global.sh
-	@p='global.sh'; \
-	b='global.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-concept.sh.log: concept.sh
-	@p='concept.sh'; \
-	b='concept.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-decimalPrecision.sh.log: decimalPrecision.sh
-	@p='decimalPrecision.sh'; \
-	b='decimalPrecision.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bitsPerValue.sh.log: bitsPerValue.sh
-	@p='bitsPerValue.sh'; \
-	b='bitsPerValue.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-get_fail.sh.log: get_fail.sh
-	@p='get_fail.sh'; \
-	b='get_fail.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-missing.sh.log: missing.sh
-	@p='missing.sh'; \
-	b='missing.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-local.sh.log: local.sh
-	@p='local.sh'; \
-	b='local.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-step.sh.log: step.sh
-	@p='step.sh'; \
-	b='step.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-set.sh.log: set.sh
-	@p='set.sh'; \
-	b='set.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-iterator.sh.log: iterator.sh
-	@p='iterator.sh'; \
-	b='iterator.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_compare.sh.log: grib_compare.sh
-	@p='grib_compare.sh'; \
-	b='grib_compare.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-level.sh.log: level.sh
-	@p='level.sh'; \
-	b='level.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-index.sh.log: index.sh
-	@p='index.sh'; \
-	b='index.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bitmap.sh.log: bitmap.sh
-	@p='bitmap.sh'; \
-	b='bitmap.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-list.sh.log: list.sh
-	@p='list.sh'; \
-	b='list.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-second_order.sh.log: second_order.sh
-	@p='second_order.sh'; \
-	b='second_order.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-multi_from_message.sh.log: multi_from_message.sh
-	@p='multi_from_message.sh'; \
-	b='multi_from_message.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-change_scanning.sh.log: change_scanning.sh
-	@p='change_scanning.sh'; \
-	b='change_scanning.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-julian.sh.log: julian.sh
-	@p='julian.sh'; \
-	b='julian.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-statistics.sh.log: statistics.sh
-	@p='statistics.sh'; \
-	b='statistics.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-tigge.sh.log: tigge.sh
-	@p='tigge.sh'; \
-	b='tigge.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-uerra.sh.log: uerra.sh
-	@p='uerra.sh'; \
-	b='uerra.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-tigge_conversions.sh.log: tigge_conversions.sh
-	@p='tigge_conversions.sh'; \
-	b='tigge_conversions.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-read_any.sh.log: read_any.sh
-	@p='read_any.sh'; \
-	b='read_any.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-padding.sh.log: padding.sh
-	@p='padding.sh'; \
-	b='padding.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-lamb_az_eq_area.sh.log: lamb_az_eq_area.sh
-	@p='lamb_az_eq_area.sh'; \
-	b='lamb_az_eq_area.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_to_netcdf.sh.log: grib_to_netcdf.sh
-	@p='grib_to_netcdf.sh'; \
-	b='grib_to_netcdf.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-debug.sh.log: debug.sh
-	@p='debug.sh'; \
-	b='debug.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-jpeg.sh.log: jpeg.sh
-	@p='jpeg.sh'; \
-	b='jpeg.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-ccsds.sh.log: ccsds.sh
-	@p='ccsds.sh'; \
-	b='ccsds.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-md5.sh.log: md5.sh
-	@p='md5.sh'; \
-	b='md5.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-grib_util_set_spec.sh.log: grib_util_set_spec.sh
-	@p='grib_util_set_spec.sh'; \
-	b='grib_util_set_spec.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-neg_fctime.sh.log: neg_fctime.sh
-	@p='neg_fctime.sh'; \
-	b='neg_fctime.sh'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-.test.log:
-	@p='$<'; \
-	$(am__set_b); \
-	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
- at am__EXEEXT_TRUE@.test$(EXEEXT).log:
- at am__EXEEXT_TRUE@	@p='$<'; \
- at am__EXEEXT_TRUE@	$(am__set_b); \
- at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
- at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
- at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
- at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
-	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
-	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
-	ctags ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	recheck tags tags-am uninstall uninstall-am
-
-
-# First download all the necessary data for testing
-# Note: if download fails, no tests will be done
-$(TESTS): download_data
-download_data:
-	@$(top_srcdir)/data/download.sh $(top_srcdir)/data
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/tests/bufr_change_edition.sh b/tests/bufr_change_edition.sh
index 6eb6d06..076836d 100755
--- a/tests/bufr_change_edition.sh
+++ b/tests/bufr_change_edition.sh
@@ -21,11 +21,10 @@ bufr_files=`cat ${data_dir}/bufr/bufr_data_files.txt`
 
 for f in ${bufr_files}; do
   if [ "$f" = "ias1_240.bufr" ]; then continue; fi
-  if [ "$f" = "bad.bufr" ]; then      continue; fi
   
   # Convert to BUFR edition 4
   ${tools_dir}bufr_set -s editionNumber=4 $f $fBufrTmp
-  ${tools_dir}bufr_compare $f $fBufrTmp
+  ${tools_dir}bufr_compare -b edition $f $fBufrTmp
   
   ed=`${tools_dir}bufr_get -w count=1 -p editionNumber $fBufrTmp`
   [ "$ed" = "4" ]
diff --git a/tests/bufr_compare.sh b/tests/bufr_compare.sh
index 62e2224..4e6e643 100755
--- a/tests/bufr_compare.sh
+++ b/tests/bufr_compare.sh
@@ -10,8 +10,6 @@
 
 . ./include.sh
 
-#set -x
-
 #Enter data dir
 cd ${data_dir}/bufr
 
@@ -28,10 +26,12 @@ fBufrTmp=${label}".bufr.tmp"
 fBufrInput1=${label}".bufr.input1"
 fBufrInput2=${label}".bufr.input2"
 
+#Define filter rules file
+fRules=${label}.filter
+
 #----------------------------------------------------
 # Test: comparing same files
 #----------------------------------------------------
-
 f="syno_1.bufr"
 echo "Test: comparing the same files" >> $fLog
 echo "file: $f" >> $fLog
@@ -40,26 +40,21 @@ ${tools_dir}/bufr_compare $f $f >> $fLog
 #----------------------------------------------------
 # Test: comparing two completely different files
 #----------------------------------------------------
-
 set +e
-
 f1="syno_1.bufr"
 f2="aaen_55.bufr"
 echo "Test: comparing two completely different files" >> $fLog
 echo "file: $f" >> $fLog
 ${tools_dir}/bufr_compare $f1 $f2 >> $fLog
-
 if [ $? -eq 0 ]; then
    echo "bufr_compare should have failed if files are completely different" >&2
    exit 1
 fi
-
 set -e
 
 #----------------------------------------------------
 # Test: comparing with and witout the -b switch
 #----------------------------------------------------
-
 f="syno_1.bufr"
 echo "Test: comparing with and witout the -b switch" >> $fLog
 echo "file: $f" >> $fLog
@@ -69,59 +64,79 @@ ${tools_dir}/bufr_set -s dataCategory=2 $f ${fBufrTmp} >> $fLog
 
 set +e
 ${tools_dir}/bufr_compare $f ${fBufrTmp}>> $fLog
-
 if [ $? -eq 0 ]; then
    echo "bufr_compare should have failed if files are different" >&2
    exit 1
 fi
-
 set -e
 
-#Now compare with -b switch. No difference should be found.
+# Now compare with -b switch. No difference should be found.
 ${tools_dir}/bufr_compare -b dataCategory $f ${fBufrTmp}>> $fLog
 
 #----------------------------------------------------
 # Test: comparing with the -r switch
 #----------------------------------------------------
-
 #Create a bufr file with various message types
-cat syno_multi.bufr temp_101.bufr > $fBufrInput1 
-cat temp_101.bufr syno_multi.bufr > $fBufrInput2
-
-set +e
-${tools_dir}/bufr_compare ${fBufrInput1} ${fBufrInput2} >> $fLog
-
-if [ $? -eq 0 ]; then
-   echo "bufr_compare should have failed if the message order in the files is different" >&2
-   exit 1
-fi
-
-${tools_dir}/bufr_compare -r ${fBufrInput1} ${fBufrInput2}>> $fLog
-
+#cat syno_multi.bufr temp_101.bufr > $fBufrInput1 
+#cat temp_101.bufr syno_multi.bufr > $fBufrInput2
+
+#set +e
+#${tools_dir}/bufr_compare ${fBufrInput1} ${fBufrInput2} >> $fLog
+#if [ $? -eq 0 ]; then
+#   echo "bufr_compare should have failed if the message order in the files is different" >&2
+#   exit 1
+#fi
+#set -e
+#${tools_dir}/bufr_compare -r ${fBufrInput1} ${fBufrInput2}>> $fLog
 
 #----------------------------------------------------
 # Change subCentre and compare
 #----------------------------------------------------
-${tools_dir}bufr_set -s subCentre=12 aaen_55.bufr $fBufrTmp
+${tools_dir}bufr_set -s bufrHeaderSubCentre=12 aaen_55.bufr $fBufrTmp
 set +e
-${tools_dir}bufr_compare aaen_55.bufr $fBufrTmp
+${tools_dir}bufr_compare aaen_55.bufr $fBufrTmp > $fLog 2>&1
 status=$?
 set -e
 [ $status -eq 1 ]
+fgrep -q "[bufrHeaderSubCentre]: [70] != [12]" $fLog
 
 #----------------------------------------------------
-# Compare file with directory
+# Second argument of bufr_compare is a directory
 #----------------------------------------------------
-temp_dir=tempdir.bufr_compare
+temp_dir=tempdir.${label}
 mkdir -p $temp_dir
 infile=aaen_55.bufr
 cp $infile $temp_dir
-${tools_dir}bufr_compare $infile $temp_dir
+${tools_dir}bufr_compare $infile $temp_dir >/dev/null
+rm -fr $temp_dir
+
+#----------------------------------------------------
+# Compare attributes
+#----------------------------------------------------
+set +e
+${tools_dir}bufr_compare amv2_87.bufr amv3_87.bufr > $fLog 2>&1
+status=$?
+set -e
+[ $status -eq 1 ]
+grep -q "#1#pressure->percentConfidence" $fLog
+grep -q "#1#windDirection->percentConfidence" $fLog
+grep -q "#1#windSpeed->percentConfidence" $fLog
+grep -q "#1#coldestClusterTemperature->percentConfidence" $fLog
 
+#----------------------------------------------------
+# Header only mode
+#----------------------------------------------------
+f="syno_1.bufr"
+cat > $fRules <<EOF
+ set unpack=1;
+ set relativeHumidity=27;
+ set horizontalVisibility=1500;
+ set pack=1;
+ write;
+EOF
+${tools_dir}codes_bufr_filter -o $fBufrTmp $fRules $f
+# Header keys have not changed
+${tools_dir}bufr_compare -H $f $fBufrTmp
 
 #Clean up
-rm -f $fLog 
-rm -f $fBufrTmp | true
-rm -f $fBufrInput1 | true
-rm -f $fBufrInput2 | true
-rm -rf $temp_dir
+rm -f $fLog $fBufrTmp $fBufrInput1 $fBufrInput2 $fRules
diff --git a/tests/bufr_dump.sh b/tests/bufr_dump.sh
index 8868f8f..18d9e3a 100755
--- a/tests/bufr_dump.sh
+++ b/tests/bufr_dump.sh
@@ -15,7 +15,7 @@ label="bufr_dump_test"
 
 #Create log file
 fLog=${label}".log"
-rm -f $fLog | true
+rm -f $fLog
 touch $fLog
 
 #Define tmp bufr files
@@ -24,48 +24,65 @@ fJsonTmp=${label}".json.tmp"
 #==============================================
 # Testing bufr_dump -O
 #==============================================
-
 bufr_files=`cat ${data_dir}/bufr/bufr_data_files.txt`
 REDIRECT=/dev/null
 
 for file in ${bufr_files}
 do
-  ${tools_dir}bufr_dump -O ${data_dir}/bufr/$file
+  ${tools_dir}bufr_dump -O ${data_dir}/bufr/$file >/dev/null
 done
 
 #==============================================
+# Testing output when ECCODES_DEBUG is enabled
+#==============================================
+file="aaen_55.bufr"
+export ECCODES_DEBUG=1
+
+# By default debug output goes to stderr
+${tools_dir}bufr_dump -O ${data_dir}/bufr/$file 2>&1 | grep -q "BUFR data .*ing"
+
+# Redirect it to stdout
+export ECCODES_LOG_STREAM=stdout
+${tools_dir}bufr_dump -O ${data_dir}/bufr/$file | grep -q "BUFR data .*ing"
+
+unset ECCODES_DEBUG
+unset ECCODES_LOG_STREAM
+
+#==============================================
 # Testing a malformed bufr file (see ECC-110)
 #==============================================
+# find another way to test malformed bufr 
+#echo "Test: malformed bufr file " >> $fLog
 
-echo "Test: malformed bufr file " >> $fLog
 
-rm -f $fJsonTmp | true
+#rm -f $fJsonTmp | true
 
-fBufr=${data_dir}/bufr/"bad.bufr"
+#fBufr=${data_dir}/bufr/"bad.bufr"
 # See ECC-276
 # In v0.16.0 we changed the shortNames so we use a newer ref file
-fJsonRef=${data_dir}/bufr/"bad.bufr.json.v0.16.0.ref"
+#fJsonRef=${data_dir}/bufr/"bad.bufr.json.v0.16.0.ref"
 
-${tools_dir}bufr_dump -js $fBufr > $fJsonTmp
+#${tools_dir}bufr_dump -js $fBufr > $fJsonTmp
 
-diff $fJsonTmp $fJsonRef
+#diff $fJsonTmp $fJsonRef
 
 #==============================================
 # Testing change of scale (see ECC-111)
 #==============================================
+# FIND another way to test this operator
+#echo "Test: operator 207003 " >> $fLog
 
-echo "Test: operator 207003 " >> $fLog
-
-rm -f $fJsonTmp | true
-
-fBufr=${data_dir}/bufr/"207003.bufr"
-fJsonRef=${data_dir}/bufr/"207003.bufr.json.ref"
-
-${tools_dir}bufr_dump -ja $fBufr > $fJsonTmp
-
-diff $fJsonTmp $fJsonRef
+#rm -f $fJsonTmp | true
 
+#fBufr=${data_dir}/bufr/"207003.bufr"
+#fJsonRef=${data_dir}/bufr/"207003.bufr.json.ref"
+#
+#${tools_dir}bufr_dump -ja $fBufr > $fJsonTmp
+#
+#diff $fJsonTmp $fJsonRef
+#
 #Clean up
-rm -f $fLog 
-rm -f $fJsonTmp | true
+#rm -f $fLog 
+#rm -f $fJsonTmp | true
 
+rm -f $fLog
diff --git a/tests/bufr_dump_decode_C.sh b/tests/bufr_dump_decode_C.sh
new file mode 100755
index 0000000..3556289
--- /dev/null
+++ b/tests/bufr_dump_decode_C.sh
@@ -0,0 +1,85 @@
+#!/bin/sh
+# Copyright 2005-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+#
+# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+#
+
+. ./include.sh
+
+#Define a common label for all the tmp files
+label="bufr_dump_decode_C_test"
+
+#Create log file
+fLog=${label}".log"
+rm -f $fLog
+
+tempDir=${label}.dir
+mkdir -p $tempDir
+
+bufr_files=`cat ${data_dir}/bufr/bufr_data_files.txt`
+
+# pkgconfig should be one level above the test dir
+PKGCONFIG_FILE=../eccodes.pc
+CACHE_FILE=../CMakeCache.txt
+
+COMPILE_AND_RUN=0
+
+if command -v pkg-config >/dev/null 2>&1; then
+  if [ -f "$PKGCONFIG_FILE" ]; then
+    # Work out the C compiler and flags from pkgconfig
+    COMPILER=`pkg-config --variable=CC $PKGCONFIG_FILE`
+    FLAGS_COMPILER=`pkg-config --cflags $PKGCONFIG_FILE`
+    FLAGS_LINKER=`pkg-config --libs $PKGCONFIG_FILE`
+
+    # The pkgconfig variables refer to the install directory. Change to build dir
+    BUILD_DIR=`grep -w eccodes_BINARY_DIR $CACHE_FILE | cut -d'=' -f2`
+    INSTALL_DIR=`grep -w CMAKE_INSTALL_PREFIX $CACHE_FILE | cut -d'=' -f2`
+    FLAGS_LINKER=`echo $FLAGS_LINKER | sed -e "s:$INSTALL_DIR:$BUILD_DIR:g"`
+    FLAGS_COMPILER=`echo $FLAGS_COMPILER | sed -e "s:$INSTALL_DIR:$BUILD_DIR:g"`
+
+    # TODO: For now only support when shared libs enabled
+    SHARED_LIBS=`grep -w BUILD_SHARED_LIBS $CACHE_FILE | cut -d'=' -f2`
+    if [ "$SHARED_LIBS" = "ON" ]; then
+      COMPILE_AND_RUN=1
+    fi
+  fi
+fi
+
+cd $tempDir
+
+for file in ${bufr_files}
+do
+  tempSrc=$label.$file.c
+  tempExe=$label.$file.exe
+  filePath=${data_dir}/bufr/$file
+
+  # Generate C code from BUFR file
+  ${tools_dir}bufr_dump -DC $filePath > $tempSrc
+
+  # Too large for this test
+  if [ "$file" = "ias1_240.bufr" ]; then
+    continue
+  fi
+
+  # Compile
+  if [ $COMPILE_AND_RUN -eq 1 ]; then
+    # TODO: eccodes.h and the generated eccodes_version.h need to be pointed to
+    #       Should be copied over to the build/include dir
+    INCL_DIR1=${proj_dir}/src
+    INCL_DIR2=${data_dir}/../src
+
+    $COMPILER -o $tempExe $tempSrc -I${INCL_DIR1} -I${INCL_DIR2} $FLAGS_COMPILER $FLAGS_LINKER
+
+    # valgrind --error-exitcode=1  ./$tempExe
+    ./$tempExe $filePath
+  fi
+
+  rm -f $tempExe $tempSrc
+done
+
+cd $test_dir
+rm -fr $tempDir
diff --git a/tests/bufr_dump_decode_filter.sh b/tests/bufr_dump_decode_filter.sh
new file mode 100755
index 0000000..94bf9e6
--- /dev/null
+++ b/tests/bufr_dump_decode_filter.sh
@@ -0,0 +1,56 @@
+#!/bin/sh
+# Copyright 2005-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# 
+# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+#
+
+set -x
+. ./include.sh
+
+cd ${data_dir}/bufr
+
+#Define a common label for all the tmp files
+label="bufr_dump_decode_filter_test"
+
+#Create log file
+fLog=${label}".log"
+rm -f $fLog
+touch $fLog
+
+#Define filter rules file
+fRules=${label}.filter
+
+#-----------------------------------------------------------
+# NOTE: not all of our BUFR files pass this test. bufr_filter is limited
+# in what it can do compared to Python or Fortran!
+# The following do not work:
+#   ias1_240.bufr           -- too large, parser out of memory
+#   tropical_cyclone.bufr   -- multi message
+#   syno_multi.bufr         -- multi message
+#-----------------------------------------------------------
+files=`cat ${data_dir}/bufr/bufr_data_files.txt`
+
+exclude="ias1_240.bufr syno_multi.bufr tropical_cyclone.bufr"
+
+for f in $files
+do
+  process_bufr=1
+  for ex in $exclude; do
+    if [ "$f" = "$ex" ]; then process_bufr=0; break; fi
+  done
+  if [ $process_bufr = 1 ]; then
+    echo "Test: bufr_dump -Dfilter " >> $fLog
+    echo "file: $f" >> $fLog
+
+    ${tools_dir}bufr_dump -Dfilter $f > $fRules
+
+    ${tools_dir}bufr_filter $fRules $f >/dev/null
+
+    rm -f $fRules
+  fi
+done
+rm -f $fLog $fRules
diff --git a/tests/bufr_dump_decode_fortran.sh b/tests/bufr_dump_decode_fortran.sh
new file mode 100755
index 0000000..a57bec5
--- /dev/null
+++ b/tests/bufr_dump_decode_fortran.sh
@@ -0,0 +1,85 @@
+#!/bin/sh
+# Copyright 2005-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+#
+# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+#
+
+. ./include.sh
+
+#Define a common label for all the tmp files
+label="bufr_dump_decode_fortran_test"
+
+#Create log file
+fLog=${label}".log"
+rm -f $fLog
+
+tempBufr=outfile.bufr
+tempDir=${label}.dir
+mkdir -p $tempDir
+
+bufr_files=`cat ${data_dir}/bufr/bufr_data_files.txt`
+
+# If FORTRAN is enabled, then the pkgconfig should be one level above the test dir
+PKGCONFIG_FILE=../eccodes_f90.pc
+CACHE_FILE=../CMakeCache.txt
+
+COMPILE_AND_RUN=0
+
+if command -v pkg-config >/dev/null 2>&1; then
+  if [ -f "$PKGCONFIG_FILE" ]; then
+    # Work out the Fortran compiler and flags from pkgconfig
+    COMPILER=`pkg-config --variable=FC $PKGCONFIG_FILE`
+    FLAGS_COMPILER=`pkg-config --cflags $PKGCONFIG_FILE`
+    FLAGS_LINKER=`pkg-config --libs $PKGCONFIG_FILE`
+
+    # The pkgconfig variables refer to the install directory. Change to build dir
+    BUILD_DIR=`grep -w eccodes_BINARY_DIR $CACHE_FILE | cut -d'=' -f2`
+    INSTALL_DIR=`grep -w CMAKE_INSTALL_PREFIX $CACHE_FILE | cut -d'=' -f2`
+    FLAGS_LINKER=`echo $FLAGS_LINKER | sed -e "s:$INSTALL_DIR:$BUILD_DIR:g"`
+    FLAGS_COMPILER=`echo $FLAGS_COMPILER | sed -e "s:$INSTALL_DIR:$BUILD_DIR:g"`
+
+    # TODO: For now only support when shared libs enabled
+    SHARED_LIBS=`grep -w BUILD_SHARED_LIBS $CACHE_FILE | cut -d'=' -f2`
+    if [ "$SHARED_LIBS" = "ON" ]; then
+      COMPILE_AND_RUN=1
+    fi
+  fi
+fi
+
+cd $tempDir
+
+for file in ${bufr_files}
+do
+  tempSrc=$label.$file.f90
+  tempExe=$label.$file.exe
+  filePath=${data_dir}/bufr/$file
+
+  # Generate F90 code from BUFR file
+  ${tools_dir}bufr_dump -Dfortran ${filePath} > $tempSrc
+
+  # Too large for this test
+  if [ "$file" = "ias1_240.bufr" ]; then
+    continue
+  fi
+
+  # Very long lines
+  if [ "$file" = "emsg_189.bufr" ]; then
+    continue
+  fi
+
+  # Compile
+  if [ $COMPILE_AND_RUN -eq 1 ]; then
+    $COMPILER -o $tempExe $tempSrc $FLAGS_COMPILER $FLAGS_LINKER
+    # valgrind --error-exitcode=1 --track-origins=yes  ./$tempExe $filePath
+    ./$tempExe $filePath
+  fi
+
+  rm -f $tempExe $tempSrc
+done
+
+cd $test_dir
+rm -fr $tempDir
diff --git a/tests/bufr_dump_decode_python.sh b/tests/bufr_dump_decode_python.sh
new file mode 100755
index 0000000..9276cea
--- /dev/null
+++ b/tests/bufr_dump_decode_python.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+# Copyright 2005-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+#
+# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+#
+
+. ./include.sh
+
+#Define a common label for all the tmp files
+label="bufr_dump_decode_python_test"
+
+#Create log file
+fLog=${label}".log"
+rm -f $fLog
+
+tempDir=${label}.dir
+mkdir -p $tempDir
+cd $tempDir
+
+echo "PYTHONPATH set to $PYTHONPATH"
+
+bufr_files=`cat ${data_dir}/bufr/bufr_data_files.txt`
+
+for file in ${bufr_files}
+do
+  inputBufr=${data_dir}/bufr/$file
+  tempSrc=$label.$file.py
+
+  # Too large for this test
+  if [ "$file" = "ias1_240.bufr" ]; then
+    continue
+  fi
+
+  # Generate Python code from BUFR file
+  ${tools_dir}bufr_dump -Dpython $inputBufr > $tempSrc
+
+  $PYTHON $tempSrc $inputBufr
+
+  rm -f $tempSrc
+done
+
+cd $test_dir
+rm -fr $tempDir
diff --git a/tests/bufr_dump_encode_C.sh b/tests/bufr_dump_encode_C.sh
new file mode 100755
index 0000000..8a30cdc
--- /dev/null
+++ b/tests/bufr_dump_encode_C.sh
@@ -0,0 +1,94 @@
+#!/bin/sh
+# Copyright 2005-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+#
+# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+#
+
+. ./include.sh
+
+#Define a common label for all the tmp files
+label="bufr_dump_encode_C_test"
+
+#Create log file
+fLog=${label}".log"
+rm -f $fLog
+
+tempBufr=outfile.bufr
+tempDir=${label}.dir
+mkdir -p $tempDir
+
+bufr_files=`cat ${data_dir}/bufr/bufr_data_files.txt`
+
+# pkgconfig should be one level above the test dir
+PKGCONFIG_FILE=../eccodes.pc
+CACHE_FILE=../CMakeCache.txt
+
+COMPILE_AND_RUN=0
+
+if command -v pkg-config >/dev/null 2>&1; then
+  if [ -f "$PKGCONFIG_FILE" ]; then
+    # Work out the C compiler and flags from pkgconfig
+    COMPILER=`pkg-config --variable=CC $PKGCONFIG_FILE`
+    FLAGS_COMPILER=`pkg-config --cflags $PKGCONFIG_FILE`
+    FLAGS_LINKER=`pkg-config --libs $PKGCONFIG_FILE`
+
+    # The pkgconfig variables refer to the install directory. Change to build dir
+    BUILD_DIR=`grep -w eccodes_BINARY_DIR $CACHE_FILE | cut -d'=' -f2`
+    INSTALL_DIR=`grep -w CMAKE_INSTALL_PREFIX $CACHE_FILE | cut -d'=' -f2`
+    FLAGS_LINKER=`echo $FLAGS_LINKER | sed -e "s:$INSTALL_DIR:$BUILD_DIR:g"`
+    FLAGS_COMPILER=`echo $FLAGS_COMPILER | sed -e "s:$INSTALL_DIR:$BUILD_DIR:g"`
+
+    # TODO: For now only support when shared libs enabled
+    SHARED_LIBS=`grep -w BUILD_SHARED_LIBS $CACHE_FILE | cut -d'=' -f2`
+    if [ "$SHARED_LIBS" = "ON" ]; then
+      COMPILE_AND_RUN=1
+    fi
+  fi
+fi
+
+cd $tempDir
+
+for file in ${bufr_files}
+do
+  tempSrc=$label.$file.c
+  tempExe=$label.$file.exe
+
+  # Generate C code from BUFR file
+  ${tools_dir}bufr_dump -EC ${data_dir}/bufr/$file > $tempSrc
+
+  # Too large for this test
+  if [ "$file" = "ias1_240.bufr" ]; then
+    continue
+  fi
+
+  # Compile
+  if [ $COMPILE_AND_RUN -eq 1 ]; then
+    # TODO: eccodes.h and the generated eccodes_version.h need to be pointed to
+    #       Should be copied over to the build/include dir
+    INCL_DIR1=${proj_dir}/src
+    INCL_DIR2=${data_dir}/../src
+
+    $COMPILER -o $tempExe $tempSrc -I${INCL_DIR1} -I${INCL_DIR2} $FLAGS_COMPILER $FLAGS_LINKER
+
+    # The executable always creates a file called outfile.bufr
+    # valgrind --error-exitcode=1  ./$tempExe
+    ./$tempExe
+    ${tools_dir}bufr_compare ${data_dir}/bufr/$file $tempBufr
+
+    TEMP_JSON1=${label}.$file.json
+    TEMP_JSON2=${label}.$tempBufr.json
+    ${tools_dir}bufr_dump ${data_dir}/bufr/$file > $TEMP_JSON1
+    ${tools_dir}bufr_dump $tempBufr              > $TEMP_JSON2
+    diff $TEMP_JSON1 $TEMP_JSON2
+    rm -f $TEMP_JSON1 $TEMP_JSON2
+  fi
+
+  rm -f $tempExe $tempSrc $tempBufr
+done
+
+cd $test_dir
+rm -fr $tempDir
diff --git a/tests/bufr_dump_encode_filter.sh b/tests/bufr_dump_encode_filter.sh
new file mode 100755
index 0000000..90add79
--- /dev/null
+++ b/tests/bufr_dump_encode_filter.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+# Copyright 2005-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# 
+# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+#
+
+set -x
+. ./include.sh
+
+cd ${data_dir}/bufr
+
+#Define a common label for all the tmp files
+label="bufr_dump_encode_filter_test"
+
+#Create log file
+fLog=${label}".log"
+rm -f $fLog
+touch $fLog
+
+#Define tmp bufr file
+fBufrTmp=${label}".bufr.tmp"
+
+#Define filter rules file
+fRules=${label}.filter
+
+#-----------------------------------------------------------
+# NOTE: not all of our BUFR files pass this test. bufr_filter is limited
+# in what it can do compared to Python or Fortran!
+# The following do not work:
+#   ias1_240.bufr           -- too large, parser out of memory
+#   tropical_cyclone.bufr   -- multi message
+#   syno_multi.bufr         -- multi message
+#-----------------------------------------------------------
+files=`cat ${data_dir}/bufr/bufr_data_files.txt`
+
+exclude="ias1_240.bufr syno_multi.bufr tropical_cyclone.bufr"
+
+for f in $files
+do
+  process_bufr=1
+  for ex in $exclude; do
+    if [ "$f" = "$ex" ]; then process_bufr=0; break; fi
+  done
+  if [ $process_bufr = 1 ]; then
+    echo "Test: bufr_dump -Efilter " >> $fLog
+    echo "file: $f" >> $fLog
+
+    ${tools_dir}bufr_dump -Efilter $f > $fRules
+
+    ${tools_dir}bufr_filter -o $fBufrTmp $fRules $f
+    ${tools_dir}bufr_compare $fBufrTmp $f
+
+    TEMP_JSON1=${label}.$f.json
+    TEMP_JSON2=${label}.$fBufrTmp.json
+    ${tools_dir}bufr_dump $f        > $TEMP_JSON1
+    ${tools_dir}bufr_dump $fBufrTmp > $TEMP_JSON2
+    diff $TEMP_JSON1 $TEMP_JSON2
+    rm -f $TEMP_JSON1 $TEMP_JSON2
+
+    rm -f $fBufrTmp $fRules
+  fi
+done
+rm -f $fLog $fBufrTmp $fRules
diff --git a/tests/bufr_dump_encode_fortran.sh b/tests/bufr_dump_encode_fortran.sh
new file mode 100755
index 0000000..0d8e64c
--- /dev/null
+++ b/tests/bufr_dump_encode_fortran.sh
@@ -0,0 +1,88 @@
+#!/bin/sh
+# Copyright 2005-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+#
+# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+#
+
+. ./include.sh
+
+#Define a common label for all the tmp files
+label="bufr_dump_encode_fortran_test"
+
+#Create log file
+fLog=${label}".log"
+rm -f $fLog
+
+tempBufr=outfile.bufr
+tempDir=${label}.dir
+mkdir -p $tempDir
+
+bufr_files=`cat ${data_dir}/bufr/bufr_data_files.txt`
+
+# If FORTRAN is enabled, then the pkgconfig should be one level above the test dir
+PKGCONFIG_FILE=../eccodes_f90.pc
+CACHE_FILE=../CMakeCache.txt
+
+COMPILE_AND_RUN=0
+
+if command -v pkg-config >/dev/null 2>&1; then
+  if [ -f "$PKGCONFIG_FILE" ]; then
+    # Work out the Fortran compiler and flags from pkgconfig
+    COMPILER=`pkg-config --variable=FC $PKGCONFIG_FILE`
+    FLAGS_COMPILER=`pkg-config --cflags $PKGCONFIG_FILE`
+    FLAGS_LINKER=`pkg-config --libs $PKGCONFIG_FILE`
+
+    # The pkgconfig variables refer to the install directory. Change to build dir
+    BUILD_DIR=`grep -w eccodes_BINARY_DIR $CACHE_FILE | cut -d'=' -f2`
+    INSTALL_DIR=`grep -w CMAKE_INSTALL_PREFIX $CACHE_FILE | cut -d'=' -f2`
+    FLAGS_LINKER=`echo $FLAGS_LINKER | sed -e "s:$INSTALL_DIR:$BUILD_DIR:g"`
+    FLAGS_COMPILER=`echo $FLAGS_COMPILER | sed -e "s:$INSTALL_DIR:$BUILD_DIR:g"`
+
+    # TODO: For now only support when shared libs enabled
+    SHARED_LIBS=`grep -w BUILD_SHARED_LIBS $CACHE_FILE | cut -d'=' -f2`
+    if [ "$SHARED_LIBS" = "ON" ]; then
+      COMPILE_AND_RUN=1
+    fi
+  fi
+fi
+
+cd $tempDir
+
+for file in ${bufr_files}
+do
+  tempSrc=$label.$file.f90
+  tempExe=$label.$file.exe
+
+  # Generate F90 code from BUFR file
+  ${tools_dir}bufr_dump -Efortran ${data_dir}/bufr/$file > $tempSrc
+
+  # Too large for this test
+  if [ "$file" = "ias1_240.bufr" ]; then
+    continue
+  fi
+
+  # Compile
+  if [ $COMPILE_AND_RUN -eq 1 ]; then
+    $COMPILER -o $tempExe $tempSrc $FLAGS_COMPILER $FLAGS_LINKER
+    # The executable always creates a file called outfile.bufr
+    # valgrind --error-exitcode=1  ./$tempExe
+    ./$tempExe
+    ${tools_dir}bufr_compare ${data_dir}/bufr/$file $tempBufr
+
+    TEMP_JSON1=${label}.$file.json
+    TEMP_JSON2=${label}.$tempBufr.json
+    ${tools_dir}bufr_dump ${data_dir}/bufr/$file > $TEMP_JSON1
+    ${tools_dir}bufr_dump $tempBufr              > $TEMP_JSON2
+    diff $TEMP_JSON1 $TEMP_JSON2
+    rm -f $TEMP_JSON1 $TEMP_JSON2
+  fi
+
+  rm -f $tempExe $tempSrc $tempBufr
+done
+
+cd $test_dir
+rm -fr $tempDir
diff --git a/tests/bufr_dump_encode_python.sh b/tests/bufr_dump_encode_python.sh
new file mode 100755
index 0000000..a6eddab
--- /dev/null
+++ b/tests/bufr_dump_encode_python.sh
@@ -0,0 +1,56 @@
+#!/bin/sh
+# Copyright 2005-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+#
+# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+#
+
+. ./include.sh
+
+#Define a common label for all the tmp files
+label="bufr_dump_encode_python_test"
+
+#Create log file
+fLog=${label}".log"
+rm -f $fLog
+
+tempBufr=outfile.bufr
+tempDir=${label}.dir
+mkdir -p $tempDir
+cd $tempDir
+
+bufr_files=`cat ${data_dir}/bufr/bufr_data_files.txt`
+
+for file in ${bufr_files}
+do
+  inputBufr=${data_dir}/bufr/$file
+  tempSrc=$label.$file.py
+
+  # Too large for this test
+  if [ "$file" = "ias1_240.bufr" ]; then
+    continue
+  fi
+
+  # Generate Python code from BUFR file
+  ${tools_dir}bufr_dump -Epython $inputBufr > $tempSrc
+  # The python code always creates an output file called outfile.bufr
+  $PYTHON $tempSrc
+
+  # Check original BUFR file against one we generated from sample
+  ${tools_dir}bufr_compare $inputBufr $tempBufr
+
+  TEMP_JSON1=${label}.$file.json
+  TEMP_JSON2=${label}.$tempBufr.json
+  ${tools_dir}bufr_dump $inputBufr > $TEMP_JSON1
+  ${tools_dir}bufr_dump $tempBufr  > $TEMP_JSON2
+  diff $TEMP_JSON1 $TEMP_JSON2 2>/dev/null
+  rm -f $TEMP_JSON1 $TEMP_JSON2
+
+  rm -f $tempSrc $tempBufr
+done
+
+cd $test_dir
+rm -fr $tempDir
diff --git a/tests/bufr_filter.sh b/tests/bufr_filter.sh
index f3ed167..1f98d32 100755
--- a/tests/bufr_filter.sh
+++ b/tests/bufr_filter.sh
@@ -398,28 +398,25 @@ rm -f ${f}.ref ${f}.log
 #-----------------------------------------------------------
 # Test: set unexpandedDescriptors big test
 #-----------------------------------------------------------
-fRulesReady="set_unexpandedDescriptors.filter"
-f="syno_1.bufr"
-testScript="set_unexpandedDescriptors_test.sh"
-testScript1="set_unexpandedDescriptors_test_1.sh"
-echo "Test: set unexpandedDescriptors big test" >> $fLog
-echo "file: $f" >> $fLog
-
-cat >$testScript <<EOF
-set -e
-
-EOF
-echo "set -x" > $testScript1
-chmod +x $testScript1
-
-${tools_dir}codes_bufr_filter $fRulesReady $f 2>> $fLog 1>> $testScript
-
-sed -e "s:diff:${tools_dir}bufr_compare:" < $testScript >> $testScript1
-
-./$testScript1
+#fRulesReady="set_unexpandedDescriptors.filter"
+#f="syno_1.bufr"
+#testScript="set_unexpandedDescriptors_test.sh"
+#testScript1="set_unexpandedDescriptors_test_1.sh"
+#echo "Test: set unexpandedDescriptors big test" >> $fLog
+#echo "file: $f" >> $fLog
+
+#cat >$testScript <<EOF
+#set -e
+#
+#EOF
+#echo "set -x" > $testScript1
+#chmod +x $testScript1
 
-rm -f new_*bufr 
-rm -f $testScript $testScript1
+#${tools_dir}codes_bufr_filter $fRulesReady $f 2>> $fLog 1>> $testScript
+#sed -e "s:diff:${tools_dir}bufr_compare:" < $testScript >> $testScript1
+#./$testScript1
+#rm -f new_*bufr 
+#rm -f $testScript $testScript1
 
 #-----------------------------------------------------------
 # Test:  packing   
@@ -442,8 +439,8 @@ ifco_208.bufr ikco_217.bufr itrg_208.bufr itwt_233.bufr j2eo_216.bufr j2nb_216.b
 meta_140.bufr mhen_55.bufr mhsa_55.bufr mhsb_55.bufr mhse_55.bufr mloz_206.bufr modi_87.bufr modw_87.bufr monw_87.bufr
 new.bufr nomi_206.bufr nos1_208.bufr nos2_208.bufr nos3_208.bufr nos4_208.bufr nos5_208.bufr nos6_208.bufr nos7_208.bufr
 nos8_208.bufr ocea_131.bufr ocea_132.bufr ocea_133.bufr ocea_21.bufr pgps_110.bufr pilo_91.bufr rada_250.bufr rado_250.bufr
-s4kn_165.bufr sb19_206.bufr sbu8_206.bufr ship_11.bufr ship_12.bufr ship_13.bufr ship_14.bufr ship_19.bufr ship_9.bufr smin_49.bufr
-smis_49.bufr smiu_49.bufr smos_203.bufr sn4k_165.bufr soil_7.bufr ssbt_127.bufr stuk_7.bufr syno_1.bufr syno_2.bufr syno_3.bufr
+s4kn_165.bufr sb19_206.bufr sbu8_206.bufr ship_13.bufr ship_19.bufr ship_9.bufr smin_49.bufr
+smis_49.bufr smiu_49.bufr smos_203.bufr sn4k_165.bufr soil_7.bufr ssbt_127.bufr stuk_7.bufr syno_1.bufr syno_3.bufr
 syno_4.bufr syno_multi.bufr synop_multi_subset.bufr temp_101.bufr temp_102.bufr temp_106.bufr tmr7_129.bufr tropical_cyclone.bufr
 tros_31.bufr wavb_134.bufr"
 
@@ -470,7 +467,7 @@ set unpack=1;
 print "[shipOrMobileLandStationIdentifier]";
 EOF
 
-f="ship_11.bufr"
+f="ship_9.bufr"
 echo "Test: get string" >> $fLog
 echo "file: $f" >> $fLog
 ${tools_dir}codes_bufr_filter $fRules $f 2>> $fLog 1>> $fLog
@@ -905,8 +902,8 @@ if [ -f "$f" ]; then
 
   cat > ${fOut}.log.ref <<EOF
 vos308014_v3_26_sec_2.bufr
-centre                     masterTablesVersionNumber  localTablesVersionNumber   rdbType                    rdbSubtype                 rdbtimeYear                rdbtimeMonth               typicalDate                typicalTime                numberOfSubsets            numberOfObservations       satelliteID                
-ecmf                       26                         0                          0                          0                          0                          0                          00000000                   000000                     40                         0                          0                         
+centre                     masterTablesVersionNumber  localTablesVersionNumber   typicalDate                typicalTime                rdbType                    rdbSubtype                 rdbtimeYear                rdbtimeMonth               numberOfSubsets            localNumberOfObservations  satelliteID                
+ecmf                       26                         0                          20150107                   142500                     0                          0                          0                          0                          40                         0                          0                         
 1 of 1 messages in vos308014_v3_26_sec_2.bufr
 
 1 of 1 total messages in 1 files
@@ -932,10 +929,14 @@ set extractSubset=2;
 set doExtractSubsets=1;
 write;
 
-set extractSubsetIntervalStart=3;
+set extractSubsetIntervalStart=5;
 set extractSubsetIntervalEnd=8;
 set doExtractSubsets=1;
 write;
+
+set extractSubsetList={1,3};
+set doExtractSubsets=1;
+write;
 EOF
 
 f="synop_multi_subset.bufr"
@@ -956,7 +957,8 @@ cat > ${fOut}.log.ref <<EOF
 stationNumber=27 84 270 272 308 371 381 382 387 413 464 485
 stationNumber=272
 stationNumber=84
-stationNumber=270 272 308 371 381 382
+stationNumber=308 371 381 382 84
+stationNumber=308 371 381 382 84 27 270
 EOF
 
 diff ${fOut}.log.ref ${fOut}.log 
@@ -1033,9 +1035,9 @@ fieldOfViewNumber=1
 orbitNumber=2147483647
 casRegistryNumber=10102-44-0
 === message number 2
-numberOfSubsets=6
-solarElevation=29.71 29.23 37.21 36.78 36.34 35.46
-fieldOfViewNumber=2 2 0 0 0 1
+numberOfSubsets=7
+solarElevation=29.71 29.23 37.21 36.78 36.34 35.46 33.2
+fieldOfViewNumber=2 2 0 0 0 1 1
 orbitNumber=2147483647
 casRegistryNumber=10102-44-0
 EOF
@@ -1391,5 +1393,39 @@ EOF
 
 diff ${f}.log.ref ${f}.log 
 
-rm -f ${f}.log ${f}.log.ref $fLog $fRules
+rm -f ${f}.log ${f}.log.ref ${f}.out $fLog $fRules
+#-----------------------------------------------------------
+# Test: Simple thinning
+#-----------------------------------------------------------
+cat > $fRules <<EOF
+set simpleThinningSkip=36;
+set doSimpleThinning=1;
+set pack=1;
+write;
+EOF
+
+f="imssnow.bufr"
+
+echo "Test: Simple thinning" >> $fLog
+echo "file: $f" >> $fLog
+
+${tools_dir}bufr_filter -o ${f}.out $fRules $f
+
+cat > $fRules <<EOF
+set unpack=1;
+print "latitude=[latitude]";
+print "longitude=[longitude]";
+print "height=[height]";
+EOF
+
+${tools_dir}bufr_filter $fRules ${f}.out > ${f}.log
+
+cat > ${f}.log.ref <<EOF
+latitude=4.93301 5.17216 5.40243 5.62361 7.86075
+longitude=118.16205 117.41896 116.66977 115.91467 99.56805
+height=119 231 587 187 23
+EOF
+
+diff ${f}.log.ref ${f}.log 
 
+rm -f ${f}.log ${f}.log.ref ${f}.out $fLog $fRules
diff --git a/tests/bufr_filter_extract_area.sh b/tests/bufr_filter_extract_area.sh
new file mode 100755
index 0000000..9610d7a
--- /dev/null
+++ b/tests/bufr_filter_extract_area.sh
@@ -0,0 +1,138 @@
+#!/bin/sh
+# Copyright 2005-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# 
+# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+#
+
+set -x
+. ./include.sh
+
+cd ${data_dir}/bufr
+
+#Define a common label for all the tmp files
+label="bufr_filter_extract_area"
+
+#Create log file
+fLog=${label}".log"
+rm -f $fLog
+touch $fLog
+
+#Define tmp bufr file
+fBufrTmp=${label}".bufr.tmp"
+
+#Define filter rules file
+fRules=${label}.filter
+
+#-----------------------------------------------------------
+# Test: Area extraction
+#-----------------------------------------------------------
+cat > $fRules <<EOF
+ transient originalNumberOfSubsets=numberOfSubsets;
+ set extractAreaNorthLatitude=52.5;
+ set extractAreaSouthLatitude=51.1;
+ set extractAreaWestLongitude=155.2;
+ set extractAreaEastLongitude=160.5;
+ set extractAreaLongitudeRank=1;
+ set doExtractArea=1;
+ write;
+ print "extracted [numberOfSubsets] of [originalNumberOfSubsets] subsets";
+EOF
+
+inputBufr="amsa_55.bufr"
+outputBufr=${label}.${inputBufr}.out
+outputFilt=${label}.txt
+outputRef=${label}.ref
+rm -f $outputFilt
+
+echo "Test: Area extraction" >> $fLog
+echo "file: $outputBufr" >> $fLog
+
+${tools_dir}bufr_filter -o $outputBufr $fRules $inputBufr > $outputFilt
+[ -f $outputBufr ]
+
+cat > $fRules <<EOF
+set unpack=1;
+print "latitude=[latitude!15]";
+print "===========";
+print "longitude=[longitude!15]";
+print "===========";
+print "second=[second!15]";
+print "===========";
+print "scanLineNumber=[scanLineNumber!15]";
+print "===========";
+print "fieldOfViewNumber=[fieldOfViewNumber!15]";
+print "===========";
+EOF
+${tools_dir}bufr_filter $fRules $inputBufr $outputBufr  >> $outputFilt
+
+cat > $outputRef <<EOF
+extracted 14 of 128 subsets
+latitude=49.2875 49.8194 50.2426 50.5906 50.8842 51.1371 51.3586 51.5555 51.7329 51.8945 52.0434 52.1819 52.3118 52.4349 52.5523 
+52.6652 52.7746 52.8814 52.9863 53.0901 53.1934 53.2968 53.4009 53.5061 53.6127 53.7209 53.8303 53.9401 54.0476 54.1472 
+48.8597 49.3864 49.8055 50.1502 50.4409 50.6913 50.9107 51.1058 51.2815 51.4417 51.5892 51.7265 51.8553 51.9773 52.0937 
+52.2057 52.3142 52.4202 52.5244 52.6275 52.7302 52.833 52.9365 53.0413 53.1475 53.2555 53.365 53.475 53.5832 53.6842 
+48.4308 48.9524 49.3675 49.7089 49.9969 50.2449 50.4623 50.6555 50.8297 50.9884 51.1346 51.2706 51.3983 51.5193 51.6347 
+51.7459 51.8536 51.9588 52.0622 52.1647 52.2667 52.369 52.472 52.5763 52.6823 52.7901 52.8996 53.0099 53.1188 53.2211 
+48.0008 48.5175 48.9286 49.2668 49.5521 49.7978 50.0132 50.2047 50.3772 50.5346 50.6795 50.8143 50.941 51.0609 51.1755 
+51.2857 51.3926 51.4971 51.5998 51.7016 51.803 51.9048 52.0073 52.1112 52.2169 52.3245 52.434 52.5447 52.6543 52.758 
+47.5699 48.0817 48.489 48.824 49.1066 49.3501 49.5635 49.7533
+===========
+longitude=167.2984 165.6325 164.2137 162.9735 161.8672 160.8636 159.9403 159.0802 158.27 157.4991 156.7586 156.041 155.3397 154.6487 153.9623 
+153.2751 152.5816 151.8761 151.1526 150.4041 149.623 148.8001 147.9245 146.9823 145.9563 144.8234 143.5526 142.1003 140.4019 138.3564 
+166.9615 165.3065 163.8977 162.6667 161.569 160.5735 159.6579 158.8051 158.002 157.2381 156.5043 155.7934 155.0987 154.4143 153.7346 
+153.0542 152.3676 151.6693 150.9531 150.2123 149.4394 148.6252 147.7588 146.8268 145.8119 144.6914 143.4347 141.9985 140.3191 138.2966 
+166.6306 164.9864 163.5874 162.3655 161.2762 160.2887 159.3806 158.5351 157.739 156.9817 156.2546 155.5503 154.862 154.1841 153.5109 
+152.8371 152.1573 151.4659 150.7569 150.0237 149.2586 148.4529 147.5956 146.6734 145.6693 144.5609 143.3178 141.8974 140.2365 138.2363 
+166.3055 164.672 163.2827 162.0697 160.9887 160.009 159.1083 158.2699 157.4806 156.73 156.0094 155.3113 154.6295 153.9579 153.291 
+152.6237 151.9504 151.2658 150.5638 149.838 149.0807 148.2831 147.4347 146.5221 145.5286 144.4319 143.2021 141.7969 140.154 138.1756 
+165.9862 164.3631 162.9834 161.7792 160.7063 159.7343 158.8409 158.0094
+===========
+second=23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 
+23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 
+31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 
+31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 
+39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 
+39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 
+47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 
+47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 
+55.54 55.54 55.54 55.54 55.54 55.54 55.54 55.54
+===========
+scanLineNumber=266 266 266 266 266 266 266 266 266 266 266 266 266 266 266 
+266 266 266 266 266 266 266 266 266 266 266 266 266 266 266 
+267 267 267 267 267 267 267 267 267 267 267 267 267 267 267 
+267 267 267 267 267 267 267 267 267 267 267 267 267 267 267 
+268 268 268 268 268 268 268 268 268 268 268 268 268 268 268 
+268 268 268 268 268 268 268 268 268 268 268 268 268 268 268 
+269 269 269 269 269 269 269 269 269 269 269 269 269 269 269 
+269 269 269 269 269 269 269 269 269 269 269 269 269 269 269 
+270 270 270 270 270 270 270 270
+===========
+fieldOfViewNumber=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
+16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
+1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
+16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
+1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
+16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
+1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
+16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
+1 2 3 4 5 6 7 8
+===========
+latitude=51.3586 51.5555 51.7329 51.8945 52.0434 52.1819 52.3118 51.1058 51.2815 51.4417 51.5892 51.7265 51.1346 51.2706
+===========
+longitude=159.9403 159.0802 158.27 157.4991 156.7586 156.041 155.3397 158.8051 158.002 157.2381 156.5043 155.7934 156.2546 155.5503
+===========
+second=23.54 23.54 23.54 23.54 23.54 23.54 23.54 31.54 31.54 31.54 31.54 31.54 39.54 39.54
+===========
+scanLineNumber=266 266 266 266 266 266 266 267 267 267 267 267 268 268
+===========
+fieldOfViewNumber=7 8 9 10 11 12 13 8 9 10 11 12 11 12
+===========
+EOF
+
+diff $outputRef $outputFilt
+
+rm -f $outputRef $outputFilt $outputBufr $fLog $fRules
diff --git a/tests/bufr_filter_extract_datetime.sh b/tests/bufr_filter_extract_datetime.sh
new file mode 100755
index 0000000..7f5cc9e
--- /dev/null
+++ b/tests/bufr_filter_extract_datetime.sh
@@ -0,0 +1,194 @@
+#!/bin/sh
+# Copyright 2005-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# 
+# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+#
+
+set -x
+. ./include.sh
+
+cd ${data_dir}/bufr
+
+#Define a common label for all the tmp files
+label="bufr_filter_extract_datetime_test"
+
+#Create log file
+fLog=${label}".log"
+rm -f $fLog
+touch $fLog
+
+#Define tmp bufr file
+fBufrTmp=${label}".bufr.tmp"
+
+#Define filter rules file
+fRules=${label}.filter
+
+#-----------------------------------------------------------
+# Test: Datetime extraction
+#-----------------------------------------------------------
+cat > $fRules <<EOF
+ transient originalNumberOfSubsets=numberOfSubsets;
+
+ transient extractDateTimeYearStart=2012;
+ transient extractDateTimeMonthStart=10;
+ transient extractDateTimeDayStart=31;
+ transient extractDateTimeHourStart=0;
+ transient extractDateTimeMinuteStart=1;
+ transient extractDateTimeSecondStart=31.6;
+
+ transient extractDateTimeYearEnd=2012;
+ transient extractDateTimeMonthEnd=10;
+ transient extractDateTimeDayEnd=31;
+ transient extractDateTimeHourEnd=0;
+ transient extractDateTimeMinuteEnd=1;
+ transient extractDateTimeSecondEnd=39.6;
+
+ set doExtractDateTime=1;
+ if (extractedDateTimeNumberOfSubsets!=0) {
+   write;
+ }
+ print "extracted [extractedDateTimeNumberOfSubsets] of [originalNumberOfSubsets] subsets";
+EOF
+
+inputBufr="amsa_55.bufr"
+outputBufr=${label}.${inputBufr}.out
+outputFilt=${label}.txt
+outputRef=${label}.ref
+rm -f $outputFilt
+
+echo "Test: Datetime extraction" >> $fLog
+echo "file: $inputBufr" >> $fLog
+
+${tools_dir}bufr_filter -o $outputBufr $fRules $inputBufr  > $outputFilt
+[ -f $outputBufr ]
+
+cat > $fRules <<EOF
+set unpack=1;
+print "year=[year!15]";
+print "===========";
+print "month=[month!15]";
+print "===========";
+print "day=[day!15]";
+print "===========";
+print "hour=[hour!15]";
+print "===========";
+print "minute=[minute!15]";
+print "===========";
+print "second=[second!15]";
+print "===========";
+EOF
+${tools_dir}bufr_filter $fRules $inputBufr $outputBufr  >> $outputFilt
+
+cat > $outputRef <<EOF
+extracted 30 of 128 subsets
+year=2012
+===========
+month=10
+===========
+day=31
+===========
+hour=0
+===========
+minute=1
+===========
+second=23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 
+23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 23.54 
+31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 
+31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 31.54 
+39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 
+39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 39.54 
+47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 
+47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 47.54 
+55.54 55.54 55.54 55.54 55.54 55.54 55.54 55.54
+===========
+year=2012
+===========
+month=10
+===========
+day=31
+===========
+hour=0
+===========
+minute=1
+===========
+second=31.54
+===========
+EOF
+
+diff $outputRef $outputFilt
+
+#-----------------------------------------------------------
+# Test invalid date
+#-----------------------------------------------------------
+cat > $fRules <<EOF
+ transient originalNumberOfSubsets=numberOfSubsets;
+ transient extractDateTimeYearStart=2012;
+ transient extractDateTimeMonthStart=19; # Bad month
+ transient extractDateTimeDayStart=31;
+ transient extractDateTimeHourStart=0;
+ transient extractDateTimeMinuteStart=1;
+ transient extractDateTimeSecondStart=31.6;
+
+ transient extractDateTimeYearEnd=2012;
+ transient extractDateTimeMonthEnd=10;
+ transient extractDateTimeDayEnd=31;
+ transient extractDateTimeHourEnd=0;
+ transient extractDateTimeMinuteEnd=1;
+ transient extractDateTimeSecondEnd=39.6;
+
+ set doExtractDateTime=1;
+EOF
+
+inputBufr="amsa_55.bufr"
+outputBufr=${label}.${inputBufr}.out
+
+set +e
+${tools_dir}bufr_filter -o $outputBufr $fRules $inputBufr
+status=$?
+set -e
+if [ $status -eq 0 ]; then
+   echo "Bad start date: bufr_filter should have failed!"
+   exit 1
+fi
+
+#-----------------------------------------------------------
+# Test end date < start date
+#-----------------------------------------------------------
+cat > $fRules <<EOF
+ transient originalNumberOfSubsets=numberOfSubsets;
+ transient extractDateTimeYearStart=2012;
+ transient extractDateTimeMonthStart=10;
+ transient extractDateTimeDayStart=31;
+ transient extractDateTimeHourStart=0;
+ transient extractDateTimeMinuteStart=1;
+ transient extractDateTimeSecondStart=31.6;
+
+ transient extractDateTimeYearEnd=2012;
+ transient extractDateTimeMonthEnd=10;
+ transient extractDateTimeDayEnd=30; #Error
+ transient extractDateTimeHourEnd=0;
+ transient extractDateTimeMinuteEnd=1;
+ transient extractDateTimeSecondEnd=39.6;
+
+ set doExtractDateTime=1;
+EOF
+
+inputBufr="amsa_55.bufr"
+outputBufr=${label}.${inputBufr}.out
+
+set +e
+${tools_dir}bufr_filter -o $outputBufr $fRules $inputBufr
+status=$?
+set -e
+if [ $status -eq 0 ]; then
+   echo "End date before start date: bufr_filter should have failed!"
+   exit 1
+fi
+
+
+
+rm -f $outputRef $outputFilt $outputBufr $fLog $fRules
diff --git a/tests/bufr_get.sh b/tests/bufr_get.sh
index 02982d3..51e349b 100755
--- a/tests/bufr_get.sh
+++ b/tests/bufr_get.sh
@@ -41,14 +41,25 @@ ref_get=$f".ls.ref"
 
 echo "Test: -p switch" >> $fLog
 echo "file: $f" >> $fLog
-${tools_dir}/bufr_get -p totalLength,bufrHeaderCentre,bufrHeaderSubCentre,masterTableNumber,masterTablesVersionNumber,localTablesVersionNumber,numberOfSubsets,numberOfObservations $f  > $fTmp
+${tools_dir}/bufr_get -p totalLength,bufrHeaderCentre,bufrHeaderSubCentre,masterTableNumber,masterTablesVersionNumber,localTablesVersionNumber,numberOfSubsets,localNumberOfObservations $f > $fTmp
 
 #Write the values into a file and compare with ref
 cat $fTmp | awk '{split($0,a," "); for (i=1; i<=8; i++) print a[i]}' > $res_get
 diff $ref_get $res_get
 
-#Clean up
-rm -f $fLog
-rm -f $fTmp | true
-rm -f $res_get | true
 
+#-------------------------------------------
+# ECC-236
+#-------------------------------------------
+result=`${tools_dir}/bufr_get -s unpack=1 -p nonCoordinatePressure syno_1.bufr`
+[ "$result" = "100910" ]
+result=`${tools_dir}/bufr_get -s unpack=1 -p stationOrSiteName bssh_176.bufr`
+[ "$result" = "Helgoland" ]
+result=`${tools_dir}/bufr_get -s unpack=1 -p majorFrameCount aaen_55.bufr`
+[ "$result" = "MISSING" ]
+result=`${tools_dir}/bufr_get -s unpack=1 -p satelliteIdentifier wavb_134.bufr`
+[ "$result" = "MISSING" ]
+
+
+#Clean up
+rm -f $fLog $fTmp $res_get
diff --git a/tests/bufr_ls.sh b/tests/bufr_ls.sh
index 6cf1c18..60d4fa4 100755
--- a/tests/bufr_ls.sh
+++ b/tests/bufr_ls.sh
@@ -42,7 +42,7 @@ ref_ls=$f".ls.ref"
 res_ls=$f".ls.test"
 REDIRECT=/dev/null
 
-${tools_dir}/bufr_ls -p totalLength,bufrHeaderCentre,bufrHeaderSubCentre,masterTableNumber,masterTablesVersionNumber,localTablesVersionNumber,numberOfSubsets,numberOfObservations $f 2> $REDIRECT > $fTmp
+${tools_dir}/bufr_ls -p totalLength,bufrHeaderCentre,bufrHeaderSubCentre,masterTableNumber,masterTablesVersionNumber,localTablesVersionNumber,numberOfSubsets,localNumberOfObservations $f 2> $REDIRECT > $fTmp
 
 #Write the values into a file and compare with ref
 awk NR==3 $fTmp | awk '{split($0,a," "); for (i=1; i<=8; i++) print a[i]}' > $res_ls
diff --git a/tests/ccsds.sh b/tests/ccsds.sh
index 795526f..25987e0 100755
--- a/tests/ccsds.sh
+++ b/tests/ccsds.sh
@@ -32,6 +32,7 @@ fi
 echo "AEC feature was enabled."
 
 BLACKLIST="totalLength,section5Length,section7Length,dataRepresentationTemplateNumber,typeOfPacking"
+BLACKLIST="totalLength,section5Length,section7Length,dataRepresentationTemplateNumber"
 
 infile=${data_dir}/ccsds.grib2
 outfile1=$infile.tmp_ccsds.1
@@ -39,7 +40,8 @@ outfile2=$infile.tmp_ccsds.2
 
 rm -f $outfile1 $outfile2 || true
 ${tools_dir}grib_set -f -r -s packingType=grid_simple $infile $outfile1 2> $REDIRECT
-${tools_dir}grib_compare -P -b $BLACKLIST,typeOfCompressionUsed,targetCompressionRatio $infile $outfile1 > $REDIRECT
+${tools_dir}grib_compare -P -b $BLACKLIST $outfile1 $infile > $REDIRECT
+
 ${tools_dir}grib_set -r -s packingType=grid_ccsds $outfile1 $outfile2
 ${tools_dir}grib_compare -P -b $BLACKLIST $outfile1 $outfile2 > $REDIRECT
 
@@ -60,7 +62,7 @@ outfile2=$infile.tmp_ccsds.2
 ${tools_dir}grib_set -r -s packingType=grid_ccsds $infile $outfile1
 ${tools_dir}grib_compare -P -b $BLACKLIST $infile $outfile1 > $REDIRECT
 ${tools_dir}grib_set -f -r -s packingType=grid_simple $outfile1 $outfile2 2> $REDIRECT
-${tools_dir}grib_compare -P -b $BLACKLIST,typeOfCompressionUsed,targetCompressionRatio $outfile1 $outfile2  > $REDIRECT
+${tools_dir}grib_compare -P -b $BLACKLIST $outfile2 $outfile1  > $REDIRECT
 
 res1=`${tools_dir}grib_get '-F%1.2f' -p min,max,avg $infile`
 res2=`${tools_dir}grib_get '-F%1.2f' -p min,max,avg $outfile1`
@@ -69,3 +71,13 @@ res3=`${tools_dir}grib_get '-F%1.2f' -p min,max,avg $outfile2`
 [ "$res1" = "$res3" ]
 
 rm -f $outfile1 $outfile2 || true
+
+infile=${data_dir}/tigge_ecmwf.grib2
+outfile1=$infile.tmp_ccsds.1
+outfile2=$infile.tmp_ccsds.2
+
+${tools_dir}grib_set -r -s bitsPerValue=17 $infile $outfile1
+${tools_dir}grib_set -r -s packingType=grid_ccsds $outfile1 $outfile2
+${tools_dir}grib_compare -P -c data:n $outfile1 $outfile2
+
+rm -f $outfile1 $outfile2
diff --git a/tests/convert.sh b/tests/convert.sh
deleted file mode 100755
index 4a04004..0000000
--- a/tests/convert.sh
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/sh
-# Copyright 2005-2016 ECMWF.
-#
-# This software is licensed under the terms of the Apache Licence Version 2.0
-# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-# 
-# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
-# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
-#
-
-#
-# ----------------------------------------------------------------------------------
-# Note: the grib_convert tool is now deprecated! So this test is no longer relevant
-# ----------------------------------------------------------------------------------
-#
-
-. ./include.sh
-
-REDIRECT=/dev/null
-
-cat > rules<<EOF
-edition=2;
-EOF
-
-${tools_dir}grib_convert -g  rules ${data_dir}/gts.grib ${data_dir}/out.grib2
-
-cgts=`${tools_dir}grib_count ${data_dir}/gts.grib`
-cout=`${tools_dir}grib_count ${data_dir}/out.grib2`
-
-if [ $cgts != $cout ]
-then
-  echo "error in gts test"
-  exit 1
-fi
-
-rm -f ${data_dir}/out.grib2 rules
-
-
-#if [ ! -f "${data_dir}/lfpw.grib1" ] 
-#then
-#  echo no data to convert
-#  exit 0
-#fi
-#tmpdata=grib_api.grib
-#rm -f $tmpdata || true
-#${tools_dir}grib_convert ${data_dir}/mf.rules ${data_dir}/lfpw.grib1 $tmpdata 2> $REDIRECT > $REDIRECT
-#${tools_dir}grib_compare -f ${data_dir}/lfpw.grib2 $tmpdata
-#rm -f $tmpdata rules || true
diff --git a/tests/ecc-197.sh b/tests/ecc-197.sh
index 286ca21..1e5086b 100755
--- a/tests/ecc-197.sh
+++ b/tests/ecc-197.sh
@@ -15,9 +15,17 @@
 # It tests decoding a BUFR file which cannot be done unless
 # we extend the definitions to include extra files
 # ---------------------------------------------------------
+label="ecc-197-test"
+
+input=${data_dir}/bufr/vos308014_v3_26.bufr
+if [ ! -f $input ]; then
+  echo "Data file $input not available"
+  exit 0
+fi
+TEMP=${label}.temp
 
 # Create a temporary directory which holds the tables etc
-TEMP_DIR=ecc-197-temp-dir.$$
+TEMP_DIR=${label}.temp-dir.$$
 rm -rf $TEMP_DIR
 mkdir -p $TEMP_DIR/definitions/bufr/tables/0/wmo/26
 
@@ -32,7 +40,11 @@ MY_DEFS=`pwd`/$TEMP_DIR/definitions
 export ECCODES_DEFINITION_PATH=$MY_DEFS:$ECCODES_DEFINITION_PATH
 
 # Now decode
-${tools_dir}bufr_dump ${data_dir}/bufr/vos308014_v3_26.bufr >/dev/null
+${tools_dir}bufr_dump $input > $TEMP
+# Ensure output JSON has all the expected contents
+# After calling 'wc' and 'set', $1 will be the line count
+set `wc -l $TEMP`
+[ $1 -gt 35700 ]
 
 rm -rf $TEMP_DIR
-
+rm -f $TEMP
diff --git a/tests/ecc-286.sh b/tests/ecc-286.sh
new file mode 100755
index 0000000..391d899
--- /dev/null
+++ b/tests/ecc-286.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+# Copyright 2005-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# 
+# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+#
+
+. ./include.sh
+
+# ---------------------------------------------------------
+# This is the test for the JIRA issue ECC-286.
+# It tests setting a key which starts with a digit
+# ---------------------------------------------------------
+cd ${data_dir}/bufr
+label="ecc_286_test"
+
+tempRules=temp.${label}.filter
+tempOut=temp.${label}.out
+tempRef=temp.${label}.ref
+BufrFile=syno_1.bufr
+
+cat > $tempRules <<EOF
+ set unpack=1;
+ print "[3HourPressureChange]";
+ set 3HourPressureChange=21;
+ print "[3HourPressureChange]";
+EOF
+
+${tools_dir}bufr_filter $tempRules $BufrFile > $tempOut
+
+cat > $tempRef <<EOF
+20
+21
+EOF
+
+diff $tempRef $tempOut
+
+rm -rf $tempOut $tempRef $tempRules
diff --git a/tests/ecc-288.sh b/tests/ecc-288.sh
new file mode 100755
index 0000000..226273d
--- /dev/null
+++ b/tests/ecc-288.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Copyright 2005-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# 
+# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+#
+
+. ./include.sh
+
+# ---------------------------------------------------------
+# This is the test for the JIRA issue ECC-288
+# It tests bufr_compare with a relative tolerance
+# ---------------------------------------------------------
+cd ${data_dir}/bufr
+label="ecc_288_test"
+
+tempRules=temp.${label}.filter
+tempOut=temp.${label}.out
+BufrFile=syno_1.bufr
+
+cat > $tempRules <<EOF
+ set localLongitude=151.831;
+ write;
+EOF
+
+${tools_dir}bufr_filter -o $tempOut $tempRules $BufrFile
+
+# There is a difference in localLongitude, rel error=6.58627e-06
+# So this should fail
+set +e
+${tools_dir}bufr_compare $tempOut $BufrFile
+status=$?
+set -e
+[ $status -eq 1 ]
+
+# Now apply the option and now it should pass
+${tools_dir}bufr_compare -R localLongitude=6.59e-06  $tempOut $BufrFile
+
+rm -rf $tempOut $tempRules
diff --git a/tests/debug.sh b/tests/grib_dump.sh
similarity index 97%
copy from tests/debug.sh
copy to tests/grib_dump.sh
index 86e245f..7fc8ab8 100755
--- a/tests/debug.sh
+++ b/tests/grib_dump.sh
@@ -37,8 +37,6 @@ small_ensemble.grib1
 spectral_complex.grib1
 spherical_model_level.grib1
 spherical_pressure_level.grib1
-test.grib1
-
 constant_field.grib2
 gfs.c255.grib2
 jpeg.grib2
@@ -65,8 +63,6 @@ spherical_pressure_level.grib2
 test_uuid.grib2
 tigge_af_ecmwf.grib2
 tigge_cf_ecmwf.grib2
-tigge_ecmwf.grib2
-tigge_pf_ecmwf.grib2
 v.grib2
 "
 
@@ -75,4 +71,3 @@ for file in $files; do
       ${tools_dir}grib_dump -O ${data_dir}/$file 2> $REDIRECT > $REDIRECT
    fi
 done
-
diff --git a/tests/debug.sh b/tests/grib_dump_debug.sh
similarity index 93%
rename from tests/debug.sh
rename to tests/grib_dump_debug.sh
index 86e245f..05a0316 100755
--- a/tests/debug.sh
+++ b/tests/grib_dump_debug.sh
@@ -37,8 +37,6 @@ small_ensemble.grib1
 spectral_complex.grib1
 spherical_model_level.grib1
 spherical_pressure_level.grib1
-test.grib1
-
 constant_field.grib2
 gfs.c255.grib2
 jpeg.grib2
@@ -65,14 +63,11 @@ spherical_pressure_level.grib2
 test_uuid.grib2
 tigge_af_ecmwf.grib2
 tigge_cf_ecmwf.grib2
-tigge_ecmwf.grib2
-tigge_pf_ecmwf.grib2
 v.grib2
 "
 
 for file in $files; do
    if [ -f ${data_dir}/$file ]; then
-      ${tools_dir}grib_dump -O ${data_dir}/$file 2> $REDIRECT > $REDIRECT
+      ${tools_dir}grib_dump -Da ${data_dir}/$file 2> $REDIRECT > $REDIRECT
    fi
 done
-
diff --git a/tests/grib_png.sh b/tests/grib_png.sh
index c209da0..600def5 100755
--- a/tests/grib_png.sh
+++ b/tests/grib_png.sh
@@ -17,13 +17,15 @@ temp1=${label}".1.tmp"
 temp2=${label}".2.tmp"
 
 files="
- multi.grib2
  reduced_gaussian_model_level.grib2
  reduced_gaussian_sub_area.grib2
- v.grib2
  regular_latlon_surface_constant.grib2
 "
 
+if [ $HAVE_JPG -eq 1 ]; then
+ files="multi.grib2 v.grib2"$files
+fi
+
 # TODO: For the following the PNG packing fails with an assert!
 #       grib_accessor_class_data_png_packing.c: Assert(p->offset + length <= p->length)
 #  data/sample.grib2
diff --git a/tests/grib_util_set_spec.c b/tests/grib_util_set_spec.c
index 53deeb7..9064191 100644
--- a/tests/grib_util_set_spec.c
+++ b/tests/grib_util_set_spec.c
@@ -17,7 +17,7 @@ void test_reduced_gg(const char* input_filename, const char* output_filename)
     /* based on copy_spec_from_ksec */
     int err = 0;
     size_t slen = 32, inlen = 0, outlen = 0;
-    size_t size=0;
+    size_t i=0, size=0;
     int set_spec_flags=0;
     double* values = NULL;
     FILE* in = NULL;
@@ -43,20 +43,23 @@ void test_reduced_gg(const char* input_filename, const char* output_filename)
     CODES_CHECK(grib_get_size(handle,"values",&inlen), 0);
     values = (double*)malloc(sizeof(double)*inlen);
     CODES_CHECK(grib_get_double_array(handle, "values", values,&inlen), 0);
+    for(i=0; i<inlen; ++i) {
+        values[i] *= 1.10;
+    }
 
     spec.grid_type = GRIB_UTIL_GRID_SPEC_REDUCED_GG;
-    spec.N = 320;   /* hardcoded for now */
+    spec.N = 32;   /* hardcoded for now */
     spec.Nj = 2 * spec.N;
     outlen = inlen;
     spec.iDirectionIncrementInDegrees = 1.5;
     spec.jDirectionIncrementInDegrees = 1.5;
-    spec.latitudeOfFirstGridPointInDegrees  = 89.785;
+    spec.latitudeOfFirstGridPointInDegrees  = 87.863799;
     spec.longitudeOfFirstGridPointInDegrees = 0.0;
-    spec.latitudeOfLastGridPointInDegrees   = -89.785;
-    spec.longitudeOfLastGridPointInDegrees  = 359.719;
+    spec.latitudeOfLastGridPointInDegrees   = -spec.latitudeOfFirstGridPointInDegrees;
+    spec.longitudeOfLastGridPointInDegrees  = 357.187500;
     spec.bitmapPresent = 0;
 
-    packing_spec.packing_type = GRIB_UTIL_PACKING_TYPE_GRID_SIMPLE;
+    packing_spec.packing_type = GRIB_UTIL_PACKING_TYPE_GRID_SECOND_ORDER;
     packing_spec.bitsPerValue = 24;
     packing_spec.accuracy=GRIB_UTIL_ACCURACY_USE_PROVIDED_BITS_PER_VALUES;
     packing_spec.packing=GRIB_UTIL_PACKING_USE_PROVIDED;
@@ -131,6 +134,9 @@ void test_regular_ll(const char* input_filename, const char* output_filename)
     packing_spec.bitsPerValue = 24;
     packing_spec.accuracy=GRIB_UTIL_ACCURACY_USE_PROVIDED_BITS_PER_VALUES;
     packing_spec.packing=GRIB_UTIL_PACKING_USE_PROVIDED;
+    /* Convert to edition 2 and remove local use section */
+    packing_spec.editionNumber = 2;
+    packing_spec.deleteLocalDefinition = 1;
 
     finalh = codes_grib_util_set_spec(
             handle,
@@ -161,6 +167,6 @@ int main(int argc, char *argv[])
 
     test_regular_ll(infile, outfile);
     test_reduced_gg(infile, outfile);
-
+    printf("ALL OK\n");
     return 0;
 }
diff --git a/tests/grib_util_set_spec.sh b/tests/grib_util_set_spec.sh
index ed84aac..a50545c 100755
--- a/tests/grib_util_set_spec.sh
+++ b/tests/grib_util_set_spec.sh
@@ -9,30 +9,77 @@
 #
 
 . ./include.sh
+#test_dir="valgrind --error-exitcode=1 "$test_dir
 
-### Regular Lat/Lon Grid
-###########################################
+# --------------------------------------------------
+# Regular Lat/Lon Grid
+# --------------------------------------------------
 infile=../data/latlon.grib
 outfile=out.grib_util_set_spec.grib
+tempOut=temp.grib_util_set_spec.grib
 rm -f $outfile
 
-${test_dir}/grib_util_set_spec $infile $outfile > /dev/null
+# GRIB1 with local definition for MARS
+${test_dir}grib_util_set_spec $infile $outfile > /dev/null
 
-res=`${tools_dir}grib_get -p Ni,Nj,numberOfValues,bitsPerValue $outfile`
-[ "$res" = "17 14 238 24" ]
+res=`${tools_dir}grib_get -p edition,section2Used,Ni,Nj,numberOfValues,bitsPerValue $outfile`
+[ "$res" = "2 0 17 14 238 24" ]
 
+# Check output file geometry
 ${tools_dir}grib_get_data $outfile > /dev/null
 
-### Reduced Gaussian Grid
-###########################################
-infile=$ECCODES_SAMPLES_PATH/reduced_gg_pl_320_grib2.tmpl
+# Remove the local definition from input
+${tools_dir}grib_set -s deleteLocalDefinition=1 $infile $tempOut
+${test_dir}grib_util_set_spec $tempOut $outfile > /dev/null
+
+# Add another grib1 local definition (which is not in grib2)
+${tools_dir}grib_set -s setLocalDefinition=1,localDefinitionNumber=5 $infile $tempOut
+infile=$tempOut
+${test_dir}grib_util_set_spec $tempOut $outfile > /dev/null
+res=`${tools_dir}grib_get -p edition,section2Used $outfile`
+[ "$res" = "2 0" ]
+
+# GRIB2 input with local definition
+infile=../data/regular_latlon_surface.grib2
+${test_dir}grib_util_set_spec $infile $outfile > /dev/null
+grib_check_key_equals $outfile section2Used 0
+# GRIB2 input without local definition
+infile=$ECCODES_SAMPLES_PATH/GRIB2.tmpl
+${test_dir}grib_util_set_spec $infile $outfile > /dev/null
+grib_check_key_equals $outfile section2Used 0
+
+# --------------------------------------------------
+# Reduced Gaussian Grid N=32 second order packing
+# --------------------------------------------------
+infile=../data/reduced_gaussian_model_level.grib2
 outfile=out.grib_util_set_spec.grib
 rm -f $outfile
 
-${test_dir}/grib_util_set_spec $infile $outfile
+stats_old=`${tools_dir}grib_get -F%.2f -p min,max $infile`
+[ "$stats_old" = "160.25 224.45" ]
+
+${test_dir}grib_util_set_spec $infile $outfile
+
+# Check output file. Values are scaled up by 1.1
+grib_check_key_equals $outfile packingType grid_second_order
+stats_new=`${tools_dir}grib_get -F%.2f -p min,max $outfile`
+[ "$stats_new" = "176.28 246.90" ]
 
 ${tools_dir}grib_get_data $outfile > /dev/null
+CHECK_TOOL="${tools_dir}grib_check_gaussian_grid"
+if [ -x $CHECK_TOOL ]; then
+  $CHECK_TOOL $outfile
+fi
+
+### Constant field N=32
+###########################################
+infile=$ECCODES_SAMPLES_PATH/reduced_gg_pl_32_grib2.tmpl
+rm -f $outfile
+
+${test_dir}grib_util_set_spec $infile $outfile
+grib_check_key_equals $outfile "packingType,const" "grid_simple 1"
+${tools_dir}grib_get_data $outfile > /dev/null
 
 
 ### Clean up
-rm -f $outfile
+rm -f $outfile $tempOut
diff --git a/tests/include.ctest.sh.in b/tests/include.ctest.sh.in
index cb1dd5a..bed99ca 100644
--- a/tests/include.ctest.sh.in
+++ b/tests/include.ctest.sh.in
@@ -11,7 +11,8 @@ proj_dir=@PROJECT_SOURCE_DIR@
 data_dir=@PROJECT_BINARY_DIR@/data
 
 # use definitions from binary dir to test if installation will be correct
-def_dir="@CMAKE_BINARY_DIR@/share/@PROJECT_NAME@/definitions"
+# Note: 'definitions' is a symlink so must put final slash to interpret as directory
+def_dir="@CMAKE_BINARY_DIR@/share/@PROJECT_NAME@/definitions/"
 ECCODES_DEFINITION_PATH="${def_dir}"
 export ECCODES_DEFINITION_PATH
 
@@ -20,9 +21,14 @@ tools_dir=@CMAKE_BINARY_DIR@/bin/
 tigge_dir=@CMAKE_BINARY_DIR@/bin/
 
 # ecCodes tests are in the PROJECT_BINARY_DIR
-test_dir=@PROJECT_BINARY_DIR@/tests
+test_dir=@PROJECT_BINARY_DIR@/tests/
 
 # use samples from binary dir to test if installation will be correct
 samp_dir="@CMAKE_BINARY_DIR@/share/@PROJECT_NAME@/samples"
 ECCODES_SAMPLES_PATH=${samp_dir}
 export ECCODES_SAMPLES_PATH
+
+# Options
+HAVE_JPG=@HAVE_JPG@
+HAVE_PNG=@HAVE_PNG@
+HAVE_AEC=@HAVE_AEC@
diff --git a/tests/include.sh b/tests/include.sh
index 85bce9d..441ca80 100644
--- a/tests/include.sh
+++ b/tests/include.sh
@@ -45,7 +45,7 @@ else
 
     tigge_dir=$cpath/tigge/
     data_dir=$cpath/data
-    test_dir=$cpath/tests
+    test_dir=$cpath/tests/
     def_dir=$cpath/definitions
     src_dir=$cpath/src
   else
diff --git a/tests/jpeg.sh b/tests/jpeg.sh
index 2971b2e..5ccb477 100755
--- a/tests/jpeg.sh
+++ b/tests/jpeg.sh
@@ -37,7 +37,7 @@ infile=${data_dir}/jpeg.grib2
 outfile1=$infile.tmp_jpeg.1
 outfile2=$infile.tmp_jpeg.2
 
-rm -f $outfile1 $outfile2 || true
+rm -f $outfile1 $outfile2
 
 ${tools_dir}grib_set -s packingType=grid_simple $infile $outfile1
 ${tools_dir}grib_compare -P -b $BLACKLIST,typeOfCompressionUsed,targetCompressionRatio $infile $outfile1 > $REDIRECT
@@ -52,7 +52,7 @@ then
   exit 1
 fi
 
-rm -f $outfile1 $outfile2 || true
+rm -f $outfile1 $outfile2
 
 infile=${data_dir}/reduced_latlon_surface.grib2
 outfile1=$infile.tmp_jpeg.1
@@ -68,8 +68,35 @@ res3=`${tools_dir}grib_get '-F%1.2f' -p min,max,avg $outfile2`
 [ "$res1" = "$res2" ]
 [ "$res1" = "$res3" ]
 
+rm -f $outfile2
+
 # GRIB-564 nearest 4 neighbours with JPEG packing
 res=`${tools_dir}grib_get -l 0,50 $outfile1`
 [ "$res" = "2.47244 2.47244 2.5115 2.51931 " ]
 
-rm -f $outfile1 $outfile2 || true
+# ECC-317: Constant JPEG field numberOfValues
+# Create a JPEG encoded GRIB message to have all constant values and one more value
+# than input GRIB message
+infile=${data_dir}/jpeg.grib2
+tempFilter1=temp.grib_jpeg_test1.filt
+tempFilter2=temp.grib_jpeg_test2.filt
+numberOfValuesOrig=`${tools_dir}grib_get -p numberOfValues $infile`
+# Create a filter to print the values. This will be used to create another filter
+cat > $tempFilter1 <<EOF
+ print "set values={[values!1',']};";
+ print "write;";
+EOF
+# Run the filter on the input. Change the output to set all values to 1 with an additional entry
+# so the output file should have original numberOfValues+1
+${tools_dir}grib_filter $tempFilter1 $infile |\
+   sed -e 's/[0-9][0-9]*/1/' |\
+   sed -e 's/set values={1,/set values={1,1,/' > $tempFilter2
+# Apply the new filter to create the constant field JPEG file
+${tools_dir}grib_filter -o $outfile1 $tempFilter2 $infile
+numberOfValuesNew=`expr $numberOfValuesOrig + 1`
+grib_check_key_equals $outfile1 "numberOfValues" $numberOfValuesNew
+# If all the values counts match up, the the lat/lon iterator will not fail
+${tools_dir}grib_get_data $outfile1 >/dev/null
+rm -f $tempFilter1 $tempFilter2
+
+rm -f $outfile1 $outfile2
diff --git a/tests/keys b/tests/keys
index ec1a911..60868a9 100644
--- a/tests/keys
+++ b/tests/keys
@@ -23,2000 +23,2120 @@ BOX,17
 BUDG,18
 BUFR,19
 BUFRstr,20
-CCCC,21
-CDF,22
-CDFstr,23
-DELETE,24
-Date_E2,25
-Date_E3,26
-Date_E4,27
-DayOfModelVersion,28
-Di,29
-DiGiven,30
-DiInDegrees,31
-DiInMetres,32
-Dj,33
-DjGiven,34
-DjInDegrees,35
-DjInMetres,36
-Dstart,37
-Dx,38
-DxInDegrees,39
-DxInMetres,40
-Dy,41
-DyInDegrees,42
-DyInMetres,43
-ECMWF,44
-ECMWF_s,45
-Ensemble_Combinat_Number_0_none_E2,46
-Ensemble_Combinat_Number_0_none_E3,47
-Ensemble_Combinat_Number_0_none_E4,48
-Ensemble_Combination_Number,49
-Ensemble_Identifier,50
-Ensemble_Identifier_E2,51
-Ensemble_Identifier_E3,52
-Ensemble_Identifier_E4,53
-Experiment_Identifier,54
-Extra_Data_FreeFormat_0_none,55
-ExtremeValuesInMaximumRVR1,56
-ExtremeValuesInMaximumRVR2,57
-ExtremeValuesInMaximumRVR3,58
-ExtremeValuesInMaximumRVR4,59
-ExtremeValuesRVR1,60
-ExtremeValuesRVR2,61
-ExtremeValuesRVR3,62
-ExtremeValuesRVR4,63
-FirstLatitude,64
-GDSPresent,65
-GG,66
-GRIB,67
-GRIBEXSection1Problem,68
-GRIBEXShBugPresent,69
-GRIBEX_boustrophedonic,70
-GRIBEditionNumber,71
-GRIB_DEPTH,72
-GRIB_LATITUDE,73
-GRIB_LONGITUDE,74
-GTS,75
-GTSstr,76
-HourOfModelVersion,77
-Hour_E2,78
-Hour_E3,79
-Hour_E4,80
-ICEFieldsUsed,81
-II,82
-ITERATOR,83
-J,84
-JS,85
-K,86
-KS,87
-LBC_Initial_Conditions,88
-La1,89
-La1InDegrees,90
-La2,91
-LaD,92
-LaDInDegrees,93
-LaR,94
-Lap,95
-Lar1,96
-Lar1InDegrees,97
-Lar2,98
-Lar2InDegrees,99
-Latin,100
-Latin1,101
-Latin1InDegrees,102
-Latin2,103
-Latin2InDegrees,104
-Less_Than_Or_To_Overall_Distribution,105
-Lo1,106
-Lo1InDegrees,107
-Lo2,108
-LoR,109
-LoV,110
-LoVInDegrees,111
-Local_Number_Members_Missing,112
-Local_Number_Members_Missing_E2,113
-Local_Number_Members_Missing_E3,114
-Local_Number_Members_Missing_E4,115
-Local_Number_Members_Possible,116
-Local_Number_Members_Possible_E2,117
-Local_Number_Members_Possible_E3,118
-Local_Number_Members_Possible_E4,119
-Local_Number_Members_Used,120
-Local_Number_Members_Used_E2,121
-Local_Number_Members_Used_E3,122
-Local_Number_Members_Used_E4,123
-Lor1,124
-Lor1InDegrees,125
-Lor2,126
-Lor2InDegrees,127
-M,128
-METAR,129
-METARstr,130
-MS,131
-MinuteOfModelVersion,132
-Minute_E2,133
-Minute_E3,134
-Minute_E4,135
-Missing_Model_LBC,136
-Missing_Model_LBC_E2,137
-Missing_Model_LBC_E3,138
-Missing_Model_LBC_E4,139
-Model_Additional_Information,140
-Model_Identifier,141
-Model_LBC_Member_Identifier,142
-MonthOfModelVersion,143
-N,144
-N1,145
-N2,146
-NB,147
-NC,148
-NC1,149
-NC2,150
-NEAREST,151
-NG,152
-NH,153
-NINT_LOG10_RITZ,154
-NINT_RITZ_EXP,155
-NL,156
-NR,157
-NRj,158
-NT,159
-NV,160
-Nassigned,161
-Nb,162
-Nf,163
-Ni,164
-Nj,165
-Nr,166
-NrInRadiusOfEarth,167
-Number_Combination_Ensembles_1_none,168
-Nx,169
-Ny,170
-Original_CodeTable_2_Version_Number,171
-Original_Parameter_Iden_CodeTable2,172
-Original_Parameter_Identifier,173
-P,174
-P1,175
-P2,176
-PLPresent,177
-PUnset,178
-PVPresent,179
-P_INST,180
-P_TACC,181
-P_TAVG,182
-Product_Identifier,183
-RENAME,184
-RVR1_1,185
-RVR2_1,186
-RVR3_1,187
-RVR4_1,188
-SOH,189
-SPD,190
-SecondLatitude,191
-SecondOfModelVersion,192
-Show_Combination_Ensem_E2_0_no_1_yes,193
-Show_Combination_Ensem_E3_0_no_1_yes,194
-Show_Combination_Ensem_E4_0_no_1_yes,195
-Sub-Experiment_Identifier,196
-TAF,197
-TAFstr,198
-TIDE,199
-TS,200
-TScalc,201
-TT,202
-TYPE_AN,203
-TYPE_CF,204
-TYPE_FC,205
-TYPE_FF,206
-TYPE_FX,207
-TYPE_OF,208
-TYPE_OR,209
-TYPE_PF,210
-Threshold_Or_Distribution_0_no_1_yes,211
-Threshold_Or_Distribution_Units,212
-Time_Range_One_E2,213
-Time_Range_One_E3,214
-Time_Range_One_E4,215
-Time_Range_Two_E2,216
-Time_Range_Two_E3,217
-Time_Range_Two_E4,218
-Total_Number_Members_Missing,219
-Total_Number_Members_Possible,220
-Total_Number_Members_Used,221
-UseEcmfConventions,222
-Used_Model_LBC,223
-Used_Model_LBC_E2,224
-Used_Model_LBC_E3,225
-Used_Model_LBC_E4,226
-WMO,227
-X1,228
-X1InGridLengths,229
-X2,230
-X2InGridLengths,231
-XR,232
-XRInMetres,233
-Xo,234
-Xp,235
-XpInGridLengths,236
-Y1,237
-Y1InGridLengths,238
-Y2,239
-Y2InGridLengths,240
-YR,241
-YRInMetres,242
-YY,243
-YearOfModelVersion,244
-Yo,245
-Yp,246
-YpInGridLengths,247
-_T,248
-_TS,249
-_leg_number,250
-_numberOfValues,251
-accumulationInterval,252
-accuracyMultipliedByFactor,253
-addEmptySection2,254
-addExtraLocalSection,255
-additionalFlagPresent,256
-aerosolType,257
-aerosolbinnumber,258
-aerosolpacking,259
-alternativeRowScanning,260
-altitudeOfTheCameraFromTheEarthSCenterMeasuredInUnitsOfTheEarth,261
-analysisOffsets,262
-angleDivisor,263
-angleMultiplier,264
-angleOfRotation,265
-angleOfRotationInDegrees,266
-angleOfRotationOfProjection,267
-angularPrecision,268
-anoffset,269
-applicationIdentifier,270
-assertion,271
-auxiliary,272
-average,273
-averaging1Flag,274
-averaging2Flag,275
-averagingPeriod,276
-avg,277
-azimuthalWidth,278
-backgroundGeneratingProcessIdentifier,279
-backgroundProcess,280
-band,281
-baseDateEPS,282
-baseDateOfThisLeg,283
-baseTimeEPS,284
-baseTimeOfThisLeg,285
-basicAngleOfTheInitialProductionDomain,286
-beginDayTrend1,287
-beginDayTrend2,288
-beginDayTrend3,289
-beginDayTrend4,290
-beginHourTrend1,291
-beginHourTrend2,292
-beginHourTrend3,293
-beginHourTrend4,294
-beginMinuteTrend1,295
-beginMinuteTrend2,296
-beginMinuteTrend3,297
-beginMinuteTrend4,298
-beginMonthTrend1,299
-beginMonthTrend2,300
-beginMonthTrend3,301
-beginMonthTrend4,302
-beginYearTrend1,303
-beginYearTrend2,304
-beginYearTrend3,305
-beginYearTrend4,306
-binaryScaleFactor,307
-bitMapIndicator,308
-bitmap,309
-bitmapPresent,310
-bitmapSectionPresent,311
-bitsPerValue,312
-bitsPerValueAndRepack,313
-boot_edition,314
-bottomLevel,315
-boustrophedonic,316
-boustrophedonicOrdering,317
-bufrdcExpandedDescriptors,318
-calendarIdPresent,319
-calendarIdentification,320
-calendarIdentificationTemplateNumber,321
-cat,322
-categories,323
-categoryType,324
-cavokOrVisibility,325
-ccccIdentifiers,326
-ccsdsBlockSize,327
-ccsdsFlags,328
-ccsdsRsi,329
-ceilingAndVisibilityOK,330
-ceilingAndVisibilityOKTrend1,331
-ceilingAndVisibilityOKTrend2,332
-ceilingAndVisibilityOKTrend3,333
-ceilingAndVisibilityOKTrend4,334
-centralClusterDefinition,335
-centralLongitude,336
-centralLongitudeInMicrodegrees,337
-centre,338
-centreDescription,339
-centreForLocal,340
-centreForTable2,341
-centuryOfAnalysis,342
-centuryOfReference,343
-centuryOfReferenceTimeOfData,344
-cfName,345
-cfNameECMF,346
-cfVarName,347
-cfVarNameECMF,348
-changeDecimalPrecision,349
-changeIndicatorTrend1,350
-changeIndicatorTrend2,351
-changeIndicatorTrend3,352
-changeIndicatorTrend4,353
-changingPrecision,354
-channel,355
-channelNumber,356
-char,357
-charValues,358
-class,359
-classOfAnalysis,360
-climateDateFrom,361
-climateDateTo,362
-climatologicalRegime,363
-cloudsAbbreviation1,364
-cloudsAbbreviation1Trend1,365
-cloudsAbbreviation1Trend2,366
-cloudsAbbreviation1Trend3,367
-cloudsAbbreviation1Trend4,368
-cloudsAbbreviation2,369
-cloudsAbbreviation2Trend1,370
-cloudsAbbreviation2Trend2,371
-cloudsAbbreviation2Trend3,372
-cloudsAbbreviation2Trend4,373
-cloudsAbbreviation3,374
-cloudsAbbreviation3Trend1,375
-cloudsAbbreviation3Trend2,376
-cloudsAbbreviation3Trend3,377
-cloudsAbbreviation3Trend4,378
-cloudsAbbreviation4,379
-cloudsAbbreviation4Trend1,380
-cloudsAbbreviation4Trend2,381
-cloudsAbbreviation4Trend3,382
-cloudsAbbreviation4Trend4,383
-cloudsBase1,384
-cloudsBase1Trend1,385
-cloudsBase1Trend2,386
-cloudsBase1Trend3,387
-cloudsBase1Trend4,388
-cloudsBase2,389
-cloudsBase2Trend1,390
-cloudsBase2Trend2,391
-cloudsBase2Trend3,392
-cloudsBase2Trend4,393
-cloudsBase3,394
-cloudsBase3Trend1,395
-cloudsBase3Trend2,396
-cloudsBase3Trend3,397
-cloudsBase3Trend4,398
-cloudsBase4,399
-cloudsBase4Trend1,400
-cloudsBase4Trend2,401
-cloudsBase4Trend3,402
-cloudsBase4Trend4,403
-cloudsBaseCoded1,404
-cloudsBaseCoded1Trend1,405
-cloudsBaseCoded1Trend2,406
-cloudsBaseCoded1Trend3,407
-cloudsBaseCoded1Trend4,408
-cloudsBaseCoded2,409
-cloudsBaseCoded2Trend1,410
-cloudsBaseCoded2Trend2,411
-cloudsBaseCoded2Trend3,412
-cloudsBaseCoded2Trend4,413
-cloudsBaseCoded3,414
-cloudsBaseCoded3Trend1,415
-cloudsBaseCoded3Trend2,416
-cloudsBaseCoded3Trend3,417
-cloudsBaseCoded3Trend4,418
-cloudsBaseCoded4,419
-cloudsBaseCoded4Trend1,420
-cloudsBaseCoded4Trend2,421
-cloudsBaseCoded4Trend3,422
-cloudsBaseCoded4Trend4,423
-cloudsCode1,424
-cloudsCode1Trend1,425
-cloudsCode1Trend2,426
-cloudsCode1Trend3,427
-cloudsCode1Trend4,428
-cloudsCode2,429
-cloudsCode2Trend1,430
-cloudsCode2Trend2,431
-cloudsCode2Trend3,432
-cloudsCode2Trend4,433
-cloudsCode3,434
-cloudsCode3Trend1,435
-cloudsCode3Trend2,436
-cloudsCode3Trend3,437
-cloudsCode3Trend4,438
-cloudsCode4,439
-cloudsCode4Trend1,440
-cloudsCode4Trend2,441
-cloudsCode4Trend3,442
-cloudsCode4Trend4,443
-cloudsTitle1,444
-cloudsTitle1Trend1,445
-cloudsTitle1Trend2,446
-cloudsTitle1Trend3,447
-cloudsTitle1Trend4,448
-cloudsTitle2,449
-cloudsTitle2Trend1,450
-cloudsTitle2Trend2,451
-cloudsTitle2Trend3,452
-cloudsTitle2Trend4,453
-cloudsTitle3,454
-cloudsTitle3Trend1,455
-cloudsTitle3Trend2,456
-cloudsTitle3Trend3,457
-cloudsTitle3Trend4,458
-cloudsTitle4,459
-cloudsTitle4Trend1,460
-cloudsTitle4Trend2,461
-cloudsTitle4Trend3,462
-cloudsTitle4Trend4,463
-clusterIdentifier,464
-clusterMember1,465
-clusterMember10,466
-clusterMember2,467
-clusterMember3,468
-clusterMember4,469
-clusterMember5,470
-clusterMember6,471
-clusterMember7,472
-clusterMember8,473
-clusterMember9,474
-clusterNumber,475
-clusterSize,476
-clusteringDomain,477
-clusteringMethod,478
-clutterFilterIndicator,479
-codeFigure,480
-codeTablesLocal,481
-codeTablesMaster,482
-codeType,483
-codedNumberOfFirstOrderPackedValues,484
-codedNumberOfGroups,485
-codedValues,486
-coefsFirst,487
-coefsSecond,488
-commonBlock,489
-complexPacking,490
-componentIndex,491
-compressedData,492
-computeLaplacianOperator,493
-computeStatistics,494
-conceptDir,495
-conceptsLocalDirAll,496
-conceptsLocalDirECMF,497
-conceptsLocalMarsDirAll,498
-conceptsMasterDir,499
-conceptsMasterMarsDir,500
-consensus,501
-consensusCount,502
-const,503
-constantAntennaElevationAngle,504
-constantFieldHalfByte,505
-constituentType,506
-controlForecastCluster,507
-coordAveraging0,508
-coordAveraging1,509
-coordAveraging2,510
-coordAveraging3,511
-coordAveragingTims,512
-coordinate1End,513
-coordinate1Flag,514
-coordinate1Start,515
-coordinate2End,516
-coordinate2Flag,517
-coordinate2Start,518
-coordinate3Flag,519
-coordinate3OfFirstGridPoint,520
-coordinate3OfLastGridPoint,521
-coordinate4Flag,522
-coordinate4OfFirstGridPoint,523
-coordinate4OfLastGridPoint,524
-coordinateFlag1,525
-coordinateFlag2,526
-coordinateIndexNumber,527
-coordinatesPresent,528
-core,529
-corr1Data,530
-corr2Data,531
-corr3Data,532
-corr4Data,533
-correction,534
-correction1,535
-correction1Part,536
-correction2,537
-correction2Part,538
-correction3,539
-correction3Part,540
-correction4,541
-correction4Part,542
-count,543
-countOfGroupLengths,544
-countOfICEFieldsUsed,545
-countTotal,546
-country,547
-crcrlf,548
-dataCategory,549
-dataDate,550
-dataFlag,551
-dataLength,552
-dataOrigin,553
-dataRepresentation,554
-dataRepresentationTemplateNumber,555
-dataRepresentationType,556
-dataSelection,557
-dataStream,558
-dataSubCategory,559
-dataTime,560
-dataType,561
-dataValues,562
-date,563
-dateOfAnalysis,564
-dateOfForecastRun,565
-dateOfIceFieldUsed,566
-dateOfReference,567
-dateOfSSTFieldUsed,568
-dateSSTFieldUsed,569
-datumSize,570
-day,571
-dayOfAnalysis,572
-dayOfEndOfOverallTimeInterval,573
-dayOfReference,574
-dayOfTheYearDate,575
-decimalPrecision,576
-decimalScaleFactor,577
-defaultName,578
-defaultParameter,579
-defaultSequence,580
-defaultShortName,581
-defaultTypeOfLevel,582
-definitionFilesVersion,583
-deleteCalendarId,584
-deleteExtraLocalSection,585
-deleteLocalDefinition,586
-deletePV,587
-derivedForecast,588
-dewPointTemperature,589
-diagnostic,590
-diagnosticNumber,591
-dimension,592
-dimensionNumber,593
-dimensionType,594
-direction,595
-directionNumber,596
-directionOfVariation,597
-directionScalingFactor,598
-dirty_statistics,599
-disableGrib1LocalSection,600
-discipline,601
-distanceFromTubeToEnsembleMean,602
-distinctLatitudes,603
-distinctLongitudes,604
-domain,605
-dummy,606
-dummy1,607
-dummy2,608
-dummyc,609
-dx,610
-dy,611
-earthIsOblate,612
-earthMajorAxis,613
-earthMajorAxisInMetres,614
-earthMinorAxis,615
-earthMinorAxisInMetres,616
-eastLongitudeOfCluster,617
-eastLongitudeOfDomainOfTubing,618
-easternLongitudeOfClusterDomain,619
-easternLongitudeOfDomain,620
-ed,621
-edition,622
-editionNumber,623
-efiOrder,624
-eight,625
-elementsTable,626
-elevation,627
-eleven,628
-endDayTrend1,629
-endDayTrend2,630
-endDayTrend3,631
-endDayTrend4,632
-endDescriptors,633
-endGridDefinition,634
-endHourTrend1,635
-endHourTrend2,636
-endHourTrend3,637
-endHourTrend4,638
-endMark,639
-endMinuteTrend1,640
-endMinuteTrend2,641
-endMinuteTrend3,642
-endMinuteTrend4,643
-endMonthTrend1,644
-endMonthTrend2,645
-endMonthTrend3,646
-endMonthTrend4,647
-endOfHeadersMaker,648
-endOfInterval,649
-endOfMessage,650
-endOfProduct,651
-endOfRange,652
-endStep,653
-endStepInHours,654
-endTimeStep,655
-endYearTrend1,656
-endYearTrend2,657
-endYearTrend3,658
-endYearTrend4,659
-energyNorm,660
-enorm,661
-ensembleForecastNumbers,662
-ensembleForecastNumbersList,663
-ensembleSize,664
-ensembleStandardDeviation,665
-eps,666
-epsContinous,667
-epsPoint,668
-epsStatistics,669
-epsStatisticsContinous,670
-epsStatisticsPoint,671
-error,672
-expandBy,673
-expandedAbbreviations,674
-expandedCodes,675
-expandedCrex_scales,676
-expandedCrex_units,677
-expandedCrex_widths,678
-expandedNames,679
-expandedOriginalCodes,680
-expandedOriginalReferences,681
-expandedOriginalScales,682
-expandedOriginalWidths,683
-expandedTypes,684
-expandedUnits,685
-experimentVersionNumber,686
-experimentVersionNumber1,687
-experimentVersionNumber2,688
-experimentVersionNumberOfAnalysis,689
-expoffset,690
-expver,691
-extendedFlag,692
-extraDim,693
-extraDimensionPresent,694
-extraLocalSectionNumber,695
-extraLocalSectionPresent,696
-extraValues,697
-extremeClockwiseWindDirection,698
-extremeCounterClockwiseWindDirection,699
-extremeValuesRVR1,700
-extremeValuesRVR2,701
-extremeValuesRVR3,702
-extremeValuesRVR4,703
-false,704
-falseEasting,705
-falseNorthing,706
-fcmonth,707
-fcperiod,708
-fgDate,709
-fgTime,710
-file,711
-firstDimension,712
-firstDimensionCoordinateValueDefinition,713
-firstDimensionPhysicalSignificance,714
-firstLatitude,715
-firstLatitudeInDegrees,716
-firstMonthUsedToBuildClimateMonth1,717
-firstMonthUsedToBuildClimateMonth2,718
-firstOrderValues,719
-flag,720
-flagForAnyFurtherInformation,721
-flagForIrregularGridCoordinateList,722
-flagForNormalOrStaggeredGrid,723
-flagShowingPostAuxiliaryArrayInUse,724
-flags,725
-floatVal,726
-floatValues,727
-forecastLeadTime,728
-forecastMonth,729
-forecastOrSingularVectorNumber,730
-forecastPeriod,731
-forecastPeriodFrom,732
-forecastPeriodTo,733
-forecastProbabilityNumber,734
-forecastSteps,735
-forecastTime,736
-forecastperiod,737
-formatVersionMajorNumber,738
-formatVersionMinorNumber,739
-freeFormData,740
-frequency,741
-frequencyNumber,742
-frequencyScalingFactor,743
-functionCode,744
-g,745
-g1conceptsLocalDirAll,746
-g1conceptsMasterDir,747
-g2grid,748
-genVertHeightCoords,749
-generalExtended2ordr,750
-generatingProcessIdentificationNumber,751
-generatingProcessIdentifier,752
-getNumberOfValues,753
-gg,754
-global,755
-globalDomain,756
-grib1divider,757
-grib2LocalSectionNumber,758
-grib2LocalSectionPresent,759
-grib2divider,760
-gribMasterTablesVersionNumber,761
-gribTablesVersionNo,762
-grid,763
-gridCoordinate,764
-gridDefinition,765
-gridDefinitionDescription,766
-gridDefinitionSection,767
-gridDefinitionTemplateNumber,768
-gridDescriptionSectionPresent,769
-gridPointPosition,770
-gridType,771
-groupLengths,772
-groupSplitting,773
-groupSplittingMethodUsed,774
-groupWidth,775
-groupWidths,776
-gts_CCCC,777
-gts_TTAAii,778
-gts_ddhh00,779
-gts_header,780
-halfByte,781
-hdate,782
-headersOnly,783
-heightOrPressureOfLevel,784
-heightPressureEtcOfLevels,785
-hideThis,786
-horizontalCoordinateDefinition,787
-horizontalCoordinateSupplement,788
-horizontalDimensionProcessed,789
-hour,790
-hourOfAnalysis,791
-hourOfEndOfOverallTimeInterval,792
-hourOfReference,793
-hoursAfterDataCutoff,794
-hoursAfterReferenceTimeOfDataCutoff,795
-hundred,796
-iDirectionIncrement,797
-iDirectionIncrementGiven,798
-iDirectionIncrementGridLength,799
-iDirectionIncrementInDegrees,800
-iIncrement,801
-iScansNegatively,802
-iScansPositively,803
-ident,804
-identificationNumber,805
-identificationOfOriginatingGeneratingCentre,806
-identifier,807
-ieeeFloats,808
-ifsParam,809
-ijDirectionIncrementGiven,810
-incrementOfLengths,811
-indicatorOfParameter,812
-indicatorOfTypeOfLevel,813
-indicatorOfUnitForTimeIncrement,814
-indicatorOfUnitForTimeRange,815
-indicatorOfUnitOfTimeRange,816
-instrument,817
-instrumentIdentifier,818
-instrumentType,819
-integerPointValues,820
-integerScaleFactor,821
-integerScalingFactorAppliedToDirections,822
-integerScalingFactorAppliedToFrequencies,823
-integerValues,824
-internalVersion,825
-internationalDataSubCategory,826
-interpretationOfNumberOfPoints,827
-intervalBetweenTimes,828
-isAccumulation,829
-isAuto,830
-isCavok,831
-isCavokTrend1,832
-isCavokTrend2,833
-isCavokTrend3,834
-isCavokTrend4,835
-isConstant,836
-isCorrection,837
-isEPS,838
-isEps,839
-isHindcast,840
-isSatellite,841
-isSatelliteType,842
-isSens,843
-is_tigge,844
-isectionNumber2,845
-isectionNumber3,846
-isectionNumber4,847
-isotopeIdentificationNumber,848
-iteration,849
-iterationNumber,850
-jDirectionIncrement,851
-jDirectionIncrementGiven,852
-jDirectionIncrementGridLength,853
-jDirectionIncrementInDegrees,854
-jIncrement,855
-jPointsAreConsecutive,856
-jScansPositively,857
-julianDay,858
-keyData,859
-keyMore,860
-keySat,861
-kindOfProduct,862
-kurt,863
-kurtosis,864
-lBB,865
-landtype,866
-laplacianOperator,867
-laplacianOperatorIsSet,868
-laplacianScalingFactor,869
-laplacianScalingFactorUnset,870
-lastMonthUsedToBuildClimateMonth1,871
-lastMonthUsedToBuildClimateMonth2,872
-latLonValues,873
-latitude,874
-latitudeFirstInDegrees,875
-latitudeLastInDegrees,876
-latitudeLongitudeValues,877
-latitudeOfCenterPoint,878
-latitudeOfCenterPointInDegrees,879
-latitudeOfCentralPointInClusterDomain,880
-latitudeOfFirstGridPoint,881
-latitudeOfFirstGridPointInDegrees,882
-latitudeOfIcosahedronPole,883
-latitudeOfLastGridPoint,884
-latitudeOfLastGridPointInDegrees,885
-latitudeOfNorthWestCornerOfArea,886
-latitudeOfReferencePoint,887
-latitudeOfReferencePointInDegrees,888
-latitudeOfSouthEastCornerOfArea,889
-latitudeOfSouthernPole,890
-latitudeOfSouthernPoleInDegrees,891
-latitudeOfStretchingPole,892
-latitudeOfStretchingPoleInDegrees,893
-latitudeOfSubSatellitePoint,894
-latitudeOfSubSatellitePointInDegrees,895
-latitudeOfTangencyPoint,896
-latitudeOfThePoleOfStretching,897
-latitudeOfThePolePoint,898
-latitudeOfThePolePointInDegrees,899
-latitudeOfTheSouthernPoleOfProjection,900
-latitudeSexagesimal,901
-latitudeWhereDxAndDyAreSpecified,902
-latitudeWhereDxAndDyAreSpecifiedInDegrees,903
-latitudes,904
-latitudesList,905
-latitudinalDirectionGridLength,906
-leadtime,907
-legBaseDate,908
-legBaseTime,909
-legNumber,910
-lengthDescriptors,911
-lengthIncrementForTheGroupLengths,912
-lengthOf4DvarWindow,913
-lengthOfHeaders,914
-lengthOfMessage,915
-lengthOfTimeRange,916
-lev,917
-level,918
-levelIndicator,919
-levelType,920
-levelist,921
-levels,922
-levtype,923
-libraryVersion,924
-listMembersMissing,925
-listMembersMissing2,926
-listMembersMissing3,927
-listMembersMissing4,928
-listMembersUsed,929
-listMembersUsed2,930
-listMembersUsed3,931
-listMembersUsed4,932
-listOfContributingSpectralBands,933
-listOfEnsembleForecastNumbers,934
-listOfModelIdentifiers,935
-listOfParametersUsedForClustering,936
-listOfScaledFrequencies,937
-local,938
-localDay,939
-localDecimalScaleFactor,940
-localDefNumberOne,941
-localDefNumberTwo,942
-localDefinition,943
-localDefinitionNumber,944
-localDir,945
-localExtensionPadding,946
-localFlag,947
-localFlagLatestVersion,948
-localHour,949
-localLatitude,950
-localLatitude1,951
-localLatitude2,952
-localLongitude,953
-localLongitude1,954
-localLongitude2,955
-localMinute,956
-localMonth,957
-localSecond,958
-localSection,959
-localTablesVersion,960
-localTablesVersionNumber,961
-localUsePresent,962
-localYear,963
-local_padding,964
-local_use,965
-logTransform,966
-longitude,967
-longitudeFirstInDegrees,968
-longitudeLastInDegrees,969
-longitudeOfCenterPoint,970
-longitudeOfCenterPointInDegrees,971
-longitudeOfCentralPointInClusterDomain,972
-longitudeOfFirstDiamondCenterLine,973
-longitudeOfFirstDiamondCenterLineInDegrees,974
-longitudeOfFirstGridPoint,975
-longitudeOfFirstGridPointInDegrees,976
-longitudeOfIcosahedronPole,977
-longitudeOfLastGridPoint,978
-longitudeOfLastGridPointInDegrees,979
-longitudeOfNorthWestCornerOfArea,980
-longitudeOfReferencePoint,981
-longitudeOfReferencePointInDegrees,982
-longitudeOfSouthEastCornerOfArea,983
-longitudeOfSouthernPole,984
-longitudeOfSouthernPoleInDegrees,985
-longitudeOfStretchingPole,986
-longitudeOfStretchingPoleInDegrees,987
-longitudeOfSubSatellitePoint,988
-longitudeOfSubSatellitePointInDegrees,989
-longitudeOfTangencyPoint,990
-longitudeOfThePoleOfStretching,991
-longitudeOfThePolePoint,992
-longitudeOfThePolePointInDegrees,993
-longitudeOfTheSouthernPoleOfProjection,994
-longitudeSexagesimal,995
-longitudes,996
-longitudesList,997
-longitudinalDirectionGridLength,998
-lowerLimit,999
-lowerRange,1000
-lowerThreshold,1001
-lowerThresholdValue,1002
-ls_labeling,1003
-m,1004
-mAngleMultiplier,1005
-mBasicAngle,1006
-mars,1007
-marsClass,1008
-marsClass1,1009
-marsClass2,1010
-marsDir,1011
-marsDomain,1012
-marsEndStep,1013
-marsExperimentOffset,1014
-marsExpver,1015
-marsForecastMonth,1016
-marsGrid,1017
-marsIdent,1018
-marsKeywords,1019
-marsKeywords1,1020
-marsLamModel,1021
-marsLatitude,1022
-marsLevel,1023
-marsLevelist,1024
-marsLongitude,1025
-marsModel,1026
-marsParam,1027
-marsQuantile,1028
-marsRange,1029
-marsStartStep,1030
-marsStep,1031
-marsStream,1032
-marsStream1,1033
-marsStream2,1034
-marsType,1035
-marsType1,1036
-marsType2,1037
-mars_labeling,1038
-mask,1039
-masterDir,1040
-masterTableNumber,1041
-masterTablesVersionNumber,1042
-matchAerosolBinNumber,1043
-matchAerosolPacking,1044
-matchLandType,1045
-matchSort,1046
-matchTimeRepres,1047
-matrixBitmapsPresent,1048
-matrixOfValues,1049
-max,1050
-maximum,1051
-md5Data,1052
-md5DataSection,1053
-md5GridSection,1054
-md5Headers,1055
-md5Section1,1056
-md5Section2,1057
-md5Section3,1058
-md5Section4,1059
-md5Section5,1060
-md5Section6,1061
-md5Section7,1062
-md5Structure,1063
-meanRVR1,1064
-meanRVR2,1065
-meanRVR3,1066
-meanRVR4,1067
-meanSize,1068
-meanValueRVR1,1069
-meanValueRVR2,1070
-meanValueRVR3,1071
-meanValueRVR4,1072
-meaningOfVerticalCoordinate,1073
-messageLength,1074
-method,1075
-methodNumber,1076
-million,1077
-min,1078
-minimum,1079
-minute,1080
-minuteOfAnalysis,1081
-minuteOfEndOfOverallTimeInterval,1082
-minuteOfReference,1083
-minutesAfterDataCutoff,1084
-minutesAfterReferenceTimeOfDataCutoff,1085
-missingDataFlag,1086
-missingValue,1087
-missingValueManagement,1088
-missingValueManagementUsed,1089
-mixedCoordinateDefinition,1090
-mixedCoordinateFieldFlag,1091
-model,1092
-modelErrorType,1093
-modelIdentifier,1094
-modelVersionDate,1095
-modelVersionTime,1096
-molarMass,1097
-month,1098
-monthOfAnalysis,1099
-monthOfEndOfOverallTimeInterval,1100
-monthOfReference,1101
-monthlyVerificationDate,1102
-multiplicationFactorForLatLong,1103
-mybits,1104
-n,1105
-n2,1106
-n3,1107
-na,1108
-name,1109
-nameECMF,1110
-nameOfFirstFixedSurface,1111
-nameOfSecondFixedSurface,1112
-names,1113
-nd,1114
-neitherPresent,1115
-nlev,1116
-nnn,1117
-normAtFinalTime,1118
-normAtInitialTime,1119
-normal,1120
-northLatitudeOfCluster,1121
-northLatitudeOfDomainOfTubing,1122
-northWestLatitudeOfLPOArea,1123
-northWestLatitudeOfVerficationArea,1124
-northWestLongitudeOfLPOArea,1125
-northWestLongitudeOfVerficationArea,1126
-northernLatitudeOfClusterDomain,1127
-northernLatitudeOfDomain,1128
-nosigPresent,1129
-notDecoded,1130
-nt,1131
-number,1132
-numberInHorizontalCoordinates,1133
-numberInMixedCoordinateDefinition,1134
-numberInTheAuxiliaryArray,1135
-numberInTheGridCoordinateList,1136
-numberIncludedInAverage,1137
-numberMissingFromAveragesOrAccumulations,1138
-numberOfAnalysis,1139
-numberOfBits,1140
-numberOfBitsContainingEachPackedValue,1141
-numberOfBitsForScaledGroupLengths,1142
-numberOfBitsUsedForTheGroupWidths,1143
-numberOfBitsUsedForTheScaledGroupLengths,1144
-numberOfBytesInLocalDefinition,1145
-numberOfBytesOfFreeFormatData,1146
-numberOfBytesPerInteger,1147
-numberOfCategories,1148
-numberOfCharacters,1149
-numberOfChars,1150
-numberOfClusterHighResolution,1151
-numberOfClusterLowResolution,1152
-numberOfClusters,1153
-numberOfCodedValues,1154
-numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction,1155
-numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction,1156
-numberOfColumns,1157
-numberOfComponents,1158
-numberOfContributingSpectralBands,1159
-numberOfControlForecastTube,1160
-numberOfCoordinatesValues,1161
-numberOfDataBinsAlongRadials,1162
-numberOfDataMatrices,1163
-numberOfDataPoints,1164
-numberOfDataValues,1165
-numberOfDiamonds,1166
-numberOfDirections,1167
-numberOfEffectiveValues,1168
-numberOfFloats,1169
-numberOfForcasts,1170
-numberOfForecastsInCluster,1171
-numberOfForecastsInEnsemble,1172
-numberOfForecastsInTheCluster,1173
-numberOfForecastsInTube,1174
-numberOfFrequencies,1175
-numberOfGridInReference,1176
-numberOfGridUsed,1177
-numberOfGroups,1178
-numberOfGroupsOfDataValues,1179
-numberOfHorizontalPoints,1180
-numberOfIntegers,1181
-numberOfInts,1182
-numberOfIterations,1183
-numberOfLocalDefinitions,1184
-numberOfLogicals,1185
-numberOfMembersInCluster,1186
-numberOfMissing,1187
-numberOfMissingInStatisticalProcess,1188
-numberOfMissingValues,1189
-numberOfModels,1190
-numberOfObservations,1191
-numberOfOctectsForNumberOfPoints,1192
-numberOfOctetsExtraDescriptors,1193
-numberOfOperationalForecastTube,1194
-numberOfPackedValues,1195
-numberOfParallelsBetweenAPoleAndTheEquator,1196
-numberOfParametersUsedForClustering,1197
-numberOfPartitions,1198
-numberOfPoints,1199
-numberOfPointsAlongAMeridian,1200
-numberOfPointsAlongAParallel,1201
-numberOfPointsAlongFirstAxis,1202
-numberOfPointsAlongSecondAxis,1203
-numberOfPointsAlongTheXAxis,1204
-numberOfPointsAlongTheYAxis,1205
-numberOfPointsAlongXAxis,1206
-numberOfPointsAlongYAxis,1207
-numberOfPointsUsed,1208
-numberOfPressureLevelsUsedForClustering,1209
-numberOfRadarSitesUsed,1210
-numberOfRadials,1211
-numberOfRemaininChars,1212
-numberOfRepresentativeMember,1213
-numberOfReservedBytes,1214
-numberOfRows,1215
-numberOfSecondOrderPackedValues,1216
-numberOfSection,1217
-numberOfSingularVectorsComputed,1218
-numberOfSingularVectorsEvolved,1219
-numberOfStepsUsedForClustering,1220
-numberOfSubsets,1221
-numberOfTensOfThousandsOfYearsOfOffset,1222
-numberOfTimeRange,1223
-numberOfTimeSteps,1224
-numberOfUnexpandedDescriptors,1225
-numberOfUnusedBitsAtEndOfSection3,1226
-numberOfVGridUsed,1227
-numberOfValues,1228
-numberOfVerticalCoordinateValues,1229
-numberOfVerticalGridDescriptors,1230
-numberOfVerticalPoints,1231
-numberingOrderOfDiamonds,1232
-numericValues,1233
-observationDiagnostic,1234
-observationGeneratingProcessIdentifier,1235
-observationType,1236
-observedData,1237
-obstype,1238
-oceanAtmosphereCoupling,1239
-oceanStream,1240
-octetAtWichPackedDataBegins,1241
-offset,1242
-offsetAfterBitmap,1243
-offsetAfterCentreLocalSection,1244
-offsetAfterData,1245
-offsetAfterLocalSection,1246
-offsetAfterPadding,1247
-offsetBBitmap,1248
-offsetBSection5,1249
-offsetBSection6,1250
-offsetBeforeBitmap,1251
-offsetBeforeData,1252
-offsetBeforePL,1253
-offsetBeforePV,1254
-offsetDescriptors,1255
-offsetEndSection4,1256
-offsetFreeFormData,1257
-offsetFromOriginToInnerBound,1258
-offsetFromReferenceOfFirstTime,1259
-offsetICEFieldsUsed,1260
-offsetSection0,1261
-offsetSection1,1262
-offsetSection2,1263
-offsetSection3,1264
-offsetSection4,1265
-offsetSection5,1266
-offsetSection6,1267
-offsetSection7,1268
-offsetSection8,1269
-offsetToEndOf4DvarWindow,1270
-offsetValuesBy,1271
-one,1272
-oneConstant,1273
-oneMillionConstant,1274
-oneMinuteMeanMaximumRVR1,1275
-oneMinuteMeanMaximumRVR2,1276
-oneMinuteMeanMaximumRVR3,1277
-oneMinuteMeanMaximumRVR4,1278
-oneMinuteMeanMinimumRVR1,1279
-oneMinuteMeanMinimumRVR2,1280
-oneMinuteMeanMinimumRVR3,1281
-oneMinuteMeanMinimumRVR4,1282
-oneThousand,1283
-oper,1284
-operStream,1285
-operatingMode,1286
-operationalForecastCluster,1287
-optimisationTime,1288
-optionalData,1289
-opttime,1290
-orderOfSPD,1291
-orderOfSpatialDifferencing,1292
-orientationOfTheGrid,1293
-orientationOfTheGridInDegrees,1294
-origin,1295
-originalParameterNumber,1296
-originalParameterTableNumber,1297
-originalSubCentreIdentifier,1298
-originatingCentre,1299
-originatingCentreOfAnalysis,1300
-originatingCentrer,1301
-packedValues,1302
-packingError,1303
-packingType,1304
-padding,1305
-padding_grid1_1,1306
-padding_grid1_2,1307
-padding_grid3_1,1308
-padding_grid4_1,1309
-padding_grid50_1,1310
-padding_grid5_1,1311
-padding_grid90_1,1312
-padding_loc10_1,1313
-padding_loc13_1,1314
-padding_loc13_2,1315
-padding_loc13_3,1316
-padding_loc13_4,1317
-padding_loc13_5,1318
-padding_loc14_1,1319
-padding_loc14_2,1320
-padding_loc15_1,1321
-padding_loc16_1,1322
-padding_loc17_2,1323
-padding_loc18_1,1324
-padding_loc18_2,1325
-padding_loc190_1,1326
-padding_loc191_1,1327
-padding_loc191_2,1328
-padding_loc191_3,1329
-padding_loc192_1,1330
-padding_loc19_2,1331
-padding_loc20_1,1332
-padding_loc21_1,1333
-padding_loc23_1,1334
-padding_loc244_1,1335
-padding_loc244_2,1336
-padding_loc244_3,1337
-padding_loc245_1,1338
-padding_loc245_2,1339
-padding_loc26_1,1340
-padding_loc27_1,1341
-padding_loc27_2,1342
-padding_loc28_1,1343
-padding_loc29_1,1344
-padding_loc29_2,1345
-padding_loc29_3,1346
-padding_loc2_1,1347
-padding_loc2_2,1348
-padding_loc30_1,1349
-padding_loc30_2,1350
-padding_loc37_1,1351
-padding_loc37_2,1352
-padding_loc38_1,1353
-padding_loc3_1,1354
-padding_loc4_2,1355
-padding_loc50_1,1356
-padding_loc5_1,1357
-padding_loc6_1,1358
-padding_loc7_1,1359
-padding_loc9_1,1360
-padding_loc9_2,1361
-padding_local11_1,1362
-padding_local1_1,1363
-padding_local1_31,1364
-padding_local40_1,1365
-padding_local_35,1366
-padding_local_7_1,1367
-padding_sec1_loc,1368
-padding_sec2_1,1369
-padding_sec2_2,1370
-padding_sec2_3,1371
-padding_sec3_1,1372
-padding_sec4_1,1373
-paleontologicalOffset,1374
-param,1375
-paramId,1376
-paramIdECMF,1377
-parameter,1378
-parameterCategory,1379
-parameterCode,1380
-parameterIndicator,1381
-parameterName,1382
-parameterNumber,1383
-parameterUnits,1384
-parameters,1385
-parametersVersion,1386
-partitionItems,1387
-partitionNumber,1388
-partitionTable,1389
-partitions,1390
-pastTendencyRVR1,1391
-pastTendencyRVR2,1392
-pastTendencyRVR3,1393
-pastTendencyRVR4,1394
-patch_precip_fp,1395
-pentagonalResolutionParameterJ,1396
-pentagonalResolutionParameterK,1397
-pentagonalResolutionParameterM,1398
-percentileValue,1399
-periodOfTime,1400
-periodOfTimeIntervals,1401
-perturbationNumber,1402
-perturbedType,1403
-phase,1404
-physicalFlag1,1405
-physicalFlag2,1406
-physicalMeaningOfVerticalCoordinate,1407
-pl,1408
-platform,1409
-plusOneinOrdersOfSPD,1410
-points,1411
-postAuxiliary,1412
-postAuxiliaryArrayPresent,1413
-powerOfTenUsedToScaleClimateWeight,1414
-preBitmapValues,1415
-preProcessingParameter,1416
-precision,1417
-precisionOfTheUnpackedSubset,1418
-predefined_grid,1419
-predefined_grid_values,1420
-present,1421
-presentTrend1,1422
-presentTrend2,1423
-presentTrend3,1424
-presentTrend4,1425
-presentWeather1Present,1426
-presentWeather1PresentTrend1,1427
-presentWeather1PresentTrend2,1428
-presentWeather1PresentTrend3,1429
-presentWeather1PresentTrend4,1430
-presentWeather2Present,1431
-presentWeather2PresentTrend1,1432
-presentWeather2PresentTrend2,1433
-presentWeather2PresentTrend3,1434
-presentWeather2PresentTrend4,1435
-presentWeather3Present,1436
-presentWeather3PresentTrend1,1437
-presentWeather3PresentTrend2,1438
-presentWeather3PresentTrend3,1439
-presentWeather3PresentTrend4,1440
-pressureLevel,1441
-pressureUnits,1442
-primaryBitmap,1443
-primaryMissingValue,1444
-primaryMissingValueSubstitute,1445
-probContinous,1446
-probPoint,1447
-probProductDefinition,1448
-probabilityType,1449
-probabilityTypeName,1450
-process,1451
-product,1452
-productDefinition,1453
-productDefinitionTemplateNumber,1454
-productDefinitionTemplateNumberInternal,1455
-productIdentifier,1456
-productType,1457
-productionStatusOfProcessedData,1458
-projectionCenterFlag,1459
-projectionCentreFlag,1460
-pv,1461
-pvlLocation,1462
-qfe,1463
-qfePresent,1464
-qfeUnits,1465
-qnh,1466
-qnhAPresent,1467
-qnhPresent,1468
-qnhUnits,1469
-qualityControl,1470
-qualityControlIndicator,1471
-quantile,1472
-radialAngularSpacing,1473
-radials,1474
-radius,1475
-radiusInMetres,1476
-radiusOfCentralCluster,1477
-radiusOfClusterDomain,1478
-radiusOfTheEarth,1479
-range,1480
-rangeBinSpacing,1481
-rdbSubtype,1482
-rdbType,1483
-rdb_key,1484
-rdbtime,1485
-rdbtimeDay,1486
-rdbtimeHour,1487
-rdbtimeMinute,1488
-rdbtimeSecond,1489
-realPart,1490
-realPartOf00,1491
-recentWeather,1492
-recentWeatherTry,1493
-rectime,1494
-rectimeDay,1495
-rectimeHour,1496
-rectimeMinute,1497
-rectimeSecond,1498
-reducedGrid,1499
-refdate,1500
-reference,1501
-referenceDate,1502
-referenceForGroupLengths,1503
-referenceForGroupWidths,1504
-referenceOfLengths,1505
-referenceOfWidths,1506
-referenceReflectivityForEchoTop,1507
-referenceStep,1508
-referenceValue,1509
-referenceValueError,1510
-reflectivityCalibrationConstant,1511
-remarkPresent,1512
-reportType,1513
-representationMode,1514
-representationType,1515
-representativeMember,1516
-reserved,1517
-reserved1,1518
-reservedNeedNotBePresent,1519
-reservedOctet,1520
-resolutionAndComponentFlag,1521
-resolutionAndComponentFlags,1522
-resolutionAndComponentFlags1,1523
-resolutionAndComponentFlags2,1524
-resolutionAndComponentFlags3,1525
-resolutionAndComponentFlags4,1526
-resolutionAndComponentFlags6,1527
-resolutionAndComponentFlags7,1528
-resolutionAndComponentFlags8,1529
-rootTablesDir,1530
-roundedMarsLatitude,1531
-roundedMarsLevelist,1532
-roundedMarsLongitude,1533
-runwayBrakingActionState1,1534
-runwayBrakingActionState2,1535
-runwayBrakingActionState3,1536
-runwayBrakingActionState4,1537
-runwayDepositCodeState1,1538
-runwayDepositCodeState2,1539
-runwayDepositCodeState3,1540
-runwayDepositCodeState4,1541
-runwayDepositState1,1542
-runwayDepositState2,1543
-runwayDepositState3,1544
-runwayDepositState4,1545
-runwayDepthOfDepositCodeState1,1546
-runwayDepthOfDepositCodeState2,1547
-runwayDepthOfDepositCodeState3,1548
-runwayDepthOfDepositCodeState4,1549
-runwayDepthOfDepositState1,1550
-runwayDepthOfDepositState2,1551
-runwayDepthOfDepositState3,1552
-runwayDepthOfDepositState4,1553
-runwayDesignatorRVR1,1554
-runwayDesignatorRVR2,1555
-runwayDesignatorRVR3,1556
-runwayDesignatorRVR4,1557
-runwayDesignatorState1,1558
-runwayDesignatorState2,1559
-runwayDesignatorState3,1560
-runwayDesignatorState4,1561
-runwayExtentOfContaminationCodeState1,1562
-runwayExtentOfContaminationCodeState2,1563
-runwayExtentOfContaminationCodeState3,1564
-runwayExtentOfContaminationCodeState4,1565
-runwayExtentOfContaminationState1,1566
-runwayExtentOfContaminationState2,1567
-runwayExtentOfContaminationState3,1568
-runwayExtentOfContaminationState4,1569
-runwayFrictionCodeValueState1,1570
-runwayFrictionCodeValueState2,1571
-runwayFrictionCodeValueState3,1572
-runwayFrictionCodeValueState4,1573
-runwayFrictionCoefficientCodeState1,1574
-runwayFrictionCoefficientCodeState2,1575
-runwayFrictionCoefficientCodeState3,1576
-runwayFrictionCoefficientCodeState4,1577
-runwayFrictionCoefficientState1,1578
-runwayFrictionCoefficientState2,1579
-runwayFrictionCoefficientState3,1580
-runwayFrictionCoefficientState4,1581
-runwaySideCodeState1,1582
-runwaySideCodeState2,1583
-runwaySideCodeState3,1584
-runwaySideCodeState4,1585
-runwayState,1586
-satelliteID,1587
-satelliteIdentifier,1588
-satelliteNumber,1589
-satelliteSeries,1590
-scaleFactorAtReferencePoint,1591
-scaleFactorOfCentralWaveNumber,1592
-scaleFactorOfDistanceFromEnsembleMean,1593
-scaleFactorOfEarthMajorAxis,1594
-scaleFactorOfEarthMinorAxis,1595
-scaleFactorOfFirstFixedSurface,1596
-scaleFactorOfFirstSize,1597
-scaleFactorOfFirstWavelength,1598
-scaleFactorOfLowerLimit,1599
-scaleFactorOfMajorAxisOfOblateSpheroidEarth,1600
-scaleFactorOfMinorAxisOfOblateSpheroidEarth,1601
-scaleFactorOfRadiusOfSphericalEarth,1602
-scaleFactorOfSecondFixedSurface,1603
-scaleFactorOfSecondSize,1604
-scaleFactorOfSecondWavelength,1605
-scaleFactorOfStandardDeviation,1606
-scaleFactorOfStandardDeviationInTheCluster,1607
-scaleFactorOfUpperLimit,1608
-scaleValuesBy,1609
-scaledDirections,1610
-scaledFrequencies,1611
-scaledValueOfCentralWaveNumber,1612
-scaledValueOfDistanceFromEnsembleMean,1613
-scaledValueOfEarthMajorAxis,1614
-scaledValueOfEarthMinorAxis,1615
-scaledValueOfFirstFixedSurface,1616
-scaledValueOfFirstSize,1617
-scaledValueOfFirstWavelength,1618
-scaledValueOfLowerLimit,1619
-scaledValueOfMajorAxisOfOblateSpheroidEarth,1620
-scaledValueOfMinorAxisOfOblateSpheroidEarth,1621
-scaledValueOfRadiusOfSphericalEarth,1622
-scaledValueOfSecondFixedSurface,1623
-scaledValueOfSecondSize,1624
-scaledValueOfSecondWavelength,1625
-scaledValueOfStandardDeviation,1626
-scaledValueOfStandardDeviationInTheCluster,1627
-scaledValueOfUpperLimit,1628
-scalingFactorForFrequencies,1629
-scanPosition,1630
-scanningMode,1631
-scanningMode4,1632
-scanningMode5,1633
-scanningMode6,1634
-scanningMode7,1635
-scanningMode8,1636
-scanningModeForOneDiamond,1637
-sd,1638
-second,1639
-secondDimension,1640
-secondDimensionCoordinateValueDefinition,1641
-secondDimensionPhysicalSignificance,1642
-secondLatitude,1643
-secondLatitudeInDegrees,1644
-secondOfEndOfOverallTimeInterval,1645
-secondOrderFlags,1646
-secondOrderOfDifferentWidth,1647
-secondOrderValuesDifferentWidths,1648
-secondaryBitMap,1649
-secondaryBitmap,1650
-secondaryBitmapPresent,1651
-secondaryBitmaps,1652
-secondaryBitmapsCount,1653
-secondaryBitmapsSize,1654
-secondaryMissingValue,1655
-secondaryMissingValueSubstitute,1656
-secondsOfAnalysis,1657
-secondsOfReference,1658
-section,1659
-section0Length,1660
-section0Pointer,1661
-section1,1662
-section1Flags,1663
-section1Length,1664
-section1Padding,1665
-section1Pointer,1666
-section2Length,1667
-section2Padding,1668
-section2Pointer,1669
-section2Present,1670
-section2Used,1671
-section3,1672
-section3Flags,1673
-section3Length,1674
-section3Padding,1675
-section3Pointer,1676
-section4,1677
-section4Length,1678
-section4Padding,1679
-section4Pointer,1680
-section5,1681
-section5Length,1682
-section5Pointer,1683
-section6,1684
-section6Length,1685
-section7,1686
-section7Length,1687
-section8,1688
-section8Length,1689
-section8Pointer,1690
-sectionLengthLimitForEnsembles,1691
-sectionLengthLimitForProbability,1692
-sectionNumber,1693
-sectionPosition,1694
-section_1,1695
-section_2,1696
-section_3,1697
-section_4,1698
-section_5,1699
-section_6,1700
-section_7,1701
-section_8,1702
-selectGroupNumber,1703
-selectStepTemplateInstant,1704
-selectStepTemplateInterval,1705
-sensitiveAreaDomain,1706
-sequences,1707
-setBitsPerValue,1708
-setCalendarId,1709
-setDecimalPrecision,1710
-setLocalDefinition,1711
-shapeOfTheEarth,1712
-shapeOfVerificationArea,1713
-shortName,1714
-shortNameECMF,1715
-short_name,1716
-significanceOfReferenceTime,1717
-siteElevation,1718
-siteId,1719
-siteLatitude,1720
-siteLongitude,1721
-sizeOfPostAuxiliaryArray,1722
-sizeOfPostAuxiliaryArrayPlusOne,1723
-skew,1724
-skewness,1725
-sort,1726
-sourceOfGridDefinition,1727
-southEastLatitudeOfLPOArea,1728
-southEastLatitudeOfVerficationArea,1729
-southEastLongitudeOfLPOArea,1730
-southEastLongitudeOfVerficationArea,1731
-southLatitudeOfCluster,1732
-southLatitudeOfDomainOfTubing,1733
-southPoleOnProjectionPlane,1734
-southernLatitudeOfClusterDomain,1735
-southernLatitudeOfDomain,1736
-sp1,1737
-sp2,1738
-sp3,1739
-spaceUnitFlag,1740
-spacingOfBinsAlongRadials,1741
-spare,1742
-spare2,1743
-spatialProcessing,1744
-spatialSmoothingOfProduct,1745
-spectralDataRepresentationMode,1746
-spectralDataRepresentationType,1747
-spectralMode,1748
-spectralType,1749
-sphericalHarmonics,1750
-standardDeviation,1751
-standardParallel,1752
-standardParallelInMicrodegrees,1753
-startOfHeaders,1754
-startOfMessage,1755
-startOfRange,1756
-startStep,1757
-startStepInHours,1758
-startTimeStep,1759
-startingAzimuth,1760
-statisticalProcess,1761
-statisticalProcessesList,1762
-statistics,1763
-status,1764
-step,1765
-stepForClustering,1766
-stepInHours,1767
-stepRange,1768
-stepRangeInHours,1769
-stepType,1770
-stepTypeInternal,1771
-stepUnits,1772
-stepZero,1773
-stream,1774
-streamOfAnalysis,1775
-stretchingFactor,1776
-stretchingFactorScaled,1777
-subCentre,1778
-subDefinitions1,1779
-subDefinitions2,1780
-subLocalDefinition1,1781
-subLocalDefinition2,1782
-subLocalDefinitionLength1,1783
-subLocalDefinitionLength2,1784
-subLocalDefinitionNumber1,1785
-subLocalDefinitionNumber2,1786
-subSetJ,1787
-subSetK,1788
-subSetM,1789
-subcentreOfAnalysis,1790
-subdivisionsOfBasicAngle,1791
-subsetNumber,1792
-suiteName,1793
-swapScanningLat,1794
-swapScanningLon,1795
-swapScanningX,1796
-swapScanningY,1797
-system,1798
-systemNumber,1799
-t,1800
-table2Version,1801
-tableCode,1802
-tableNumber,1803
-tableReference,1804
-tablesLocalDir,1805
-tablesMasterDir,1806
-tablesVersion,1807
-targetCompressionRatio,1808
-td,1809
-tempPressureUnits,1810
-temperature,1811
-temperatureAndDewpointPresent,1812
-theHindcastMarsStream,1813
-theMessage,1814
-thisExperimentVersionNumber,1815
-thisMarsClass,1816
-thisMarsStream,1817
-thisMarsType,1818
-thousand,1819
-three,1820
-threshold,1821
-thresholdIndicator,1822
-tiggeCentre,1823
-tiggeLAMName,1824
-tiggeLocalVersion,1825
-tiggeModel,1826
-tiggeSection,1827
-tiggeSuiteID,1828
-tigge_name,1829
-tigge_short_name,1830
-time,1831
-timeCoordinateDefinition,1832
-timeIncrement,1833
-timeIncrementBetweenSuccessiveFields,1834
-timeOfAnalysis,1835
-timeOfReference,1836
-timeRangeIndicator,1837
-timeRangeIndicatorFromStepRange,1838
-timeUnitFlag,1839
-timerepres,1840
-topLevel,1841
-total,1842
-totalAerosolBinsNumbers,1843
-totalInitialConditions,1844
-totalLength,1845
-totalNumber,1846
-totalNumberOfClusters,1847
-totalNumberOfDataValuesMissingInStatisticalProcess,1848
-totalNumberOfDirections,1849
-totalNumberOfForecastProbabilities,1850
-totalNumberOfFrequencies,1851
-totalNumberOfGridPoints,1852
-totalNumberOfIterations,1853
-totalNumberOfTubes,1854
-totalNumberOfdimensions,1855
-treatmentOfMissingData,1856
-true,1857
-trueLengthOfLastGroup,1858
-truncateDegrees,1859
-truncateLaplacian,1860
-tsectionNumber3,1861
-tsectionNumber4,1862
-tsectionNumber5,1863
-tubeDomain,1864
-tubeNumber,1865
-two,1866
-twoOrdersOfSPD,1867
-type,1868
-typeOfAnalysis,1869
-typeOfAuxiliaryInformation,1870
-typeOfCalendar,1871
-typeOfCompressionUsed,1872
-typeOfEnsembleForecast,1873
-typeOfFirstFixedSurface,1874
-typeOfGeneratingProcess,1875
-typeOfGrid,1876
-typeOfHorizontalLine,1877
-typeOfIntervalForFirstAndSecondSize,1878
-typeOfIntervalForFirstAndSecondWavelength,1879
-typeOfLevel,1880
-typeOfLevelECMF,1881
-typeOfOriginalFieldValues,1882
-typeOfPacking,1883
-typeOfPreProcessing,1884
-typeOfProcessedData,1885
-typeOfSSTFieldUsed,1886
-typeOfSecondFixedSurface,1887
-typeOfSizeInterval,1888
-typeOfStatisticalProcessing,1889
-typeOfTimeIncrement,1890
-typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,1891
-typeOfWavelengthInterval,1892
-typicalDate,1893
-typicalDay,1894
-typicalHour,1895
-typicalMinute,1896
-typicalMonth,1897
-typicalSecond,1898
-typicalTime,1899
-typicalYear,1900
-typicalYearOfCentury,1901
-umberOfObservations,1902
-unexpandedDescriptors,1903
-unitOfOffsetFromReferenceTime,1904
-unitOfTime,1905
-unitOfTimeIncrement,1906
-unitOfTimeRange,1907
-units,1908
-unitsBias,1909
-unitsDecimalScaleFactor,1910
-unitsECMF,1911
-unitsFactor,1912
-unitsOfFirstFixedSurface,1913
-unitsOfSecondFixedSurface,1914
-unknown,1915
-unpack,1916
-unpackedError,1917
-unpackedSubsetPrecision,1918
-unpackedValues,1919
-unsignedIntegers,1920
-unusedBitsInBitmap,1921
-updateSequenceNumber,1922
-upperLimit,1923
-upperRange,1924
-upperThreshold,1925
-upperThresholdValue,1926
-uuidOfHGrid,1927
-uuidOfVGrid,1928
-uvRelativeToGrid,1929
-validityDate,1930
-validityTime,1931
-values,1932
-variationOfVisibility,1933
-variationOfVisibilityDirection,1934
-variationOfVisibilityDirectionAngle,1935
-variationOfVisibilityDirectionTrend1,1936
-variationOfVisibilityDirectionTrend2,1937
-variationOfVisibilityDirectionTrend3,1938
-variationOfVisibilityDirectionTrend4,1939
-variationOfVisibilityTrend1,1940
-variationOfVisibilityTrend2,1941
-variationOfVisibilityTrend3,1942
-variationOfVisibilityTrend4,1943
-varno,1944
-verificationDate,1945
-verifyingMonth,1946
-versionNumberOfGribLocalTables,1947
-verticalCoordinate,1948
-verticalCoordinateDefinition,1949
-verticalVisibility,1950
-verticalVisibilityCoded,1951
-visibility,1952
-visibilityInKilometresTrend1,1953
-visibilityInKilometresTrend2,1954
-visibilityInKilometresTrend3,1955
-visibilityInKilometresTrend4,1956
-visibilityTrend1,1957
-visibilityTrend2,1958
-visibilityTrend3,1959
-visibilityTrend4,1960
-waveDomain,1961
-weightAppliedToClimateMonth1,1962
-westLongitudeOfCluster,1963
-westLongitudeOfDomainOfTubing,1964
-westernLongitudeOfClusterDomain,1965
-westernLongitudeOfDomain,1966
-widthOfFirstOrderValues,1967
-widthOfLengths,1968
-widthOfSPD,1969
-widthOfWidths,1970
-windDirection,1971
-windDirectionTrend1,1972
-windDirectionTrend2,1973
-windDirectionTrend3,1974
-windDirectionTrend4,1975
-windGust,1976
-windGustTrend1,1977
-windGustTrend2,1978
-windGustTrend3,1979
-windGustTrend4,1980
-windPresent,1981
-windSpeed,1982
-windSpeedTrend1,1983
-windSpeedTrend2,1984
-windSpeedTrend3,1985
-windSpeedTrend4,1986
-windUnits,1987
-windUnitsTrend1,1988
-windUnitsTrend2,1989
-windUnitsTrend3,1990
-windUnitsTrend4,1991
-windVariableDirection,1992
-windVariableDirectionTrend1,1993
-windVariableDirectionTrend2,1994
-windVariableDirectionTrend3,1995
-windVariableDirectionTrend4,1996
-wrongPadding,1997
-xCoordinateOfOriginOfSectorImage,1998
-xCoordinateOfSubSatellitePoint,1999
-xDirectionGridLength,2000
-xDirectionGridLengthInMetres,2001
-xDirectionGridLengthInMillimetres,2002
-xFirst,2003
-xLast,2004
-yCoordinateOfOriginOfSectorImage,2005
-yCoordinateOfSubSatellitePoint,2006
-yDirectionGridLength,2007
-yDirectionGridLengthInMetres,2008
-yDirectionGridLengthInMillimetres,2009
-yFirst,2010
-yLast,2011
-year,2012
-yearOfAnalysis,2013
-yearOfCentury,2014
-yearOfEndOfOverallTimeInterval,2015
-yearOfReference,2016
-zero,2017
+BufrTemplate,21
+CCCC,22
+CDF,23
+CDFstr,24
+CLNOMA,25
+DELETE,26
+Date_E2,27
+Date_E3,28
+Date_E4,29
+DayOfModelVersion,30
+Di,31
+DiGiven,32
+DiInDegrees,33
+DiInMetres,34
+Dj,35
+DjGiven,36
+DjInDegrees,37
+DjInMetres,38
+Dstart,39
+Dx,40
+DxInDegrees,41
+DxInMetres,42
+Dy,43
+DyInDegrees,44
+DyInMetres,45
+ECMWF,46
+ECMWF_s,47
+Ensemble_Combinat_Number_0_none_E2,48
+Ensemble_Combinat_Number_0_none_E3,49
+Ensemble_Combinat_Number_0_none_E4,50
+Ensemble_Combination_Number,51
+Ensemble_Identifier,52
+Ensemble_Identifier_E2,53
+Ensemble_Identifier_E3,54
+Ensemble_Identifier_E4,55
+Experiment_Identifier,56
+Extra_Data_FreeFormat_0_none,57
+ExtremeValuesInMaximumRVR1,58
+ExtremeValuesInMaximumRVR2,59
+ExtremeValuesInMaximumRVR3,60
+ExtremeValuesInMaximumRVR4,61
+ExtremeValuesRVR1,62
+ExtremeValuesRVR2,63
+ExtremeValuesRVR3,64
+ExtremeValuesRVR4,65
+FMULTE,66
+FMULTM,67
+FirstLatitude,68
+GDSPresent,69
+GG,70
+GRIB,71
+GRIBEXSection1Problem,72
+GRIBEXShBugPresent,73
+GRIBEX_boustrophedonic,74
+GRIBEditionNumber,75
+GRIB_DEPTH,76
+GRIB_LATITUDE,77
+GRIB_LONGITUDE,78
+GTS,79
+GTSstr,80
+HDF5,81
+HDF5str,82
+HourOfModelVersion,83
+Hour_E2,84
+Hour_E3,85
+Hour_E4,86
+ICEFieldsUsed,87
+ICPLSIZE,88
+II,89
+INBITS,90
+INGRIB,91
+ITERATOR,92
+ITN,93
+J,94
+JS,95
+K,96
+KS,97
+LBC_Initial_Conditions,98
+LLCOSP,99
+LSTCUM,100
+La1,101
+La1InDegrees,102
+La2,103
+LaD,104
+LaDInDegrees,105
+LaR,106
+Lap,107
+Lar1,108
+Lar1InDegrees,109
+Lar2,110
+Lar2InDegrees,111
+Latin,112
+Latin1,113
+Latin1InDegrees,114
+Latin2,115
+Latin2InDegrees,116
+Less_Than_Or_To_Overall_Distribution,117
+Lo1,118
+Lo1InDegrees,119
+Lo2,120
+LoR,121
+LoV,122
+LoVInDegrees,123
+Local_Number_Members_Missing,124
+Local_Number_Members_Missing_E2,125
+Local_Number_Members_Missing_E3,126
+Local_Number_Members_Missing_E4,127
+Local_Number_Members_Possible,128
+Local_Number_Members_Possible_E2,129
+Local_Number_Members_Possible_E3,130
+Local_Number_Members_Possible_E4,131
+Local_Number_Members_Used,132
+Local_Number_Members_Used_E2,133
+Local_Number_Members_Used_E3,134
+Local_Number_Members_Used_E4,135
+Lor1,136
+Lor1InDegrees,137
+Lor2,138
+Lor2InDegrees,139
+M,140
+METAR,141
+METARstr,142
+MS,143
+MinuteOfModelVersion,144
+Minute_E2,145
+Minute_E3,146
+Minute_E4,147
+Missing_Model_LBC,148
+Missing_Model_LBC_E2,149
+Missing_Model_LBC_E3,150
+Missing_Model_LBC_E4,151
+Model_Additional_Information,152
+Model_Identifier,153
+Model_LBC_Member_Identifier,154
+MonthOfModelVersion,155
+N,156
+N1,157
+N2,158
+NAT,159
+NB,160
+NC,161
+NC1,162
+NC2,163
+NEAREST,164
+NG,165
+NH,166
+NINT_LOG10_RITZ,167
+NINT_RITZ_EXP,168
+NL,169
+NP,170
+NR,171
+NRj,172
+NT,173
+NUT,174
+NV,175
+Nassigned,176
+Nb,177
+Nf,178
+Ni,179
+Nj,180
+Nr,181
+NrInRadiusOfEarth,182
+Number_Combination_Ensembles_1_none,183
+Nx,184
+Ny,185
+Original_CodeTable_2_Version_Number,186
+Original_Parameter_Iden_CodeTable2,187
+Original_Parameter_Identifier,188
+P,189
+P1,190
+P2,191
+PLPresent,192
+PUnset,193
+PVPresent,194
+P_INST,195
+P_TACC,196
+P_TAVG,197
+Product_Identifier,198
+RENAME,199
+RVR1_1,200
+RVR2_1,201
+RVR3_1,202
+RVR4_1,203
+SOH,204
+SPD,205
+SecondLatitude,206
+SecondOfModelVersion,207
+Show_Combination_Ensem_E2_0_no_1_yes,208
+Show_Combination_Ensem_E3_0_no_1_yes,209
+Show_Combination_Ensem_E4_0_no_1_yes,210
+Sub-Experiment_Identifier,211
+TAF,212
+TAFstr,213
+TIDE,214
+TS,215
+TScalc,216
+TT,217
+TYPE_AN,218
+TYPE_CF,219
+TYPE_FC,220
+TYPE_FF,221
+TYPE_FX,222
+TYPE_OF,223
+TYPE_OR,224
+TYPE_PF,225
+Threshold_Or_Distribution_0_no_1_yes,226
+Threshold_Or_Distribution_Units,227
+Time_Range_One_E2,228
+Time_Range_One_E3,229
+Time_Range_One_E4,230
+Time_Range_Two_E2,231
+Time_Range_Two_E3,232
+Time_Range_Two_E4,233
+Total_Number_Members_Missing,234
+Total_Number_Members_Possible,235
+Total_Number_Members_Used,236
+UseEcmfConventions,237
+Used_Model_LBC,238
+Used_Model_LBC_E2,239
+Used_Model_LBC_E3,240
+Used_Model_LBC_E4,241
+WMO,242
+WRAP,243
+WRAPstr,244
+X1,245
+X1InGridLengths,246
+X2,247
+X2InGridLengths,248
+XR,249
+XRInMetres,250
+Xo,251
+Xp,252
+XpInGridLengths,253
+Y1,254
+Y1InGridLengths,255
+Y2,256
+Y2InGridLengths,257
+YR,258
+YRInMetres,259
+YY,260
+YearOfModelVersion,261
+Yo,262
+Yp,263
+YpInGridLengths,264
+ZLBASE,265
+ZLMULT,266
+_T,267
+_TS,268
+_leg_number,269
+_numberOfValues,270
+accumulationInterval,271
+accuracyMultipliedByFactor,272
+addEmptySection2,273
+addExtraLocalSection,274
+additionalFlagPresent,275
+aerosolType,276
+aerosolbinnumber,277
+aerosolpacking,278
+alternativeRowScanning,279
+altitudeOfTheCameraFromTheEarthSCenterMeasuredInUnitsOfTheEarth,280
+analysisOffsets,281
+angleDivisor,282
+angleMultiplier,283
+angleOfRotation,284
+angleOfRotationInDegrees,285
+angleOfRotationOfProjection,286
+angularPrecision,287
+anoffset,288
+applicationIdentifier,289
+assertion,290
+attributeOfTile,291
+auxiliary,292
+average,293
+averaging1Flag,294
+averaging2Flag,295
+averagingPeriod,296
+avg,297
+azimuthalWidth,298
+backgroundGeneratingProcessIdentifier,299
+backgroundProcess,300
+band,301
+baseAddress,302
+baseDateEPS,303
+baseDateOfThisLeg,304
+baseTimeEPS,305
+baseTimeOfThisLeg,306
+basicAngleOfTheInitialProductionDomain,307
+beginDayTrend1,308
+beginDayTrend2,309
+beginDayTrend3,310
+beginDayTrend4,311
+beginHourTrend1,312
+beginHourTrend2,313
+beginHourTrend3,314
+beginHourTrend4,315
+beginMinuteTrend1,316
+beginMinuteTrend2,317
+beginMinuteTrend3,318
+beginMinuteTrend4,319
+beginMonthTrend1,320
+beginMonthTrend2,321
+beginMonthTrend3,322
+beginMonthTrend4,323
+beginYearTrend1,324
+beginYearTrend2,325
+beginYearTrend3,326
+beginYearTrend4,327
+binaryScaleFactor,328
+bitMapIndicator,329
+bitmap,330
+bitmapPresent,331
+bitmapSectionPresent,332
+bitsPerValue,333
+bitsPerValueAndRepack,334
+boot_edition,335
+bottomLevel,336
+boustrophedonic,337
+boustrophedonicOrdering,338
+bufrDataEncoded,339
+bufrHeaderCentre,340
+bufrHeaderSubCentre,341
+bufrTemplate,342
+bufrdcExpandedDescriptors,343
+calendarIdPresent,344
+calendarIdentification,345
+calendarIdentificationTemplateNumber,346
+cat,347
+categories,348
+categoryType,349
+cavokOrVisibility,350
+ccccIdentifiers,351
+ccsdsBlockSize,352
+ccsdsFlags,353
+ccsdsRsi,354
+ceilingAndVisibilityOK,355
+ceilingAndVisibilityOKTrend1,356
+ceilingAndVisibilityOKTrend2,357
+ceilingAndVisibilityOKTrend3,358
+ceilingAndVisibilityOKTrend4,359
+centralClusterDefinition,360
+centralLongitude,361
+centralLongitudeInMicrodegrees,362
+centre,363
+centreDescription,364
+centreForLocal,365
+centreForTable2,366
+centuryOfAnalysis,367
+centuryOfReference,368
+centuryOfReferenceTimeOfData,369
+cfName,370
+cfNameECMF,371
+cfVarName,372
+cfVarNameECMF,373
+changeDecimalPrecision,374
+changeIndicatorTrend1,375
+changeIndicatorTrend2,376
+changeIndicatorTrend3,377
+changeIndicatorTrend4,378
+changingPrecision,379
+channel,380
+channelNumber,381
+char,382
+charValues,383
+checkInternalVersion,384
+class,385
+classOfAnalysis,386
+climateDateFrom,387
+climateDateTo,388
+climatologicalRegime,389
+cloudsAbbreviation1,390
+cloudsAbbreviation1Trend1,391
+cloudsAbbreviation1Trend2,392
+cloudsAbbreviation1Trend3,393
+cloudsAbbreviation1Trend4,394
+cloudsAbbreviation2,395
+cloudsAbbreviation2Trend1,396
+cloudsAbbreviation2Trend2,397
+cloudsAbbreviation2Trend3,398
+cloudsAbbreviation2Trend4,399
+cloudsAbbreviation3,400
+cloudsAbbreviation3Trend1,401
+cloudsAbbreviation3Trend2,402
+cloudsAbbreviation3Trend3,403
+cloudsAbbreviation3Trend4,404
+cloudsAbbreviation4,405
+cloudsAbbreviation4Trend1,406
+cloudsAbbreviation4Trend2,407
+cloudsAbbreviation4Trend3,408
+cloudsAbbreviation4Trend4,409
+cloudsBase1,410
+cloudsBase1Trend1,411
+cloudsBase1Trend2,412
+cloudsBase1Trend3,413
+cloudsBase1Trend4,414
+cloudsBase2,415
+cloudsBase2Trend1,416
+cloudsBase2Trend2,417
+cloudsBase2Trend3,418
+cloudsBase2Trend4,419
+cloudsBase3,420
+cloudsBase3Trend1,421
+cloudsBase3Trend2,422
+cloudsBase3Trend3,423
+cloudsBase3Trend4,424
+cloudsBase4,425
+cloudsBase4Trend1,426
+cloudsBase4Trend2,427
+cloudsBase4Trend3,428
+cloudsBase4Trend4,429
+cloudsBaseCoded1,430
+cloudsBaseCoded1Trend1,431
+cloudsBaseCoded1Trend2,432
+cloudsBaseCoded1Trend3,433
+cloudsBaseCoded1Trend4,434
+cloudsBaseCoded2,435
+cloudsBaseCoded2Trend1,436
+cloudsBaseCoded2Trend2,437
+cloudsBaseCoded2Trend3,438
+cloudsBaseCoded2Trend4,439
+cloudsBaseCoded3,440
+cloudsBaseCoded3Trend1,441
+cloudsBaseCoded3Trend2,442
+cloudsBaseCoded3Trend3,443
+cloudsBaseCoded3Trend4,444
+cloudsBaseCoded4,445
+cloudsBaseCoded4Trend1,446
+cloudsBaseCoded4Trend2,447
+cloudsBaseCoded4Trend3,448
+cloudsBaseCoded4Trend4,449
+cloudsCode1,450
+cloudsCode1Trend1,451
+cloudsCode1Trend2,452
+cloudsCode1Trend3,453
+cloudsCode1Trend4,454
+cloudsCode2,455
+cloudsCode2Trend1,456
+cloudsCode2Trend2,457
+cloudsCode2Trend3,458
+cloudsCode2Trend4,459
+cloudsCode3,460
+cloudsCode3Trend1,461
+cloudsCode3Trend2,462
+cloudsCode3Trend3,463
+cloudsCode3Trend4,464
+cloudsCode4,465
+cloudsCode4Trend1,466
+cloudsCode4Trend2,467
+cloudsCode4Trend3,468
+cloudsCode4Trend4,469
+cloudsTitle1,470
+cloudsTitle1Trend1,471
+cloudsTitle1Trend2,472
+cloudsTitle1Trend3,473
+cloudsTitle1Trend4,474
+cloudsTitle2,475
+cloudsTitle2Trend1,476
+cloudsTitle2Trend2,477
+cloudsTitle2Trend3,478
+cloudsTitle2Trend4,479
+cloudsTitle3,480
+cloudsTitle3Trend1,481
+cloudsTitle3Trend2,482
+cloudsTitle3Trend3,483
+cloudsTitle3Trend4,484
+cloudsTitle4,485
+cloudsTitle4Trend1,486
+cloudsTitle4Trend2,487
+cloudsTitle4Trend3,488
+cloudsTitle4Trend4,489
+clusterIdentifier,490
+clusterMember1,491
+clusterMember10,492
+clusterMember2,493
+clusterMember3,494
+clusterMember4,495
+clusterMember5,496
+clusterMember6,497
+clusterMember7,498
+clusterMember8,499
+clusterMember9,500
+clusterNumber,501
+clusterSize,502
+clusteringDomain,503
+clusteringMethod,504
+clutterFilterIndicator,505
+cnmc_isac,506
+codeFigure,507
+codeType,508
+codedNumberOfFirstOrderPackedValues,509
+codedNumberOfGroups,510
+codedValues,511
+coefsFirst,512
+coefsSecond,513
+commonBlock,514
+complexPacking,515
+componentIndex,516
+compressedData,517
+computeLaplacianOperator,518
+computeStatistics,519
+conceptDir,520
+conceptsLocalDirAll,521
+conceptsLocalDirECMF,522
+conceptsLocalMarsDirAll,523
+conceptsMasterDir,524
+conceptsMasterMarsDir,525
+consensus,526
+consensusCount,527
+const,528
+constantAntennaElevationAngle,529
+constantFieldHalfByte,530
+constituentType,531
+controlForecastCluster,532
+coordAveraging0,533
+coordAveraging1,534
+coordAveraging2,535
+coordAveraging3,536
+coordAveragingTims,537
+coordinate1End,538
+coordinate1Flag,539
+coordinate1Start,540
+coordinate2End,541
+coordinate2Flag,542
+coordinate2Start,543
+coordinate3Flag,544
+coordinate3OfFirstGridPoint,545
+coordinate3OfLastGridPoint,546
+coordinate4Flag,547
+coordinate4OfFirstGridPoint,548
+coordinate4OfLastGridPoint,549
+coordinateFlag1,550
+coordinateFlag2,551
+coordinateIndexNumber,552
+coordinatesPresent,553
+core,554
+corr1Data,555
+corr2Data,556
+corr3Data,557
+corr4Data,558
+correction,559
+correction1,560
+correction1Part,561
+correction2,562
+correction2Part,563
+correction3,564
+correction3Part,565
+correction4,566
+correction4Part,567
+count,568
+countOfGroupLengths,569
+countOfICEFieldsUsed,570
+countTotal,571
+country,572
+crcrlf,573
+createNewData,574
+data,575
+dataAccessors,576
+dataCategory,577
+dataDate,578
+dataFlag,579
+dataKeys,580
+dataLength,581
+dataOrigin,582
+dataRepresentation,583
+dataRepresentationTemplateNumber,584
+dataRepresentationType,585
+dataSelection,586
+dataStream,587
+dataSubCategory,588
+dataTime,589
+dataType,590
+dataValues,591
+date,592
+dateOfAnalysis,593
+dateOfForecastRun,594
+dateOfIceFieldUsed,595
+dateOfReference,596
+dateOfSSTFieldUsed,597
+dateSSTFieldUsed,598
+dateTime,599
+datumSize,600
+day,601
+dayOfAnalysis,602
+dayOfEndOfOverallTimeInterval,603
+dayOfReference,604
+dayOfTheYearDate,605
+decimalPrecision,606
+decimalScaleFactor,607
+defaultFaFieldName,608
+defaultFaLevelName,609
+defaultFaModelName,610
+defaultName,611
+defaultParameter,612
+defaultSequence,613
+defaultShortName,614
+defaultTypeOfLevel,615
+definitionFilesVersion,616
+deleteCalendarId,617
+deleteExtraLocalSection,618
+deleteLocalDefinition,619
+deletePV,620
+derivedForecast,621
+dewPointTemperature,622
+diagnostic,623
+diagnosticNumber,624
+dimension,625
+dimensionNumber,626
+dimensionType,627
+direction,628
+directionNumber,629
+directionOfVariation,630
+directionScalingFactor,631
+dirty_statistics,632
+disableGrib1LocalSection,633
+discipline,634
+distanceFromTubeToEnsembleMean,635
+distinctLatitudes,636
+distinctLongitudes,637
+doExtractArea,638
+doExtractDateTime,639
+doExtractSubsets,640
+domain,641
+dummy,642
+dummy1,643
+dummy2,644
+dummyc,645
+dx,646
+dy,647
+earthIsOblate,648
+earthMajorAxis,649
+earthMajorAxisInMetres,650
+earthMinorAxis,651
+earthMinorAxisInMetres,652
+eastLongitudeOfCluster,653
+eastLongitudeOfDomainOfTubing,654
+easternLongitudeOfClusterDomain,655
+easternLongitudeOfDomain,656
+ed,657
+edition,658
+editionNumber,659
+efiOrder,660
+eight,661
+elementsTable,662
+elevation,663
+eleven,664
+endDayTrend1,665
+endDayTrend2,666
+endDayTrend3,667
+endDayTrend4,668
+endDescriptors,669
+endGridDefinition,670
+endHourTrend1,671
+endHourTrend2,672
+endHourTrend3,673
+endHourTrend4,674
+endMark,675
+endMinuteTrend1,676
+endMinuteTrend2,677
+endMinuteTrend3,678
+endMinuteTrend4,679
+endMonthTrend1,680
+endMonthTrend2,681
+endMonthTrend3,682
+endMonthTrend4,683
+endOfFileAddress,684
+endOfHeadersMarker,685
+endOfInterval,686
+endOfMessage,687
+endOfProduct,688
+endOfRange,689
+endStep,690
+endStepInHours,691
+endTimeStep,692
+endYearTrend1,693
+endYearTrend2,694
+endYearTrend3,695
+endYearTrend4,696
+energyNorm,697
+enorm,698
+ensembleForecastNumbers,699
+ensembleForecastNumbersList,700
+ensembleSize,701
+ensembleStandardDeviation,702
+eps,703
+epsContinous,704
+epsPoint,705
+epsStatistics,706
+epsStatisticsContinous,707
+epsStatisticsPoint,708
+error,709
+expandBy,710
+expandedAbbreviations,711
+expandedCodes,712
+expandedCrex_scales,713
+expandedCrex_units,714
+expandedCrex_widths,715
+expandedDescriptors,716
+expandedNames,717
+expandedOriginalCodes,718
+expandedOriginalReferences,719
+expandedOriginalScales,720
+expandedOriginalWidths,721
+expandedTypes,722
+expandedUnits,723
+experimentVersionNumber,724
+experimentVersionNumber1,725
+experimentVersionNumber2,726
+experimentVersionNumberOfAnalysis,727
+expoffset,728
+expver,729
+extendedFlag,730
+extraDim,731
+extraDimensionPresent,732
+extraLocalSectionNumber,733
+extraLocalSectionPresent,734
+extraValues,735
+extractAreaEastLongitude,736
+extractAreaLatitudeRank,737
+extractAreaLongitudeRank,738
+extractAreaNorthLatitude,739
+extractAreaSouthLatitude,740
+extractAreaWestLongitude,741
+extractDateTimeDayEnd,742
+extractDateTimeDayRank,743
+extractDateTimeDayStart,744
+extractDateTimeHourEnd,745
+extractDateTimeHourRank,746
+extractDateTimeHourStart,747
+extractDateTimeMinuteEnd,748
+extractDateTimeMinuteRank,749
+extractDateTimeMinuteStart,750
+extractDateTimeMonthEnd,751
+extractDateTimeMonthRank,752
+extractDateTimeMonthStart,753
+extractDateTimeSecondEnd,754
+extractDateTimeSecondRank,755
+extractDateTimeSecondStart,756
+extractDateTimeYearEnd,757
+extractDateTimeYearRank,758
+extractDateTimeYearStart,759
+extractSubset,760
+extractSubsetIntervalEnd,761
+extractSubsetIntervalStart,762
+extractSubsetList,763
+extractedAreaNumberOfSubsets,764
+extractedDateTimeNumberOfSubsets,765
+extremeClockwiseWindDirection,766
+extremeCounterClockwiseWindDirection,767
+extremeValuesRVR1,768
+extremeValuesRVR2,769
+extremeValuesRVR3,770
+extremeValuesRVR4,771
+faFieldName,772
+faLevelName,773
+faModelName,774
+false,775
+falseEasting,776
+falseNorthing,777
+fcmonth,778
+fcperiod,779
+fgDate,780
+fgTime,781
+file,782
+fileConsistencyFlags,783
+firstDimension,784
+firstDimensionCoordinateValueDefinition,785
+firstDimensionPhysicalSignificance,786
+firstLatitude,787
+firstLatitudeInDegrees,788
+firstMonthUsedToBuildClimateMonth1,789
+firstMonthUsedToBuildClimateMonth2,790
+firstOrderValues,791
+flag,792
+flagForAnyFurtherInformation,793
+flagForIrregularGridCoordinateList,794
+flagForNormalOrStaggeredGrid,795
+flagShowingPostAuxiliaryArrayInUse,796
+flags,797
+floatVal,798
+floatValues,799
+forecastLeadTime,800
+forecastMonth,801
+forecastOrSingularVectorNumber,802
+forecastPeriod,803
+forecastPeriodFrom,804
+forecastPeriodTo,805
+forecastProbabilityNumber,806
+forecastSteps,807
+forecastTime,808
+forecastperiod,809
+formatVersionMajorNumber,810
+formatVersionMinorNumber,811
+freeFormData,812
+frequency,813
+frequencyNumber,814
+frequencyScalingFactor,815
+functionCode,816
+g,817
+g1conceptsLocalDirAll,818
+g1conceptsMasterDir,819
+g2grid,820
+gaussianGridName,821
+genVertHeightCoords,822
+generalExtended2ordr,823
+generatingProcessIdentificationNumber,824
+generatingProcessIdentifier,825
+getNumberOfValues,826
+gg,827
+global,828
+globalDomain,829
+grib1divider,830
+grib2LocalSectionNumber,831
+grib2LocalSectionPresent,832
+grib2divider,833
+gribMasterTablesVersionNumber,834
+gribTablesVersionNo,835
+grid,836
+gridCoordinate,837
+gridDefinition,838
+gridDefinitionDescription,839
+gridDefinitionSection,840
+gridDefinitionTemplateNumber,841
+gridDescriptionSectionPresent,842
+gridName,843
+gridPointPosition,844
+gridType,845
+groupLengths,846
+groupSplitting,847
+groupSplittingMethodUsed,848
+groupWidth,849
+groupWidths,850
+gts_CCCC,851
+gts_TTAAii,852
+gts_ddhh00,853
+gts_header,854
+halfByte,855
+hdate,856
+headersOnly,857
+heightLevelName,858
+heightOrPressureOfLevel,859
+heightPressureEtcOfLevels,860
+hideThis,861
+horizontalCoordinateDefinition,862
+horizontalCoordinateSupplement,863
+horizontalDimensionProcessed,864
+hour,865
+hourOfAnalysis,866
+hourOfEndOfOverallTimeInterval,867
+hourOfReference,868
+hoursAfterDataCutoff,869
+hoursAfterReferenceTimeOfDataCutoff,870
+hundred,871
+iDirectionIncrement,872
+iDirectionIncrementGiven,873
+iDirectionIncrementGridLength,874
+iDirectionIncrementInDegrees,875
+iIncrement,876
+iScansNegatively,877
+iScansPositively,878
+ident,879
+identificationNumber,880
+identificationOfOriginatingGeneratingCentre,881
+identifier,882
+ieeeFloats,883
+ifsParam,884
+ijDirectionIncrementGiven,885
+implementationDateOfModelCycle,886
+incrementOfLengths,887
+indicatorOfParameter,888
+indicatorOfTypeOfLevel,889
+indicatorOfUnitForTimeIncrement,890
+indicatorOfUnitForTimeRange,891
+indicatorOfUnitOfTimeRange,892
+inputDataPresentIndicator,893
+inputDelayedDescriptorReplicationFactor,894
+inputExtendedDelayedDescriptorReplicationFactor,895
+inputShortDelayedDescriptorReplicationFactor,896
+instrument,897
+instrumentIdentifier,898
+instrumentType,899
+integerPointValues,900
+integerScaleFactor,901
+integerScalingFactorAppliedToDirections,902
+integerScalingFactorAppliedToFrequencies,903
+integerValues,904
+internalVersion,905
+internationalDataSubCategory,906
+interpretationOfNumberOfPoints,907
+intervalBetweenTimes,908
+isAccumulation,909
+isAuto,910
+isCavok,911
+isCavokTrend1,912
+isCavokTrend2,913
+isCavokTrend3,914
+isCavokTrend4,915
+isConstant,916
+isCorrection,917
+isEPS,918
+isEps,919
+isHindcast,920
+isOctahedral,921
+isSatellite,922
+isSatelliteType,923
+isSens,924
+is_rotated_grid,925
+is_s2s,926
+is_tigge,927
+is_uerra,928
+isectionNumber2,929
+isectionNumber3,930
+isectionNumber4,931
+isotopeIdentificationNumber,932
+iteration,933
+iterationNumber,934
+jDirectionIncrement,935
+jDirectionIncrementGiven,936
+jDirectionIncrementGridLength,937
+jDirectionIncrementInDegrees,938
+jIncrement,939
+jPointsAreConsecutive,940
+jScansPositively,941
+julianDay,942
+keyData,943
+keyMore,944
+keySat,945
+kindOfProduct,946
+kurt,947
+kurtosis,948
+lBB,949
+landtype,950
+laplacianOperator,951
+laplacianOperatorIsSet,952
+laplacianScalingFactor,953
+laplacianScalingFactorUnset,954
+lastMonthUsedToBuildClimateMonth1,955
+lastMonthUsedToBuildClimateMonth2,956
+latLonValues,957
+latitude,958
+latitudeFirstInDegrees,959
+latitudeLastInDegrees,960
+latitudeLongitudeValues,961
+latitudeOfCenterPoint,962
+latitudeOfCenterPointInDegrees,963
+latitudeOfCentralPointInClusterDomain,964
+latitudeOfFirstGridPoint,965
+latitudeOfFirstGridPointInDegrees,966
+latitudeOfIcosahedronPole,967
+latitudeOfLastGridPoint,968
+latitudeOfLastGridPointInDegrees,969
+latitudeOfNorthWestCornerOfArea,970
+latitudeOfReferencePoint,971
+latitudeOfReferencePointInDegrees,972
+latitudeOfSouthEastCornerOfArea,973
+latitudeOfSouthernPole,974
+latitudeOfSouthernPoleInDegrees,975
+latitudeOfStretchingPole,976
+latitudeOfStretchingPoleInDegrees,977
+latitudeOfSubSatellitePoint,978
+latitudeOfSubSatellitePointInDegrees,979
+latitudeOfTangencyPoint,980
+latitudeOfThePoleOfStretching,981
+latitudeOfThePolePoint,982
+latitudeOfThePolePointInDegrees,983
+latitudeOfTheSouthernPoleOfProjection,984
+latitudeSexagesimal,985
+latitudeWhereDxAndDyAreSpecified,986
+latitudeWhereDxAndDyAreSpecifiedInDegrees,987
+latitudes,988
+latitudesList,989
+latitudinalDirectionGridLength,990
+leadtime,991
+legBaseDate,992
+legBaseTime,993
+legNumber,994
+lengthDescriptors,995
+lengthIncrementForTheGroupLengths,996
+lengthOf4DvarWindow,997
+lengthOfHeaders,998
+lengthOfMessage,999
+lengthOfTimeRange,1000
+lev,1001
+level,1002
+levelIndicator,1003
+levelType,1004
+levelist,1005
+levels,1006
+levtype,1007
+libraryVersion,1008
+listMembersMissing,1009
+listMembersMissing2,1010
+listMembersMissing3,1011
+listMembersMissing4,1012
+listMembersUsed,1013
+listMembersUsed2,1014
+listMembersUsed3,1015
+listMembersUsed4,1016
+listOfContributingSpectralBands,1017
+listOfDistributionFunctionParameter,1018
+listOfEnsembleForecastNumbers,1019
+listOfModelIdentifiers,1020
+listOfParametersUsedForClustering,1021
+listOfScaledFrequencies,1022
+local,1023
+localDay,1024
+localDecimalScaleFactor,1025
+localDefNumberOne,1026
+localDefNumberTwo,1027
+localDefinition,1028
+localDefinitionNumber,1029
+localDir,1030
+localExtensionPadding,1031
+localFlag,1032
+localFlagLatestVersion,1033
+localHour,1034
+localLatitude,1035
+localLatitude1,1036
+localLatitude2,1037
+localLongitude,1038
+localLongitude1,1039
+localLongitude2,1040
+localMinute,1041
+localMonth,1042
+localNumberOfObservations,1043
+localSecond,1044
+localSection,1045
+localSectionPresent,1046
+localTablesVersion,1047
+localTablesVersionNumber,1048
+localUsePresent,1049
+localYear,1050
+local_padding,1051
+local_use,1052
+logTransform,1053
+longitude,1054
+longitudeFirstInDegrees,1055
+longitudeLastInDegrees,1056
+longitudeOfCenterPoint,1057
+longitudeOfCenterPointInDegrees,1058
+longitudeOfCentralPointInClusterDomain,1059
+longitudeOfFirstDiamondCenterLine,1060
+longitudeOfFirstDiamondCenterLineInDegrees,1061
+longitudeOfFirstGridPoint,1062
+longitudeOfFirstGridPointInDegrees,1063
+longitudeOfIcosahedronPole,1064
+longitudeOfLastGridPoint,1065
+longitudeOfLastGridPointInDegrees,1066
+longitudeOfNorthWestCornerOfArea,1067
+longitudeOfReferencePoint,1068
+longitudeOfReferencePointInDegrees,1069
+longitudeOfSouthEastCornerOfArea,1070
+longitudeOfSouthernPole,1071
+longitudeOfSouthernPoleInDegrees,1072
+longitudeOfStretchingPole,1073
+longitudeOfStretchingPoleInDegrees,1074
+longitudeOfSubSatellitePoint,1075
+longitudeOfSubSatellitePointInDegrees,1076
+longitudeOfTangencyPoint,1077
+longitudeOfThePoleOfStretching,1078
+longitudeOfThePolePoint,1079
+longitudeOfThePolePointInDegrees,1080
+longitudeOfTheSouthernPoleOfProjection,1081
+longitudeSexagesimal,1082
+longitudes,1083
+longitudesList,1084
+longitudinalDirectionGridLength,1085
+lowerLimit,1086
+lowerRange,1087
+lowerThreshold,1088
+lowerThresholdValue,1089
+ls_labeling,1090
+m,1091
+mAngleMultiplier,1092
+mBasicAngle,1093
+mars,1094
+marsClass,1095
+marsClass1,1096
+marsClass2,1097
+marsDir,1098
+marsDomain,1099
+marsEndStep,1100
+marsExperimentOffset,1101
+marsExpver,1102
+marsForecastMonth,1103
+marsGrid,1104
+marsIdent,1105
+marsKeywords,1106
+marsKeywords1,1107
+marsLamModel,1108
+marsLatitude,1109
+marsLevel,1110
+marsLevelist,1111
+marsLongitude,1112
+marsModel,1113
+marsParam,1114
+marsQuantile,1115
+marsRange,1116
+marsStartStep,1117
+marsStep,1118
+marsStream,1119
+marsStream1,1120
+marsStream2,1121
+marsType,1122
+marsType1,1123
+marsType2,1124
+mars_labeling,1125
+mask,1126
+masterDir,1127
+masterTableNumber,1128
+masterTablesVersionNumber,1129
+matchAerosolBinNumber,1130
+matchAerosolPacking,1131
+matchLandType,1132
+matchSort,1133
+matchTimeRepres,1134
+matrixBitmapsPresent,1135
+matrixOfValues,1136
+max,1137
+maximum,1138
+md5Data,1139
+md5DataSection,1140
+md5GridSection,1141
+md5Headers,1142
+md5Section1,1143
+md5Section2,1144
+md5Section3,1145
+md5Section4,1146
+md5Section5,1147
+md5Section6,1148
+md5Section7,1149
+md5Structure,1150
+meanRVR1,1151
+meanRVR2,1152
+meanRVR3,1153
+meanRVR4,1154
+meanSize,1155
+meanValueRVR1,1156
+meanValueRVR2,1157
+meanValueRVR3,1158
+meanValueRVR4,1159
+meaningOfVerticalCoordinate,1160
+messageLength,1161
+metadata,1162
+method,1163
+methodNumber,1164
+million,1165
+min,1166
+minimum,1167
+minute,1168
+minuteOfAnalysis,1169
+minuteOfEndOfOverallTimeInterval,1170
+minuteOfReference,1171
+minutesAfterDataCutoff,1172
+minutesAfterReferenceTimeOfDataCutoff,1173
+missingDataFlag,1174
+missingValue,1175
+missingValueManagement,1176
+missingValueManagementUsed,1177
+mixedCoordinateDefinition,1178
+mixedCoordinateFieldFlag,1179
+modeNumber,1180
+model,1181
+modelErrorType,1182
+modelIdentifier,1183
+modelName,1184
+modelVersionDate,1185
+modelVersionTime,1186
+molarMass,1187
+month,1188
+monthOfAnalysis,1189
+monthOfEndOfOverallTimeInterval,1190
+monthOfReference,1191
+monthlyVerificationDate,1192
+multiplicationFactorForLatLong,1193
+mybits,1194
+n,1195
+n2,1196
+n3,1197
+na,1198
+name,1199
+nameECMF,1200
+nameOfFirstFixedSurface,1201
+nameOfSecondFixedSurface,1202
+names,1203
+nd,1204
+neitherPresent,1205
+nlev,1206
+nnn,1207
+normAtFinalTime,1208
+normAtInitialTime,1209
+normal,1210
+northLatitudeOfCluster,1211
+northLatitudeOfDomainOfTubing,1212
+northWestLatitudeOfLPOArea,1213
+northWestLatitudeOfVerficationArea,1214
+northWestLongitudeOfLPOArea,1215
+northWestLongitudeOfVerficationArea,1216
+northernLatitudeOfClusterDomain,1217
+northernLatitudeOfDomain,1218
+nosigPresent,1219
+notDecoded,1220
+nt,1221
+number,1222
+numberInHorizontalCoordinates,1223
+numberInMixedCoordinateDefinition,1224
+numberInTheAuxiliaryArray,1225
+numberInTheGridCoordinateList,1226
+numberIncludedInAverage,1227
+numberMissingFromAveragesOrAccumulations,1228
+numberOfAnalysis,1229
+numberOfBits,1230
+numberOfBitsContainingEachPackedValue,1231
+numberOfBitsForScaledGroupLengths,1232
+numberOfBitsUsedForTheGroupWidths,1233
+numberOfBitsUsedForTheScaledGroupLengths,1234
+numberOfBytesInLocalDefinition,1235
+numberOfBytesOfFreeFormatData,1236
+numberOfBytesPerInteger,1237
+numberOfCategories,1238
+numberOfCharacters,1239
+numberOfChars,1240
+numberOfClusterHighResolution,1241
+numberOfClusterLowResolution,1242
+numberOfClusters,1243
+numberOfCodedValues,1244
+numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction,1245
+numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction,1246
+numberOfColumns,1247
+numberOfComponents,1248
+numberOfContributingSpectralBands,1249
+numberOfControlForecastTube,1250
+numberOfCoordinatesValues,1251
+numberOfDataBinsAlongRadials,1252
+numberOfDataMatrices,1253
+numberOfDataPoints,1254
+numberOfDataValues,1255
+numberOfDaysInClimateSamplingWindow,1256
+numberOfDiamonds,1257
+numberOfDirections,1258
+numberOfDistributionFunctionParameters,1259
+numberOfEffectiveValues,1260
+numberOfFloats,1261
+numberOfForcasts,1262
+numberOfForecastsInCluster,1263
+numberOfForecastsInEnsemble,1264
+numberOfForecastsInTheCluster,1265
+numberOfForecastsInTube,1266
+numberOfFrequencies,1267
+numberOfGridInReference,1268
+numberOfGridUsed,1269
+numberOfGroups,1270
+numberOfGroupsOfDataValues,1271
+numberOfHorizontalPoints,1272
+numberOfIntegers,1273
+numberOfInts,1274
+numberOfIterations,1275
+numberOfLocalDefinitions,1276
+numberOfLogicals,1277
+numberOfMembersInCluster,1278
+numberOfMissing,1279
+numberOfMissingInStatisticalProcess,1280
+numberOfMissingValues,1281
+numberOfModeOfDistribution,1282
+numberOfModels,1283
+numberOfOctectsForNumberOfPoints,1284
+numberOfOctetsExtraDescriptors,1285
+numberOfOperationalForecastTube,1286
+numberOfPackedValues,1287
+numberOfParallelsBetweenAPoleAndTheEquator,1288
+numberOfParametersUsedForClustering,1289
+numberOfPartitions,1290
+numberOfPoints,1291
+numberOfPointsAlongAMeridian,1292
+numberOfPointsAlongAParallel,1293
+numberOfPointsAlongFirstAxis,1294
+numberOfPointsAlongSecondAxis,1295
+numberOfPointsAlongTheXAxis,1296
+numberOfPointsAlongTheYAxis,1297
+numberOfPointsAlongXAxis,1298
+numberOfPointsAlongYAxis,1299
+numberOfPointsUsed,1300
+numberOfPressureLevelsUsedForClustering,1301
+numberOfRadarSitesUsed,1302
+numberOfRadials,1303
+numberOfReforecastYearsInModelClimate,1304
+numberOfRemaininChars,1305
+numberOfRepresentativeMember,1306
+numberOfReservedBytes,1307
+numberOfRows,1308
+numberOfSecondOrderPackedValues,1309
+numberOfSection,1310
+numberOfSingularVectorsComputed,1311
+numberOfSingularVectorsEvolved,1312
+numberOfStepsUsedForClustering,1313
+numberOfSubsets,1314
+numberOfTensOfThousandsOfYearsOfOffset,1315
+numberOfTimeRange,1316
+numberOfTimeSteps,1317
+numberOfUnexpandedDescriptors,1318
+numberOfUnusedBitsAtEndOfSection3,1319
+numberOfUsedSpatialTiles,1320
+numberOfUsedTileAttributes,1321
+numberOfVGridUsed,1322
+numberOfValues,1323
+numberOfVerticalCoordinateValues,1324
+numberOfVerticalGridDescriptors,1325
+numberOfVerticalPoints,1326
+numberingOrderOfDiamonds,1327
+numericValues,1328
+observationDiagnostic,1329
+observationGeneratingProcessIdentifier,1330
+observationType,1331
+observedData,1332
+obstype,1333
+oceanAtmosphereCoupling,1334
+oceanStream,1335
+octetAtWichPackedDataBegins,1336
+offset,1337
+offsetAfterBitmap,1338
+offsetAfterCentreLocalSection,1339
+offsetAfterData,1340
+offsetAfterLocalSection,1341
+offsetAfterPadding,1342
+offsetBBitmap,1343
+offsetBSection5,1344
+offsetBSection6,1345
+offsetBeforeBitmap,1346
+offsetBeforeData,1347
+offsetBeforePL,1348
+offsetBeforePV,1349
+offsetDescriptors,1350
+offsetEndSection4,1351
+offsetFreeFormData,1352
+offsetFromOriginToInnerBound,1353
+offsetFromReferenceOfFirstTime,1354
+offsetICEFieldsUsed,1355
+offsetSection0,1356
+offsetSection1,1357
+offsetSection2,1358
+offsetSection3,1359
+offsetSection4,1360
+offsetSection5,1361
+offsetSection6,1362
+offsetSection7,1363
+offsetSection8,1364
+offsetToEndOf4DvarWindow,1365
+offsetValuesBy,1366
+one,1367
+oneConstant,1368
+oneMillionConstant,1369
+oneMinuteMeanMaximumRVR1,1370
+oneMinuteMeanMaximumRVR2,1371
+oneMinuteMeanMaximumRVR3,1372
+oneMinuteMeanMaximumRVR4,1373
+oneMinuteMeanMinimumRVR1,1374
+oneMinuteMeanMinimumRVR2,1375
+oneMinuteMeanMinimumRVR3,1376
+oneMinuteMeanMinimumRVR4,1377
+oneThousand,1378
+oper,1379
+operStream,1380
+operatingMode,1381
+operationalForecastCluster,1382
+optimisationTime,1383
+optionalData,1384
+opttime,1385
+orderOfSPD,1386
+orderOfSpatialDifferencing,1387
+orientationOfTheGrid,1388
+orientationOfTheGridInDegrees,1389
+origin,1390
+originalParameterNumber,1391
+originalParameterTableNumber,1392
+originalSubCentreIdentifier,1393
+originatingCentre,1394
+originatingCentreOfAnalysis,1395
+originatingCentrer,1396
+override_large_constant_fields,1397
+pack,1398
+packedValues,1399
+packingError,1400
+packingType,1401
+padding,1402
+padding_grid1_1,1403
+padding_grid1_2,1404
+padding_grid3_1,1405
+padding_grid4_1,1406
+padding_grid50_1,1407
+padding_grid5_1,1408
+padding_grid90_1,1409
+padding_loc10_1,1410
+padding_loc13_1,1411
+padding_loc13_2,1412
+padding_loc13_3,1413
+padding_loc13_4,1414
+padding_loc13_5,1415
+padding_loc14_1,1416
+padding_loc14_2,1417
+padding_loc15_1,1418
+padding_loc16_1,1419
+padding_loc17_2,1420
+padding_loc18_1,1421
+padding_loc18_2,1422
+padding_loc190_1,1423
+padding_loc191_1,1424
+padding_loc191_2,1425
+padding_loc191_3,1426
+padding_loc192_1,1427
+padding_loc19_2,1428
+padding_loc20_1,1429
+padding_loc21_1,1430
+padding_loc23_1,1431
+padding_loc244_1,1432
+padding_loc244_2,1433
+padding_loc244_3,1434
+padding_loc245_1,1435
+padding_loc245_2,1436
+padding_loc26_1,1437
+padding_loc27_1,1438
+padding_loc27_2,1439
+padding_loc28_1,1440
+padding_loc29_1,1441
+padding_loc29_2,1442
+padding_loc29_3,1443
+padding_loc2_1,1444
+padding_loc2_2,1445
+padding_loc30_1,1446
+padding_loc30_2,1447
+padding_loc37_1,1448
+padding_loc37_2,1449
+padding_loc38_1,1450
+padding_loc3_1,1451
+padding_loc4_2,1452
+padding_loc50_1,1453
+padding_loc5_1,1454
+padding_loc6_1,1455
+padding_loc7_1,1456
+padding_loc9_1,1457
+padding_loc9_2,1458
+padding_local11_1,1459
+padding_local1_1,1460
+padding_local1_31,1461
+padding_local40_1,1462
+padding_local_35,1463
+padding_local_7_1,1464
+padding_sec1_loc,1465
+padding_sec2_1,1466
+padding_sec2_2,1467
+padding_sec2_3,1468
+padding_sec3_1,1469
+padding_sec4_1,1470
+paleontologicalOffset,1471
+param,1472
+paramId,1473
+paramIdECMF,1474
+parameter,1475
+parameterCategory,1476
+parameterCode,1477
+parameterIndicator,1478
+parameterName,1479
+parameterNumber,1480
+parameterUnits,1481
+parameters,1482
+parametersVersion,1483
+partitionItems,1484
+partitionNumber,1485
+partitionTable,1486
+partitions,1487
+pastTendencyRVR1,1488
+pastTendencyRVR2,1489
+pastTendencyRVR3,1490
+pastTendencyRVR4,1491
+patch_precip_fp,1492
+pentagonalResolutionParameterJ,1493
+pentagonalResolutionParameterK,1494
+pentagonalResolutionParameterM,1495
+percentileValue,1496
+periodOfTime,1497
+periodOfTimeIntervals,1498
+perturbationNumber,1499
+perturbedType,1500
+phase,1501
+physicalFlag1,1502
+physicalFlag2,1503
+physicalMeaningOfVerticalCoordinate,1504
+pl,1505
+platform,1506
+plusOneinOrdersOfSPD,1507
+points,1508
+postAuxiliary,1509
+postAuxiliaryArrayPresent,1510
+powerOfTenUsedToScaleClimateWeight,1511
+preBitmapValues,1512
+preProcessingParameter,1513
+precision,1514
+precisionOfTheUnpackedSubset,1515
+predefined_grid,1516
+predefined_grid_values,1517
+present,1518
+presentTrend1,1519
+presentTrend2,1520
+presentTrend3,1521
+presentTrend4,1522
+presentWeather1Present,1523
+presentWeather1PresentTrend1,1524
+presentWeather1PresentTrend2,1525
+presentWeather1PresentTrend3,1526
+presentWeather1PresentTrend4,1527
+presentWeather2Present,1528
+presentWeather2PresentTrend1,1529
+presentWeather2PresentTrend2,1530
+presentWeather2PresentTrend3,1531
+presentWeather2PresentTrend4,1532
+presentWeather3Present,1533
+presentWeather3PresentTrend1,1534
+presentWeather3PresentTrend2,1535
+presentWeather3PresentTrend3,1536
+presentWeather3PresentTrend4,1537
+pressureLevel,1538
+pressureUnits,1539
+primaryBitmap,1540
+primaryMissingValue,1541
+primaryMissingValueSubstitute,1542
+probContinous,1543
+probPoint,1544
+probProductDefinition,1545
+probabilityType,1546
+probabilityTypeName,1547
+process,1548
+product,1549
+productDefinition,1550
+productDefinitionTemplateNumber,1551
+productDefinitionTemplateNumberInternal,1552
+productIdentifier,1553
+productType,1554
+productionStatusOfProcessedData,1555
+projectionCenterFlag,1556
+projectionCentreFlag,1557
+pv,1558
+pvlLocation,1559
+qfe,1560
+qfePresent,1561
+qfeUnits,1562
+qnh,1563
+qnhAPresent,1564
+qnhPresent,1565
+qnhUnits,1566
+qualityControl,1567
+qualityControlIndicator,1568
+quantile,1569
+radialAngularSpacing,1570
+radials,1571
+radius,1572
+radiusInMetres,1573
+radiusOfCentralCluster,1574
+radiusOfClusterDomain,1575
+radiusOfTheEarth,1576
+range,1577
+rangeBinSpacing,1578
+rdbSubtype,1579
+rdbType,1580
+rdb_key,1581
+rdbtime,1582
+rdbtimeDay,1583
+rdbtimeHour,1584
+rdbtimeMinute,1585
+rdbtimeMonth,1586
+rdbtimeSecond,1587
+rdbtimeYear,1588
+realPart,1589
+realPartOf00,1590
+recentWeather,1591
+recentWeatherTry,1592
+rectime,1593
+rectimeDay,1594
+rectimeHour,1595
+rectimeMinute,1596
+rectimeSecond,1597
+reducedGrid,1598
+refdate,1599
+reference,1600
+referenceDate,1601
+referenceForGroupLengths,1602
+referenceForGroupWidths,1603
+referenceOfLengths,1604
+referenceOfWidths,1605
+referenceReflectivityForEchoTop,1606
+referenceStep,1607
+referenceValue,1608
+referenceValueError,1609
+reflectivityCalibrationConstant,1610
+remarkPresent,1611
+reportType,1612
+representationMode,1613
+representationType,1614
+representativeMember,1615
+reserved,1616
+reserved1,1617
+reservedNeedNotBePresent,1618
+reservedOctet,1619
+reservedSection2,1620
+reservedSection3,1621
+reservedSection4,1622
+resolutionAndComponentFlags,1623
+resolutionAndComponentFlags1,1624
+resolutionAndComponentFlags2,1625
+resolutionAndComponentFlags3,1626
+resolutionAndComponentFlags4,1627
+resolutionAndComponentFlags6,1628
+resolutionAndComponentFlags7,1629
+resolutionAndComponentFlags8,1630
+rootGroupObjectHeaderAddress,1631
+rootTablesDir,1632
+roundedMarsLatitude,1633
+roundedMarsLevelist,1634
+roundedMarsLongitude,1635
+runwayBrakingActionState1,1636
+runwayBrakingActionState2,1637
+runwayBrakingActionState3,1638
+runwayBrakingActionState4,1639
+runwayDepositCodeState1,1640
+runwayDepositCodeState2,1641
+runwayDepositCodeState3,1642
+runwayDepositCodeState4,1643
+runwayDepositState1,1644
+runwayDepositState2,1645
+runwayDepositState3,1646
+runwayDepositState4,1647
+runwayDepthOfDepositCodeState1,1648
+runwayDepthOfDepositCodeState2,1649
+runwayDepthOfDepositCodeState3,1650
+runwayDepthOfDepositCodeState4,1651
+runwayDepthOfDepositState1,1652
+runwayDepthOfDepositState2,1653
+runwayDepthOfDepositState3,1654
+runwayDepthOfDepositState4,1655
+runwayDesignatorRVR1,1656
+runwayDesignatorRVR2,1657
+runwayDesignatorRVR3,1658
+runwayDesignatorRVR4,1659
+runwayDesignatorState1,1660
+runwayDesignatorState2,1661
+runwayDesignatorState3,1662
+runwayDesignatorState4,1663
+runwayExtentOfContaminationCodeState1,1664
+runwayExtentOfContaminationCodeState2,1665
+runwayExtentOfContaminationCodeState3,1666
+runwayExtentOfContaminationCodeState4,1667
+runwayExtentOfContaminationState1,1668
+runwayExtentOfContaminationState2,1669
+runwayExtentOfContaminationState3,1670
+runwayExtentOfContaminationState4,1671
+runwayFrictionCodeValueState1,1672
+runwayFrictionCodeValueState2,1673
+runwayFrictionCodeValueState3,1674
+runwayFrictionCodeValueState4,1675
+runwayFrictionCoefficientCodeState1,1676
+runwayFrictionCoefficientCodeState2,1677
+runwayFrictionCoefficientCodeState3,1678
+runwayFrictionCoefficientCodeState4,1679
+runwayFrictionCoefficientState1,1680
+runwayFrictionCoefficientState2,1681
+runwayFrictionCoefficientState3,1682
+runwayFrictionCoefficientState4,1683
+runwaySideCodeState1,1684
+runwaySideCodeState2,1685
+runwaySideCodeState3,1686
+runwaySideCodeState4,1687
+runwayState,1688
+sampleSizeOfModelClimate,1689
+satelliteID,1690
+satelliteIdentifier,1691
+satelliteNumber,1692
+satelliteSeries,1693
+scaleFactorAtReferencePoint,1694
+scaleFactorOfCentralWaveNumber,1695
+scaleFactorOfDistanceFromEnsembleMean,1696
+scaleFactorOfDistributionFunctionParameter,1697
+scaleFactorOfEarthMajorAxis,1698
+scaleFactorOfEarthMinorAxis,1699
+scaleFactorOfFirstFixedSurface,1700
+scaleFactorOfFirstSize,1701
+scaleFactorOfFirstWavelength,1702
+scaleFactorOfLowerLimit,1703
+scaleFactorOfMajorAxisOfOblateSpheroidEarth,1704
+scaleFactorOfMinorAxisOfOblateSpheroidEarth,1705
+scaleFactorOfRadiusOfSphericalEarth,1706
+scaleFactorOfSecondFixedSurface,1707
+scaleFactorOfSecondSize,1708
+scaleFactorOfSecondWavelength,1709
+scaleFactorOfStandardDeviation,1710
+scaleFactorOfStandardDeviationInTheCluster,1711
+scaleFactorOfUpperLimit,1712
+scaleValuesBy,1713
+scaledDirections,1714
+scaledFrequencies,1715
+scaledValueOfCentralWaveNumber,1716
+scaledValueOfDistanceFromEnsembleMean,1717
+scaledValueOfDistributionFunctionParameter,1718
+scaledValueOfEarthMajorAxis,1719
+scaledValueOfEarthMinorAxis,1720
+scaledValueOfFirstFixedSurface,1721
+scaledValueOfFirstSize,1722
+scaledValueOfFirstWavelength,1723
+scaledValueOfLowerLimit,1724
+scaledValueOfMajorAxisOfOblateSpheroidEarth,1725
+scaledValueOfMinorAxisOfOblateSpheroidEarth,1726
+scaledValueOfRadiusOfSphericalEarth,1727
+scaledValueOfSecondFixedSurface,1728
+scaledValueOfSecondSize,1729
+scaledValueOfSecondWavelength,1730
+scaledValueOfStandardDeviation,1731
+scaledValueOfStandardDeviationInTheCluster,1732
+scaledValueOfUpperLimit,1733
+scalingFactorForFrequencies,1734
+scanPosition,1735
+scanningMode,1736
+scanningMode4,1737
+scanningMode5,1738
+scanningMode6,1739
+scanningMode7,1740
+scanningMode8,1741
+scanningModeForOneDiamond,1742
+sd,1743
+second,1744
+secondDimension,1745
+secondDimensionCoordinateValueDefinition,1746
+secondDimensionPhysicalSignificance,1747
+secondLatitude,1748
+secondLatitudeInDegrees,1749
+secondOfEndOfOverallTimeInterval,1750
+secondOrderFlags,1751
+secondOrderOfDifferentWidth,1752
+secondOrderValuesDifferentWidths,1753
+secondaryBitMap,1754
+secondaryBitmap,1755
+secondaryBitmapPresent,1756
+secondaryBitmaps,1757
+secondaryBitmapsCount,1758
+secondaryBitmapsSize,1759
+secondaryMissingValue,1760
+secondaryMissingValueSubstitute,1761
+secondsOfAnalysis,1762
+secondsOfReference,1763
+section,1764
+section0Length,1765
+section0Pointer,1766
+section1,1767
+section1Flags,1768
+section1Length,1769
+section1Padding,1770
+section1Pointer,1771
+section2Length,1772
+section2Padding,1773
+section2Pointer,1774
+section2Present,1775
+section2Used,1776
+section3,1777
+section3Flags,1778
+section3Length,1779
+section3Padding,1780
+section3Pointer,1781
+section4,1782
+section4Length,1783
+section4Padding,1784
+section4Pointer,1785
+section5,1786
+section5Length,1787
+section5Pointer,1788
+section6,1789
+section6Length,1790
+section7,1791
+section7Length,1792
+section8,1793
+section8Length,1794
+section8Pointer,1795
+sectionLengthLimitForEnsembles,1796
+sectionLengthLimitForProbability,1797
+sectionNumber,1798
+sectionPosition,1799
+section_1,1800
+section_2,1801
+section_3,1802
+section_4,1803
+section_5,1804
+section_6,1805
+section_7,1806
+section_8,1807
+selectStepTemplateInstant,1808
+selectStepTemplateInterval,1809
+sensitiveAreaDomain,1810
+sequences,1811
+setBitsPerValue,1812
+setCalendarId,1813
+setDecimalPrecision,1814
+setLocalDefinition,1815
+shapeOfTheEarth,1816
+shapeOfVerificationArea,1817
+shortName,1818
+shortNameECMF,1819
+short_name,1820
+signature,1821
+significanceOfReferenceTime,1822
+siteElevation,1823
+siteId,1824
+siteLatitude,1825
+siteLongitude,1826
+sizeOfLength,1827
+sizeOfOffsets,1828
+sizeOfPostAuxiliaryArray,1829
+sizeOfPostAuxiliaryArrayPlusOne,1830
+skew,1831
+skewness,1832
+sort,1833
+sourceOfGridDefinition,1834
+southEastLatitudeOfLPOArea,1835
+southEastLatitudeOfVerficationArea,1836
+southEastLongitudeOfLPOArea,1837
+southEastLongitudeOfVerficationArea,1838
+southLatitudeOfCluster,1839
+southLatitudeOfDomainOfTubing,1840
+southPoleOnProjectionPlane,1841
+southernLatitudeOfClusterDomain,1842
+southernLatitudeOfDomain,1843
+sp1,1844
+sp2,1845
+sp3,1846
+spaceUnitFlag,1847
+spacingOfBinsAlongRadials,1848
+spare,1849
+spare1,1850
+spare2,1851
+spatialProcessing,1852
+spatialSmoothingOfProduct,1853
+spectralDataRepresentationMode,1854
+spectralDataRepresentationType,1855
+spectralMode,1856
+spectralType,1857
+sphericalHarmonics,1858
+standardDeviation,1859
+standardParallel,1860
+standardParallelInMicrodegrees,1861
+startOfHeaders,1862
+startOfMessage,1863
+startOfRange,1864
+startStep,1865
+startStepInHours,1866
+startTimeStep,1867
+startingAzimuth,1868
+statisticalProcess,1869
+statisticalProcessesList,1870
+statistics,1871
+status,1872
+step,1873
+stepForClustering,1874
+stepInHours,1875
+stepRange,1876
+stepRangeInHours,1877
+stepType,1878
+stepTypeInternal,1879
+stepUnits,1880
+stepZero,1881
+stream,1882
+streamOfAnalysis,1883
+stretchingFactor,1884
+stretchingFactorScaled,1885
+stringValues,1886
+subCentre,1887
+subDefinitions1,1888
+subDefinitions2,1889
+subLocalDefinition1,1890
+subLocalDefinition2,1891
+subLocalDefinitionLength1,1892
+subLocalDefinitionLength2,1893
+subLocalDefinitionNumber1,1894
+subLocalDefinitionNumber2,1895
+subSetJ,1896
+subSetK,1897
+subSetM,1898
+subcentreOfAnalysis,1899
+subdivisionsOfBasicAngle,1900
+suiteName,1901
+superblockExtensionAddress,1902
+swapScanningLat,1903
+swapScanningLon,1904
+swapScanningX,1905
+swapScanningY,1906
+system,1907
+systemNumber,1908
+t,1909
+table2Version,1910
+tableCode,1911
+tableNumber,1912
+tableReference,1913
+tablesLocalDir,1914
+tablesMasterDir,1915
+tablesVersion,1916
+targetCompressionRatio,1917
+td,1918
+tempPressureUnits,1919
+temperature,1920
+temperatureAndDewpointPresent,1921
+templatesLocalDir,1922
+templatesMasterDir,1923
+theHindcastMarsStream,1924
+theMessage,1925
+thisExperimentVersionNumber,1926
+thisMarsClass,1927
+thisMarsStream,1928
+thisMarsType,1929
+thousand,1930
+three,1931
+threshold,1932
+thresholdIndicator,1933
+tiggeCentre,1934
+tiggeLAMName,1935
+tiggeLocalVersion,1936
+tiggeModel,1937
+tiggeSection,1938
+tiggeSuiteID,1939
+tigge_name,1940
+tigge_short_name,1941
+tileClassification,1942
+tileIndex,1943
+time,1944
+timeCoordinateDefinition,1945
+timeIncrement,1946
+timeIncrementBetweenSuccessiveFields,1947
+timeOfAnalysis,1948
+timeOfReference,1949
+timeRangeIndicator,1950
+timeRangeIndicatorFromStepRange,1951
+timeUnitFlag,1952
+timerepres,1953
+topLevel,1954
+total,1955
+totalAerosolBinsNumbers,1956
+totalInitialConditions,1957
+totalLength,1958
+totalNumber,1959
+totalNumberOfClusters,1960
+totalNumberOfDataValuesMissingInStatisticalProcess,1961
+totalNumberOfDirections,1962
+totalNumberOfForecastProbabilities,1963
+totalNumberOfFrequencies,1964
+totalNumberOfGridPoints,1965
+totalNumberOfIterations,1966
+totalNumberOfTileAttributePairs,1967
+totalNumberOfTubes,1968
+totalNumberOfdimensions,1969
+treatmentOfMissingData,1970
+true,1971
+trueLengthOfLastGroup,1972
+truncateDegrees,1973
+truncateLaplacian,1974
+tsectionNumber3,1975
+tsectionNumber4,1976
+tsectionNumber5,1977
+tubeDomain,1978
+tubeNumber,1979
+two,1980
+twoOrdersOfSPD,1981
+type,1982
+typeOfAnalysis,1983
+typeOfAuxiliaryInformation,1984
+typeOfCalendar,1985
+typeOfCompressionUsed,1986
+typeOfDistributionFunction,1987
+typeOfEnsembleForecast,1988
+typeOfFirstFixedSurface,1989
+typeOfGeneratingProcess,1990
+typeOfGrid,1991
+typeOfHorizontalLine,1992
+typeOfIntervalForFirstAndSecondSize,1993
+typeOfIntervalForFirstAndSecondWavelength,1994
+typeOfLevel,1995
+typeOfLevelECMF,1996
+typeOfOriginalFieldValues,1997
+typeOfPacking,1998
+typeOfPreProcessing,1999
+typeOfProcessedData,2000
+typeOfSSTFieldUsed,2001
+typeOfSecondFixedSurface,2002
+typeOfSizeInterval,2003
+typeOfStatisticalProcessing,2004
+typeOfTimeIncrement,2005
+typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,2006
+typeOfWavelengthInterval,2007
+typicalCentury,2008
+typicalDate,2009
+typicalDay,2010
+typicalHour,2011
+typicalMinute,2012
+typicalMonth,2013
+typicalSecond,2014
+typicalTime,2015
+typicalYear,2016
+typicalYearOfCentury,2017
+unexpandedDescriptors,2018
+unexpandedDescriptorsEncoded,2019
+unitOfOffsetFromReferenceTime,2020
+unitOfTime,2021
+unitOfTimeIncrement,2022
+unitOfTimeRange,2023
+units,2024
+unitsBias,2025
+unitsDecimalScaleFactor,2026
+unitsECMF,2027
+unitsFactor,2028
+unitsOfFirstFixedSurface,2029
+unitsOfSecondFixedSurface,2030
+unknown,2031
+unpack,2032
+unpackedError,2033
+unpackedSubsetPrecision,2034
+unpackedValues,2035
+unsignedIntegers,2036
+unusedBitsInBitmap,2037
+updateSequenceNumber,2038
+upperLimit,2039
+upperRange,2040
+upperThreshold,2041
+upperThresholdValue,2042
+uuidOfHGrid,2043
+uuidOfVGrid,2044
+uvRelativeToGrid,2045
+validityDate,2046
+validityTime,2047
+values,2048
+variationOfVisibility,2049
+variationOfVisibilityDirection,2050
+variationOfVisibilityDirectionAngle,2051
+variationOfVisibilityDirectionTrend1,2052
+variationOfVisibilityDirectionTrend2,2053
+variationOfVisibilityDirectionTrend3,2054
+variationOfVisibilityDirectionTrend4,2055
+variationOfVisibilityTrend1,2056
+variationOfVisibilityTrend2,2057
+variationOfVisibilityTrend3,2058
+variationOfVisibilityTrend4,2059
+varno,2060
+verificationDate,2061
+verifyingMonth,2062
+version,2063
+versionNumberOfExperimentalSuite,2064
+versionNumberOfGribLocalTables,2065
+versionNumberOfSuperblock,2066
+versionOfModelClimate,2067
+verticalCoordinate,2068
+verticalCoordinateDefinition,2069
+verticalVisibility,2070
+verticalVisibilityCoded,2071
+visibility,2072
+visibilityInKilometresTrend1,2073
+visibilityInKilometresTrend2,2074
+visibilityInKilometresTrend3,2075
+visibilityInKilometresTrend4,2076
+visibilityTrend1,2077
+visibilityTrend2,2078
+visibilityTrend3,2079
+visibilityTrend4,2080
+waveDomain,2081
+weightAppliedToClimateMonth1,2082
+westLongitudeOfCluster,2083
+westLongitudeOfDomainOfTubing,2084
+westernLongitudeOfClusterDomain,2085
+westernLongitudeOfDomain,2086
+widthOfFirstOrderValues,2087
+widthOfLengths,2088
+widthOfSPD,2089
+widthOfWidths,2090
+windDirection,2091
+windDirectionTrend1,2092
+windDirectionTrend2,2093
+windDirectionTrend3,2094
+windDirectionTrend4,2095
+windGust,2096
+windGustTrend1,2097
+windGustTrend2,2098
+windGustTrend3,2099
+windGustTrend4,2100
+windPresent,2101
+windSpeed,2102
+windSpeedTrend1,2103
+windSpeedTrend2,2104
+windSpeedTrend3,2105
+windSpeedTrend4,2106
+windUnits,2107
+windUnitsTrend1,2108
+windUnitsTrend2,2109
+windUnitsTrend3,2110
+windUnitsTrend4,2111
+windVariableDirection,2112
+windVariableDirectionTrend1,2113
+windVariableDirectionTrend2,2114
+windVariableDirectionTrend3,2115
+windVariableDirectionTrend4,2116
+wrongPadding,2117
+xCoordinateOfOriginOfSectorImage,2118
+xCoordinateOfSubSatellitePoint,2119
+xDirectionGridLength,2120
+xDirectionGridLengthInMetres,2121
+xDirectionGridLengthInMillimetres,2122
+xFirst,2123
+xLast,2124
+yCoordinateOfOriginOfSectorImage,2125
+yCoordinateOfSubSatellitePoint,2126
+yDirectionGridLength,2127
+yDirectionGridLengthInMetres,2128
+yDirectionGridLengthInMillimetres,2129
+yFirst,2130
+yLast,2131
+year,2132
+yearOfAnalysis,2133
+yearOfCentury,2134
+yearOfEndOfOverallTimeInterval,2135
+yearOfReference,2136
+zero,2137
diff --git a/tests/make_hash.ksh b/tests/make_hash.ksh
old mode 100644
new mode 100755
diff --git a/tests/tigge.sh b/tests/tigge.sh
index 3a26fd2..c77f757 100755
--- a/tests/tigge.sh
+++ b/tests/tigge.sh
@@ -12,27 +12,24 @@
 
 REDIRECT=/dev/null
 
-#set -eax 
-
 dir="${data_dir}/tigge/"
 
 # check tigge global
-for file in ${dir}/tigge_*.grib
+for file in ${dir}tigge_*.grib
 do
    ${tigge_dir}tigge_check ${file} 2> $REDIRECT > $REDIRECT
 done
 
 # check tigge-lam
-for file in ${dir}/tiggelam_*.grib
+for file in ${dir}tiggelam_*.grib
 do
    ${tigge_dir}tigge_check -l ${file} 2> $REDIRECT > $REDIRECT
 done
 
 
-# Now test non-TIGGE files too. We now expect tigge_check to fail!
-# All the grib files in the samples are non-TIGGE
-for file in ${ECCODES_SAMPLES_PATH}/*.tmpl
-do
+# Test non-TIGGE files too. We now expect tigge_check to fail!
+# All the GRIB files in the samples are non-TIGGE
+for file in ${ECCODES_SAMPLES_PATH}/regular_*.tmpl; do
    set +e
    ${tigge_dir}tigge_check ${file} 2> $REDIRECT > $REDIRECT
    status=$?
@@ -55,3 +52,24 @@ ${tools_dir}grib_set -s productionStatusOfProcessedData=5 $input $TEMP
 ${tools_dir}grib_compare -bproductionStatusOfProcessedData $input $TEMP
 
 rm -f $TEMP
+
+# GRIB-757 validity date/time check fails for the following:
+tigge_bad_validity="
+  tigge_kwbc_sfc_sf.grib
+  tigge_kwbc_sfc_slhf.grib
+  tigge_kwbc_sfc_sshf.grib
+  tigge_kwbc_sfc_ssr.grib
+  tigge_kwbc_sfc_str.grib
+  tigge_kwbc_sfc_ttr.grib
+"
+for file in $tigge_bad_validity; do
+   set +e
+   ${tigge_dir}tigge_check -w ${dir}${file} > $TEMP
+   status=$?
+   set -e
+   [ $status -eq 1 ]
+   cat $TEMP
+   grep -q "invalid validity Date/Time" $TEMP
+done
+
+rm -f $TEMP
diff --git a/tigge/Makefile.in b/tigge/Makefile.in
deleted file mode 100644
index 6ade06a..0000000
--- a/tigge/Makefile.in
+++ /dev/null
@@ -1,726 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-bin_PROGRAMS = tigge_check$(EXEEXT) tigge_name$(EXEEXT) \
-	tigge_accumulations$(EXEEXT) tigge_split$(EXEEXT)
-subdir = tigge
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(top_srcdir)/config/depcomp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(bindir)"
-PROGRAMS = $(bin_PROGRAMS)
-am_tigge_accumulations_OBJECTS = tigge_accumulations.$(OBJEXT)
-tigge_accumulations_OBJECTS = $(am_tigge_accumulations_OBJECTS)
-tigge_accumulations_LDADD = $(LDADD)
-tigge_accumulations_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-am_tigge_check_OBJECTS = tigge_check.$(OBJEXT)
-tigge_check_OBJECTS = $(am_tigge_check_OBJECTS)
-tigge_check_LDADD = $(LDADD)
-tigge_check_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_tigge_name_OBJECTS = tigge_name.$(OBJEXT)
-tigge_name_OBJECTS = $(am_tigge_name_OBJECTS)
-tigge_name_LDADD = $(LDADD)
-tigge_name_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-am_tigge_split_OBJECTS = tigge_split.$(OBJEXT)
-tigge_split_OBJECTS = $(am_tigge_split_OBJECTS)
-tigge_split_LDADD = $(LDADD)
-tigge_split_DEPENDENCIES = $(top_builddir)/src/libeccodes.la
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(tigge_accumulations_SOURCES) $(tigge_check_SOURCES) \
-	$(tigge_name_SOURCES) $(tigge_split_SOURCES)
-DIST_SOURCES = $(tigge_accumulations_SOURCES) $(tigge_check_SOURCES) \
-	$(tigge_name_SOURCES) $(tigge_split_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AEC_DIR = @AEC_DIR@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CCSDS_TEST = @CCSDS_TEST@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEVEL_RULES = @DEVEL_RULES@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECCODES_AGE = @ECCODES_AGE@
-ECCODES_CURRENT = @ECCODES_CURRENT@
-ECCODES_DEFINITION_PATH = @ECCODES_DEFINITION_PATH@
-ECCODES_MAIN_VERSION = @ECCODES_MAIN_VERSION@
-ECCODES_MAJOR_VERSION = @ECCODES_MAJOR_VERSION@
-ECCODES_MINOR_VERSION = @ECCODES_MINOR_VERSION@
-ECCODES_PATCH_VERSION = @ECCODES_PATCH_VERSION@
-ECCODES_REVISION = @ECCODES_REVISION@
-ECCODES_SAMPLES_PATH = @ECCODES_SAMPLES_PATH@
-ECCODES_VERSION_STR = @ECCODES_VERSION_STR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB = @EMOS_LIB@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-F90_CHECK = @F90_CHECK@
-F90_MODULE_FLAG = @F90_MODULE_FLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FORTRAN_MOD = @FORTRAN_MOD@
-GREP = @GREP@
-GRIB_API_INC = @GRIB_API_INC@
-GRIB_API_LIB = @GRIB_API_LIB@
-GRIB_DEVEL = @GRIB_DEVEL@
-IFS_SAMPLES_DIR = @IFS_SAMPLES_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JASPER_DIR = @JASPER_DIR@
-JPEG_TEST = @JPEG_TEST@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_AEC = @LIB_AEC@
-LIB_JASPER = @LIB_JASPER@
-LIB_OPENJPEG = @LIB_OPENJPEG@
-LIB_PNG = @LIB_PNG@
-LINUX_DISTRIBUTION_NAME = @LINUX_DISTRIBUTION_NAME@
-LINUX_DISTRIBUTION_VERSION = @LINUX_DISTRIBUTION_VERSION@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENJPEG_DIR = @OPENJPEG_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PERLDIR = @PERLDIR@
-PERL_INSTALL_OPTIONS = @PERL_INSTALL_OPTIONS@
-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_CHECK = @PYTHON_CHECK@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_DATA_HANDLER = @PYTHON_DATA_HANDLER@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RM = @RM@
-RPM_CONFIGURE_ARGS = @RPM_CONFIGURE_ARGS@
-RPM_HOST_CPU = @RPM_HOST_CPU@
-RPM_HOST_OS = @RPM_HOST_OS@
-RPM_HOST_VENDOR = @RPM_HOST_VENDOR@
-RPM_RELEASE = @RPM_RELEASE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_PEDANTIC = @WARN_PEDANTIC@
-WERROR = @WERROR@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AM_CFLAGS = @WARN_PEDANTIC@ @WERROR@
-tigge_check_SOURCES = tigge_check.c \
-                            tigge_check.h
-
-tigge_name_SOURCES = tigge_name.c
-tigge_split_SOURCES = tigge_split.c
-tigge_accumulations_SOURCES = tigge_accumulations.c
-INCLUDES = -I$(top_builddir)/src
-LDADD = $(top_builddir)/src/libeccodes.la
-DEPENDENCIES = $(LDADD)
-EXTRA_DIST = CMakeLists.txt
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tigge/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu tigge/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-binPROGRAMS: $(bin_PROGRAMS)
-	@$(NORMAL_INSTALL)
-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
-	fi; \
-	for p in $$list; do echo "$$p $$p"; done | \
-	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p \
-	 || test -f $$p1 \
-	  ; then echo "$$p"; echo "$$p"; else :; fi; \
-	done | \
-	sed -e 'p;s,.*/,,;n;h' \
-	    -e 's|.*|.|' \
-	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
-	sed 'N;N;N;s,\n, ,g' | \
-	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
-	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
-	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
-	    else { print "f", $$3 "/" $$4, $$1; } } \
-	  END { for (d in files) print "f", d, files[d] }' | \
-	while read type dir files; do \
-	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
-	    test -z "$$files" || { \
-	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
-	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
-	    } \
-	; done
-
-uninstall-binPROGRAMS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-	files=`for p in $$list; do echo "$$p"; done | \
-	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' \
-	`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
-
-clean-binPROGRAMS:
-	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-
-tigge_accumulations$(EXEEXT): $(tigge_accumulations_OBJECTS) $(tigge_accumulations_DEPENDENCIES) $(EXTRA_tigge_accumulations_DEPENDENCIES) 
-	@rm -f tigge_accumulations$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(tigge_accumulations_OBJECTS) $(tigge_accumulations_LDADD) $(LIBS)
-
-tigge_check$(EXEEXT): $(tigge_check_OBJECTS) $(tigge_check_DEPENDENCIES) $(EXTRA_tigge_check_DEPENDENCIES) 
-	@rm -f tigge_check$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(tigge_check_OBJECTS) $(tigge_check_LDADD) $(LIBS)
-
-tigge_name$(EXEEXT): $(tigge_name_OBJECTS) $(tigge_name_DEPENDENCIES) $(EXTRA_tigge_name_DEPENDENCIES) 
-	@rm -f tigge_name$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(tigge_name_OBJECTS) $(tigge_name_LDADD) $(LIBS)
-
-tigge_split$(EXEEXT): $(tigge_split_OBJECTS) $(tigge_split_DEPENDENCIES) $(EXTRA_tigge_split_DEPENDENCIES) 
-	@rm -f tigge_split$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(tigge_split_OBJECTS) $(tigge_split_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tigge_accumulations.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tigge_check.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tigge_name.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tigge_split.Po at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-	for dir in "$(DESTDIR)$(bindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-binPROGRAMS
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-binPROGRAMS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
-	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
-	ctags ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-binPROGRAMS \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/tigge/tigge_check.c b/tigge/tigge_check.c
index 94a9b9f..1a1e7af 100755
--- a/tigge/tigge_check.c
+++ b/tigge/tigge_check.c
@@ -115,7 +115,7 @@ static void warn(const char* name,int a)
         warning++;
     }
 }
-*/
+ */
 
 static void save(grib_handle* h, const char *name,FILE* f)
 {
@@ -339,6 +339,45 @@ static void gaussian_grid(grib_handle* h)
     CHECK(eq(h,"resolutionAndComponentFlags8",0));
 }
 
+static void check_validity_datetime(grib_handle* h)
+{
+    /* If we just set the stepRange (for non-instantaneous fields) to its
+     * current value, then this causes the validity date and validity time
+     * keys to be correctly computed.
+     * Then we can compare the previous (possibly wrongly coded) value with
+     * the newly computed one
+     */
+    char stepType[15]={0,};
+    int err = 0;
+    size_t str_len = 100;
+
+    err = grib_get_string(h, "stepType", stepType, &str_len);
+    if (err) return;
+    if (strcmp(stepType, "instant")!=0) { /* not instantaneous */
+        char stepRange[100]={0,};
+        long saved_validityDate, saved_validityTime;
+        long validityDate, validityTime;
+
+        /* Check only applies to accumulated, max etc. */
+        err = grib_get_string(h, "stepRange", stepRange, &str_len);
+        if (err) return;
+
+        saved_validityDate = get(h, "validityDate");
+        saved_validityTime = get(h, "validityTime");
+
+        err = grib_set_string(h, "stepRange", stepRange, &str_len);
+        if (err) return;
+        validityDate = get(h, "validityDate");
+        validityTime = get(h, "validityTime");
+
+        if (validityDate!=saved_validityDate || validityTime!=saved_validityTime) {
+            printf("warning: %s, field %d [%s]: invalid validity Date/Time (Should be %ld and %ld)\n",
+                    file,field,param, validityDate, validityTime);
+            warning++;
+        }
+    }
+}
+
 static void check_range(grib_handle* h,const parameter* p,double min,double max)
 {
     if(!valueflg)
@@ -396,7 +435,7 @@ static void point_in_time(grib_handle* h,const parameter* p,double min,double ma
         if (is_s2s_refcst)
             CHECK(eq(h,"productDefinitionTemplateNumber",60));
         else if (is_s2s)
-          /*CHECK(eq(h,"productDefinitionTemplateNumber",60)||eq(h,"productDefinitionTemplateNumber",11)||eq(h,"productDefinitionTemplateNumber",1));*/
+            /*CHECK(eq(h,"productDefinitionTemplateNumber",60)||eq(h,"productDefinitionTemplateNumber",11)||eq(h,"productDefinitionTemplateNumber",1));*/
             CHECK(eq(h,"productDefinitionTemplateNumber",1));
         else
             CHECK(eq(h,"productDefinitionTemplateNumber",1));
@@ -408,7 +447,7 @@ static void point_in_time(grib_handle* h,const parameter* p,double min,double ma
         if (is_s2s_refcst)
             CHECK(eq(h,"productDefinitionTemplateNumber",60));
         else if (is_s2s)
-          /*CHECK(eq(h,"productDefinitionTemplateNumber",60)||eq(h,"productDefinitionTemplateNumber",11)||eq(h,"productDefinitionTemplateNumber",1));*/
+            /*CHECK(eq(h,"productDefinitionTemplateNumber",60)||eq(h,"productDefinitionTemplateNumber",11)||eq(h,"productDefinitionTemplateNumber",1));*/
             CHECK(eq(h,"productDefinitionTemplateNumber",1));
         else
             CHECK(eq(h,"productDefinitionTemplateNumber",1));
@@ -654,7 +693,7 @@ static void statistical_process(grib_handle* h,const parameter* p,double min,dou
         }
     } else {
         if(get(h,"indicatorOfUnitOfTimeRange") == 11) /*  six hours */
-    {
+        {
             /* Six hourly is OK */
             ;
         }
@@ -678,24 +717,23 @@ static void statistical_process(grib_handle* h,const parameter* p,double min,dou
     else
         CHECK(eq(h,"timeIncrementBetweenSuccessiveFields",0));
 
-    
-        CHECK(eq(h,"minuteOfEndOfOverallTimeInterval",0));
-        CHECK(eq(h,"secondOfEndOfOverallTimeInterval",0));
+
+    CHECK(eq(h,"minuteOfEndOfOverallTimeInterval",0));
+    CHECK(eq(h,"secondOfEndOfOverallTimeInterval",0));
 
     if (is_uerra)
-        {
+    {
         CHECK((eq(h,"endStep",1)||eq(h,"endStep",2)||eq(h,"endStep",4)||eq(h,"endStep",5))||(get(h,"endStep") % 3) == 0);
-        }
+    }
     else if (is_lam)
-        {
-            CHECK((get(h,"endStep") % 3) == 0);  /* Every three hours */
-        }
+    {
+        CHECK((get(h,"endStep") % 3) == 0);  /* Every three hours */
+    }
     else
     {
         CHECK((get(h,"endStep") % 6) == 0); /* Every six hours */
     }
 
-
     if(get(h,"indicatorOfUnitForTimeRange") == 11)
     {
         /* Six hourly is OK */
@@ -907,17 +945,31 @@ static void latlon_grid(grib_handle* h)
         dsouth = dtmp;
     }
 
-    if (!is_lam) CHECK(north > south);
-    if (!is_lam) CHECK(east  > west);
+    if (!(is_lam || is_uerra))
+    {
+        double area, globe;
+        CHECK(north > south);
+        CHECK(east  > west);
+
+        /* Check that the grid is symmetrical */
+        CHECK(north == -south);
+        CHECK( DBL_EQUAL(dnorth, -dsouth, tolerance) );
+        CHECK(parallel == (east-west)/we + 1);
+        CHECK(fabs((deast-dwest)/dwe + 1 - parallel) < 1e-10);
+        CHECK(meridian == (north-south)/ns + 1);
+        CHECK(fabs((dnorth-dsouth)/dns + 1 - meridian) < 1e-10 );
+
+        /* Check that the field is global */
+        area  = (dnorth-dsouth) * (deast-dwest);
+        globe = 360.0*180.0;
+        CHECK(area <= globe);
+        CHECK(area >= globe*0.95);
+    }
 
     /* GRIB2 requires longitudes are always positive */
     CHECK(east >= 0);
     CHECK(west >= 0);
 
-    /* Check that the grid is symmetrical */
-    if (!is_lam) CHECK(north == -south);
-    if (!is_lam) CHECK( DBL_EQUAL(dnorth, -dsouth, tolerance) );
-
     /*
       printf("meridian=%ld north=%ld south=%ld ns=%ld \n",meridian,north,south,ns);
       printf("meridian=%ld north=%f south=%f ns=%f \n",meridian,dnorth,dsouth,dns);
@@ -925,19 +977,6 @@ static void latlon_grid(grib_handle* h)
       printf("parallel=%ld east=%f west=%f we=%f \n",parallel,deast,dwest,dwe);
      */
 
-    if (!is_lam) CHECK(parallel == (east-west)/we + 1);
-    if (!is_lam) CHECK(fabs((deast-dwest)/dwe + 1 - parallel) < 1e-10);
-
-    if (!is_lam) CHECK(meridian == (north-south)/ns + 1);
-    if (!is_lam) CHECK(fabs((dnorth-dsouth)/dns + 1 - meridian) < 1e-10 );
-
-    /* Check that the field is global */
-    if (!is_lam) {
-        double area  = (dnorth-dsouth) * (deast-dwest);
-        double globe = 360.0*180.0;
-        CHECK(area <= globe);
-        CHECK(area >= globe*0.95);
-    }
 }
 
 #define X(x) printf("%s=%ld ",#x,get(h,#x))
@@ -971,19 +1010,19 @@ static void check_parameter(grib_handle* h,double min,double max)
                     /* printf("Skipping model keyword for UERRA class\n"); */
                     matches++; /*xxx hack to pretend that model key was matched.. */
                 } else {
-                if (strcasecmp(parameters[i].pairs[j].value_string,"MISSING")==0) {
-                    int is_miss = grib_is_missing(h, parameters[i].pairs[j].key, &err);
-                    if (err == GRIB_SUCCESS && is_miss) {
-                        matches++;
+                    if (strcasecmp(parameters[i].pairs[j].value_string,"MISSING")==0) {
+                        int is_miss = grib_is_missing(h, parameters[i].pairs[j].key, &err);
+                        if (err == GRIB_SUCCESS && is_miss) {
+                            matches++;
+                        }
                     }
-                }
-                else if(grib_get_string(h,parameters[i].pairs[j].key,strval,&len) == GRIB_SUCCESS) {
-                    if(strcmp(parameters[i].pairs[j].value_string, strval) == 0) {
-                        matches++;
+                    else if(grib_get_string(h,parameters[i].pairs[j].key,strval,&len) == GRIB_SUCCESS) {
+                        if(strcmp(parameters[i].pairs[j].value_string, strval) == 0) {
+                            matches++;
+                        }
                     }
                 }
             }
-            }
             else {
                 assert(!"Unknown key type");
             }
@@ -1137,13 +1176,16 @@ static void verify(grib_handle* h)
         }
     }
 
-    /* Only 00, 06 12 and 18 Cycle OK */
-    if (!is_lam){
-        CHECK(eq(h,"hour",0) || eq(h,"hour",6) || eq(h,"hour",12) || eq(h,"hour",18));
+    if (is_uerra){
+        CHECK(le(h,"hour",24));
+    }
+    else if (is_lam){
+        CHECK(eq(h,"hour",0) || eq(h,"hour",3) || eq(h,"hour",6) || eq(h,"hour",9) || eq(h,"hour",12) || eq(h,"hour",15) || eq(h,"hour",18) || eq(h,"hour",21));
     }
     else
     {
-        CHECK(eq(h,"hour",0) || eq(h,"hour",3) || eq(h,"hour",6) || eq(h,"hour",9) || eq(h,"hour",12) || eq(h,"hour",15) || eq(h,"hour",18) || eq(h,"hour",21));
+    /* Only 00, 06 12 and 18 Cycle OK */
+        CHECK(eq(h,"hour",0) || eq(h,"hour",6) || eq(h,"hour",12) || eq(h,"hour",18));
     }
     CHECK(eq(h,"minute",0));
     CHECK(eq(h,"second",0));
@@ -1159,10 +1201,13 @@ static void verify(grib_handle* h)
         CHECK(le(h,"endStep",30*24));
     }
 
-    else if (is_lam){
+    if (is_uerra){
+        CHECK((eq(h,"step",1)||eq(h,"step",2)||eq(h,"step",4)||eq(h,"step",5))||(get(h,"step") % 3) == 0);
+    }
+    else if (is_lam) {
         CHECK((get(h,"step") % 3) == 0);
     }
-    else if (!is_uerra)
+    else
     {
         CHECK((get(h,"step") % 6) == 0);
     }
@@ -1198,8 +1243,9 @@ static void verify(grib_handle* h)
         break;
 
     case 30: /*Lambert conformal*/
-      /*lambert_grid(h); # TODO xxx
+        /*lambert_grid(h); # TODO xxx
         printf("warning: Lambert grid - geometry checking not implemented yet!\n"); */
+       /*CHECK(eq(h,"scanningMode",64));*/ /* M-F data used to have it wrong.. but it might depends on other projection set up as well!*/
         break;
 
     case 40: /* gaussian grid (regular or reduced) */
@@ -1226,6 +1272,8 @@ static void verify(grib_handle* h)
     /* Check values */
     CHECK(eq(h,"typeOfOriginalFieldValues",0)); /* Floating point */
 
+    check_validity_datetime(h);
+
     /* do not store empty values e.g. fluxes at step 0
         todo ?? now it's allowed in the code here!
         if(!missing(h,"typeOfStatisticalProcessing"))
@@ -1314,6 +1362,7 @@ static void usage()
     printf("   -z: return 0 to calling shell\n");
     printf("   -s: check s2s fields\n");
     printf("   -r: check s2s reforecast fields\n");
+    printf("   -u: check uerra fields\n");
     exit(1);
 }
 
diff --git a/tigge/tigge_check.h b/tigge/tigge_check.h
index a708a0b..70629ee 100644
--- a/tigge/tigge_check.h
+++ b/tigge/tigge_check.h
@@ -526,14 +526,15 @@ parameter parameters[] = {
    },
 /* 
    S2S/CAWCR: specific_humidity_pl minimum value -0.0108485 is not in [-0.01,0.001]
-   s2s/ammc: warning: s2s.q_20150913_4.grib2, field 71 [specific_humidity_pl]: specific_humidity_pl maximum value 0.0511279 is not in [5e-05,0.05]
+   s2s/ammc: warning: s2s.q_20160623_4.grib2, field 288 [specific_humidity_pl]: specific_humidity_pl minimum value -0.0209212 is not in [-0.02,0.001]
+   s2s/ammc: warning: s2s.q_20160717_21.grib2, field 99 [specific_humidity_pl]: specific_humidity_pl maximum value 0.0820876 is not in [5e-05,0.08]
 */
    {
       "specific_humidity_pl",
-      -2e-2,
+      -1e-1,
       1.e-3,
       5e-5,
-      8e-2,
+      1e-1,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
          {"discipline", GRIB_TYPE_LONG, 0},
@@ -690,12 +691,12 @@ mogreps in the past -> min <180, 290>
 s2s/kwbc/enfh: warning: s2s.z_s2s_c_rhmc_20150819000000_glob_prod_0006_000.sl.grib2, field 2 [surface_air_maximum_temperature_sfc]: surface_air_maximum_temperature_sfc minimum value 179.427 is not in [190,240]
 s2s/kwbc/enfh: warning: s2s.z_tigge_c_kwbc_20071002000000_ncep_prod_pf_sl_0006_001_0000_mx2t6.grib2, field 146 [surface_air_maximum_temperature_sfc]: surface_air_maximum_temperature_sfc minimum value 240.208 is not in [175,240]
 s2s/isac/enfo: warning: z_s2s_c_isac_201510190000_glob_prod_pf_0744_05.sl.grib2, field 513 [surface_air_maximum_temperature_sfc]: surface_air_maximum_temperature_sfc minimum value 245.143 is not in [175,245]
-s2s/lfpw/enfo: s2s.lfpw_mx2t6_2.grib2, field 3 [surface_air_maximum_temperature_sfc]: surface_air_maximum_temperature_sfc minimum value 167.434 is not in [175,250]
+s2s/lfpw/enfo: warning: s2s.lfpw_mx2t6_2.grib2, field 86 [surface_air_maximum_temperature_sfc]: surface_air_maximum_temperature_sfc minimum value 250.116 is not in [160,250]
 */
    {
       "surface_air_maximum_temperature_sfc",
       160,
-      250,
+      255,
       300,
       380,
       {
@@ -716,13 +717,15 @@ warning: s2s.z_tigge_c_kwbc_20090817000000_ncep_prod_pf_sl_0006_002_0000_mn2t6.g
 s2s/kwbc/enfh: warning: s2s.z_s2s_c_rhmc_20150819000000_glob_prod_0006_000.sl.grib2, field 1 [surface_air_minimum_temperature_sfc]: surface_air_minimum_temperature_sfc minimum value 179.642 is not in [183,240]
 s2s/ammc/enfo: warning: s2s.mn2t6_20150917_24.grib2, field 1 [surface_air_minimum_temperature_sfc]: surface_air_minimum_temperature_sfc minimum value 167.556 is not in [175,240]
 s2s/isac/enfo: warning: z_s2s_c_isac_201510190000_glob_prod_pf_0744_24.sl.grib2, field 671 [surface_air_minimum_temperature_sfc]: surface_air_minimum_temperature_sfc minimum value 241.292 is not in [160,240]
+s2s/rums/enfh: warning: s2s.z_s2s_c_rhmc_19910316000000_glob_prod_009.sl.grib2, field 2204 [surface_air_minimum_temperature_sfc]: surface_air_minimum_temperature_sfc maximum value 325.122 is not in [300,325]
+s2s/lfpw/enfo: warning: s2s.lfpw_mn2t6_2.grib2, field 82 [surface_air_minimum_temperature_sfc]: surface_air_minimum_temperature_sfc minimum value 250.259 is not in [160,250]
 */
    {
       "surface_air_minimum_temperature_sfc",
       160,
-      245,
+      260,
       300,
-      325,
+      330,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
          {"paramId", GRIB_TYPE_LONG, 122},
@@ -762,10 +765,10 @@ s2s/ammc: warning: s2s.mx2t6_20151224_26.grib2, field 47 [surface_air_maximum_te
 
    {
       "time_integrated_top_net_thermal_radiation_sfc",
-      -1e+10,
-       1e+10,
-      -1e+10,
-       1e+10,
+      -1e+8,
+       1e+8,
+      -1e+8,
+       1e+8,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
          {"paramId", GRIB_TYPE_LONG, 179},
@@ -781,10 +784,10 @@ s2s/ammc: warning: s2s.mx2t6_20151224_26.grib2, field 47 [surface_air_maximum_te
 
    {
       "time_integrated_surface_latent_heat_flux_sfc",
-      -1e+10,
-       1e+10,
-      -1e+10,
-       1e+10,
+      -1e+8,
+       1e+8,
+      -1e+8,
+       1e+8,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
          {"paramId", GRIB_TYPE_LONG, 147},
@@ -797,13 +800,16 @@ s2s/ammc: warning: s2s.mx2t6_20151224_26.grib2, field 47 [surface_air_maximum_te
       },
       {&from_start, &predefined_level},
    },
-
+/*
+ s2s/enfh/rums: warning: s2s.z_s2s_c_rhmc_19850217000000_glob_prod_1296_000.sl.grib2, field 24 [time_integrated_surface_net_solar_radiation_sfc]: time_integrated_surface_net_solar_radiation_sfc minimum value 20718.7 is not in [-0.1,20000]
+ s2s/enfo/ammc: warning: s2s.ssr_20160807_25.grib2, field 62 [time_integrated_surface_net_solar_radiation_sfc]: time_integrated_surface_net_solar_radiation_sfc minimum value 10280.6 is not in [-0.1,10000]
+ */
    {
       "time_integrated_surface_net_solar_radiation_sfc",
-      -1e+10,
-       1e+10,
-      -1e+10,
-       1e+10,
+      -0.1,
+      1e+05,
+      1e+05,
+      1e+07,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
          {"paramId", GRIB_TYPE_LONG, 176},
@@ -819,11 +825,10 @@ s2s/ammc: warning: s2s.mx2t6_20151224_26.grib2, field 47 [surface_air_maximum_te
 
    {
       "time_integrated_surface_net_solar_radiation_downwards_sfc",
-      -1e+10,
-       1e+10,
-      -1e+10,
-       1e+10,
-
+      -0.1,
+      200000,
+      1e+05,
+      1e+09,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
          {"paramId", GRIB_TYPE_LONG, 169},
@@ -839,10 +844,10 @@ s2s/ammc: warning: s2s.mx2t6_20151224_26.grib2, field 47 [surface_air_maximum_te
 
    {
       "time_integrated_surface_net_thermal_radiation_sfc",
-      -1e+10,
-       1e+10,
-      -1e+10,
-       1e+10,
+      -1e+8,
+       1e+8,
+      -1e+8,
+       1e+8,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
          {"paramId", GRIB_TYPE_LONG, 177},
@@ -858,10 +863,10 @@ s2s/ammc: warning: s2s.mx2t6_20151224_26.grib2, field 47 [surface_air_maximum_te
 
    {
       "time_integrated_surface_net_thermal_radiation_downwards_sfc",
-      -1e+10,
-       1e+10,
-      -1e+10,
-       1e+10,
+      -1e+8,
+       1e+8,
+      -1e+8,
+       1e+8,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
          {"paramId", GRIB_TYPE_LONG, 175},
@@ -877,10 +882,10 @@ s2s/ammc: warning: s2s.mx2t6_20151224_26.grib2, field 47 [surface_air_maximum_te
 
    {
       "time_integrated_surface_sensible_heat_flux_sfc",
-      -1e+10,
-       1e+10,
-      -1e+10,
-       1e+10,
+      -1e+8,
+       1e+8,
+      -1e+8,
+       1e+8,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
          {"paramId", GRIB_TYPE_LONG, 146},
@@ -963,8 +968,7 @@ s2s/ammc: warning: s2s.mx2t6_20151224_26.grib2, field 47 [surface_air_maximum_te
 
 /*
    2013-??-??: maximum changed to <0,133> because of cosmo-de boundary effects when coupled with IFS ..
-   2014-07-16-18UTC: maximum changed to <0,200> because of GLAMEPS, v2 maximum value 170.646 (tigge_lam.20140716_18+003.mem025.grib2)
-   2014-08-06-09UTC: warning: tigge_lam.20140805_12+009.mem025.grib2:total_precipitation_sfc.lam maximum value 259.002 is not in [0,200]
+   glameps: warning: tigge_lam.20160814_00+006.mem026.grib2, field 6 [total_precipitation_sfc.lam]: total_precipitation_sfc.lam maximum value 361.151 is not in [0,350]
 */
 
    {
@@ -972,7 +976,7 @@ s2s/ammc: warning: s2s.mx2t6_20151224_26.grib2, field 47 [surface_air_maximum_te
       -0.05,
       0.1,
       0.,
-      300.,
+      400.,
       {
          {"model", GRIB_TYPE_STRING, 0, "lam"},
 
@@ -1015,15 +1019,14 @@ s2s/ammc: warning: s2s.mx2t6_20151224_26.grib2, field 47 [surface_air_maximum_te
    },
 
 /*
-   2014-25-07: upper limit for max changed to <0,150> because of glameps => tigge_lam.20140724_18+003.mem026.grib2, large_scale_precipitation_sfc.lam maximum value 104.745 is not in [0,100]
-   2014-08-11: glameps-hirlamcons-eu, 20140808, 00UTC, test: tigge_lam.20140808_00+006.mem026.grib2, large_scale_precipitation_sfc.lam maximum value 186.24 is not in [0,150]
+   glameps-hirlamcons-eu: warning: tigge_lam.20160814_00+009.mem026.grib2, field 7 [large_scale_precipitation_sfc.lam]: large_scale_precipitation_sfc.lam maximum value 370.829 is not in [0,350]
 */
    {
       "large_scale_precipitation_sfc.lam",
       -0.05,
       0.1,
       0.0,
-      300.,
+      400.,
       {
          {"model", GRIB_TYPE_STRING, 0, "lam"},
 
@@ -1082,6 +1085,7 @@ s2s/ammc: warning: s2s.mx2t6_20151224_26.grib2, field 47 [surface_air_maximum_te
          {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
          {"scaledValueOfFirstFixedSurface", GRIB_TYPE_LONG, 10},
 
+ /*      {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 255}, */
          {NULL, },
       },
       {&three_hourly, &given_level},
@@ -1159,13 +1163,16 @@ s2s_devel, ecmf: warning: s2s.128151.2014111700.test.sfc.pf.768.4.grib2, mean_se
 tigge_lam.tigge_mogreps-uk_2014122709_03+0036.grib2, field 1: mean_sea_level_pressure_sfc minimum value 103069 is not in [90000,103000]
 warning: s2s.2015082000.prod.1104.50.pf.sl.648.grib2, field 335 [mean_sea_level_pressure_sfc]: mean_sea_level_pressure_sfc minimum value 89778 is not in [90000,104000]
 s2s/lfpw: warning: s2s.lfpw_msl_0.grib2, field 1 [mean_sea_level_pressure_sfc]: mean_sea_level_pressure_sfc minimum value 88258.8 is not in [89000,104000]
+s2s/rjtd: warning: s2s.z_tigge_c_rjtd_201605101200_glob_prod_pf_sl_0636_009_0000_msl.grib2, field 1 [mean_sea_level_pressure_sfc]: mean_sea_level_pressure_sfc maximum value 109411 is not in [98000,109000]
+s2s/ammc: warning: s2s.z_s2s_c_cwao_20010602000000_glob_prod_sl_000.grib2, field 833 [mean_sea_level_pressure_sfc]: mean_sea_level_pressure_sfc maximum value 109994
+s2s/enfh/cwao: warning: s2s.z_s2s_c_cwao_20070721000000_glob_prod_sl_001.grib2, field 298 [mean_sea_level_pressure_sfc]: mean_sea_level_pressure_sfc maximum value 110320 is not in [98000,110000]
 */
    {
       "mean_sea_level_pressure_sfc",
       88000,
       104000,
       98000,
-      109000,
+      111000,
       {
          {"paramId", GRIB_TYPE_LONG, 151},
 
@@ -1216,7 +1223,7 @@ s2s/egrr: s2s.z_s2s_c_ukmo_20160102000000_glob_prod_pf_1440_002.rt.pl.grib2, fie
       200,
       35000,
       {
-         {"model", GRIB_TYPE_STRING, 0, "glob"},
+/*       {"model", GRIB_TYPE_STRING, 0, "glob"}, */
 
          {"discipline", GRIB_TYPE_LONG, 0},
          {"parameterCategory", GRIB_TYPE_LONG, 3},
@@ -1230,12 +1237,14 @@ s2s/egrr: s2s.z_s2s_c_ukmo_20160102000000_glob_prod_pf_1440_002.rt.pl.grib2, fie
 
 /*
 warning: s2s.lfpw_t_10.grib2, field 61 [temperature_pl]: temperature_pl minimum value 159.934 is not in [160,260]
+s2s/egrr: warning: s2s.z_s2s_c_ukmo_19960417000000_glob_prod_pf_1440_002.hc.pl.grib2, field 450 [temperature_pl]: temperature_pl minimum value 260.687 is not in [150,260]
+s2s/egrr-enfo warning: s2s.z_s2s_c_ukmo_20160520000000_glob_prod_pf_1440_003.rt.pl.grib2, field 450 [temperature_pl]: temperature_pl minimum value 270.611 is not in [150,270]
 */
 
    {
       "temperature_pl",
       150,
-      260,
+      275,
       200,
       330,
       {
@@ -1255,13 +1264,14 @@ warning: s2s.lfpw_t_10.grib2, field 61 [temperature_pl]: temperature_pl minimum
 /* 
    S2S/ammc: warning: s2s.t_20150906_21.grib2, field 11 [temperature_pl]: temperature_pl minimum value 44.6657 is not in [50,260]
    S2S/ammc: warning: s2s.t_20150906_24.grib2, field 321 [temperature_pl]: temperature_pl minimum value -48.9135 is not in [50,260]
+   S2S/ammc: warning: s2s.t_20160403_16.grib2, field 571 [temperature_pl.ammc]: temperature_pl.ammc maximum value 343.462 is not in [200,340]
 */
    {
       "temperature_pl.ammc",
-      -100,
+      -999,
       260,
       200,
-      340,
+      350,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
 
@@ -1311,13 +1321,15 @@ warning: s2s.z_tigge_c_kwbc_20020817000000_ncep_prod_pf_pl_0000_003_0010_u.grib2
    S2S/CAWCR: v_velocity_pl maximum value 8.54936 is not in [10,150]
    S2S/CAWCR: v_velocity_pl minimum value -128.209 is not in [-120,-10]
    ammc-s2s-enfo: warning: s2s.v_20160131_0.grib2, field 430 [v_velocity_pl]: v_velocity_pl minimum value -4.84592 is not in [-190,-5]
+   ammc-s2s-enfo: warning: s2s.v_20160324_7.grib2, field 160 [v_velocity_pl]: v_velocity_pl maximum value 3.79724 is not in [4,190]
+   ammc-s2s-enfo: warning: s2s.v_20160526_0.grib2, field 611 [v_velocity_pl]: v_velocity_pl minimum value -194.691 is not in [-190,-2]
 */
 
    {
       "v_velocity_pl",
-      -190,
-      -4,
-      4,
+      -200,
+      -2,
+      2,
       190,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
@@ -1371,16 +1383,20 @@ warning: s2s.z_tigge_c_kwbc_20020817000000_ncep_prod_pf_pl_0000_003_0010_u.grib2
    s2s_devel, ecmf, 20150101, 00UTC, test, enfh, warning: s2s.2015010100.test.768.10.pf.20020101.pl.0.grib2, field 372 [w_vertical_velocity_pl]: w_vertical_velocity_pl minimum value -5.02998 is not in [-5,0] 
 warning: s2s.z_tigge_c_kwbc_20150817000000_ncep_prod_pf_pl_0000_015_0500_w.grib2, field 3 [w_vertical_velocity_pl]: w_vertical_velocity_pl minimum value -7.25731 is not in [-6,0]
   s2s/kwbc/enfo: warning: s2s.z_tigge_c_kwbc_20151114000000_ncep_prod_pf_pl_0000_011_0500_w.grib2, field 7 [w_vertical_velocity_pl]: w_vertical_velocity_pl minimum value -10.202 is not in [-10,0]
+  s2s/cwao/enfo: warning: s2s.z_s2s_c_cwao_20160512000000_glob_prod_??_pl_00_384_003.grib2, field 28 [w_vertical_velocity_pl]: w_vertical_velocity_pl minimum value -19.8681 is not in [-12,0]
 
 */
    {
       "w_vertical_velocity_pl",
-      -12,
+      -25,
       0,
       0,
-      12,
+      25,
       {
          {"model", GRIB_TYPE_STRING, 0, "glob"},
+
+         {"paramId", GRIB_TYPE_LONG, 135},
+
          {"discipline", GRIB_TYPE_LONG, 0},
          {"parameterCategory", GRIB_TYPE_LONG, 2},
          {"parameterNumber", GRIB_TYPE_LONG, 8},
@@ -1624,11 +1640,12 @@ s2s_devel, ecmf, 20141229, 00UTC, test, enfh, real:  s2s.2014122900.test.768.10.
 warning: s2s.z_tigge_c_kwbc_19990817000000_ncep_prod_cf_sl_0024_000_0000_tcw.grib2, field 33 [total_column_water_sfc.glob]: total_column_water_sfc.glob minimum value -0.168614 is not in [0.001,1]
 warning: s2s.z_tigge_c_kwbc_20090829000000_ncep_prod_pf_sl_0024_003_0000_tcw.grib2, field 11 [total_column_water_sfc.glob]: total_column_water_sfc.glob minimum value -2.00987 is not in [-2,1]
   => [-2.00987,1]
+  lfpw/enfo: warning: s2s.lfpw_tcw_0.grib2, field 10 [total_column_water_sfc.glob.s2]: total_column_water_sfc.glob.s2 minimum value 1.01153 is not in [-3,1]
 */
    {
       "total_column_water_sfc.glob.s2",
       -3.0,
-      1,
+      2,
       50,
       150,
       {
@@ -1731,11 +1748,11 @@ s2s/ammc: warning: s2s.2t_20151224_26.grib2, field 12 [surface_air_temperature_s
 s2s/kwbc/enfh: warning: s2s.z_s2s_c_rhmc_20150819000000_glob_prod_1464_000.sl.grib2, field 17 [skin_temperature_sfc.glob]: skin_temperature_sfc.glob minimum value 237.261 is not in [
 s2s/rums/enfo warning: s2s.z_s2s_c_rhmc_20150826000000_glob_prod_1392_003.sl.grib2, field 15 [skin_temperature_sfc.glob]: skin_temperature_sfc.glob minimum value 240.467 is not in [180,240]
 s2s/ammc/enfo warning: warning: s2s.skt_20150920_4.grib2, field 12 [skin_temperature_sfc.glob]: skin_temperature_sfc.glob minimum value 179.087 is not in [180,245]
-180,230]
+s2s/ammc/enfo warning: warning: s2s.skt_20160410_21.grib2, field 57 [skin_temperature_sfc.glob.s2]: skin_temperature_sfc.glob.s2 minimum value 164.277 is not in [175,245]
 */
    {
       "skin_temperature_sfc.glob.s2",
-      175,
+      160,
       245,
       300,
       355,
@@ -1990,6 +2007,34 @@ warning: s2s.z_tigge_c_kwbc_19990817000000_ncep_prod_cf_sl_0024_000_0000_sd.grib
       {&daily_average, &predefined_level},
    },
 
+/*s2s/isac:warning: s2s.z_s2s_c_isac_201510190000_glob_prod_cf_0744_00.sl.grib2, field 25 [snow_depth_water_equivalent_sfc.glob]: snow_depth_water_equivalent_sfc.glob maximum value 118.824
+  s2s/cwao:warning: warning: s2s.z_s2s_c_cwao_20130211000000_glob_prod_sl_000.grib2, field 23 [snow_depth_water_equivalent_sfc.glob.s2]: snow_depth_water_equivalent_sfc.glob.s2 maximum value 30452.5 is not in [100,15000]
+*/
+   {
+      "snow_depth_water_equivalent_sfc.glob.s2.cwao",
+      -4e-19,
+      0,
+      100,
+      40000,
+      {
+         {"model", GRIB_TYPE_STRING, 0, "glob"},
+         {"class", GRIB_TYPE_STRING, 0, "s2"},
+         {"centre", GRIB_TYPE_STRING, 1, "cwao"},
+
+         {"paramId", GRIB_TYPE_LONG, 228141},
+
+         {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 0},
+
+         {"discipline", GRIB_TYPE_LONG, 0},
+         {"parameterCategory", GRIB_TYPE_LONG, 1},
+         {"parameterNumber", GRIB_TYPE_LONG, 60},
+
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 1},
+         {NULL, },
+      },
+      {&daily_average, &predefined_level},
+   },
+
  /*
 warning: s2s.z_tigge_c_kwbc_20150817000000_ncep_prod_cf_sl_0024_000_0000_tcc.grib2, field 2 [total_cloud_cover_sfc.glob]: total_cloud_cover_sfc.glob maximum value 100.716 is not in [99.99,100.01]
 warning: s2s.z_s2s_c_babj_20150817000000_glob_prod_cf_1440_000.sl.grib2, field 2582 [total_cloud_cover_sfc.glob]: total_cloud_cover_sfc.glob maximum value 94.4214 is not in [99.99,100.01]
@@ -2300,7 +2345,7 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
    {
       "temperature_ml",
       150,
-      260,
+      270,
       200,
       330,
       {
@@ -2554,9 +2599,9 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
    {
       "relative_humidity_hl",
       0,
-      0.005,
-      0.01,
-      1.001,
+      10,
+      90,
+      100.1,
       {
          {"paramId", GRIB_TYPE_LONG, 157},
          {"discipline", GRIB_TYPE_LONG, 0},
@@ -2571,7 +2616,7 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
    {
       "temperature_hl",
       150,
-      260,
+      270,
       200,
       330,
       {
@@ -2634,17 +2679,17 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
          {"parameterCategory", GRIB_TYPE_LONG, 0},
          {"parameterNumber", GRIB_TYPE_LONG, 16},
          {"typeOfStatisticalProcessing", GRIB_TYPE_LONG, 1},
+         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 177},
          {NULL, },
       },
-/*     {&from_start, &predefined_level}, xxx typeOfFirstFixedSurface ??? */
-      {&from_start},
+       {&from_start, &predefined_level},
    },
    {
       "2_metre_relative_humidity",
       0,
-      0.3,
-      0.5,
-      1.001,
+      10,
+      90,
+      100.1,
       {
          {"paramId", GRIB_TYPE_LONG, 260242},
          {"discipline", GRIB_TYPE_LONG, 0},
@@ -2690,10 +2735,10 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
    },
    {
       "time_integrated_surface_clear-sky_solar_radiation_downwards",
-      -1e+10,
-       1e+10,
-      -1e+10,
-       1e+10,
+      -0.1,
+      200000,
+      1e+05,
+      1e+09,
       {
          {"paramId", GRIB_TYPE_LONG, 260423},
          {"discipline", GRIB_TYPE_LONG, 0},
@@ -2707,10 +2752,10 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
    },
    {
       "time_integrated_surface_clear-sky_solar_radiation_upwards",
-      -1e+10,
-       1e+10,
-      -1e+10,
-       1e+10,
+      -0.1,
+      200000,
+      1e+05,
+      1e+09,
       {
          {"paramId", GRIB_TYPE_LONG, 260427},
          {"discipline", GRIB_TYPE_LONG, 0},
@@ -2741,10 +2786,10 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
    },
    {
       "time_integrated_surface_direct_solar_radiation",
-      -1e+10,
-       1e+10,
-      -1e+10,
-       1e+10,
+      -0.1,
+      20000,
+      1e+05,
+      1e+09,
       {
          {"paramId", GRIB_TYPE_LONG, 260264},
          {"discipline", GRIB_TYPE_LONG, 0},
@@ -2793,7 +2838,7 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
       {&point_in_time, &given_level},
    },
    {
-      "10_metre_wind_gust_uerra", /* TBD xxx Length of time range 1/3/6 checks? */
+      "10_metre_wind_gust_uerra",
       0.001,
       10,
       10,
@@ -3000,23 +3045,6 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
       },
       {&point_in_time, &given_level},
    },
-   {
-      "soil_temperature_level",
-      200,
-      230,
-      300,
-      350,
-      {
-         {"paramId", GRIB_TYPE_LONG, 260360},
-         {"discipline", GRIB_TYPE_LONG, 2},
-         {"parameterCategory", GRIB_TYPE_LONG, 3},
-         {"parameterNumber", GRIB_TYPE_LONG, 18},
-         {"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 151},
-         {"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
-         {NULL, },
-      },
-      {&point_in_time, &given_level},
-   },
 
    {
       "soil_temperature_layer",
@@ -3073,6 +3101,5 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
       },
       {&point_in_time, &given_level, &pressure_level},
    },
-
 };
 
diff --git a/tools/Makefile.am b/tools/Makefile.am
index b92d617..dbc494a 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -22,7 +22,7 @@ bin_PROGRAMS = grib_histogram big2gribex \
                gts_copy gts_dump gts_filter gts_ls \
 							 metar_dump metar_ls
 
-noinst_PROGRAMS =  gaussian grib_diff mars_request xref all_keys #compile #dumpload grib_compare_old
+noinst_PROGRAMS =  gaussian mars_request xref #compile #dumpload grib_compare_old
 
 #test_SOURCES   =  test.c
 
@@ -38,7 +38,6 @@ codes_count_SOURCES           =  codes_count.c
 grib_histogram_SOURCES        =  grib_histogram.c
 codes_parser_SOURCES          =  codes_parser.c
 grib_list_keys_SOURCES        =  list_keys.c
-all_keys_SOURCES              =  all_keys.c
 grib2ppm_SOURCES              =  grib2ppm.c
 codes_info_SOURCES            =  codes_info.c
 grib_ls_SOURCES               =  grib_ls.c
@@ -49,7 +48,6 @@ grib_set_SOURCES              =  grib_set.c
 grib_index_build_SOURCES      =  grib_index_build.c
 grib_get_SOURCES              =  grib_get.c
 grib_get_data_SOURCES         =  grib_get_data.c
-grib_diff_SOURCES             =  grib_diff.c
 grib_compare_SOURCES          =  grib_compare.c 
 big2gribex_SOURCES            =  big2gribex.c
 mars_request_SOURCES          =  mars_request.c
diff --git a/tools/Makefile.in b/tools/Makefile.in
deleted file mode 100644
index bf8ced7..0000000
--- a/tools/Makefile.in
+++ /dev/null
@@ -1,1327 +0,0 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
- at SET_MAKE@
-
-
-
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-bin_PROGRAMS = grib_histogram$(EXEEXT) big2gribex$(EXEEXT) \
-	codes_info$(EXEEXT) codes_count$(EXEEXT) grib_filter$(EXEEXT) \
-	grib_ls$(EXEEXT) grib_dump$(EXEEXT) grib_merge$(EXEEXT) \
-	grib2ppm$(EXEEXT) grib_set$(EXEEXT) grib_get$(EXEEXT) \
-	grib_get_data$(EXEEXT) grib_copy$(EXEEXT) grib_repair$(EXEEXT) \
-	grib_compare$(EXEEXT) grib_list_keys$(EXEEXT) \
-	codes_parser$(EXEEXT) grib_count$(EXEEXT) \
-	grib_index_build$(EXEEXT) grib1to2$(EXEEXT) \
-	gg_sub_area_check$(EXEEXT) grib_to_netcdf$(EXEEXT) \
-	grib_to_json$(EXEEXT) bufr_count$(EXEEXT) \
-	codes_bufr_filter$(EXEEXT) bufr_ls$(EXEEXT) bufr_dump$(EXEEXT) \
-	bufr_set$(EXEEXT) bufr_get$(EXEEXT) bufr_copy$(EXEEXT) \
-	bufr_compare$(EXEEXT) bufr_index_build$(EXEEXT) \
-	gts_copy$(EXEEXT) gts_dump$(EXEEXT) gts_filter$(EXEEXT) \
-	gts_ls$(EXEEXT) metar_dump$(EXEEXT) metar_ls$(EXEEXT)
-noinst_PROGRAMS = gaussian$(EXEEXT) grib_diff$(EXEEXT) \
-	mars_request$(EXEEXT) xref$(EXEEXT) all_keys$(EXEEXT)
-subdir = tools
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(dist_bin_SCRIPTS) $(top_srcdir)/config/depcomp \
-	$(noinst_HEADERS)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_linux_distribution.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/src/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libgrib_tools_la_LIBADD =
-am_libgrib_tools_la_OBJECTS = grib_tools.lo grib_options.lo
-libgrib_tools_la_OBJECTS = $(am_libgrib_tools_la_OBJECTS)
-AM_V_lt = $(am__v_lt_ at AM_V@)
-am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
-PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
-am_all_keys_OBJECTS = all_keys.$(OBJEXT)
-all_keys_OBJECTS = $(am_all_keys_OBJECTS)
-all_keys_LDADD = $(LDADD)
-all_keys_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_big2gribex_OBJECTS = big2gribex.$(OBJEXT)
-big2gribex_OBJECTS = $(am_big2gribex_OBJECTS)
-big2gribex_LDADD = $(LDADD)
-big2gribex_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_bufr_compare_OBJECTS = bufr_compare.$(OBJEXT)
-bufr_compare_OBJECTS = $(am_bufr_compare_OBJECTS)
-bufr_compare_LDADD = $(LDADD)
-bufr_compare_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_bufr_copy_OBJECTS = bufr_copy.$(OBJEXT)
-bufr_copy_OBJECTS = $(am_bufr_copy_OBJECTS)
-bufr_copy_LDADD = $(LDADD)
-bufr_copy_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_bufr_count_OBJECTS = codes_count.$(OBJEXT)
-bufr_count_OBJECTS = $(am_bufr_count_OBJECTS)
-bufr_count_LDADD = $(LDADD)
-bufr_count_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_bufr_dump_OBJECTS = bufr_dump.$(OBJEXT)
-bufr_dump_OBJECTS = $(am_bufr_dump_OBJECTS)
-bufr_dump_LDADD = $(LDADD)
-bufr_dump_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_bufr_get_OBJECTS = bufr_get.$(OBJEXT)
-bufr_get_OBJECTS = $(am_bufr_get_OBJECTS)
-bufr_get_LDADD = $(LDADD)
-bufr_get_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_bufr_index_build_OBJECTS = bufr_index_build.$(OBJEXT)
-bufr_index_build_OBJECTS = $(am_bufr_index_build_OBJECTS)
-bufr_index_build_LDADD = $(LDADD)
-bufr_index_build_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_bufr_ls_OBJECTS = bufr_ls.$(OBJEXT)
-bufr_ls_OBJECTS = $(am_bufr_ls_OBJECTS)
-bufr_ls_LDADD = $(LDADD)
-bufr_ls_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_bufr_set_OBJECTS = bufr_set.$(OBJEXT)
-bufr_set_OBJECTS = $(am_bufr_set_OBJECTS)
-bufr_set_LDADD = $(LDADD)
-bufr_set_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_codes_bufr_filter_OBJECTS = bufr_filter.$(OBJEXT)
-codes_bufr_filter_OBJECTS = $(am_codes_bufr_filter_OBJECTS)
-codes_bufr_filter_LDADD = $(LDADD)
-codes_bufr_filter_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_codes_count_OBJECTS = codes_count.$(OBJEXT)
-codes_count_OBJECTS = $(am_codes_count_OBJECTS)
-codes_count_LDADD = $(LDADD)
-codes_count_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_codes_info_OBJECTS = codes_info.$(OBJEXT)
-codes_info_OBJECTS = $(am_codes_info_OBJECTS)
-codes_info_LDADD = $(LDADD)
-codes_info_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_codes_parser_OBJECTS = codes_parser.$(OBJEXT)
-codes_parser_OBJECTS = $(am_codes_parser_OBJECTS)
-codes_parser_LDADD = $(LDADD)
-codes_parser_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_gaussian_OBJECTS = gaussian.$(OBJEXT)
-gaussian_OBJECTS = $(am_gaussian_OBJECTS)
-gaussian_LDADD = $(LDADD)
-gaussian_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_gg_sub_area_check_OBJECTS = gg_sub_area_check.$(OBJEXT)
-gg_sub_area_check_OBJECTS = $(am_gg_sub_area_check_OBJECTS)
-gg_sub_area_check_LDADD = $(LDADD)
-gg_sub_area_check_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib1to2_OBJECTS =
-grib1to2_OBJECTS = $(am_grib1to2_OBJECTS)
-grib1to2_LDADD = $(LDADD)
-grib1to2_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib2ppm_OBJECTS = grib2ppm.$(OBJEXT)
-grib2ppm_OBJECTS = $(am_grib2ppm_OBJECTS)
-grib2ppm_LDADD = $(LDADD)
-grib2ppm_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_compare_OBJECTS = grib_compare.$(OBJEXT)
-grib_compare_OBJECTS = $(am_grib_compare_OBJECTS)
-grib_compare_LDADD = $(LDADD)
-grib_compare_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_copy_OBJECTS = grib_copy.$(OBJEXT)
-grib_copy_OBJECTS = $(am_grib_copy_OBJECTS)
-grib_copy_LDADD = $(LDADD)
-grib_copy_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_count_OBJECTS = codes_count.$(OBJEXT)
-grib_count_OBJECTS = $(am_grib_count_OBJECTS)
-grib_count_LDADD = $(LDADD)
-grib_count_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_diff_OBJECTS = grib_diff.$(OBJEXT)
-grib_diff_OBJECTS = $(am_grib_diff_OBJECTS)
-grib_diff_LDADD = $(LDADD)
-grib_diff_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_dump_OBJECTS = grib_dump.$(OBJEXT)
-grib_dump_OBJECTS = $(am_grib_dump_OBJECTS)
-grib_dump_LDADD = $(LDADD)
-grib_dump_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_filter_OBJECTS = grib_filter.$(OBJEXT)
-grib_filter_OBJECTS = $(am_grib_filter_OBJECTS)
-grib_filter_LDADD = $(LDADD)
-grib_filter_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_get_OBJECTS = grib_get.$(OBJEXT)
-grib_get_OBJECTS = $(am_grib_get_OBJECTS)
-grib_get_LDADD = $(LDADD)
-grib_get_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_get_data_OBJECTS = grib_get_data.$(OBJEXT)
-grib_get_data_OBJECTS = $(am_grib_get_data_OBJECTS)
-grib_get_data_LDADD = $(LDADD)
-grib_get_data_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_histogram_OBJECTS = grib_histogram.$(OBJEXT)
-grib_histogram_OBJECTS = $(am_grib_histogram_OBJECTS)
-grib_histogram_LDADD = $(LDADD)
-grib_histogram_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_index_build_OBJECTS = grib_index_build.$(OBJEXT)
-grib_index_build_OBJECTS = $(am_grib_index_build_OBJECTS)
-grib_index_build_LDADD = $(LDADD)
-grib_index_build_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_list_keys_OBJECTS = list_keys.$(OBJEXT)
-grib_list_keys_OBJECTS = $(am_grib_list_keys_OBJECTS)
-grib_list_keys_LDADD = $(LDADD)
-grib_list_keys_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_ls_OBJECTS = grib_ls.$(OBJEXT)
-grib_ls_OBJECTS = $(am_grib_ls_OBJECTS)
-grib_ls_LDADD = $(LDADD)
-grib_ls_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_merge_OBJECTS = grib_merge.$(OBJEXT)
-grib_merge_OBJECTS = $(am_grib_merge_OBJECTS)
-grib_merge_LDADD = $(LDADD)
-grib_merge_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_repair_OBJECTS = grib_repair.$(OBJEXT)
-grib_repair_OBJECTS = $(am_grib_repair_OBJECTS)
-grib_repair_LDADD = $(LDADD)
-grib_repair_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_set_OBJECTS = grib_set.$(OBJEXT)
-grib_set_OBJECTS = $(am_grib_set_OBJECTS)
-grib_set_LDADD = $(LDADD)
-grib_set_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_to_json_OBJECTS = grib_to_json.$(OBJEXT)
-grib_to_json_OBJECTS = $(am_grib_to_json_OBJECTS)
-grib_to_json_LDADD = $(LDADD)
-grib_to_json_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_grib_to_netcdf_OBJECTS = grib_to_netcdf.$(OBJEXT)
-grib_to_netcdf_OBJECTS = $(am_grib_to_netcdf_OBJECTS)
-am__DEPENDENCIES_1 =
-grib_to_netcdf_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_1)
-am_gts_copy_OBJECTS = gts_copy.$(OBJEXT)
-gts_copy_OBJECTS = $(am_gts_copy_OBJECTS)
-gts_copy_LDADD = $(LDADD)
-gts_copy_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_gts_dump_OBJECTS = gts_dump.$(OBJEXT)
-gts_dump_OBJECTS = $(am_gts_dump_OBJECTS)
-gts_dump_LDADD = $(LDADD)
-gts_dump_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_gts_filter_OBJECTS = gts_filter.$(OBJEXT)
-gts_filter_OBJECTS = $(am_gts_filter_OBJECTS)
-gts_filter_LDADD = $(LDADD)
-gts_filter_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_gts_ls_OBJECTS = gts_ls.$(OBJEXT)
-gts_ls_OBJECTS = $(am_gts_ls_OBJECTS)
-gts_ls_LDADD = $(LDADD)
-gts_ls_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_mars_request_OBJECTS = mars_request.$(OBJEXT)
-mars_request_OBJECTS = $(am_mars_request_OBJECTS)
-mars_request_LDADD = $(LDADD)
-mars_request_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_metar_dump_OBJECTS = metar_dump.$(OBJEXT)
-metar_dump_OBJECTS = $(am_metar_dump_OBJECTS)
-metar_dump_LDADD = $(LDADD)
-metar_dump_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_metar_ls_OBJECTS = metar_ls.$(OBJEXT)
-metar_ls_OBJECTS = $(am_metar_ls_OBJECTS)
-metar_ls_LDADD = $(LDADD)
-metar_ls_DEPENDENCIES = libgrib_tools.la \
-	$(top_builddir)/src/libeccodes.la
-am_xref_OBJECTS = xref.$(OBJEXT)
-xref_OBJECTS = $(am_xref_OBJECTS)
-xref_LDADD = $(LDADD)
-xref_DEPENDENCIES = libgrib_tools.la $(top_builddir)/src/libeccodes.la
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-SCRIPTS = $(dist_bin_SCRIPTS)
-AM_V_P = $(am__v_P_ at AM_V@)
-am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_ at AM_V@)
-am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_ at AM_V@)
-am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_ at AM_V@)
-am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(libgrib_tools_la_SOURCES) $(all_keys_SOURCES) \
-	$(big2gribex_SOURCES) $(bufr_compare_SOURCES) \
-	$(bufr_copy_SOURCES) $(bufr_count_SOURCES) \
-	$(bufr_dump_SOURCES) $(bufr_get_SOURCES) \
-	$(bufr_index_build_SOURCES) $(bufr_ls_SOURCES) \
-	$(bufr_set_SOURCES) $(codes_bufr_filter_SOURCES) \
-	$(codes_count_SOURCES) $(codes_info_SOURCES) \
-	$(codes_parser_SOURCES) $(gaussian_SOURCES) \
-	$(gg_sub_area_check_SOURCES) $(grib1to2_SOURCES) \
-	$(grib2ppm_SOURCES) $(grib_compare_SOURCES) \
-	$(grib_copy_SOURCES) $(grib_count_SOURCES) \
-	$(grib_diff_SOURCES) $(grib_dump_SOURCES) \
-	$(grib_filter_SOURCES) $(grib_get_SOURCES) \
-	$(grib_get_data_SOURCES) $(grib_histogram_SOURCES) \
-	$(grib_index_build_SOURCES) $(grib_list_keys_SOURCES) \
-	$(grib_ls_SOURCES) $(grib_merge_SOURCES) \
-	$(grib_repair_SOURCES) $(grib_set_SOURCES) \
-	$(grib_to_json_SOURCES) $(grib_to_netcdf_SOURCES) \
-	$(gts_copy_SOURCES) $(gts_dump_SOURCES) $(gts_filter_SOURCES) \
-	$(gts_ls_SOURCES) $(mars_request_SOURCES) \
-	$(metar_dump_SOURCES) $(metar_ls_SOURCES) $(xref_SOURCES)
-DIST_SOURCES = $(libgrib_tools_la_SOURCES) $(all_keys_SOURCES) \
-	$(big2gribex_SOURCES) $(bufr_compare_SOURCES) \
-	$(bufr_copy_SOURCES) $(bufr_count_SOURCES) \
-	$(bufr_dump_SOURCES) $(bufr_get_SOURCES) \
-	$(bufr_index_build_SOURCES) $(bufr_ls_SOURCES) \
-	$(bufr_set_SOURCES) $(codes_bufr_filter_SOURCES) \
-	$(codes_count_SOURCES) $(codes_info_SOURCES) \
-	$(codes_parser_SOURCES) $(gaussian_SOURCES) \
-	$(gg_sub_area_check_SOURCES) $(grib1to2_SOURCES) \
-	$(grib2ppm_SOURCES) $(grib_compare_SOURCES) \
-	$(grib_copy_SOURCES) $(grib_count_SOURCES) \
-	$(grib_diff_SOURCES) $(grib_dump_SOURCES) \
-	$(grib_filter_SOURCES) $(grib_get_SOURCES) \
-	$(grib_get_data_SOURCES) $(grib_histogram_SOURCES) \
-	$(grib_index_build_SOURCES) $(grib_list_keys_SOURCES) \
-	$(grib_ls_SOURCES) $(grib_merge_SOURCES) \
-	$(grib_repair_SOURCES) $(grib_set_SOURCES) \
-	$(grib_to_json_SOURCES) $(grib_to_netcdf_SOURCES) \
-	$(gts_copy_SOURCES) $(gts_dump_SOURCES) $(gts_filter_SOURCES) \
-	$(gts_ls_SOURCES) $(mars_request_SOURCES) \
-	$(metar_dump_SOURCES) $(metar_ls_SOURCES) $(xref_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-HEADERS = $(noinst_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AEC_DIR = @AEC_DIR@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CCSDS_TEST = @CCSDS_TEST@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEVEL_RULES = @DEVEL_RULES@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECCODES_AGE = @ECCODES_AGE@
-ECCODES_CURRENT = @ECCODES_CURRENT@
-ECCODES_DEFINITION_PATH = @ECCODES_DEFINITION_PATH@
-ECCODES_MAIN_VERSION = @ECCODES_MAIN_VERSION@
-ECCODES_MAJOR_VERSION = @ECCODES_MAJOR_VERSION@
-ECCODES_MINOR_VERSION = @ECCODES_MINOR_VERSION@
-ECCODES_PATCH_VERSION = @ECCODES_PATCH_VERSION@
-ECCODES_REVISION = @ECCODES_REVISION@
-ECCODES_SAMPLES_PATH = @ECCODES_SAMPLES_PATH@
-ECCODES_VERSION_STR = @ECCODES_VERSION_STR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB = @EMOS_LIB@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-F90_CHECK = @F90_CHECK@
-F90_MODULE_FLAG = @F90_MODULE_FLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FORTRAN_MOD = @FORTRAN_MOD@
-GREP = @GREP@
-GRIB_API_INC = @GRIB_API_INC@
-GRIB_API_LIB = @GRIB_API_LIB@
-GRIB_DEVEL = @GRIB_DEVEL@
-IFS_SAMPLES_DIR = @IFS_SAMPLES_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-JASPER_DIR = @JASPER_DIR@
-JPEG_TEST = @JPEG_TEST@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_DEPS = @LIBTOOL_DEPS@
-LIB_AEC = @LIB_AEC@
-LIB_JASPER = @LIB_JASPER@
-LIB_OPENJPEG = @LIB_OPENJPEG@
-LIB_PNG = @LIB_PNG@
-LINUX_DISTRIBUTION_NAME = @LINUX_DISTRIBUTION_NAME@
-LINUX_DISTRIBUTION_VERSION = @LINUX_DISTRIBUTION_VERSION@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NETCDF_LDFLAGS = @NETCDF_LDFLAGS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPENJPEG_DIR = @OPENJPEG_DIR@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PERLDIR = @PERLDIR@
-PERL_INSTALL_OPTIONS = @PERL_INSTALL_OPTIONS@
-PERL_MAKE_OPTIONS = @PERL_MAKE_OPTIONS@
-PYTHON = @PYTHON@
-PYTHON_CFLAGS = @PYTHON_CFLAGS@
-PYTHON_CHECK = @PYTHON_CHECK@
-PYTHON_CONFIG = @PYTHON_CONFIG@
-PYTHON_DATA_HANDLER = @PYTHON_DATA_HANDLER@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RM = @RM@
-RPM_CONFIGURE_ARGS = @RPM_CONFIGURE_ARGS@
-RPM_HOST_CPU = @RPM_HOST_CPU@
-RPM_HOST_OS = @RPM_HOST_OS@
-RPM_HOST_VENDOR = @RPM_HOST_VENDOR@
-RPM_RELEASE = @RPM_RELEASE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_PEDANTIC = @WARN_PEDANTIC@
-WERROR = @WERROR@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AM_CFLAGS = @WARN_PEDANTIC@ @WERROR@ -DYYDEBUG
-AM_CPPFLAGS = -DECCODES_SAMPLES_PATH=\"$(ECCODES_SAMPLES_PATH)\" \
-	-DECCODES_DEFINITION_PATH=\"$(ECCODES_DEFINITION_PATH)\"
-
-AM_YFLAGS = -d
-noinst_LTLIBRARIES = libgrib_tools.la
-libgrib_tools_la_SOURCES = grib_tools.c \
-                        grib_options.c
-
-dist_bin_SCRIPTS = bufr_compare_dir
-
-#test_SOURCES   =  test.c
-
-#dumpload_SOURCES   =  dumpload.c loady.y loadl.l load.c dump.c load.h
-grib_merge_SOURCES = grib_merge.c
-grib_to_netcdf_SOURCES = grib_to_netcdf.c
-grib_to_json_SOURCES = grib_to_json.c
-grib_dump_SOURCES = grib_dump.c
-grib_count_SOURCES = codes_count.c
-bufr_count_SOURCES = codes_count.c
-codes_count_SOURCES = codes_count.c
-grib_histogram_SOURCES = grib_histogram.c
-codes_parser_SOURCES = codes_parser.c
-grib_list_keys_SOURCES = list_keys.c
-all_keys_SOURCES = all_keys.c
-grib2ppm_SOURCES = grib2ppm.c
-codes_info_SOURCES = codes_info.c
-grib_ls_SOURCES = grib_ls.c
-grib_copy_SOURCES = grib_copy.c
-grib_repair_SOURCES = grib_repair.c
-grib_filter_SOURCES = grib_filter.c
-grib_set_SOURCES = grib_set.c
-grib_index_build_SOURCES = grib_index_build.c
-grib_get_SOURCES = grib_get.c
-grib_get_data_SOURCES = grib_get_data.c
-grib_diff_SOURCES = grib_diff.c
-grib_compare_SOURCES = grib_compare.c 
-big2gribex_SOURCES = big2gribex.c
-mars_request_SOURCES = mars_request.c
-xref_SOURCES = xref.c
-#compile_SOURCES              =  compile.c
-gaussian_SOURCES = gaussian.c
-gg_sub_area_check_SOURCES = gg_sub_area_check.c
-grib1to2_SOURCES = grib1to2.in
-codes_bufr_filter_SOURCES = bufr_filter.c
-bufr_ls_SOURCES = bufr_ls.c
-bufr_dump_SOURCES = bufr_dump.c
-bufr_set_SOURCES = bufr_set.c
-bufr_get_SOURCES = bufr_get.c
-bufr_copy_SOURCES = bufr_copy.c
-bufr_compare_SOURCES = bufr_compare.c
-bufr_index_build_SOURCES = bufr_index_build.c
-gts_copy_SOURCES = gts_copy.c
-gts_dump_SOURCES = gts_dump.c
-gts_filter_SOURCES = gts_filter.c
-#gts_get_SOURCES = gts_get.c
-gts_ls_SOURCES = gts_ls.c
-metar_dump_SOURCES = metar_dump.c
-metar_ls_SOURCES = metar_ls.c
-INCLUDES = -I$(top_builddir)/src
-LDADD = libgrib_tools.la $(top_builddir)/src/libeccodes.la
-DEPENDENCIES = $(LDADD)
-grib_to_netcdf_LDADD = $(LDADD) $(NETCDF_LDFLAGS) 
-CLEANFILES = libgrib_tools.la
-
-# wingetopt files are for Microsoft Windows Visual Studio support
-noinst_HEADERS = grib_tools.h wingetopt.h wingetopt.c
-EXTRA_DIST = CMakeLists.txt grib1to2.in
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu tools/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstLTLIBRARIES:
-	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-	@list='$(noinst_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-libgrib_tools.la: $(libgrib_tools_la_OBJECTS) $(libgrib_tools_la_DEPENDENCIES) $(EXTRA_libgrib_tools_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(LINK)  $(libgrib_tools_la_OBJECTS) $(libgrib_tools_la_LIBADD) $(LIBS)
-install-binPROGRAMS: $(bin_PROGRAMS)
-	@$(NORMAL_INSTALL)
-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
-	fi; \
-	for p in $$list; do echo "$$p $$p"; done | \
-	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p \
-	 || test -f $$p1 \
-	  ; then echo "$$p"; echo "$$p"; else :; fi; \
-	done | \
-	sed -e 'p;s,.*/,,;n;h' \
-	    -e 's|.*|.|' \
-	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
-	sed 'N;N;N;s,\n, ,g' | \
-	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
-	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
-	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
-	    else { print "f", $$3 "/" $$4, $$1; } } \
-	  END { for (d in files) print "f", d, files[d] }' | \
-	while read type dir files; do \
-	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
-	    test -z "$$files" || { \
-	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
-	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
-	    } \
-	; done
-
-uninstall-binPROGRAMS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-	files=`for p in $$list; do echo "$$p"; done | \
-	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' \
-	`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
-
-clean-binPROGRAMS:
-	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
-
-all_keys$(EXEEXT): $(all_keys_OBJECTS) $(all_keys_DEPENDENCIES) $(EXTRA_all_keys_DEPENDENCIES) 
-	@rm -f all_keys$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(all_keys_OBJECTS) $(all_keys_LDADD) $(LIBS)
-
-big2gribex$(EXEEXT): $(big2gribex_OBJECTS) $(big2gribex_DEPENDENCIES) $(EXTRA_big2gribex_DEPENDENCIES) 
-	@rm -f big2gribex$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(big2gribex_OBJECTS) $(big2gribex_LDADD) $(LIBS)
-
-bufr_compare$(EXEEXT): $(bufr_compare_OBJECTS) $(bufr_compare_DEPENDENCIES) $(EXTRA_bufr_compare_DEPENDENCIES) 
-	@rm -f bufr_compare$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bufr_compare_OBJECTS) $(bufr_compare_LDADD) $(LIBS)
-
-bufr_copy$(EXEEXT): $(bufr_copy_OBJECTS) $(bufr_copy_DEPENDENCIES) $(EXTRA_bufr_copy_DEPENDENCIES) 
-	@rm -f bufr_copy$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bufr_copy_OBJECTS) $(bufr_copy_LDADD) $(LIBS)
-
-bufr_count$(EXEEXT): $(bufr_count_OBJECTS) $(bufr_count_DEPENDENCIES) $(EXTRA_bufr_count_DEPENDENCIES) 
-	@rm -f bufr_count$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bufr_count_OBJECTS) $(bufr_count_LDADD) $(LIBS)
-
-bufr_dump$(EXEEXT): $(bufr_dump_OBJECTS) $(bufr_dump_DEPENDENCIES) $(EXTRA_bufr_dump_DEPENDENCIES) 
-	@rm -f bufr_dump$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bufr_dump_OBJECTS) $(bufr_dump_LDADD) $(LIBS)
-
-bufr_get$(EXEEXT): $(bufr_get_OBJECTS) $(bufr_get_DEPENDENCIES) $(EXTRA_bufr_get_DEPENDENCIES) 
-	@rm -f bufr_get$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bufr_get_OBJECTS) $(bufr_get_LDADD) $(LIBS)
-
-bufr_index_build$(EXEEXT): $(bufr_index_build_OBJECTS) $(bufr_index_build_DEPENDENCIES) $(EXTRA_bufr_index_build_DEPENDENCIES) 
-	@rm -f bufr_index_build$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bufr_index_build_OBJECTS) $(bufr_index_build_LDADD) $(LIBS)
-
-bufr_ls$(EXEEXT): $(bufr_ls_OBJECTS) $(bufr_ls_DEPENDENCIES) $(EXTRA_bufr_ls_DEPENDENCIES) 
-	@rm -f bufr_ls$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bufr_ls_OBJECTS) $(bufr_ls_LDADD) $(LIBS)
-
-bufr_set$(EXEEXT): $(bufr_set_OBJECTS) $(bufr_set_DEPENDENCIES) $(EXTRA_bufr_set_DEPENDENCIES) 
-	@rm -f bufr_set$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(bufr_set_OBJECTS) $(bufr_set_LDADD) $(LIBS)
-
-codes_bufr_filter$(EXEEXT): $(codes_bufr_filter_OBJECTS) $(codes_bufr_filter_DEPENDENCIES) $(EXTRA_codes_bufr_filter_DEPENDENCIES) 
-	@rm -f codes_bufr_filter$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(codes_bufr_filter_OBJECTS) $(codes_bufr_filter_LDADD) $(LIBS)
-
-codes_count$(EXEEXT): $(codes_count_OBJECTS) $(codes_count_DEPENDENCIES) $(EXTRA_codes_count_DEPENDENCIES) 
-	@rm -f codes_count$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(codes_count_OBJECTS) $(codes_count_LDADD) $(LIBS)
-
-codes_info$(EXEEXT): $(codes_info_OBJECTS) $(codes_info_DEPENDENCIES) $(EXTRA_codes_info_DEPENDENCIES) 
-	@rm -f codes_info$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(codes_info_OBJECTS) $(codes_info_LDADD) $(LIBS)
-
-codes_parser$(EXEEXT): $(codes_parser_OBJECTS) $(codes_parser_DEPENDENCIES) $(EXTRA_codes_parser_DEPENDENCIES) 
-	@rm -f codes_parser$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(codes_parser_OBJECTS) $(codes_parser_LDADD) $(LIBS)
-
-gaussian$(EXEEXT): $(gaussian_OBJECTS) $(gaussian_DEPENDENCIES) $(EXTRA_gaussian_DEPENDENCIES) 
-	@rm -f gaussian$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(gaussian_OBJECTS) $(gaussian_LDADD) $(LIBS)
-
-gg_sub_area_check$(EXEEXT): $(gg_sub_area_check_OBJECTS) $(gg_sub_area_check_DEPENDENCIES) $(EXTRA_gg_sub_area_check_DEPENDENCIES) 
-	@rm -f gg_sub_area_check$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(gg_sub_area_check_OBJECTS) $(gg_sub_area_check_LDADD) $(LIBS)
-
-grib2ppm$(EXEEXT): $(grib2ppm_OBJECTS) $(grib2ppm_DEPENDENCIES) $(EXTRA_grib2ppm_DEPENDENCIES) 
-	@rm -f grib2ppm$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib2ppm_OBJECTS) $(grib2ppm_LDADD) $(LIBS)
-
-grib_compare$(EXEEXT): $(grib_compare_OBJECTS) $(grib_compare_DEPENDENCIES) $(EXTRA_grib_compare_DEPENDENCIES) 
-	@rm -f grib_compare$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_compare_OBJECTS) $(grib_compare_LDADD) $(LIBS)
-
-grib_copy$(EXEEXT): $(grib_copy_OBJECTS) $(grib_copy_DEPENDENCIES) $(EXTRA_grib_copy_DEPENDENCIES) 
-	@rm -f grib_copy$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_copy_OBJECTS) $(grib_copy_LDADD) $(LIBS)
-
-grib_count$(EXEEXT): $(grib_count_OBJECTS) $(grib_count_DEPENDENCIES) $(EXTRA_grib_count_DEPENDENCIES) 
-	@rm -f grib_count$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_count_OBJECTS) $(grib_count_LDADD) $(LIBS)
-
-grib_diff$(EXEEXT): $(grib_diff_OBJECTS) $(grib_diff_DEPENDENCIES) $(EXTRA_grib_diff_DEPENDENCIES) 
-	@rm -f grib_diff$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_diff_OBJECTS) $(grib_diff_LDADD) $(LIBS)
-
-grib_dump$(EXEEXT): $(grib_dump_OBJECTS) $(grib_dump_DEPENDENCIES) $(EXTRA_grib_dump_DEPENDENCIES) 
-	@rm -f grib_dump$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_dump_OBJECTS) $(grib_dump_LDADD) $(LIBS)
-
-grib_filter$(EXEEXT): $(grib_filter_OBJECTS) $(grib_filter_DEPENDENCIES) $(EXTRA_grib_filter_DEPENDENCIES) 
-	@rm -f grib_filter$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_filter_OBJECTS) $(grib_filter_LDADD) $(LIBS)
-
-grib_get$(EXEEXT): $(grib_get_OBJECTS) $(grib_get_DEPENDENCIES) $(EXTRA_grib_get_DEPENDENCIES) 
-	@rm -f grib_get$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_get_OBJECTS) $(grib_get_LDADD) $(LIBS)
-
-grib_get_data$(EXEEXT): $(grib_get_data_OBJECTS) $(grib_get_data_DEPENDENCIES) $(EXTRA_grib_get_data_DEPENDENCIES) 
-	@rm -f grib_get_data$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_get_data_OBJECTS) $(grib_get_data_LDADD) $(LIBS)
-
-grib_histogram$(EXEEXT): $(grib_histogram_OBJECTS) $(grib_histogram_DEPENDENCIES) $(EXTRA_grib_histogram_DEPENDENCIES) 
-	@rm -f grib_histogram$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_histogram_OBJECTS) $(grib_histogram_LDADD) $(LIBS)
-
-grib_index_build$(EXEEXT): $(grib_index_build_OBJECTS) $(grib_index_build_DEPENDENCIES) $(EXTRA_grib_index_build_DEPENDENCIES) 
-	@rm -f grib_index_build$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_index_build_OBJECTS) $(grib_index_build_LDADD) $(LIBS)
-
-grib_list_keys$(EXEEXT): $(grib_list_keys_OBJECTS) $(grib_list_keys_DEPENDENCIES) $(EXTRA_grib_list_keys_DEPENDENCIES) 
-	@rm -f grib_list_keys$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_list_keys_OBJECTS) $(grib_list_keys_LDADD) $(LIBS)
-
-grib_ls$(EXEEXT): $(grib_ls_OBJECTS) $(grib_ls_DEPENDENCIES) $(EXTRA_grib_ls_DEPENDENCIES) 
-	@rm -f grib_ls$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_ls_OBJECTS) $(grib_ls_LDADD) $(LIBS)
-
-grib_merge$(EXEEXT): $(grib_merge_OBJECTS) $(grib_merge_DEPENDENCIES) $(EXTRA_grib_merge_DEPENDENCIES) 
-	@rm -f grib_merge$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_merge_OBJECTS) $(grib_merge_LDADD) $(LIBS)
-
-grib_repair$(EXEEXT): $(grib_repair_OBJECTS) $(grib_repair_DEPENDENCIES) $(EXTRA_grib_repair_DEPENDENCIES) 
-	@rm -f grib_repair$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_repair_OBJECTS) $(grib_repair_LDADD) $(LIBS)
-
-grib_set$(EXEEXT): $(grib_set_OBJECTS) $(grib_set_DEPENDENCIES) $(EXTRA_grib_set_DEPENDENCIES) 
-	@rm -f grib_set$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_set_OBJECTS) $(grib_set_LDADD) $(LIBS)
-
-grib_to_json$(EXEEXT): $(grib_to_json_OBJECTS) $(grib_to_json_DEPENDENCIES) $(EXTRA_grib_to_json_DEPENDENCIES) 
-	@rm -f grib_to_json$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_to_json_OBJECTS) $(grib_to_json_LDADD) $(LIBS)
-
-grib_to_netcdf$(EXEEXT): $(grib_to_netcdf_OBJECTS) $(grib_to_netcdf_DEPENDENCIES) $(EXTRA_grib_to_netcdf_DEPENDENCIES) 
-	@rm -f grib_to_netcdf$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(grib_to_netcdf_OBJECTS) $(grib_to_netcdf_LDADD) $(LIBS)
-
-gts_copy$(EXEEXT): $(gts_copy_OBJECTS) $(gts_copy_DEPENDENCIES) $(EXTRA_gts_copy_DEPENDENCIES) 
-	@rm -f gts_copy$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(gts_copy_OBJECTS) $(gts_copy_LDADD) $(LIBS)
-
-gts_dump$(EXEEXT): $(gts_dump_OBJECTS) $(gts_dump_DEPENDENCIES) $(EXTRA_gts_dump_DEPENDENCIES) 
-	@rm -f gts_dump$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(gts_dump_OBJECTS) $(gts_dump_LDADD) $(LIBS)
-
-gts_filter$(EXEEXT): $(gts_filter_OBJECTS) $(gts_filter_DEPENDENCIES) $(EXTRA_gts_filter_DEPENDENCIES) 
-	@rm -f gts_filter$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(gts_filter_OBJECTS) $(gts_filter_LDADD) $(LIBS)
-
-gts_ls$(EXEEXT): $(gts_ls_OBJECTS) $(gts_ls_DEPENDENCIES) $(EXTRA_gts_ls_DEPENDENCIES) 
-	@rm -f gts_ls$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(gts_ls_OBJECTS) $(gts_ls_LDADD) $(LIBS)
-
-mars_request$(EXEEXT): $(mars_request_OBJECTS) $(mars_request_DEPENDENCIES) $(EXTRA_mars_request_DEPENDENCIES) 
-	@rm -f mars_request$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(mars_request_OBJECTS) $(mars_request_LDADD) $(LIBS)
-
-metar_dump$(EXEEXT): $(metar_dump_OBJECTS) $(metar_dump_DEPENDENCIES) $(EXTRA_metar_dump_DEPENDENCIES) 
-	@rm -f metar_dump$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(metar_dump_OBJECTS) $(metar_dump_LDADD) $(LIBS)
-
-metar_ls$(EXEEXT): $(metar_ls_OBJECTS) $(metar_ls_DEPENDENCIES) $(EXTRA_metar_ls_DEPENDENCIES) 
-	@rm -f metar_ls$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(metar_ls_OBJECTS) $(metar_ls_LDADD) $(LIBS)
-
-xref$(EXEEXT): $(xref_OBJECTS) $(xref_DEPENDENCIES) $(EXTRA_xref_DEPENDENCIES) 
-	@rm -f xref$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(xref_OBJECTS) $(xref_LDADD) $(LIBS)
-install-dist_binSCRIPTS: $(dist_bin_SCRIPTS)
-	@$(NORMAL_INSTALL)
-	@list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
-	done | \
-	sed -e 'p;s,.*/,,;n' \
-	    -e 'h;s|.*|.|' \
-	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
-	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
-	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
-	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
-	      if (++n[d] == $(am__install_max)) { \
-		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
-	    else { print "f", d "/" $$4, $$1 } } \
-	  END { for (d in files) print "f", d, files[d] }' | \
-	while read type dir files; do \
-	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
-	     test -z "$$files" || { \
-	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
-	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
-	     } \
-	; done
-
-uninstall-dist_binSCRIPTS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
-	files=`for p in $$list; do echo "$$p"; done | \
-	       sed -e 's,.*/,,;$(transform)'`; \
-	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/all_keys.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/big2gribex.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_compare.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_copy.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_dump.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_filter.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_get.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_index_build.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_ls.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bufr_set.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/codes_count.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/codes_info.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/codes_parser.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gaussian.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gg_sub_area_check.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib2ppm.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_compare.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_copy.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_diff.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_dump.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_filter.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_get.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_get_data.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_histogram.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_index_build.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_ls.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_merge.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_options.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_repair.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_set.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_to_json.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_to_netcdf.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/grib_tools.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gts_copy.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gts_dump.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gts_filter.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gts_ls.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/list_keys.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mars_request.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/metar_dump.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/metar_ls.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/xref.Po at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-binPROGRAMS clean-generic clean-libtool \
-	clean-noinstLTLIBRARIES clean-noinstPROGRAMS mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-binPROGRAMS install-dist_binSCRIPTS
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-binPROGRAMS uninstall-dist_binSCRIPTS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
-	clean-binPROGRAMS clean-generic clean-libtool \
-	clean-noinstLTLIBRARIES clean-noinstPROGRAMS cscopelist-am \
-	ctags ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-binPROGRAMS \
-	install-data install-data-am install-dist_binSCRIPTS \
-	install-dvi install-dvi-am install-exec install-exec-am \
-	install-html install-html-am install-info install-info-am \
-	install-man install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am uninstall-binPROGRAMS uninstall-dist_binSCRIPTS
-
-
-grib1to2$(EXEEXT): grib1to2.in
-	rm -f grib1to2
-	sed "s|@CMAKE_INSTALL_PREFIX@/bin|$(bindir)|" grib1to2.in > grib1to2
-	chmod +x grib1to2
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/tools/bufr_compare.c b/tools/bufr_compare.c
index 1df0692..468c1e8 100644
--- a/tools/bufr_compare.c
+++ b/tools/bufr_compare.c
@@ -44,10 +44,17 @@ compare_double_proc compare_double;
 double global_tolerance=0;
 int packingCompare=0;
 grib_string_list* blacklist=0;
+grib_string_list* keys_list = NULL; /* Used to determine rank of key */
+int isLeafKey = 0; /* 0 if key is top-level, 1 if key has no children attributes */
 int compareAbsolute=1;
 
 static int compare_handles(grib_handle* handle1, grib_handle* handle2, grib_runtime_options* options);
 static int compare_values(grib_runtime_options* options, grib_handle* handle1, grib_handle *handle2, const char *name, int type);
+static int compare_attributes(grib_handle* handle1, grib_handle* handle2, grib_runtime_options* options,
+        grib_accessor* a, const char* prefix, int* err);
+static int compare_attribute(grib_handle* handle1, grib_handle* handle2, grib_runtime_options* options,
+        grib_accessor* a, const char* prefix, int* err);
+
 int error=0;
 int count=0;
 int lastPrint=0;
@@ -62,6 +69,31 @@ int verbose=0;
 int tolerance_factor=1;
 static int write_error=0;
 
+/* Create the list of keys (global variable keys_list) */
+static void new_keys_list()
+{
+    grib_context* c = grib_context_get_default();
+    keys_list=grib_context_malloc_clear(c, sizeof(grib_string_list));
+    if (!keys_list) {
+        fprintf(stderr, "Failed to allocate memory for keys list");
+        exit(1);
+    }
+}
+
+/* Free the keys list (global variable keys_list) */
+static void release_keys_list()
+{
+    grib_string_list* next=keys_list;
+    grib_string_list* cur=keys_list;
+    grib_context* c = grib_context_get_default();
+    while(next) {
+        cur=next;
+        next=next->next;
+        grib_context_free(c,cur->value);
+        grib_context_free(c,cur);
+    }
+}
+
 GRIB_INLINE static double compare_double_absolute(double *a,double *b,double *err)
 {
     double ret=0;
@@ -150,30 +182,30 @@ static double relative_error(double a,double b,double err)
 }
 
 grib_option grib_options[]={
-        /*  {id, args, help}, on, command_line, value*/
-        {"r",0,"Compare files in which the messages are not in the same order. This option is time expensive.\n",0,1,0},
-        {"b:",0,0,0,1,0},
-        {"d",0,"Write different messages on files\n",0,1,0},
-        {"T:",0,0,1,0,"B"},
-        {"c:",0,0,0,1,0},
-        {"S:","start","First field to be processed.\n",0,1,0},
-        {"E:","end","Last field to be processed.\n",0,1,0},
-        {"a",0,"-c option modifier. The keys listed with the option -c will be added to the list of keys compared without -c.\n"
+    /*  {id, args, help}, on, command_line, value*/
+    /*{"r",0,"Compare files in which the messages are not in the same order. This option is time expensive.\n",0,1,0},*/
+    {"b:",0,0,0,1,0},
+    {"d",0,"Write different messages on files\n",0,1,0},
+    {"T:",0,0,1,0,"B"},
+    {"c:",0,0,0,1,0},
+    {"S:","start","First field to be processed.\n",0,1,0},
+    {"E:","end","Last field to be processed.\n",0,1,0},
+    {"a",0,"-c option modifier. The keys listed with the option -c will be added to the list of keys compared without -c.\n"
                 ,0,1,0},
-                {"H",0,"Compare only message headers. Bit-by-bit compare on. Incompatible with -c option.\n",0,1,0},
-                {"R:",0,0,0,1,0},
-                {"A:",0,0,0,1,0},
-                {"P",0,"Compare data values using the packing error as tolerance.\n",0,1,0},
-                {"t:","factor","Compare data values using factor multiplied by the tolerance specified in options -P -R -A.\n",0,1,0},
-                {"w:",0,0,0,1,0},
-                {"f",0,0,0,1,0},
-                {"F",0,0,1,0,0},
-                {"q",0,0,1,0,0},
-                {"M",0,0,1,0,0},
-                {"I",0,0,1,0,0},
-                {"V",0,0,0,1,0},
-                {"7",0,0,0,1,0},
-                {"v",0,0,0,1,0}
+    {"H",0,"Compare only message headers. Bit-by-bit compare on. Incompatible with -c option.\n",0,1,0},
+    {"R:",0,0,0,1,0},
+    {"A:",0,0,0,1,0},
+    {"P",0,"Compare data values using the packing error as tolerance.\n",0,1,0},
+    {"t:","factor","Compare data values using factor multiplied by the tolerance specified in options -P -R -A.\n",0,1,0},
+    {"w:",0,0,0,1,0},
+    {"f",0,0,0,1,0},
+    {"F",0,0,1,0,0},
+    {"q",0,0,1,0,0},
+    {"M",0,0,1,0,0},
+    {"I",0,0,1,0,0},
+    {"V",0,0,0,1,0},
+    {"7",0,0,0,1,0},
+    {"v",0,0,0,1,0}
 };
 
 grib_handle* global_handle=NULL;
@@ -182,14 +214,13 @@ int start=-1;
 int end=-1;
 
 char* grib_tool_description=
-        "Compare BUFR messages contained in two files."
-        "\n\tIf some differences are found it fails returning an error code."
-        "\n\tFloating point values are compared exactly by default, different tolerance can be defined see -P -A -R."
-        "\n\tDefault behaviour: absolute error=0, bit-by-bit compare, same order in files.";
+    "Compare BUFR messages contained in two files."
+    "\n\tIf some differences are found it fails returning an error code."
+    "\n\tFloating point values are compared exactly by default, different tolerance can be defined see -P -A -R."
+    "\n\tDefault behaviour: absolute error=0, bit-by-bit compare, same order in files.";
 
 char* grib_tool_name="bufr_compare";
-char* grib_tool_usage="[options] "
-        "file file";
+char* grib_tool_usage="[options] bufr_file1 bufr_file2";
 
 int grib_options_count=sizeof(grib_options)/sizeof(grib_option);
 
@@ -236,11 +267,11 @@ int grib_tool_init(grib_runtime_options* options)
     else headerMode=0;
 
     if (grib_options_on("H") && grib_options_on("c:")) {
-        printf("Error: -H and -c options are incompatible. Choose one of the two please.\n");
+        fprintf(stderr,"Error: -H and -c options are incompatible. Choose one of the two please.\n");
         exit(1);
     }
     if (grib_options_on("a") && !grib_options_on("c:")) {
-        printf("Error: -a option requires -c option. Please define a list of keys with the -c option.\n");
+        fprintf(stderr,"Error: -a option requires -c option. Please define a list of keys with the -c option.\n");
         exit(1);
     }
 
@@ -266,8 +297,8 @@ int grib_tool_init(grib_runtime_options* options)
         options->idx=grib_fieldset_new_from_files(context,filename,
                 nfiles,0,0,0,orderby,&ret);
         if (ret) {
-            printf("unable to create index for input file %s (%s)",
-                    options->infile_extra->name,grib_get_error_message(ret));
+            fprintf(stderr,"unable to create index for input file %s (%s)",
+                    options->infile_extra->name, grib_get_error_message(ret));
             exit(ret);
         }
     } else {
@@ -313,6 +344,16 @@ int grib_tool_init(grib_runtime_options* options)
     if (grib_options_on("t:"))
         tolerance_factor=atof(grib_options_get_option("t:"));
 
+    if (grib_options_on("R:")) {
+        char* sarg=grib_options_get_option("R:");
+        options->tolerance_count=MAX_KEYS;
+        ret=parse_keyval_string(grib_tool_name, sarg,1,GRIB_TYPE_DOUBLE,options->tolerance,&(options->tolerance_count));
+        if (ret == GRIB_INVALID_ARGUMENT) {
+            usage();
+            exit(1);
+        }
+    }
+
     {
         /* Check for 2nd file being a directory. If so, we assume user is comparing to a file */
         /* with the same name as first file in that directory */
@@ -333,22 +374,26 @@ int grib_tool_init(grib_runtime_options* options)
         }
     }
 
+    /* Turn off GRIB multi-field support mode. Not relevant for BUFR */
+    grib_multi_support_off(grib_context_get_default());
+
     return 0;
 }
 
-int grib_tool_new_filename_action(grib_runtime_options* options,const char* file) {
+int grib_tool_new_filename_action(grib_runtime_options* options,const char* file)
+{
     return 0;
 }
-int grib_tool_new_file_action(grib_runtime_options* options,grib_tools_file* file) {
+
+int grib_tool_new_file_action(grib_runtime_options* options,grib_tools_file* file)
+{
     return 0;
 }
 
 static void printInfo(grib_handle* h)
 {
-
     printf("== %d == DIFFERENCE == ",count);
     lastPrint=count;
-
 }
 
 static void print_index_key_values(grib_index* index,int icounter,const char* error_message)
@@ -462,10 +507,10 @@ void grib_tool_print_key_values(grib_runtime_options* options,grib_handle* h)
 
 int grib_tool_finalise_action(grib_runtime_options* options)
 {
-    grib_error* e=error_summary;
+    grib_error* e = error_summary;
     int err=0;
     grib_context* c=grib_context_get_default();
-    error+=morein1+morein2;
+    error += morein1+morein2;
 
     /*if (grib_options_on("w:")) return 0;*/
 
@@ -501,9 +546,8 @@ int grib_tool_finalise_action(grib_runtime_options* options)
         grib_index_delete(options->index1);
         grib_index_delete(options->index2);
     }
-
-
-    if (error !=0) exit(1);
+    release_keys_list();
+    if (error != 0) exit(1);
     return 0;
 }
 
@@ -588,15 +632,12 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g
         return err;
     }
 
-    /*
-  if(type1 != type2)
-  {
-    printInfo(handle1);
-    printf("Warning, [%s] has different types: 1st field: [%s], 2nd field: [%s]\n",
-        name,grib_get_type_name(type1),grib_get_type_name(type2));
-    return GRIB_TYPE_MISMATCH; 
-  }
-     */
+    /* if(type1 != type2) {
+         printInfo(handle1);
+         printf("Warning, [%s] has different types: 1st field: [%s], 2nd field: [%s]\n",
+           name,grib_get_type_name(type1),grib_get_type_name(type2));
+         return GRIB_TYPE_MISMATCH;
+    } */
 
     if(type1 == GRIB_TYPE_LABEL)
         return err;
@@ -604,7 +645,6 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g
     if(type1 == GRIB_TYPE_SECTION)
         return err;
 
-
     if((err = grib_get_size(handle1,name,&len1)) != GRIB_SUCCESS)
     {
         printInfo(handle1);
@@ -629,15 +669,12 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g
         return err;
     }
 
-    /*
-  if(len1 != len2 && type1 != GRIB_TYPE_STRING)
-  {
-    printInfo(handle1);
-    printf("[%s] has different size: 1st field: %ld, 2nd field: %ld\n",name,(long)len1,(long)len2);
-    save_error(c,name);
-    return GRIB_COUNT_MISMATCH;
-  }
-     */
+    /* if(len1 != len2 && type1 != GRIB_TYPE_STRING) {
+          printInfo(handle1);
+          printf("[%s] has different size: 1st field: %ld, 2nd field: %ld\n",name,(long)len1,(long)len2);
+          save_error(c,name);
+          return GRIB_COUNT_MISMATCH;
+        } */
 
     if (options->mode != MODE_BUFR) {
         /* TODO: Ignore missing values for keys in BUFR. Not yet implemented */
@@ -975,35 +1012,124 @@ static int compare_values(grib_runtime_options* options, grib_handle* handle1, g
     }
 
     return GRIB_SUCCESS;
+}
+
+static int compare_attributes(grib_handle* handle1, grib_handle* handle2, grib_runtime_options* options,
+        grib_accessor* a, const char* prefix, int* err)
+{
+    int i=0, ret=0;
+    while (i < MAX_ACCESSOR_ATTRIBUTES && a->attributes[i])
+    {
+        /*long native_type = 0;*/
+        grib_accessor* aa = NULL;
+        if ( (a->attributes[i]->flags & GRIB_ACCESSOR_FLAG_DUMP)== 0 ) {
+            ++i; /* next attribute */
+            continue;
+        }
+        aa = a->attributes[i];
+        /*native_type = grib_accessor_get_native_type(aa);   TODO: read only check? */
 
+        isLeafKey = aa->attributes[0]==NULL ? 1 : 0; /* update global variable */
+
+        if (compare_attribute(handle1, handle2, options, aa, prefix, err)) {
+            err++;
+            write_messages(handle1, handle2);
+            ret = 1;
+        }
+
+        ++i; /* next attribute */
+    }
+
+    return ret;
+}
+static int compare_attribute(grib_handle* handle1, grib_handle* handle2, grib_runtime_options* options,
+        grib_accessor* a, const char* prefix, int* err)
+{
+    int ret = 0;
+    grib_context* c = handle1->context;
+    char* fullname = grib_context_malloc_clear( c, sizeof(char)*(strlen(a->name)+strlen(prefix)+5) );
+    sprintf(fullname, "%s->%s", prefix, a->name);
+    if (compare_values(options, handle1, handle2, fullname, GRIB_TYPE_UNDEFINED)) {
+        err++;
+        write_messages(handle1, handle2);
+        ret=1;
+    }
+    /* Recurse if this key has children */
+    if (!isLeafKey) {
+        if (compare_attributes(handle1, handle2, options, a, fullname, err)) {
+            ret=1;
+        }
+    }
+    grib_context_free(c, fullname);
+    return ret;
 }
 
-static int compare_all_dump_keys(grib_handle* handle1, grib_handle* handle2, grib_runtime_options* options, int *err) {
+static int compare_all_dump_keys(grib_handle* handle1, grib_handle* handle2, grib_runtime_options* options, int *err)
+{
     int ret=0;
     const char* name=NULL;
     grib_keys_iterator* iter  = NULL;
-    grib_set_long(handle1,"unpack",1);
-    grib_set_long(handle2,"unpack",1);
+    grib_context* context=handle1->context;
+
+    if (!headerMode) {
+        /* See ECC-333: By setting unpack we get ALL the bufr keys. */
+        /*              In headerMode we want just the header ones */
+        ret = grib_set_long(handle1,"unpack",1);
+        if (ret != GRIB_SUCCESS) {
+            grib_context_log(context, GRIB_LOG_ERROR, "Failed to unpack 1st message: %s", grib_get_error_message(ret));
+            exit(1);
+        }
+        ret = grib_set_long(handle2,"unpack",1);
+        if (ret != GRIB_SUCCESS) {
+            grib_context_log(context, GRIB_LOG_ERROR, "Failed to unpack 2nd message: %s", grib_get_error_message(ret));
+            exit(1);
+        }
+    }
     iter=grib_keys_iterator_new(handle1,0,NULL);
 
     if (!iter) {
-        printf("ERROR: unable to get iterator\n");
+        grib_context_log(context, GRIB_LOG_ERROR, "unable to create keys iterator");
         exit(1);
     }
 
+    release_keys_list(); /* The keys list is used to determine the rank */
+    new_keys_list();
+
     while(grib_keys_iterator_next(iter))
     {
+        int rank = 0;
+        int dofree = 0;
+        char* prefix = NULL;
         grib_accessor* xa=grib_keys_iterator_get_accessor(iter);
-        name=grib_keys_iterator_get_name(iter);
-        /* printf("----- comparing %s\n",name); */
 
+        isLeafKey = 0; /* clear global variable for each key */
+        name=grib_keys_iterator_get_name(iter);
         if (blacklisted(name)) continue;
         if (xa==NULL || ( xa->flags & GRIB_ACCESSOR_FLAG_DUMP )==0 ) continue;
-        if(compare_values(options,handle1,handle2,name,GRIB_TYPE_UNDEFINED))  {
+
+        /* Get full name of key, e.g. '#2#windSpeed' or 'blockNumber' */
+        rank = compute_key_rank(handle1, keys_list, xa->name);
+        if (rank != 0) {
+            prefix=grib_context_malloc_clear(context,sizeof(char)*(strlen(xa->name)+10));
+            dofree = 1;
+            sprintf(prefix,"#%d#%s", rank, xa->name);
+        } else {
+            prefix = (char*)xa->name;
+        }
+
+        /* Compare the key itself */
+        if (compare_values(options, handle1, handle2, prefix, GRIB_TYPE_UNDEFINED)) {
             err++;
-            write_messages(handle1,handle2);
+            write_messages(handle1, handle2);
             ret=1;
         }
+        /* Now compare the key attributes (if any) */
+        if (compare_attributes(handle1, handle2, options, xa, prefix, err)) {
+            err++;
+            write_messages(handle1, handle2);
+            ret=1;
+        }
+        if (dofree) grib_context_free(context, prefix);
     }
 
     grib_keys_iterator_delete(iter);
@@ -1027,52 +1153,13 @@ static int compare_handles(grib_handle* handle1, grib_handle* handle2, grib_runt
         }
     }
 
-    if (headerMode) {
-        const void *msg1=NULL,*msg2=NULL;
-        size_t size1=0,size2=0;
-        grib_handle *h11, *h22;
-        GRIB_CHECK_NOLINE(grib_get_message_headers(handle1,&msg1,&size1),0);
-        GRIB_CHECK_NOLINE(grib_get_message_headers(handle2,&msg2,&size2),0);
-        if (size1==size2 && !memcmp(msg1,msg2,size1))
-            return 0;
-
-        err=0;
-        h11=grib_handle_new_from_partial_message(handle1->context,(void*)msg1,size1);
-        h22=grib_handle_new_from_partial_message(handle1->context,(void*)msg2,size2);
-
-        iter=grib_keys_iterator_new(h11,
-                GRIB_KEYS_ITERATOR_SKIP_COMPUTED,NULL);
-
-        if (!iter) {
-            printf("ERROR: unable to get iterator\n");
-            exit(1);
-        }
-
-        while(grib_keys_iterator_next(iter))
-        {
-            name=grib_keys_iterator_get_name(iter);
-            /*printf("----- comparing %s\n",name);*/
-
-            if (blacklisted(name)) continue;
-            if(compare_values(options,h11,h22,name,GRIB_TYPE_UNDEFINED))  {
-                err++;
-                write_messages(h11,h22);
-            }
-        }
-
-        grib_keys_iterator_delete(iter);
-        grib_handle_delete(h11);
-        grib_handle_delete(h22);
-        return err;
-    }
-
     if ( listFromCommandLine && onlyListed ) {
         for (i=0; i< options->compare_count; i++) {
             if (blacklisted((char*)options->compare[i].name)) continue;
             if (options->compare[i].type == GRIB_NAMESPACE) {
                 iter=grib_keys_iterator_new(handle1,0,(char*)options->compare[i].name);
                 if (!iter) {
-                    printf("ERROR: unable to get iterator\n");
+                    grib_context_log(handle1->context, GRIB_LOG_ERROR, "unable to get iterator");
                     exit(1);
                 }
                 while(grib_keys_iterator_next(iter))
@@ -1132,7 +1219,8 @@ static int compare_handles(grib_handle* handle1, grib_handle* handle2, grib_runt
                 if (options->compare[i].type == GRIB_NAMESPACE) {
                     iter=grib_keys_iterator_new(handle1,0,(char*)options->compare[i].name);
                     if (!iter) {
-                        printf("ERROR: unable to get iterator for %s\n",options->compare[i].name );
+                        grib_context_log(handle1->context, GRIB_LOG_ERROR,
+                                "ERROR: unable to get keys iterator for %s",options->compare[i].name);
                         exit(1);
                     }
                     while(grib_keys_iterator_next(iter))
@@ -1170,7 +1258,7 @@ static int compare_handles(grib_handle* handle1, grib_handle* handle2, grib_runt
     return err;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
     fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
     return 0;
diff --git a/tools/bufr_copy.c b/tools/bufr_copy.c
index d958236..e9f82bc 100644
--- a/tools/bufr_copy.c
+++ b/tools/bufr_copy.c
@@ -115,7 +115,7 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
     fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
     return 0;
diff --git a/tools/bufr_dump.c b/tools/bufr_dump.c
index 10f0368..a404126 100644
--- a/tools/bufr_dump.c
+++ b/tools/bufr_dump.c
@@ -21,6 +21,20 @@ grib_option grib_options[]={
                 "\n\t\tOptions: s->structure, f->flat (only data), a->all attributes"
                 "\n\t\tDefault mode is structure.\n",
                 1,1,"s"},
+        {"D:","filter/fortran/python/C","\n\t\tDecoding dump. Provides instructions to decode the input message."
+                "\n\t\tOptions: filter  -> filter instructions file to decode input BUFR"
+                "\n\t\t         fortran -> fortran program to decode the input BUFR"
+                "\n\t\t         python  -> python script to decode the input BUFR"
+                "\n\t\t         C       -> C program to decode the input BUFR"
+                "\n\t\tDefault mode is filter.\n",
+                0,1,"filter"},
+        {"E:","filter/fortran/python/C","\n\t\tEncoding dump. Provides instructions to create the input message."
+                "\n\t\tOptions: filter  -> filter instructions file to encode input BUFR"
+                "\n\t\t         fortran -> fortran program to encode the input BUFR"
+                "\n\t\t         python  -> python script to encode the input BUFR"
+                "\n\t\t         C       -> C program to encode the input BUFR"
+                "\n\t\tDefault mode is filter.\n",
+                0,1,"filter"},
         {"S",0,0,1,0,0},
         {"O",0,"Octet mode. WMO documentation style dump.\n",0,1,0},
         /* {"D",0,0,0,1,0},  */  /* See ECC-215 */
@@ -47,6 +61,7 @@ char* grib_tool_usage="[options] file file ...";
 static int json=0;
 static char* json_option=0;
 static int first_handle=1;
+static grib_dumper* dumper=0;
 
 int grib_options_count=sizeof(grib_options)/sizeof(grib_option);
 
@@ -80,20 +95,12 @@ int grib_tool_init(grib_runtime_options* options)
         options->dump_mode = "json";
         json_option=grib_options_get_option("j:");
         if (strlen(json_option)>1 || ( json_option[0] != 's' && json_option[0]!= 'f' && json_option[0]!= 'a')) {
-            printf("wrong json option %s\n",json_option);
+            printf("%s: Invalid JSON option %s\n", grib_tool_name, json_option);
             exit(1);
         }
         json=1;
     }
 
-    if (grib_options_on("C")) {
-        options->dump_mode = "c_code";
-        if (grib_options_on("d"))
-            options->dump_flags = 0;
-        else
-            options->dump_flags = GRIB_DUMP_FLAG_NO_DATA;
-    }
-
     if  (grib_options_on("O")) {
         options->dump_mode = "wmo";
         json=0;
@@ -103,6 +110,15 @@ int grib_tool_init(grib_runtime_options* options)
                 | GRIB_DUMP_FLAG_READ_ONLY;
     }
 
+    if (grib_options_on("D:")) {
+        options->dump_mode = grib_options_get_option("D:");
+        json=0;
+    }
+    if (grib_options_on("E:")) {
+        options->dump_mode = grib_options_get_option("E:");
+        json=0;
+    }
+
     /* See ECC-215
     if (grib_options_on("D")) {
         options->dump_mode = "debug";
@@ -122,6 +138,9 @@ int grib_tool_init(grib_runtime_options* options)
     if (grib_options_on("d") && !grib_options_on("u"))
         options->dump_flags |= GRIB_DUMP_FLAG_ALL_DATA;
 
+    /* Turn off GRIB multi-field support mode. Not relevant for BUFR */
+    grib_multi_support_off(grib_context_get_default());
+
     return 0;
 }
 
@@ -132,21 +151,93 @@ int grib_tool_new_filename_action(grib_runtime_options* options,const char* file
 
 int grib_tool_new_file_action(grib_runtime_options* options,grib_tools_file* file)
 {
-    char tmp[1024];
     if (!options->current_infile->name) return 0;
     if (json) return 0;
 
-    sprintf(tmp,"FILE: %s ",options->current_infile->name);
-    if (!grib_options_on("C"))
-        fprintf(stdout,"***** %s\n",tmp);
+    if (grib_options_on("E:") || grib_options_on("D:")) {
+        if (!strcmp(options->dump_mode, "filter")) {
+            /* Dump filter for one message only. Multi-message BUFR files will not work! */
+            int err = 0, numMessages=0;
+            grib_context *c = grib_context_get_default();
+            err = grib_count_in_file(c, options->current_infile->file, &numMessages);
+            if (!err && numMessages > 1) {
+                fprintf(stderr,"\nERROR: Cannot dump filter for multi-message BUFR files.\n");
+                fprintf(stderr,"       (The input file \"%s\" has %d messages)\n", options->current_infile->name, numMessages);
+                fprintf(stderr,"       Please split the input file and dump filter for each message separately.\n");
+                exit(1);
+            }
+        }
+    }
+    else {
+        char tmp[1024];
+        sprintf(tmp,"FILE: %s ",options->current_infile->name);
+        if (!grib_options_on("C"))
+            fprintf(stdout,"***** %s\n",tmp);
+    }
 
     return 0;
 }
 
+static char* get_dumper_name(grib_runtime_options* options)
+{
+    if (grib_options_on("E:")) {
+        /* Dumper for ENCODING */
+        if (strcmp(options->dump_mode,"filter")==0) {
+            return "bufr_encode_filter";
+        }
+        if (strcmp(options->dump_mode,"fortran")==0) {
+            return "bufr_encode_fortran";
+        }
+        if (strcmp(options->dump_mode,"C")==0) {
+            return "bufr_encode_C";
+        }
+        if (strcmp(options->dump_mode,"python")==0) {
+            return "bufr_encode_python";
+        }
+    }
+    else if (grib_options_on("D:")) {
+        /* Dumper for DECODING */
+        if (strcmp(options->dump_mode,"filter")==0) {
+            return "bufr_decode_filter";
+        }
+        if (strcmp(options->dump_mode,"fortran")==0) {
+            return "bufr_decode_fortran";
+        }
+        if (strcmp(options->dump_mode,"C")==0) {
+            return "bufr_decode_C";
+        }
+        if (strcmp(options->dump_mode,"python")==0) {
+            return "bufr_decode_python";
+        }
+    }
+    return options->dump_mode;
+}
+
+static void print_header(grib_runtime_options* options)
+{
+    if (strcmp(options->dump_mode,"filter")==0) {
+        int print_unpack=0;
+        char generator_name[32];
+
+        if (grib_options_on("D:")) {
+            strcpy(generator_name, "-Dfilter");
+            print_unpack = 1;
+        }
+        else if (grib_options_on("E:")) {
+            strcpy(generator_name, "-Efilter");
+        }
+
+        fprintf(stdout,"#  This filter was automatically generated with bufr_dump %s\n", generator_name);
+        fprintf(stdout,"#  Using ecCodes version: ");
+        grib_print_api_version(stdout);
+        fprintf(stdout, "\n\n");
+        if (print_unpack) fprintf(stdout,"set unpack=1;\n");
+    }
+}
+
 int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h)
 {
     long length=0;
-    char tmp[1024];
     int i,err=0;
     grib_accessor* a=NULL;
     grib_accessors_list* al=NULL;
@@ -156,7 +247,7 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h)
     if (!options->skip) {
         if (options->set_values_count != 0)
             err=grib_set_values(h,options->set_values,options->set_values_count);
-        if( err != GRIB_SUCCESS && options->fail) exit(err);
+        if (err != GRIB_SUCCESS && options->fail) exit(err);
     }
 
     for (i=0;i<options->print_keys_count;i++)
@@ -175,9 +266,15 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h)
         case 'f':
             err=grib_set_long(h,"unpack",2);
             if (err) {
-                fprintf(stdout,"\"ERROR: unable to unpack data section\"");
-                options->error=err;
-                return err;
+                if (options->fail) {
+                    fprintf(stderr, "ERROR: unable to unpack data section: %s (message=%d)\n",
+                            grib_get_error_message(err), options->handle_count);
+                    exit(err);
+                } else {
+                    fprintf(stdout,"\"ERROR: unable to unpack data section\"");
+                    options->error=err;
+                    return err;
+                }
             }
             a=grib_find_accessor(h,"numericValues");
             al=accessor_bufr_data_array_get_dataAccessors(a);
@@ -187,41 +284,76 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h)
         case 's':
             err=grib_set_long(h,"unpack",1);
             if (err) {
-                fprintf(stdout,"\"ERROR: unable to unpack data section\"");
-                options->error=err;
-                return err;
+                if (options->fail) {
+                    fprintf(stderr, "ERROR: unable to unpack data section: %s (message=%d)\n",
+                            grib_get_error_message(err), options->handle_count);
+                    exit(err);
+                } else {
+                    fprintf(stdout,"\"ERROR: unable to unpack data section\"");
+                    options->error=err;
+                    return err;
+                }
             }
             grib_dump_content(h,stdout,options->dump_mode,options->dump_flags,0);
             break;
         case 'a':
             err=grib_set_long(h,"unpack",1);
             if (err) {
-                fprintf(stdout,"\"ERROR: unable to unpack data section\"");
-                options->error=err;
-                return err;
+                if (options->fail) {
+                    fprintf(stderr, "ERROR: unable to unpack data section: %s (message=%d)\n",
+                            grib_get_error_message(err), options->handle_count);
+                    exit(err);
+                } else {
+                    fprintf(stdout,"\"ERROR: unable to unpack data section\"");
+                    options->error=err;
+                    return err;
+                }
             }
             options->dump_flags=GRIB_DUMP_FLAG_ALL_ATTRIBUTES;
             grib_dump_content(h,stdout,options->dump_mode,options->dump_flags,0);
             break;
         default :
-            printf("unknown json option %s\n",json_option);
+            printf("Unknown JSON option %s\n",json_option);
             exit(1);
         }
-    } else {
+        if (!strcmp(options->dump_mode,"default")) {
+            printf("}\n");
+        }
+    } else if (grib_options_on("O")) {
+        char tmp[1024];
         sprintf(tmp,"MESSAGE %d ( length=%ld )",options->handle_count,length);
         if (!grib_options_on("C"))
             fprintf(stdout,"#==============   %-38s   ==============\n",tmp);
         err=grib_set_long(h,"unpack",1);
         if (err) {
-            fprintf(stdout,"\"ERROR: unable to unpack data section\"");
-            options->error=err;
-            return err;
+            if (options->fail) {
+                fprintf(stderr, "ERROR: unable to unpack data section: %s\n",grib_get_error_message(err));
+                exit(err);
+            } else {
+                fprintf(stdout,"\"ERROR: unable to unpack data section\"");
+                options->error=err;
+                return err;
+            }
         }
         grib_dump_content(h,stdout,options->dump_mode,options->dump_flags,0);
+    } else {
+        const char* dumper_name = get_dumper_name(options);
+        err=grib_set_long(h,"unpack",1);
+        if (err) {
+            if (options->fail) {
+                fprintf(stderr, "ERROR: unable to unpack data section: %s\n",grib_get_error_message(err));
+                exit(err);
+            } else {
+                fprintf(stdout,"\"ERROR: unable to unpack data section\"");
+                options->error=err;
+                return err;
+            }
+        }
+        print_header(options);
+        dumper=grib_dump_content_with_dumper(h,dumper,stdout,dumper_name,options->dump_flags,0);
+        if (!dumper) exit(1);
     }
 
-    if (!strcmp(options->dump_mode,"default"))
-        printf("}\n");
     return 0;
 }
 
@@ -239,10 +371,71 @@ void grib_tool_print_key_values(grib_runtime_options* options,grib_handle* h)
 int grib_tool_finalise_action(grib_runtime_options* options)
 {
     if (json) fprintf(stdout,"\n]}\n");
+
+    if (grib_options_on("E:")) {
+        /* Code for ENCODING */
+        if (!strcmp(options->dump_mode,"filter")) {
+            fprintf(stdout,"set pack=1;\nwrite;\n");
+        }
+        if (!strcmp(options->dump_mode,"fortran")) {
+            fprintf(stdout,"end program bufr_encode\n");
+        }
+        if (!strcmp(options->dump_mode,"C")) {
+            fprintf(stdout,"  return 0;\n");
+            fprintf(stdout,"}\n");
+        }
+        if (!strcmp(options->dump_mode,"python")) {
+            fprintf(stdout,"\n\n");
+            fprintf(stdout,"def main():\n");
+            fprintf(stdout,"    try:\n");
+            fprintf(stdout,"        bufr_encode()\n");
+            fprintf(stdout,"    except CodesInternalError as err:\n");
+            fprintf(stdout,"        traceback.print_exc(file=sys.stderr)\n");
+            fprintf(stdout,"        return 1\n");
+            fprintf(stdout,"\n\n");
+            fprintf(stdout,"if __name__ == \"__main__\":\n");
+            fprintf(stdout,"    sys.exit(main())\n");
+        }
+    }
+    else if (grib_options_on("D:")) {
+        /* Code for DECODING */
+        if (!strcmp(options->dump_mode,"filter")) {
+
+        }
+        if (!strcmp(options->dump_mode,"fortran")) {
+            fprintf(stdout,"\n  call codes_close_file(ifile)\n");
+            fprintf(stdout,"end program bufr_decode\n");
+        }
+        if (!strcmp(options->dump_mode,"C")) {
+            fprintf(stdout,"  if (fclose(fin)!=0) {\n");
+            fprintf(stdout,"    fprintf(stderr, \"Failed to close file handle.\\n\");\n");
+            fprintf(stdout,"    return 1;\n");
+            fprintf(stdout,"  }\n");
+            fprintf(stdout,"  return 0;\n");
+            fprintf(stdout,"}\n");
+        }
+        if (!strcmp(options->dump_mode,"python")) {
+            fprintf(stdout,"\n\n");
+            fprintf(stdout,"    f.close()\n\n");
+            fprintf(stdout,"def main():\n");
+            fprintf(stdout,"    if len(sys.argv) < 2:\n");
+            fprintf(stdout,"        print >>sys.stderr, 'Usage: ', sys.argv[0], ' BUFR_file'\n");
+            fprintf(stdout,"        sys.exit(1)\n\n");
+            fprintf(stdout,"    try:\n");
+            fprintf(stdout,"        bufr_decode(sys.argv[1])\n");
+            fprintf(stdout,"    except CodesInternalError as err:\n");
+            fprintf(stdout,"        traceback.print_exc(file=sys.stderr)\n");
+            fprintf(stdout,"        return 1\n");
+            fprintf(stdout,"\n\n");
+            fprintf(stdout,"if __name__ == \"__main__\":\n");
+            fprintf(stdout,"    sys.exit(main())\n");
+        }
+    }
     return 0;
 }
 
-int grib_no_handle_action(int err) {
+int grib_no_handle_action(grib_runtime_options* options, int err)
+{
     if (json ){
         if (first_handle) {
             fprintf(dump_file,"{ \"messages\" : [ \n");
@@ -252,5 +445,8 @@ int grib_no_handle_action(int err) {
         }
     }
     fprintf(dump_file,"\"ERROR: unreadable message\"\n");
+    if (options->fail) {
+        exit(1);
+    }
     return 0;
 }
diff --git a/tools/bufr_dump.sh b/tools/bufr_dump.sh
index 513b35a..a342d18 100755
--- a/tools/bufr_dump.sh
+++ b/tools/bufr_dump.sh
@@ -6,20 +6,36 @@ echo "\\verbatim"
 echo  ">bufr_dump -jf ../data/bufr/aaen_55.bufr"
 echo "\\endverbatim\\n"
 
-echo "-# To dump BUFR messages into a structured JSON format.\\n"
+echo "-# To dump BUFR messages into a structured JSON format. Note: This is the default if you omit the -j option\\n"
 echo "\\verbatim"
 echo  ">bufr_dump -js ../data/bufr/aaen_55.bufr"
 echo "\\endverbatim\\n"
 
+echo "-# To dump a Fortran program with instructions to create (<b>encode</b>) the input message.\\n"
+echo "\\verbatim"
+echo  ">bufr_dump -Efortran ../data/bufr/aaen_55.bufr > encode.aaen_55.f90"
+echo "\\endverbatim\\n"
+echo  "Now compile and run 'encode.aaen_55.f90'. This will create a new BUFR file called 'outfile.bufr'."
+echo  "Check this is the the same as the input."
+echo "\\verbatim"
+echo  ">bufr_compare ../data/bufr/aaen_55.bufr outfile.bufr"
+echo "\\endverbatim\\n"
+
+
+echo "-# To dump a Python program with instructions to <b>decode</b> the input message.\\n"
+echo "\\verbatim"
+echo  ">bufr_dump -Dpython ../data/bufr/aaen_55.bufr > decode.aaen_55.py"
+echo "\\endverbatim\\n"
+echo  "Examine the generated Python script 'decode.aaen_55.py'. You will see how to access each of the BUFR keys"
+
+
 echo "-# To dump in a WMO documentation style with hexadecimal octet values (-H).\\n"
 echo "\\verbatim"
 echo  ">bufr_dump -OH ../data/bufr/syno_1.bufr"
 echo "\\endverbatim\\n"
 
+
 echo "-# To add key type information (-t).\\n"
 echo "\\verbatim"
 echo  ">bufr_dump -OtH ../data/bufr/syno_1.bufr"
 echo "\\endverbatim\\n"
-
-
-
diff --git a/tools/bufr_filter b/tools/bufr_filter
new file mode 100755
index 0000000..6e34b31
--- /dev/null
+++ b/tools/bufr_filter
@@ -0,0 +1,72 @@
+#!/bin/sh
+
+script_dir=`dirname $0`
+EMOSLIB_TOOL=emoslib_bufr_filter
+ECCODES_TOOL=codes_bufr_filter
+result=0 # return code from function
+ERR_TOOL_NOT_FOUND=666
+
+is_emoslib=0
+
+#########################################################
+# Arguments:
+#  the executable name
+# Return Value:
+#  sets the global variable 'result'
+try_tool()
+{
+    the_tool=$1
+    the_args=$args
+
+    if [ -f "${script_dir}/$the_tool" ]; then
+        ${script_dir}/$the_tool $the_args
+        result=$?
+    else
+        if command -v $the_tool >/dev/null 2>&1; then
+            $the_tool $the_args
+            result=$?
+        else
+            #echo "Could not find $the_tool. Return error"
+            result=$ERR_TOOL_NOT_FOUND
+        fi
+    fi
+}
+
+#########################################################
+# Deal with case where no arguments are provided e.g. usage
+if [ $# -eq 0 ]; then
+    # Give priority to ecCodes over emoslib
+    try_tool $ECCODES_TOOL
+    if [ $result -eq $ERR_TOOL_NOT_FOUND ]; then
+        try_tool $EMOSLIB_TOOL
+    fi
+    exit 0
+fi
+
+# Now process arguments. The "-i" switch is specific to emoslib
+args="$@"
+for i in "$@" ; do
+   case $i in
+     -i) is_emoslib=1; shift ;;
+     *)  shift ;;
+   esac
+done
+
+#########################################################
+# set -x
+if [ $is_emoslib -eq 1 ]; then
+    pkg=emoslib
+    tool=$EMOSLIB_TOOL
+    try_tool $tool
+else
+    pkg=ecCodes
+    tool=$ECCODES_TOOL
+    try_tool $tool
+fi
+if [ $result -eq $ERR_TOOL_NOT_FOUND ]; then
+    echo "ERROR: Could not find the executable: $tool. Aborting!"  2>&1
+    echo "       The arguments you passed in are relevant to $pkg" 2>&1
+    echo "       Please make sure you have $pkg installed in your path"  2>&1
+    exit 1
+fi
+exit $result
diff --git a/tools/bufr_filter.c b/tools/bufr_filter.c
index e20dbef..74fdc7f 100644
--- a/tools/bufr_filter.c
+++ b/tools/bufr_filter.c
@@ -35,7 +35,7 @@ char* grib_tool_description="Apply the rules defined in rules_file to each BUFR
    "If you specify '-' (a single dash) for the rules_file, the rules will be read from standard input.";
 char* grib_tool_name="bufr_filter";
 char* grib_tool_usage="[options] rules_file "
-        "file file ...";
+        "bufr_file bufr_file ...";
 
 int grib_options_count=sizeof(grib_options)/sizeof(grib_option);
 
@@ -60,6 +60,9 @@ int grib_tool_init(grib_runtime_options* options)
     if ( options->outfile && options->outfile->name )
         options->action->context->outfilename=options->outfile->name;
 
+    /* Turn off GRIB multi-field support mode. Not relevant for BUFR */
+    grib_multi_support_off(grib_context_get_default());
+
     return 0;
 }
 
@@ -114,8 +117,8 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err) {
-  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
-  return 0;
+int grib_no_handle_action(grib_runtime_options* options, int err)
+{
+    fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+    return 0;
 }
-
diff --git a/tools/bufr_filter.sh b/tools/bufr_filter.sh
index 0314dcd..c8fb17f 100755
--- a/tools/bufr_filter.sh
+++ b/tools/bufr_filter.sh
@@ -2,6 +2,7 @@
 set -e 
 
 echo "-# The bufr_filter sequentially processes all bufr messages contained in the input files and applies the rules to each of them. \\n"
+
 echo " Input messages can be written to the output by using the \"write\" statement. The write statement can be parameterised so that output "
 echo " is sent to multiple files depending on key values used in the output file name. \\n"
 echo " First we write a rules_file containing the following statement:\\n \\n"
@@ -10,8 +11,8 @@ echo "write \"../data/split/[bufrHeaderCentre:i]_[dataCategory].bufr[editionNumb
 echo "\\endverbatim\\n"
 echo "Then we create the BUFR file multitype.bufr from three others: \\n"
 echo "\\verbatim"
-echo "mkdir ../data/split \\n"
-echo "cat ../data/bufr/syno_1.bufr ../data/bufr/goes_87.bufr ../data/bufr/gosat.bufr > ../data/split/multitype.bufr \\n"
+echo ">mkdir ../data/split \\n"
+echo ">cat ../data/bufr/syno_1.bufr ../data/bufr/goes_87.bufr ../data/bufr/gosat.bufr > ../data/split/multitype.bufr \\n"
 echo "\\endverbatim\\n"
 echo "Applying this rules_file to the \"../data/split/multitype.bufr\" bufr file we obtain several files in the ../data/split directory containing "
 echo " messages split according to their key values\\n "
@@ -39,7 +40,6 @@ ls ../data/split
 
 echo "\\endverbatim\\n"
 
-
 echo "-# The bufr <b>header</b> information can be accessed without unpacking the data. This rules_file: \\n"
 echo "\\verbatim"
 echo "print \"[bufrHeaderCentre] [bufrHeaderSubCentre] [masterTablesVersionNumber] [localTablesVersionNumber] [numberOfSubsets]\";"
@@ -148,19 +148,19 @@ echo "The \"~\" operator can be used to match \"anything\".\\n\\n"
 # Attributes 
  
 echo "-# To access the keys' <b>attributes</b> use the -> operator. \\n"
-echo " The example below prints the attributes of key <i>pressure</i> from a SYNOP bufr message. \\n"
+echo " The example below prints the attributes of key <i>nonCoordinatePressure</i> from a SYNOP bufr message. \\n"
 
 echo "\\verbatim"
-echo "print \"pressure=[pressure] [pressure->units]\";"
-echo "print \"pressure->code=[pressure->code!06d]\";"
-echo "print \"pressure->scale=[pressure->scale]\";"
-echo "print \"pressure->reference=[pressure->reference]\";"
-echo "print \"pressure->width=[pressure->width]\";"
-echo "print \"pressure->percentConfidence=[pressure->percentConfidence] [pressure->percentConfidence->units]\";"
-echo "print \"pressure->percentConfidence->code=[pressure->percentConfidence->code!06d]\";"
-echo "print \"pressure->percentConfidence->scale=[pressure->percentConfidence->scale]\";"
-echo "print \"pressure->percentConfidence->reference=[pressure->percentConfidence->reference]\";"
-echo "print \"pressure->percentConfidence->width=[pressure->percentConfidence->width]\";"
+echo "print \"nonCoordinatePressure=[nonCoordinatePressure] [nonCoordinatePressure->units]\";"
+echo "print \"nonCoordinatePressure->code=[nonCoordinatePressure->code!06d]\";"
+echo "print \"nonCoordinatePressure->scale=[nonCoordinatePressure->scale]\";"
+echo "print \"nonCoordinatePressure->reference=[nonCoordinatePressure->reference]\";"
+echo "print \"nonCoordinatePressure->width=[nonCoordinatePressure->width]\";"
+echo "print \"nonCoordinatePressure->percentConfidence=[nonCoordinatePressure->percentConfidence] [nonCoordinatePressure->percentConfidence->units]\";"
+echo "print \"nonCoordinatePressure->percentConfidence->code=[nonCoordinatePressure->percentConfidence->code!06d]\";"
+echo "print \"nonCoordinatePressure->percentConfidence->scale=[nonCoordinatePressure->percentConfidence->scale]\";"
+echo "print \"nonCoordinatePressure->percentConfidence->reference=[nonCoordinatePressure->percentConfidence->reference]\";"
+echo "print \"nonCoordinatePressure->percentConfidence->width=[nonCoordinatePressure->percentConfidence->width]\";"
 echo "\\endverbatim\\n"
 
 echo "The result is:"
@@ -168,16 +168,16 @@ echo "The result is:"
 echo "\\verbatim"
 cat > rules_file <<EOF
 set unpack=1;
-print "pressure=[pressure] [pressure->units]";
-print "pressure->code=[pressure->code!06d]";
-print "pressure->scale=[pressure->scale]";
-print "pressure->reference=[pressure->reference]";
-print "pressure->width=[pressure->width]";
-print "pressure->percentConfidence=[pressure->percentConfidence] [pressure->percentConfidence->units]";
-print "pressure->percentConfidence->code=[pressure->percentConfidence->code!06d]";
-print "pressure->percentConfidence->scale=[pressure->percentConfidence->scale]";
-print "pressure->percentConfidence->reference=[pressure->percentConfidence->reference]";
-print "pressure->percentConfidence->width=[pressure->percentConfidence->width]";
+print "nonCoordinatePressure=[nonCoordinatePressure] [nonCoordinatePressure->units]";
+print "nonCoordinatePressure->code=[nonCoordinatePressure->code!06d]";
+print "nonCoordinatePressure->scale=[nonCoordinatePressure->scale]";
+print "nonCoordinatePressure->reference=[nonCoordinatePressure->reference]";
+print "nonCoordinatePressure->width=[nonCoordinatePressure->width]";
+print "nonCoordinatePressure->percentConfidence=[nonCoordinatePressure->percentConfidence] [nonCoordinatePressure->percentConfidence->units]";
+print "nonCoordinatePressure->percentConfidence->code=[nonCoordinatePressure->percentConfidence->code!06d]";
+print "nonCoordinatePressure->percentConfidence->scale=[nonCoordinatePressure->percentConfidence->scale]";
+print "nonCoordinatePressure->percentConfidence->reference=[nonCoordinatePressure->percentConfidence->reference]";
+print "nonCoordinatePressure->percentConfidence->width=[nonCoordinatePressure->percentConfidence->width]";
 EOF
 
 echo ">bufr_filter rules_file ../data/bufr/syno_1.bufr"
diff --git a/tools/bufr_get.c b/tools/bufr_get.c
index eb1ee14..54c53d1 100644
--- a/tools/bufr_get.c
+++ b/tools/bufr_get.c
@@ -20,7 +20,6 @@ grib_option grib_options[]={
         {"f",0,0,0,1,0},
         {"p:",0,0,0,1,0},
         {"F:",0,0,1,1,"%g"},
-/*      {"l:",0,0,0,1,0}, */
         {"P:",0,0,0,1,0},
         {"w:",0,0,0,1,0},
         {"n:",0,0,1,1,0},
@@ -34,7 +33,6 @@ grib_option grib_options[]={
         {"T:",0,0,1,0,"B"},
         {"7",0,0,0,1,0},
         {"v",0,0,1,0,0}
-/*      {"i:",0,0,0,1,0} */
 };
 
 char* grib_tool_description="Get values of some keys from a BUFR file."
@@ -44,9 +42,6 @@ char* grib_tool_name="bufr_get";
 char* grib_tool_usage="[options] file file ...";
 
 int grib_options_count=sizeof(grib_options)/sizeof(grib_option);
-double lat=0;
-double lon=0;
-int mode=0;
 grib_nearest* n=NULL;
 
 int main(int argc, char *argv[])
@@ -62,91 +57,10 @@ int grib_tool_before_getopt(grib_runtime_options* options)
 
 int grib_tool_init(grib_runtime_options* options)
 {
-    char  *end = NULL, *end1=NULL;
-    size_t size=4;
-    int ret=0;
-    double min=0,max=0;
-    int i=0;
-    char* p=NULL;
-
     options->print_header=0;
     options->print_statistics=0;
     options->default_print_width=-1;
 
-    if (options->latlon) {
-
-        lat = strtod(options->latlon,&end);
-        if (*end != ',') {
-            printf("ERROR: wrong latitude value\n");
-            exit(1);
-        }
-        lon= strtod(++end,&end1);
-
-        mode=GRIB_NEAREST_SAME_POINT | GRIB_NEAREST_SAME_GRID;
-
-        if (end1 && *end1 == ',') {
-            end1++;
-            if (*end1 != '0') {
-                p=end1;
-                while (*p != ',' && *p !='\0') p++;
-                if (*end1 == '4') {
-                    options->latlon_mode=4;
-                } else if (*end1 == '1') {
-                    options->latlon_mode=1;
-                } else {
-                    printf("ERROR %s: wrong mode given in option -l\n",grib_tool_name);
-                    exit(1);
-                }
-            }
-            if (*p == ',') {
-                p++;
-                options->latlon_mask=strdup(p);
-            }
-        }
-    }
-
-    if (options->latlon && options->latlon_mask) {
-        FILE* f=NULL;
-        grib_handle* hh;
-        f=fopen(options->latlon_mask,"r");
-        if(!f) {
-            perror(options->latlon_mask);
-            exit(1);
-        }
-        hh=grib_handle_new_from_file(0,f,&ret);
-        fclose(f);
-        GRIB_CHECK_NOLINE(ret,0);
-        n=grib_nearest_new(hh,&ret);
-        GRIB_CHECK_NOLINE(ret,0);
-        GRIB_CHECK_NOLINE(grib_nearest_find(n,hh,lat,lon,mode,
-                options->lats,options->lons,options->mask_values,options->distances,options->indexes,&size),0);
-        grib_nearest_delete(n);
-        n=NULL;
-        grib_handle_delete( hh);
-
-        options->latlon_idx=-1;
-        max=options->distances[0];
-        for (i=0;i<4;i++)
-            if (max<options->distances[i]) {max=options->distances[i];}
-        min=max;
-        for (i=0;i<4;i++) {
-            if ((min >= options->distances[i]) && (options->mask_values[i] >= 0.5)) {
-                options->latlon_idx=i;
-                min = options->distances[i];
-            }
-        }
-
-        if (options->latlon_idx<0){
-            min=0;
-            options->latlon_idx=0;
-            for (i=1;i<4;i++)
-                if (min>options->distances[i]) {
-                    min = options->distances[i];
-                    options->latlon_idx=i;
-                }
-        }
-    }
-
     return 0;
 }
 
@@ -162,7 +76,6 @@ int grib_tool_new_file_action(grib_runtime_options* options,grib_tools_file* fil
 
 int grib_tool_new_handle_action(grib_runtime_options* options,grib_handle* h)
 {
-    size_t size=4;
     int err = 0;
 
     if (!options->skip) {
@@ -173,26 +86,6 @@ int grib_tool_new_handle_action(grib_runtime_options* options,grib_handle* h)
         if (err != GRIB_SUCCESS && options->fail) exit(err);
     }
 
-    if (options->latlon) {
-        int err=0;
-        double min;
-        int i;
-        if (!n) n=grib_nearest_new(h,&err);
-        GRIB_CHECK_NOLINE(err,0);
-        GRIB_CHECK_NOLINE(grib_nearest_find(n,h,lat,lon,mode,
-                options->lats,options->lons,options->values,
-                options->distances,options->indexes,&size),0);
-        min=options->distances[0];
-        options->latlon_idx=0;
-        i=0;
-        for (i=1;i<4;i++) {
-            if (min>options->distances[i]) {
-                min=options->distances[i];
-                options->latlon_idx=i;
-            }
-        }
-    }
-
     return 0;
 }
 
@@ -209,13 +102,11 @@ void grib_tool_print_key_values(grib_runtime_options* options,grib_handle* h)
 
 int grib_tool_finalise_action(grib_runtime_options* options)
 {
-    if (n) grib_nearest_delete(n);
-
     return 0;
 }
 
-int grib_no_handle_action(int err) {
-  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
-  return 0;
+int grib_no_handle_action(grib_runtime_options* options, int err)
+{
+    fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+    return 0;
 }
-
diff --git a/tools/bufr_index_build.c b/tools/bufr_index_build.c
index 8ceae96..325a5fd 100644
--- a/tools/bufr_index_build.c
+++ b/tools/bufr_index_build.c
@@ -148,8 +148,8 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err) {
-  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
-  return 0;
+int grib_no_handle_action(grib_runtime_options* options, int err)
+{
+    fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+    return 0;
 }
-
diff --git a/tools/bufr_ls.c b/tools/bufr_ls.c
index 9164226..c427566 100644
--- a/tools/bufr_ls.c
+++ b/tools/bufr_ls.c
@@ -23,9 +23,7 @@ grib_option grib_options[]={
         {"w:",0,0,0,1,0},
 /*      {"j",0,"JSON output\n",0,1,0}, */
         {"B:",0,0,0,1,0},
-/*      {"l:",0,0,0,1,0}, */
         {"s:",0,0,0,1,0},
-/*      {"i:",0,0,0,1,0}, */
         {"n:",0,0,1,1,"ls"},
         {"m",0,0,0,1,0},
         {"V",0,0,0,1,0},
@@ -37,22 +35,14 @@ grib_option grib_options[]={
         {"T:",0,0,1,0,"B"},
         {"7",0,0,0,1,0},
         {"v",0,0,1,0,0}
-/*      {"x",0,0,0,1,0} */
 };
 
 char* grib_tool_description="List content of BUFR files printing values of "
         "some keys.\n\tIt does not fail when a key is not found.";
 char* grib_tool_name="bufr_ls";
 char* grib_tool_usage="[options] file file ...";
-static char* new_handle="";
 
 int grib_options_count=sizeof(grib_options)/sizeof(grib_option);
-double lat=0;
-double lon=0;
-int mode=0;
-static int json_latlon=0;
-
-grib_nearest* n=NULL;
 
 int main(int argc, char *argv[])
 {
@@ -60,116 +50,30 @@ int main(int argc, char *argv[])
 }
 
 /*
-This is executed before processing the options with
-getopt and therefore it is the right place for hacking
-the arguments if needed
- */
+ This is executed before processing the options with
+ getopt and therefore it is the right place for hacking
+ the arguments if needed
+*/
 int grib_tool_before_getopt(grib_runtime_options* options)
 {
     return 0;
 }
 
 /*
-The options have been parsed and the structure 
-grib_runtime_options* options has been loaded. 
-Initialisation and startup can be done here
- */
+ The options have been parsed and the structure
+ grib_runtime_options* options has been loaded.
+ Initialisation and startup can be done here
+*/
 int grib_tool_init(grib_runtime_options* options)
 {
-    char  *end = NULL, *end1=NULL;
-    size_t size=4;
-    int ret=0;
-    double min=0,max=0;
-    int i=0;
-    char* p=NULL;
-    if (options->latlon && grib_options_on("j")) {
-        options->verbose=0;
-        json_latlon=1;
-    }
-
-    if (options->latlon) {
-
-        lat = strtod(options->latlon,&end);
-        if (*end != ',') {
-            printf("ERROR: wrong latitude value\n");
-            exit(1);
-        }
-        lon= strtod(++end,&end1);
-
-        mode=GRIB_NEAREST_SAME_POINT | GRIB_NEAREST_SAME_GRID;
-
-        if (end1 && *end1 == ',') {
-            end1++;
-            if (*end1 != '0') {
-                p=end1;
-                while (*p != ',' && *p !='\0') p++;
-                if (*end1 == '4') {
-                    options->latlon_mode=4;
-                } else if (*end1 == '1') {
-                    options->latlon_mode=1;
-                } else {
-                    printf("ERROR %s: wrong mode given in option -l\n",grib_tool_name);
-                    exit(1);
-                }
-            }
-            if (*p == ',') {
-                p++;
-                options->latlon_mask=strdup(p);
-            }
-        }
-
-    }
-
-    if (options->latlon && options->latlon_mask) {
-        FILE* f=NULL;
-        grib_handle* hh;
-        f=fopen(options->latlon_mask,"r");
-        if(!f) {
-            perror(options->latlon_mask);
-            exit(1);
-        }
-        hh=grib_handle_new_from_file(0,f,&ret);
-        fclose(f);
-        GRIB_CHECK_NOLINE(ret,0);
-        n=grib_nearest_new(hh,&ret);
-        GRIB_CHECK_NOLINE(ret,0);
-        GRIB_CHECK_NOLINE(grib_nearest_find(n,hh,lat,lon,mode,
-                options->lats,options->lons,options->mask_values,options->distances,options->indexes,&size),0);
-        grib_nearest_delete(n);
-        n=NULL;
-        grib_handle_delete( hh);
-
-        options->latlon_idx=-1;
-        max=options->distances[0];
-        for (i=0;i<4;i++)
-            if (max<options->distances[i]) {max=options->distances[i];}
-        min=max;
-        for (i=0;i<4;i++) {
-            if ((min >= options->distances[i]) && (options->mask_values[i] >= 0.5)) {
-                options->latlon_idx=i;
-                min = options->distances[i];
-            }
-        }
-
-        if (options->latlon_idx<0){
-            min=0;
-            options->latlon_idx=0;
-            for (i=1;i<4;i++)
-                if (min>options->distances[i]) {
-                    min = options->distances[i];
-                    options->latlon_idx=i;
-                }
-        }
-    }
-    if (json_latlon) printf("[\n");
-
+    DebugAssert(!options->latlon);
     return 0;
 }
 
 /*
-A new file is being parsed. The file name is file. This function is called every time
-a new input file name is processed, before opening the file.
- */
+ A new file is being parsed. The file name is file. This function is called every time
+ a new input file name is processed, before opening the file.
+*/
 int grib_tool_new_filename_action(grib_runtime_options* options,const char* file)
 {
     return 0;
@@ -188,49 +92,6 @@ int grib_tool_new_file_action(grib_runtime_options* options,grib_tools_file* fil
     return 0;
 }
 
-static void print_key_values(grib_runtime_options* options,grib_handle* h)
-{
-    int i;
-    int ret=0;
-    char* s="\"keys\" : {";
-    double dvalue=0;
-    long lvalue=0;
-    char value[MAX_STRING_LEN];
-    size_t len=MAX_STRING_LEN;
-    for (i=0;i<options->print_keys_count;i++) {
-        ret=GRIB_SUCCESS;
-        printf("%s",s);
-        len=MAX_STRING_LEN;
-        printf("\"%s\" : ",options->print_keys[i].name);
-        if (grib_is_missing(h,options->print_keys[i].name,&ret) && ret==GRIB_SUCCESS)
-            printf("\"missing\"");
-        else if ( ret == GRIB_SUCCESS ) {
-            if (options->print_keys[i].type == GRIB_TYPE_UNDEFINED)
-                grib_get_native_type(h,options->print_keys[i].name,&(options->print_keys[i].type));
-            switch (options->print_keys[i].type) {
-            case GRIB_TYPE_STRING:
-                ret=grib_get_string( h,options->print_keys[i].name,value,&len);
-                printf("\"%s\"",value);
-                break;
-            case GRIB_TYPE_DOUBLE:
-                ret=grib_get_double( h,options->print_keys[i].name,&dvalue);
-                printf("%g",dvalue);
-                break;
-            case GRIB_TYPE_LONG:
-                ret=grib_get_long( h,options->print_keys[i].name,&lvalue);
-                printf("%ld",lvalue);
-                break;
-            default:
-                printf("invalid_type");
-                break;
-            }
-        }
-        if (ret == GRIB_NOT_FOUND) printf("null");
-        s=", ";
-    }
-    printf("}");
-}
-
 /*
  A new handle is available from the current input file and can be processed here.
  The handle available in this function is in the set of messages satisfying the constraint
@@ -238,87 +99,15 @@ static void print_key_values(grib_runtime_options* options,grib_handle* h)
  */
 int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h)
 {
-    size_t size=4;
-    double v=0;
     int err=0;
-    int i;
 
     if (!options->skip) {
-
         if (options->set_values_count != 0)
             err=grib_set_values(h,options->set_values,options->set_values_count);
 
         if( err != GRIB_SUCCESS && options->fail) exit(err);
     }
 
-    if (options->latlon) {
-        int err=0;
-        double min;
-        if (!n) n=grib_nearest_new(h,&err);
-        if (err == GRIB_NOT_IMPLEMENTED) {
-            char grid_type[100];
-            size_t grid_type_len=100;
-            int err1=grib_get_string(h, "gridType", grid_type, &grid_type_len);
-            if (err1 == GRIB_SUCCESS) {
-                fprintf(stderr,"Nearest neighbour functionality is not supported for grid type: %s\n", grid_type);
-            }
-        }
-        GRIB_CHECK_NOLINE(err,0);
-        GRIB_CHECK_NOLINE(grib_nearest_find(n,h,lat,lon,0,
-                options->lats,options->lons,options->values,
-                options->distances,options->indexes,&size),0);
-
-        if (!options->latlon_mask) {
-            min=options->distances[0];
-            options->latlon_idx=0;
-            i=0;
-            for (i=1;i<4;i++) {
-                if (min>options->distances[i]) {
-                    min=options->distances[i];
-                    options->latlon_idx=i;
-                }
-            }
-        }
-
-        if (json_latlon) {
-            char* s="\n[\n";
-            double missingValue=9999;
-            char value[MAX_STRING_LEN];
-            size_t len=MAX_STRING_LEN;
-            printf("%s",new_handle);
-            printf(	"{\n");
-            print_key_values(options,h);
-            printf("\n, \"selected\" : %d",options->latlon_idx);
-            printf(", \"method\" : ");
-            if (options->latlon_mask) printf("\"nearest_land\"");
-            else printf("\"nearest\"");
-            printf("\n, \"neighbours\" : ");
-            for (i=0;i<4;i++) {
-                printf("%s",s);
-                len=MAX_STRING_LEN;
-                printf("{\"index\" : %d, \"latitude\" : %g, \"longitude\" : %g, \"distance\" : %g, "
-                        "\"distance_unit\" : \"km\", ",
-                        (int)options->indexes[i],options->lats[i],options->lons[i],
-                        options->distances[i]);
-                if (grib_get_double_element(h,"values",options->indexes[i],&v) == GRIB_SUCCESS) {
-                    if (v==missingValue) printf("\"value\" : null ");
-                    else printf("\"value\" : %g ",v);
-                }
-
-                if (grib_get_string( h,"units",value,&len)==GRIB_SUCCESS)
-                    printf(", \"unit\" : \"%s\"",value);
-
-                if (options->latlon_mask)
-                    printf(", \"mask_value\"=%.2f",options->mask_values[i]);
-                printf("}");
-                s="\n,";
-            }
-
-            printf("\n]");
-            printf("\n}");
-        }
-    }
-    new_handle="\n,";
     return 0;
 }
 
@@ -341,41 +130,11 @@ void grib_tool_print_key_values(grib_runtime_options* options,grib_handle* h)
 /* This is executed after the last message in the last file is processed */
 int grib_tool_finalise_action(grib_runtime_options* options)
 {
-    int i=0;
-    if (options->latlon && options->verbose) {
-
-        printf("Input Point: latitude=%.2f  longitude=%.2f\n",lat,lon);
-        printf("Grid Point chosen #%d index=%d latitude=%.2f longitude=%.2f distance=%.2f (Km)\n",
-                options->latlon_idx+1,(int)options->indexes[options->latlon_idx],
-                options->lats[options->latlon_idx],
-                options->lons[options->latlon_idx],
-                options->distances[options->latlon_idx]);
-
-        if (options->latlon_mask) {
-            printf("Mask values:\n");
-            for (i=0;i<4;i++) {
-                printf("- %d - index=%d latitude=%.2f longitude=%.2f distance=%.2f (Km) value=%.2f\n",
-                        i+1,(int)options->indexes[i],options->lats[i],options->lons[i],
-                        options->distances[i],options->mask_values[i]);
-            }
-        } else {
-            printf("Other grid Points\n");
-            for (i=0;i<4;i++) {
-                printf("- %d - index=%d latitude=%.2f longitude=%.2f distance=%.2f (Km)\n",
-                        i+1,(int)options->indexes[i],options->lats[i],options->lons[i],
-                        options->distances[i]);
-            }
-        }
-    }
-
-    if (n) grib_nearest_delete(n);
-    if (json_latlon) printf("\n]\n");
-
     return 0;
 }
 
-int grib_no_handle_action(int err) {
-  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
-  return 0;
+int grib_no_handle_action(grib_runtime_options* options, int err)
+{
+    fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+    return 0;
 }
-
diff --git a/tools/bufr_set.c b/tools/bufr_set.c
index 2814bf0..b88110b 100644
--- a/tools/bufr_set.c
+++ b/tools/bufr_set.c
@@ -168,8 +168,8 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err) {
-  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
-  return 0;
+int grib_no_handle_action(grib_runtime_options* options, int err)
+{
+    fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+    return 0;
 }
-
diff --git a/tools/all_keys.c b/tools/deprecated/all_keys.c
similarity index 100%
rename from tools/all_keys.c
rename to tools/deprecated/all_keys.c
diff --git a/tools/dump.c b/tools/deprecated/dump.c
similarity index 100%
rename from tools/dump.c
rename to tools/deprecated/dump.c
diff --git a/tools/dumpload.c b/tools/deprecated/dumpload.c
similarity index 100%
rename from tools/dumpload.c
rename to tools/deprecated/dumpload.c
diff --git a/tools/grib_add.c b/tools/deprecated/grib_add.c
similarity index 100%
rename from tools/grib_add.c
rename to tools/deprecated/grib_add.c
diff --git a/tools/grib_cmp.c b/tools/deprecated/grib_cmp.c
similarity index 100%
rename from tools/grib_cmp.c
rename to tools/deprecated/grib_cmp.c
diff --git a/tools/grib_convert.c b/tools/deprecated/grib_convert.c
similarity index 100%
rename from tools/grib_convert.c
rename to tools/deprecated/grib_convert.c
diff --git a/tools/grib_corruption_check.c b/tools/deprecated/grib_corruption_check.c
similarity index 100%
rename from tools/grib_corruption_check.c
rename to tools/deprecated/grib_corruption_check.c
diff --git a/tools/grib_debug.c b/tools/deprecated/grib_debug.c
similarity index 100%
rename from tools/grib_debug.c
rename to tools/deprecated/grib_debug.c
diff --git a/tools/grib_debug.dox b/tools/deprecated/grib_debug.dox
similarity index 100%
rename from tools/grib_debug.dox
rename to tools/deprecated/grib_debug.dox
diff --git a/tools/grib_diff.c b/tools/deprecated/grib_diff.c
similarity index 100%
rename from tools/grib_diff.c
rename to tools/deprecated/grib_diff.c
diff --git a/tools/grib_distance.c b/tools/deprecated/grib_distance.c
similarity index 100%
rename from tools/grib_distance.c
rename to tools/deprecated/grib_distance.c
diff --git a/tools/grib_error.c b/tools/deprecated/grib_error.c
similarity index 100%
rename from tools/grib_error.c
rename to tools/deprecated/grib_error.c
diff --git a/tools/grib_gen.c b/tools/deprecated/grib_gen.c
similarity index 100%
rename from tools/grib_gen.c
rename to tools/deprecated/grib_gen.c
diff --git a/tools/grib_keys.c b/tools/deprecated/grib_keys.c
similarity index 100%
rename from tools/grib_keys.c
rename to tools/deprecated/grib_keys.c
diff --git a/tools/grib_moments.c b/tools/deprecated/grib_moments.c
similarity index 100%
rename from tools/grib_moments.c
rename to tools/deprecated/grib_moments.c
diff --git a/tools/grib_packing.c b/tools/deprecated/grib_packing.c
similarity index 100%
rename from tools/grib_packing.c
rename to tools/deprecated/grib_packing.c
diff --git a/tools/grib_points.c b/tools/deprecated/grib_points.c
similarity index 100%
rename from tools/grib_points.c
rename to tools/deprecated/grib_points.c
diff --git a/tools/grib_compare.c b/tools/grib_compare.c
index 8e56aac..5cc4b40 100644
--- a/tools/grib_compare.c
+++ b/tools/grib_compare.c
@@ -124,7 +124,7 @@ grib_option grib_options[]={
     {"E:","end","Last field to be processed.\n",0,1,0},
     {"a",0,"-c option modifier. The keys listed with the option -c will be added to the list of keys compared without -c.\n"
             ,0,1,0},
-    {"H",0,"Compare only message headers. Bit-by-bit compare on. Incompatible with -c option.\n",0,1,0},
+    {"H",0,"Compare only message headers (everything except data and bitmap). Bit-by-bit compare on. Incompatible with -c option.\n",0,1,0},
     {"R:",0,0,0,1,0},
     {"A:",0,0,0,1,0},
     {"P",0,"Compare data values using the packing error as tolerance.\n",0,1,0},
@@ -146,14 +146,13 @@ int theStart=-1;
 int theEnd=-1;
 
 char* grib_tool_description=
-  "Compare grib messages contained in two files."
+  "Compare GRIB messages contained in two files."
   "\n\tIf some differences are found it fails returning an error code."
   "\n\tFloating point values are compared exactly by default, different tolerance can be defined see -P -A -R."
   "\n\tDefault behaviour: absolute error=0, bit-by-bit compare, same order in files.";
 
 char* grib_tool_name="grib_compare";
-char* grib_tool_usage="[options] "
-        "grib_file grib_file";
+char* grib_tool_usage="[options] grib_file1 grib_file2";
 
 int grib_options_count=sizeof(grib_options)/sizeof(grib_option);
 
@@ -451,8 +450,6 @@ int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h)
             morein2++;
 
         grib_handle_delete(global_handle);
-
-
     }
 
     grib_handle_delete(h);
@@ -1129,7 +1126,7 @@ static int compare_handles(grib_handle* h1,grib_handle* h2,grib_runtime_options*
     return err;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
     fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
     return 0;
diff --git a/tools/grib_convert.dox b/tools/grib_convert.dox
deleted file mode 100644
index 36e3b1d..0000000
--- a/tools/grib_convert.dox
+++ /dev/null
@@ -1,38 +0,0 @@
-/*!  \page grib_convert grib_convert
-\section DESCRIPTION 
- It converts grib messages applying the rules from a conversion_rules file.
-	The rules are of the type "keyname = value;" and if blocks are allowed as
-	if ( keyname1 == value1 || keyname2 != value2 && keyname3 == value3 ) {
-	 keyname4 = value4;
-	}
-
-\section USAGE 
- grib_convert 
- [options] conversion_rules grib_file grib_file ... output_grib_file
-
-\section OPTIONS 
--f  \n Force. Force the execution not to fail on error.
- \n \n -M  \n Multi-grib support off. Turn off support for multiple fields in single grib message
- \n \n -g  \n Copy GTS header. 
- \n \n -G  \n GRIBEX compatibility mode.
- \n \n -V  \n Version.
- \n \n -7  \n Does not fail when the message has wrong length
- \n \n -v  \n Verbose.
- \n \n 
-\section grib_convert_examples grib_convert examples
-The following grib_convert rules convert all the grib messages
-contained in the input files in grib edition 2 and if a 2 metre
-temperature is found also the keys contained in the culy bracket are
-changed.\n
-\code 
-editionNumber = 2;
-if( indicatorOfParameter == 11 && indicatorOfTypeOfLevel == 105)
-{
-    productDefinitionTemplateNumber = 1;
-    typeOfFirstFixedSurface         = 103;
-    scaleFactorOfFirstFixedSurface  = 0;
-    scaledValueOfFirstFixedSurface  = 2;
-}
-\endcode
-
-*/
diff --git a/tools/grib_convert.sh b/tools/grib_convert.sh
deleted file mode 100755
index fdf5f42..0000000
--- a/tools/grib_convert.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-set -e
-
-echo The following grib_convert rules convert all the grib messages 
-echo contained in the input files in grib edition 2 and if a 2 metre
-echo temperature is found also the keys contained in the culy bracket are
-echo changed.\\n  
-echo "\code "
-echo "editionNumber = 2;"
-echo "if( indicatorOfParameter == 11 && indicatorOfTypeOfLevel == 105)"
-echo "{"
-echo "    productDefinitionTemplateNumber = 1;"
-echo "    typeOfFirstFixedSurface         = 103;"
-echo "    scaleFactorOfFirstFixedSurface  = 0;"
-echo "    scaledValueOfFirstFixedSurface  = 2;"
-echo "}"
-echo "\endcode"
-echo
diff --git a/tools/grib_copy.c b/tools/grib_copy.c
index e0842a2..623bbb9 100644
--- a/tools/grib_copy.c
+++ b/tools/grib_copy.c
@@ -36,6 +36,7 @@ grib_option grib_options[]={
              "double (key:d) or an integer (key:i)\n\t\ttype can be defined. Default type "
              "is string.\n",0,1,0},
         {"B:",0,0,0,1,0},
+        /*{"s:",0,0,0,1,0},*/
         {"V",0,0,0,1,0},
         {"W:",0,0,0,1,0},
         {"M",0,0,0,1,0},
@@ -90,6 +91,16 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h)
 {
     double* v;
     size_t size=0;
+
+    /* For '-s' option
+    if (!options->skip) {
+        int err = 0;
+        if (options->set_values_count != 0)
+            err=grib_set_values(h,options->set_values,options->set_values_count);
+        if( err != GRIB_SUCCESS && options->fail) exit(err);
+    }
+    */
+
     if ( options->repack ) {
         GRIB_CHECK_NOLINE(grib_get_size(h,"values",&size),0);
 
@@ -131,8 +142,8 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err) {
-  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
-  return 0;
+int grib_no_handle_action(grib_runtime_options* options, int err)
+{
+    fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+    return 0;
 }
-
diff --git a/tools/grib_copy.sh b/tools/grib_copy.sh
index fcb5468..9ec1ec2 100755
--- a/tools/grib_copy.sh
+++ b/tools/grib_copy.sh
@@ -23,7 +23,19 @@ echo "> grib_copy multi.grib simple.grib"
 echo "\endverbatim\\n"
 
 echo "-# Use the square brackets to insert the value of a key"
-echo "in the name of the output file.\\n"
+echo "in the name of the output file (This is a good way to split a large GRIB file)\\n"
 echo "\verbatim"
 echo "> grib_copy in.grib 'out_[shortName].grib'"
 echo "\endverbatim\\n"
+echo "Note: we need to quote the name of the output so the shell does not interpret the square brackets"
+
+echo "-# To copy fields whose typeOfLevel is either 'surface' or 'meanSea'"
+echo "\verbatim"
+echo "> grib_copy -w typeOfLevel=surface/meanSea orig.grib out.grib"
+echo "\endverbatim\\n"
+
+echo "-# To copy selected fields and apply sorting (sorted by level in ascending order)"
+echo "\verbatim"
+echo "> grib_copy -w typeOfLevel=heightAboveGround -B'level:i asc' tigge_af_ecmwf.grib2 out.grib"
+echo "\endverbatim\\n"
+echo "Note: we need to specify the ':i' to get a numerical sort. By default values are sorted as strings so a level of 100 would come before 20!"
diff --git a/tools/grib_count.desc b/tools/grib_count.desc
index dc1fc5a..1db1ed0 100644
--- a/tools/grib_count.desc
+++ b/tools/grib_count.desc
@@ -4,7 +4,7 @@ DESCRIPTION
         Print the total number of GRIB messages in the given files. 
 
 USAGE 
-        grib_count [options] file file ...
+        grib_count [options] grib_file grib_file ...
 
 OPTIONS
         -v  Verbose mode. The number of messages is given for each file.
diff --git a/tools/grib_debug.sh b/tools/grib_debug.sh
deleted file mode 100755
index 10dfbaa..0000000
--- a/tools/grib_debug.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-set -e 
-
-echo "Dumping in a WMO documentation style with hexadecimal octet values (-H)\\n"
-echo "and with the aliases of each key listed in square brackets (-a).\\n\\n"
-echo  grib_dump -Ha ../data/reduced_gaussian_model_level.grib1\\n
-echo "\\verbatim"
-./grib_dump -Ha ../data/reduced_gaussian_model_level.grib1
-echo "\\endverbatim\\n"
-
-echo "\\n \\n How to obtain all the key names available in a grib file.\\n\\n"
-echo grib_dump -D ../data/regular_latlon_surface.grib1
-echo "\\verbatim "
-./grib_dump -D ../data/regular_latlon_surface.grib1
-echo "\\endverbatim\\n"
-
-echo "\\n\\n How to obtain a C code example from a grib file.\\n\\n"
-echo grib_dump -C ../data/regular_latlon_surface.grib1\\n
-echo "\\code "
-./grib_dump -C ../data/regular_latlon_surface.grib1
-echo "\\endcode\\n"
-
diff --git a/tools/grib_dump.c b/tools/grib_dump.c
index 14ee0b0..7a61a43 100644
--- a/tools/grib_dump.c
+++ b/tools/grib_dump.c
@@ -16,25 +16,25 @@
 #include "grib_tools.h"
 
 grib_option grib_options[]={
-/*  {id, args, help}, on, command_line, value*/
-    {"S",0,0,1,0,0},
-    {"O",0,"Octet mode. WMO documentation style dump.\n",0,1,0},
-    {"D",0,0,0,1,0},
-    {"d",0,"Print all data values.\n",0,1,0},
-    {"j",0,0,0,1,0},
-    /*  {"C",0,0,0,1,0}, */   /* See ECC-234 */
-    {"t",0,0,0,1,0},
-    {"H",0,0,0,1,0},
-    {"a",0,0,0,1,0},
-    {"w:",0,0,0,1,0},
-    {"s:",0,0,0,1,0},
-    {"M",0,0,0,1,0},
-    {"T:",0,0,0,1,0},
-    {"7",0,0,0,1,0},
-    {"V",0,0,0,1,0},
-    {"q",0,0,1,0,0},
-    {"X:",0,0,0,1,0},
-    {"x",0,0,0,1,0}
+        /*  {id, args, help}, on, command_line, value*/
+        {"S",0,0,1,0,0},
+        {"O",0,"Octet mode. WMO documentation style dump.\n",0,1,0},
+        {"D",0,0,0,1,0},
+        {"d",0,"Print all data values.\n",0,1,0},
+        {"j",0,0,0,1,0},
+        /*  {"C",0,0,0,1,0}, */   /* See ECC-234 */
+        {"t",0,0,0,1,0},
+        {"H",0,0,0,1,0},
+        {"a",0,0,0,1,0},
+        {"w:",0,0,0,1,0},
+        {"s:",0,0,0,1,0},
+        {"M",0,0,0,1,0},
+        {"T:",0,0,0,1,0},
+        {"7",0,0,0,1,0},
+        {"V",0,0,0,1,0},
+        {"q",0,0,1,0,0},
+        {"X:",0,0,0,1,0},
+        {"x",0,0,0,1,0}
 };
 
 char* grib_tool_description="Dump the content of a grib file in different formats.";
@@ -45,9 +45,8 @@ static int json=0;
 int grib_options_count=sizeof(grib_options)/sizeof(grib_option);
 
 /**
- *grib_dump
- *Dump the content of a grib file
- *
+ * grib_dump
+ * Dump the contents of a GRIB file
  */
 int main(int argc, char *argv[])
 {
@@ -77,13 +76,13 @@ int grib_tool_init(grib_runtime_options* options)
 
     /* See ECC-234
     if (grib_options_on("C")) {
-        options->dump_mode = "c_code";
+        options->dump_mode = "grib_encode_C";
         if (grib_options_on("d"))
             options->dump_flags = 0;
         else
             options->dump_flags = GRIB_DUMP_FLAG_NO_DATA;
     }
-    */
+     */
 
     if  (grib_options_on("O")) {
         options->dump_mode = "wmo";
@@ -140,7 +139,7 @@ int grib_tool_new_file_action(grib_runtime_options* options,grib_tools_file* fil
             int err = 0;
             grib_context* c = grib_context_get_default();
             const char* filename = options->current_infile->name;
-            
+
             err = grib_index_dump_file(stdout, filename);
             if (err) {
                 grib_context_log(c, GRIB_LOG_ERROR, "%s: Could not dump index file \"%s\".\n%s\n",
@@ -151,7 +150,7 @@ int grib_tool_new_file_action(grib_runtime_options* options,grib_tools_file* fil
             }
             /* Since there are no GRIB messages, we have to stop tool exiting in case there
              * are more index files
-            */
+             */
             options->fail = 0;
         }
     }
@@ -161,9 +160,6 @@ int grib_tool_new_file_action(grib_runtime_options* options,grib_tools_file* fil
 int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h)
 {
     long length=0;
-    char tmp[1024];
-    char identifier[100];
-    size_t idlen=100;
     int i,err=0;
     if (grib_get_long(h,"totalLength",&length) != GRIB_SUCCESS)
         length=-9999;
@@ -180,6 +176,9 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h)
     if(json) {
     }
     else {
+        char tmp[1024];
+        char identifier[100];
+        size_t idlen=100;
         sprintf(tmp,"MESSAGE %d ( length=%ld )",options->handle_count,length);
         if (!grib_options_on("C"))
             fprintf(stdout,"#==============   %-38s   ==============\n",tmp);
@@ -212,8 +211,8 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err) {
-  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
-  return 0;
+int grib_no_handle_action(grib_runtime_options* options, int err)
+{
+    fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+    return 0;
 }
-
diff --git a/tools/grib_filter.c b/tools/grib_filter.c
index dfe3489..3fc8a9d 100644
--- a/tools/grib_filter.c
+++ b/tools/grib_filter.c
@@ -118,8 +118,8 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err) {
-  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
-  return 0;
+int grib_no_handle_action(grib_runtime_options* options, int err)
+{
+    fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+    return 0;
 }
-
diff --git a/tools/grib_filter.sh b/tools/grib_filter.sh
index 2a7c60d..b33a701 100755
--- a/tools/grib_filter.sh
+++ b/tools/grib_filter.sh
@@ -71,6 +71,10 @@ echo "  - set keyname = keyvalue;"
 echo "  - print \"string to print also with key values like in the file name\""
 echo "  - transient keyname1 = keyname2;"
 echo "  - comments beginning with #"
+echo "  - defined(keyname) to check if a key is defined in a message"
+echo "  - missing(keyname) to check if the value of the key is set to MISSING"
+echo "  - To set a key value to MISSING, use 'set key=MISSING;' (note the case)"
+echo "  - You can also make an assertion with 'assert(condition)'. If condition is false, it will abort the filter."
 echo "  ."
 echo "A complex example of grib_filter rules is the following to change temperature in a grib edition 1 file." 
 echo "\\verbatim"
diff --git a/tools/grib_get.c b/tools/grib_get.c
index 4bb06fb..185f810 100644
--- a/tools/grib_get.c
+++ b/tools/grib_get.c
@@ -217,8 +217,8 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err) {
-  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
-  return 0;
+int grib_no_handle_action(grib_runtime_options* options, int err)
+{
+    fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+    return 0;
 }
-
diff --git a/tools/grib_get_data.c b/tools/grib_get_data.c
index 57f6984..9bf108d 100644
--- a/tools/grib_get_data.c
+++ b/tools/grib_get_data.c
@@ -36,7 +36,8 @@ grib_option grib_options[]={
     {"V",0,0,0,1,0}
 };
 
-char* grib_tool_description="Print a latitude, longitude, data values list ";
+char* grib_tool_description="Print a latitude, longitude, data values list.\n"
+                            "\tNote: Rotated grids are first unrotated";
 char* grib_tool_name="grib_get_data";
 char* grib_tool_usage="[options] grib_file grib_file ...";
 
@@ -284,9 +285,8 @@ static grib_values* get_key_values(grib_runtime_options* options,grib_handle* h)
 
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
     fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
     return 0;
 }
-
diff --git a/tools/grib_get_data.sh b/tools/grib_get_data.sh
index 526645c..2239302 100755
--- a/tools/grib_get_data.sh
+++ b/tools/grib_get_data.sh
@@ -7,7 +7,7 @@ echo "\\verbatim"
 echo ">grib_get_data ../data/reduced_gaussian_model_level.grib2"
 echo "\\endverbatim"
 
-echo "-# If you want to define your missing value=1111 and to print the string missing in place of it"
+echo "-# If you want to define your missing value=1111 and to print the string 'missing' in place of it"
 echo "\\verbatim"
 echo ">grib_get_data -m 1111:missing ../data/reduced_gaussian_model_level.grib2"
 echo "\\endverbatim"
@@ -16,6 +16,3 @@ echo "-# If you want to print the value of other keys with the data value list"
 echo "\\verbatim"
 echo ">grib_get_data -p centre,level,step ../data/reduced_gaussian_model_level.grib2"
 echo "\\endverbatim"
-
-
-
diff --git a/tools/grib_index_build.c b/tools/grib_index_build.c
index 32ee166..7802aa7 100644
--- a/tools/grib_index_build.c
+++ b/tools/grib_index_build.c
@@ -15,7 +15,7 @@
 
 #include "grib_tools.h"
 
-char* grib_tool_description="Build an index file for a set of input grib files.";
+char* grib_tool_description="Build an index file for a set of input GRIB files.";
 char* grib_tool_name="grib_index_build";
 char* grib_tool_usage="[options] grib_file grib_file ... ";
 grib_index* idx=NULL;
@@ -148,7 +148,7 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
     fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
     return 0;
diff --git a/tools/grib_ls.c b/tools/grib_ls.c
index 2cfaa67..11629fc 100644
--- a/tools/grib_ls.c
+++ b/tools/grib_ls.c
@@ -390,9 +390,8 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
   fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
   return 0;
 }
-
diff --git a/tools/grib_ls.sh b/tools/grib_ls.sh
index 4cefe6a..0d40ba1 100755
--- a/tools/grib_ls.sh
+++ b/tools/grib_ls.sh
@@ -33,3 +33,9 @@ echo "\\code "
 echo ">grib_ls -l 51.46,-1.33,1 -p paramId,name ../data/reduced_gaussian_surface.grib2"
 ./grib_ls -l 51.46,-1.33,1 -p paramId,shortName ../data/reduced_gaussian_surface.grib2
 echo "\\endcode\\n"
+
+echo "-# To get a list ordered by the 'level' key (ascending order).\\n "
+echo "\\verbatim "
+echo "> grib_ls -B 'level:i asc' tigge_af_ecmwf.grib2"
+echo "\\endverbatim\\n "
+echo "Note: we need to specify the ':i' to get a numerical sort. By default values are sorted as strings so a level of 100 would come before 20!"
diff --git a/tools/grib_merge.c b/tools/grib_merge.c
index e53885f..67df943 100644
--- a/tools/grib_merge.c
+++ b/tools/grib_merge.c
@@ -29,68 +29,75 @@ char* grib_tool_name="grib_merge";
 char* grib_tool_usage="[options] file file ... output_file";
 
 grib_option grib_options[]={
-/*  {id, args, help}, on, command_line, value */
-    {"f",0,0,0,1,0},
-    {"c",0,0,1,0,0},
-    {"r",0,0,0,1,0},
-    {"q",0,0,1,0,0},
-    {"p:",0,0,1,1,0},
-    {"P:",0,0,0,1,0},
-    {"B:",0,0,1,1,"md5Product"},
-    {"V",0,0,0,1,0},
-    {"W:",0,0,0,1,0},
-    {"M",0,0,0,1,0},
-    {"U",0,0,1,0,0},
-    {"H",0,0,1,0,0},
-    {"T:",0,0,1,0,"G"},
-    {"S",0,0,1,0,0},
-    {"g",0,0,0,1,0},
-    {"G",0,0,0,1,0},
-    {"7",0,0,0,1,0},
-    {"v",0,0,0,1,0}
+        /*  {id, args, help}, on, command_line, value */
+        {"f",0,0,0,1,0},
+        {"c",0,0,1,0,0},
+        {"r",0,0,0,1,0},
+        {"q",0,0,1,0,0},
+        {"p:",0,0,1,1,0},
+        {"P:",0,0,0,1,0},
+        {"B:",0,0,1,1,"md5Product"},
+        {"V",0,0,0,1,0},
+        {"W:",0,0,0,1,0},
+        {"M",0,0,0,1,0},
+        {"U",0,0,1,0,0},
+        {"H",0,0,1,0,0},
+        {"T:",0,0,1,0,"G"},
+        {"S",0,0,1,0,0},
+        {"g",0,0,0,1,0},
+        {"G",0,0,0,1,0},
+        {"7",0,0,0,1,0},
+        {"v",0,0,0,1,0}
 };
 
 int grib_options_count=sizeof(grib_options)/sizeof(grib_option);
 
-int main(int argc, char *argv[]) {
-  int ret=grib_tool(argc,argv);
-  return ret;
+int main(int argc, char *argv[])
+{
+    int ret=grib_tool(argc,argv);
+    return ret;
 }
 
-int grib_tool_before_getopt(grib_runtime_options* options) {
-  return 0;
+int grib_tool_before_getopt(grib_runtime_options* options)
+{
+    return 0;
 }
 
-int grib_tool_init(grib_runtime_options* options) {
-  return 0;
+int grib_tool_init(grib_runtime_options* options)
+{
+    return 0;
 }
 
-int grib_tool_new_filename_action(grib_runtime_options* options,const char* file) {
-   return 0;
+int grib_tool_new_filename_action(grib_runtime_options* options,const char* file)
+{
+    return 0;
 }
 
-int grib_tool_new_file_action(grib_runtime_options* options,grib_tools_file* file) {
-   return 0;
+int grib_tool_new_file_action(grib_runtime_options* options,grib_tools_file* file)
+{
+    return 0;
 }
 
 int idx(double lat,double lon,double latFirst,double lonFirst,double latLast,double lonLast,
-                long Ni,double di,double dj) {
-  long ilon,ilat;
-  if ((ilon=(lon-lonFirst)/di) < 0 ) return -1;
-  if ((ilat=(latFirst-lat)/dj) < 0 ) return -1;
-  if (lon>lonLast) {
-    if (lonLast==180) {
-      lon-=360;
-      ilon=(lon-lonFirst)/di;
-    } else 
-      return -1;
-  }
-  if (lat<latLast) return -1;
-  if ((ilat=(latFirst-lat)/dj) < 0 ) return -1;
-  return ilon+ilat*Ni;
+        long Ni,double di,double dj)
+{
+    long ilon,ilat;
+    if ((ilon=(lon-lonFirst)/di) < 0 ) return -1;
+    if ((ilat=(latFirst-lat)/dj) < 0 ) return -1;
+    if (lon>lonLast) {
+        if (lonLast==180) {
+            lon-=360;
+            ilon=(lon-lonFirst)/di;
+        } else
+            return -1;
+    }
+    if (lat<latLast) return -1;
+    if ((ilat=(latFirst-lat)/dj) < 0 ) return -1;
+    return ilon+ilat*Ni;
 }
 
-grib_handle* merge(grib_handle* h1,grib_handle* h2) {
+grib_handle* merge(grib_handle* h1,grib_handle* h2)
+{
     char s1[100]={0,};
     size_t len1;
     char s2[100]={0,};
@@ -116,11 +123,11 @@ grib_handle* merge(grib_handle* h1,grib_handle* h2) {
                     | GRIB_DUMP_FLAG_VALUES 
                     | GRIB_DUMP_FLAG_READ_ONLY;
 
-    */
+     */
 
     /* same products? */
     if (grib_key_equal(h1,h2,"md5Product",GRIB_TYPE_STRING,&err)==0 && err==0) {
-      return NULL;
+        return NULL;
     }
 
     /* can we do it?*/
@@ -141,12 +148,12 @@ grib_handle* merge(grib_handle* h1,grib_handle* h2) {
 
     if (!grib_key_equal(h1,h2,"iDirectionIncrementInDegrees",GRIB_TYPE_DOUBLE,&err) ) {
         grib_context_log(h1->context,GRIB_LOG_WARNING,
-            "unable to merge: different iDirectionIncrementInDegrees");
+                "unable to merge: different iDirectionIncrementInDegrees");
         return NULL;
     }
     if (!grib_key_equal(h1,h2,"jDirectionIncrementInDegrees",GRIB_TYPE_DOUBLE,&err) ) {
         grib_context_log(h1->context,GRIB_LOG_WARNING,
-            "unable to merge: different jDirectionIncrementInDegrees");
+                "unable to merge: different jDirectionIncrementInDegrees");
         return NULL;
     }
 
@@ -171,10 +178,10 @@ grib_handle* merge(grib_handle* h1,grib_handle* h2) {
     /* do we have something to do?*/
 
     if ( grib_key_equal(h1,h2,"latitudeOfFirstGridPointInDegrees",GRIB_TYPE_DOUBLE,&err) &&
-         grib_key_equal(h1,h2,"latitudeOfLastGridPointInDegrees",GRIB_TYPE_DOUBLE,&err)  &&
-         grib_key_equal(h1,h2,"longitudeOfFirstGridPointInDegrees",GRIB_TYPE_DOUBLE,&err) &&
-         grib_key_equal(h1,h2,"longitudeOfLastGridPointInDegrees",GRIB_TYPE_DOUBLE,&err)
-       ) {
+            grib_key_equal(h1,h2,"latitudeOfLastGridPointInDegrees",GRIB_TYPE_DOUBLE,&err)  &&
+            grib_key_equal(h1,h2,"longitudeOfFirstGridPointInDegrees",GRIB_TYPE_DOUBLE,&err) &&
+            grib_key_equal(h1,h2,"longitudeOfLastGridPointInDegrees",GRIB_TYPE_DOUBLE,&err)
+    ) {
         /* no we don't */
         return NULL;
     }
@@ -221,8 +228,8 @@ grib_handle* merge(grib_handle* h1,grib_handle* h2) {
 
     if (lonFirst==0 && lonLast==360) lonLast-=di;
     if (lonFirst==-180 && lonLast==180) { 
-      lonFirst=0;
-      lonLast=360-di;
+        lonFirst=0;
+        lonLast=360-di;
     }
 
     /* create new grib for bigger area*/
@@ -272,11 +279,11 @@ grib_handle* merge(grib_handle* h1,grib_handle* h2) {
     grib_get_double_array(h2,"values",v2,&sn);
 
     for (i=0;i<n;i++) {
-      if ((j=idx(lat[i],lon[i],latFirst1,lonFirst1,latLast1,lonLast1,Ni1,di1,dj1)) >=0 ) {
-        v[i]=v1[j];
-      } else if ( (j=idx(lat[i],lon[i],latFirst2,lonFirst2,latLast2,lonLast2,Ni2,di2,dj2))>=0) {
-        v[i]=v2[j];
-      }
+        if ((j=idx(lat[i],lon[i],latFirst1,lonFirst1,latLast1,lonLast1,Ni1,di1,dj1)) >=0 ) {
+            v[i]=v1[j];
+        } else if ( (j=idx(lat[i],lon[i],latFirst2,lonFirst2,latLast2,lonLast2,Ni2,di2,dj2))>=0) {
+            v[i]=v2[j];
+        }
     }
 
     grib_set_double_array(h,"values",v,n);
@@ -284,50 +291,54 @@ grib_handle* merge(grib_handle* h1,grib_handle* h2) {
     return h;
 }
 
-int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h) {
-  int err=0;
-  grib_handle* hm=0;
-  char md5[200]={0,};
-  char fname[210]={0,};
-  size_t lmd5;
-
-  if (!hh) { hh=grib_handle_clone(h); return 0; }
-  grib_get_string(h,"md5Product",md5,&lmd5);
-  sprintf(fname,"_%s.orig.grib",md5);
-  grib_write_message(h,fname,"a");
-
-  if ((hm=merge(h,hh))==NULL ) {
-      grib_tools_write_message(options,hh);
-      lmd5=sizeof(md5)/sizeof(*md5);
-      grib_get_string(hh,"md5Product",md5,&lmd5);
-      sprintf(fname,"_%s.merge.grib",md5);
-      grib_write_message(hh,fname,"a");
-  }
-  grib_handle_delete(hh);
-  hh = hm!=NULL ? hm : grib_handle_clone(h) ;
-
-  return err;
-}
+int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h)
+{
+    int err=0;
+    grib_handle* hm=0;
+    char md5[200]={0,};
+    char fname[210]={0,};
+    size_t lmd5;
+
+    if (!hh) { hh=grib_handle_clone(h); return 0; }
+    grib_get_string(h,"md5Product",md5,&lmd5);
+    sprintf(fname,"_%s.orig.grib",md5);
+    grib_write_message(h,fname,"a");
+
+    if ((hm=merge(h,hh))==NULL ) {
+        grib_tools_write_message(options,hh);
+        lmd5=sizeof(md5)/sizeof(*md5);
+        grib_get_string(hh,"md5Product",md5,&lmd5);
+        sprintf(fname,"_%s.merge.grib",md5);
+        grib_write_message(hh,fname,"a");
+    }
+    grib_handle_delete(hh);
+    hh = hm!=NULL ? hm : grib_handle_clone(h) ;
 
-int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h) {
-  grib_handle_delete(h);
-  return 0;
+    return err;
 }
 
-void grib_tool_print_key_values(grib_runtime_options* options,grib_handle* h) {
-  grib_print_key_values(options,h);
+int grib_tool_skip_handle(grib_runtime_options* options, grib_handle* h)
+{
+    grib_handle_delete(h);
+    return 0;
 }
 
-int grib_tool_finalise_action(grib_runtime_options* options) {
-  grib_tools_write_message(options,hh);
-  if (options->outfile->file) {
-    fclose(options->outfile->file);
-  }
-  return 0;
+void grib_tool_print_key_values(grib_runtime_options* options,grib_handle* h)
+{
+    grib_print_key_values(options,h);
 }
 
-int grib_no_handle_action(int err) {
-  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
-  return 0;
+int grib_tool_finalise_action(grib_runtime_options* options)
+{
+    grib_tools_write_message(options,hh);
+    if (options->outfile->file) {
+        fclose(options->outfile->file);
+    }
+    return 0;
 }
 
+int grib_no_handle_action(grib_runtime_options* options, int err)
+{
+    fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+    return 0;
+}
diff --git a/tools/grib_options.c b/tools/grib_options.c
index 84c2780..5190f91 100644
--- a/tools/grib_options.c
+++ b/tools/grib_options.c
@@ -77,7 +77,9 @@ grib_options_help grib_options_help_list[] ={
    " key/value constraints."
    "\n\t\tA valid constraint is of type key=value or key!=value."
    "\n\t\tFor each key a string (key:s), a double (key:d) or"
-   " an integer (key:i)\n\t\ttype can be specified. Default type is string.\n"},
+   " an integer (key:i)\n\t\ttype can be specified. Default type is string."
+   "\n\t\tIn the value you can also use the forward-slash character '/' to specify an OR condition (i.e. a logical disjunction)\n"
+  },
   {"v",0,"Verbose.\n"},
   {"7",0,"Does not fail when the message has wrong length\n"},
   {"A:","absolute error\n",
diff --git a/tools/grib_set.c b/tools/grib_set.c
index 3a59039..31b6d5f 100644
--- a/tools/grib_set.c
+++ b/tools/grib_set.c
@@ -23,13 +23,13 @@ grib_option grib_options[]={
         {"p:",0,0,1,1,0},
         {"P:",0,0,0,1,0},
         {"w:","key[:{s/d/i}]{=/!=}value,key[:{s/d/i}]=value,...",
-                "\n\t\tWhere clause.\n\t\tSet is only executed for grib messages matching all the "
-                "key/value constraints.\n\t\tIf a grib message does not match the constraints it is"
-                " copied unchanged\n\t\tto the output_grib_file. This behaviour can be changed "
-                "setting the option -S."
-                "\n\t\tA valid constraint is of type key=value or key!=value."
-                "\n\t\tFor each key a string (key:s), a double (key:d) or"
-                " an integer (key:i)\n\t\ttype can be defined. Default type is string.\n",0,1,0},
+              "\n\t\tWhere clause.\n\t\tSet is only executed for grib messages matching all the "
+              "key/value constraints.\n\t\tIf a grib message does not match the constraints it is"
+              " copied unchanged\n\t\tto the output_grib_file. This behaviour can be changed "
+              "setting the option -S."
+              "\n\t\tA valid constraint is of type key=value or key!=value."
+              "\n\t\tFor each key a string (key:s), a double (key:d) or"
+              " an integer (key:i)\n\t\ttype can be defined. Default type is string.\n",0,1,0},
         {"q",0,0,1,0,0},
         {"7",0,0,0,1,0},
         {"S",0,0,0,1,0},
@@ -102,7 +102,7 @@ int grib_tool_new_file_action(grib_runtime_options* options,grib_tools_file* fil
 
 int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h)
 {
-	size_t i=0;
+    size_t i=0;
     int err=0;
 
     if (!options->skip) {
@@ -131,12 +131,6 @@ int grib_tool_new_handle_action(grib_runtime_options* options, grib_handle* h)
                 for(i = 0; i< size; i++)
                     v[i] =  options->constant;
             }
-#if 0
-            if (grib_options_on("n:")) {
-                for(i = 0; i< size; i++)
-                    v[i] =  options->constant;
-            }
-#endif
 
             if (err == GRIB_SUCCESS) {
                 GRIB_CHECK_NOLINE(grib_set_double_array(h,"values",v,size),0);
@@ -175,8 +169,8 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err) {
-  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
-  return 0;
+int grib_no_handle_action(grib_runtime_options* options, int err)
+{
+    fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+    return 0;
 }
-
diff --git a/tools/grib_set.sh b/tools/grib_set.sh
index a49008e..feceadd 100755
--- a/tools/grib_set.sh
+++ b/tools/grib_set.sh
@@ -37,12 +37,10 @@ To change packing algorithm from grid_simple (simple packing) to grid_jpeg (jpeg
 >grib_set -s packingType=grid_jpeg ../data/regular_gaussian_model_level.grib2 out.grib2
 \\endverbatim\\n"
 
-echo "-# It's possible to ask grib_api to calculate the number of bits per value needed to pack a given
+echo "-# It's possible to ask ecCodes to calculate the number of bits per value needed to pack a given
 field with a fixed number of decimal digits of precision. For example if we want to pack a temperature
 expressed in Kelvin with 1 digits of precision after the decimal point we can set changeDecimalPrecision=1 \\n
 \\verbatim 
 >grib_set -s changeDecimalPrecision=1 ../data/regular_latlon_surface.grib2 ../data/out.grib2
-rm -f ../data/out.grib2 | true
-./grib_set -s changeDecimalPrecision=1 ../data/regular_latlon_surface.grib2 ../data/out.grib2
 \\endverbatim\\n"
 
diff --git a/tools/grib_to_netcdf.c b/tools/grib_to_netcdf.c
index ca98bc0..8e4a5b9 100644
--- a/tools/grib_to_netcdf.c
+++ b/tools/grib_to_netcdf.c
@@ -1058,7 +1058,7 @@ static err to_expand_mem(field *g)
         if(g->handle)
             grib_get_message(g->handle, &dummy, &g->length);
 
-        grib_file_close(file->name, &e);
+        grib_file_close(file->name, 0, &e);
         if(!g->handle)
             return -1;
 
@@ -4094,7 +4094,7 @@ int grib_tool_new_filename_action(grib_runtime_options* options, const char* fil
         grib_handle_delete(h);
     }
 
-    grib_file_close(file->name, &e);
+    grib_file_close(file->name, 0, &e);
 
     {
         /* Now do some checks */
@@ -4106,10 +4106,15 @@ int grib_tool_new_filename_action(grib_runtime_options* options, const char* fil
             {
                 grib_context_log(ctx, GRIB_LOG_ERROR, "Wrong number of fields");
                 grib_context_log(ctx, GRIB_LOG_ERROR, "File contains %d GRIBs, %d left in internal description, %d in request", i, fs->count, cnt);
+                grib_context_log(ctx, GRIB_LOG_ERROR, "The fields are not considered distinct!\n");
                 /*grib_context_log(ctx, GRIB_LOG_ERROR, "MARS description");*/
                 /*print_all_requests(setup.mars_description);*/
-                grib_context_log(ctx, GRIB_LOG_ERROR, "Internal description");
-                print_all_requests(temp_data_r);
+                if (ctx->debug) {
+                    grib_context_log(ctx, GRIB_LOG_ERROR, "Internal description");
+                    print_all_requests(temp_data_r);
+                }
+                grib_context_log(ctx, GRIB_LOG_ERROR, "Hint: This may be due to several fields having the same validity time.");
+                grib_context_log(ctx, GRIB_LOG_ERROR, "Try using the -T option (Do not use time of validity)");
                 exit(1);
             }
         }
@@ -4238,7 +4243,7 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
     fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
     return 0;
diff --git a/tools/grib_to_netcdf.sh b/tools/grib_to_netcdf.sh
index afe77bc..3a5af13 100755
--- a/tools/grib_to_netcdf.sh
+++ b/tools/grib_to_netcdf.sh
@@ -13,13 +13,13 @@ echo ">grib_to_netcdf -I type,step -o output.nc input.grib"
 echo "\\endverbatim"
 
 echo "-# Do not use time of validity. If time of validity is used, it means the 1D time coordinate is considered as date+time+step, otherwise 3 different dimensions are created."
-echo "-# The default behaviour is to use the time of validity."
+echo "The default behaviour is to use the time of validity."
 echo "\\verbatim"
 echo ">grib_to_netcdf -T -o output.nc input.grib"
 echo "\\endverbatim"
 
 echo "-# Produce NetCDF with data type of FLOAT (32bit floating point, for higher precision)."
-echo "-# Note these types were chosen to provide a reasonably wide range of trade-offs between data precision and number of bits required for each value"
+echo "Note these types were chosen to provide a reasonably wide range of trade-offs between data precision and number of bits required for each value"
 echo "\\verbatim"
 echo ">grib_to_netcdf -D NC_FLOAT -o output.nc input.grib"
 echo "\\endverbatim"
diff --git a/tools/grib_tools.c b/tools/grib_tools.c
index 8e7b4c2..f924c75 100644
--- a/tools/grib_tools.c
+++ b/tools/grib_tools.c
@@ -48,61 +48,61 @@ static int scan(grib_context* c,grib_runtime_options* options,const char* dir);
 FILE* dump_file;
 
 grib_runtime_options global_options={
-		0,         /* verbose       */
-		0,         /* fail          */
-		0,         /* skip          */
-		12,        /* default_print_width */
-		0,         /* print_header */
-		0,         /* name_space */
-		0,         /* print_number */
-		1,         /* print_statistics */
+        0,         /* verbose       */
+        0,         /* fail          */
+        0,         /* skip          */
+        12,        /* default_print_width */
+        0,         /* print_header */
+        0,         /* name_space */
+        0,         /* print_number */
+        1,         /* print_statistics */
         {{0,},},   /* grib_values requested_print_keys[MAX_KEYS] */
-		0,         /* requested_print_keys_count */
-		{{0,},},   /* grib_values print_keys[MAX_KEYS] */
-		0,         /* print_keys_count  */
-		0,         /* strict            */
-		0,         /* multi_support     */
-		0,         /* set_values_count  */
-		{{0,},},   /* grib_values set_values[MAX_KEYS] */
-		{{0,},},   /* grib_values constraints[MAX_KEYS] */
-		0,         /* constraints_count */
-		{{0,},},   /* grib_values compare[MAX_KEYS] */
-		0,         /* compare_count */
-		0,         /* handle_count      */
-		0,         /* filter_handle_count */
-		0,         /* file_count     */
-		0,         /* grib_tools_file infile_extra */
-		0,         /* grib_tools_file current_infile */
-		0,         /* grib_tools_file infile */
-		0,         /*grib_tools_file outfile */
-		0,         /* grib_action action */
-		0,         /* grib_rule rules */
-		0,         /* int dump_flags; */
-		0,         /* char* dump_mode; */
-		0,         /* repack    */
-		0,         /* error    */
-		0,          /* gts    */
-		0,          /* orderby    */
-		0,          /* latlon    */
-		{0,},
-		{0,},
-		{0,},
-		{0,},
-		{0,},
-		4,
-		0,
-		-1,
-		{0,},
-		0,       /* index */
-		0,       /* index_on */
-		0,        /* constant */
-		0,         /* dump_filename*/
-		0,         /* index */
-		0,         /* random */
+        0,         /* requested_print_keys_count */
+        {{0,},},   /* grib_values print_keys[MAX_KEYS] */
+        0,         /* print_keys_count  */
+        0,         /* strict            */
+        0,         /* multi_support     */
+        0,         /* set_values_count  */
+        {{0,},},   /* grib_values set_values[MAX_KEYS] */
+        {{0,},},   /* grib_values constraints[MAX_KEYS] */
+        0,         /* constraints_count */
+        {{0,},},   /* grib_values compare[MAX_KEYS] */
+        0,         /* compare_count */
+        0,         /* handle_count      */
+        0,         /* filter_handle_count */
+        0,         /* file_count     */
+        0,         /* grib_tools_file* infile_extra */
+        0,         /* grib_tools_file* current_infile */
+        0,         /* grib_tools_file* infile */
+        0,         /* grib_tools_file* outfile */
+        0,         /* grib_action* action */
+        0,         /* grib_rule* rules */
+        0,         /* int dump_flags; */
+        0,         /* char* dump_mode; */
+        0,         /* repack    */
+        0,         /* error    */
+        0,         /* gts    */
+        0,         /* orderby    */
+        0,         /* latlon    */
+        {0,},      /* double lats[4] */
+        {0,},      /* double lons[4] */
+        {0,},      /* double values[4] */
+        {0,},      /* double distances[4] */
+        {0,},      /* int indexes[4] */
+        4,         /* int latlon_mode */
+        0,         /* char* latlon_mask */
+        -1,        /* int latlon_idx */
+        {0,},      /* double mask_values[4] */
+        0,         /* index */
+        0,         /* index_on */
+        0,         /* constant */
+        0,         /* dump_filename*/
+        0,         /* grib_fieldset* idx */
+        0,         /* random */
         0,         /* format */
         0,         /* onlyfiles */
         0,         /* tolerance_count  */
-		0,			/* through_index */
+        0,         /* through_index */
         0,         /* index1  */
         0,         /* index2  */
         0,         /* context  */
@@ -113,7 +113,7 @@ grib_runtime_options global_options={
         {{0,},},   /* grib_values tolerance[MAX_KEYS] */
         0          /* infile_offset */
 
-	};
+};
 
 static grib_handle* grib_handle_new_from_file_x(grib_context* c,FILE* f,int mode,int headers_only,int *err)
 {
@@ -228,7 +228,7 @@ static int grib_tool_with_orderby(grib_runtime_options* options)
         options->error=err;
 
         if (!h) {
-            grib_no_handle_action(err);
+            grib_no_handle_action(options, err);
 
             failed=(grib_failed*)grib_context_malloc_clear(c,sizeof(grib_failed));
             failed->count=infile->handle_count;
@@ -327,7 +327,7 @@ static int grib_tool_without_orderby(grib_runtime_options* options)
 
             if (!h) {
                 /* fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n"); */
-                grib_no_handle_action(err);
+                grib_no_handle_action(options, err);
 
                 failed=(grib_failed*)grib_context_malloc_clear(c,sizeof(grib_failed));
                 failed->count=infile->handle_count;
@@ -384,23 +384,23 @@ static int grib_tool_without_orderby(grib_runtime_options* options)
 static int navigate(grib_field_tree* fields,grib_runtime_options* options)
 {
     int err=0;
-  int message_type=0;
+    int message_type=0;
 
     if (!fields || options->stop) return 0;
 
-  switch (options->mode) {
+    switch (options->mode) {
     case MODE_GRIB:
-      message_type=CODES_GRIB;
-      break;
+        message_type=CODES_GRIB;
+        break;
     case MODE_BUFR:
-      message_type=CODES_BUFR;
-      break;
+        message_type=CODES_BUFR;
+        break;
     default :
-      Assert(0);
-  }
+        Assert(0);
+    }
 
     if (fields->field) {
-		grib_handle* h=codes_index_get_handle(fields->field,message_type,&err);
+        grib_handle* h=codes_index_get_handle(fields->field,message_type,&err);
         if (!options->index2->current)
             options->index2->current=(grib_field_list*)grib_context_malloc_clear(options->context,sizeof(grib_field_list));
         options->index2->current->field=fields->field;
@@ -786,7 +786,7 @@ void grib_skip_check(grib_runtime_options* options,grib_handle* h)
     }
 }
 
-void grib_print_key_values(grib_runtime_options* options,grib_handle* h)
+void grib_print_key_values(grib_runtime_options* options, grib_handle* h)
 {
     int i=0;
     int ret=0,width=0;
@@ -796,6 +796,7 @@ void grib_print_key_values(grib_runtime_options* options,grib_handle* h)
     char value[MAX_STRING_LEN];
     char* notfound="not_found";
     int written_to_dump = 0; /* boolean */
+    grib_accessor* acc = NULL;
 
     if (!options->verbose) return;
 
@@ -803,31 +804,67 @@ void grib_print_key_values(grib_runtime_options* options,grib_handle* h)
         size_t len=MAX_STRING_LEN;
         ret=GRIB_SUCCESS;
 
-        if (grib_is_missing(h,options->print_keys[i].name,&ret) && ret==GRIB_SUCCESS)
-            sprintf(value,"MISSING");
-        else if ( ret == GRIB_SUCCESS ) {
-            if (options->print_keys[i].type == GRIB_TYPE_UNDEFINED)
-                grib_get_native_type(h,options->print_keys[i].name,&(options->print_keys[i].type));
-            switch (options->print_keys[i].type) {
-            case GRIB_TYPE_STRING:
-                ret=grib_get_string( h,options->print_keys[i].name,value,&len);
-                break;
-            case GRIB_TYPE_DOUBLE:
-                ret=grib_get_double( h,options->print_keys[i].name,&dvalue);
-                sprintf(value,options->format,dvalue);
-                break;
-            case GRIB_TYPE_LONG:
-                ret=grib_get_long( h,options->print_keys[i].name,&lvalue);
-                sprintf(value,"%ld", lvalue);
-                break;
-            case GRIB_TYPE_BYTES:
-                ret=grib_get_string( h,options->print_keys[i].name,value,&len);
-                break;
-            default:
-                fprintf(dump_file,"invalid format option for %s\n",options->print_keys[i].name);
-                exit(1);
+        if (h->product_kind == PRODUCT_BUFR) {
+            /* ECC-236: Do not use grib_is_missing for BUFR */
+            if (!grib_is_defined(h, options->print_keys[i].name)) ret = GRIB_NOT_FOUND;
+            if (ret == GRIB_SUCCESS) {
+                if (options->print_keys[i].type == GRIB_TYPE_UNDEFINED)
+                    grib_get_native_type(h, options->print_keys[i].name, &(options->print_keys[i].type));
+                switch (options->print_keys[i].type) {
+                case GRIB_TYPE_STRING:
+                    acc = grib_find_accessor(h, options->print_keys[i].name);
+                    ret=grib_get_string(h, options->print_keys[i].name, value, &len);
+                    if (grib_is_missing_string(acc, (unsigned char *)value, len))
+                        sprintf(value,"MISSING");
+                    break;
+                case GRIB_TYPE_DOUBLE:
+                    ret=grib_get_double(h, options->print_keys[i].name, &dvalue);
+                    if (dvalue == GRIB_MISSING_DOUBLE) sprintf(value,"MISSING");
+                    else                               sprintf(value,options->format,dvalue);
+                    break;
+                case GRIB_TYPE_LONG:
+                    ret=grib_get_long(h, options->print_keys[i].name, &lvalue);
+                    if (lvalue == GRIB_MISSING_LONG) sprintf(value,"MISSING");
+                    else                             sprintf(value,"%ld", lvalue);
+                    break;
+                case GRIB_TYPE_BYTES:
+                    ret=grib_get_string(h, options->print_keys[i].name, value, &len);
+                    break;
+                default:
+                    fprintf(dump_file,"Could not determine type for %s\n", options->print_keys[i].name);
+                    exit(1);
+                }
+            }
+        } else {
+            /* Other products e.g. GRIB */
+            if (grib_is_missing(h,options->print_keys[i].name,&ret) && ret==GRIB_SUCCESS) {
+                sprintf(value,"MISSING");
+            }
+            else if ( ret == GRIB_SUCCESS ) {
+                if (options->print_keys[i].type == GRIB_TYPE_UNDEFINED)
+                    grib_get_native_type(h,options->print_keys[i].name,&(options->print_keys[i].type));
+                switch (options->print_keys[i].type) {
+                case GRIB_TYPE_STRING:
+                    ret=grib_get_string( h,options->print_keys[i].name,value,&len);
+                    break;
+                case GRIB_TYPE_DOUBLE:
+                    ret=grib_get_double( h,options->print_keys[i].name,&dvalue);
+                    sprintf(value,options->format,dvalue);
+                    break;
+                case GRIB_TYPE_LONG:
+                    ret=grib_get_long( h,options->print_keys[i].name,&lvalue);
+                    sprintf(value,"%ld", lvalue);
+                    break;
+                case GRIB_TYPE_BYTES:
+                    ret=grib_get_string( h,options->print_keys[i].name,value,&len);
+                    break;
+                default:
+                    fprintf(dump_file,"invalid format option for %s\n",options->print_keys[i].name);
+                    exit(1);
+                }
             }
         }
+
         if (ret != GRIB_SUCCESS) {
             if (options->fail) GRIB_CHECK_NOLINE(ret,options->print_keys[i].name);
             if (ret == GRIB_NOT_FOUND) strcpy(value,notfound);
@@ -996,7 +1033,7 @@ void grib_tools_write_message(grib_runtime_options* options, grib_handle* h)
         }
     }
 
-    grib_file_close(filename, &err);
+    grib_file_close(filename, 0, &err);
 
     if (err != GRIB_SUCCESS) {
         grib_context_log(h->context, GRIB_LOG_ERROR,"unable to write message\n");
@@ -1030,4 +1067,3 @@ void grib_tools_write_message(grib_runtime_options* options, grib_handle* h)
 #endif
 
 }
-
diff --git a/tools/grib_tools.h b/tools/grib_tools.h
index d850c05..0d2e09b 100644
--- a/tools/grib_tools.h
+++ b/tools/grib_tools.h
@@ -194,7 +194,7 @@ int grib_get_runtime_options(int argc,char** argv,grib_runtime_options* options)
 int grib_process_runtime_options(grib_context* c,int argc,char** argv,grib_runtime_options* options);
 void grib_tools_write_message(grib_runtime_options* options, grib_handle* h);
 int grib_tool_new_filename_action(grib_runtime_options* options,const char* file); 
-int grib_no_handle_action(int err);
+int grib_no_handle_action(grib_runtime_options* options,int err);
 
 #endif
 
diff --git a/tools/gts_compare.c b/tools/gts_compare.c
index bc78c1f..d341f84 100644
--- a/tools/gts_compare.c
+++ b/tools/gts_compare.c
@@ -951,8 +951,8 @@ static int compare_handles(grib_handle* h1,grib_handle* h2,grib_runtime_options*
     return err;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
-  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
-  return 0;
+    fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+    return 0;
 }
diff --git a/tools/gts_copy.c b/tools/gts_copy.c
index 8c101a1..22b1831 100644
--- a/tools/gts_copy.c
+++ b/tools/gts_copy.c
@@ -111,7 +111,7 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
     fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
     return 0;
diff --git a/tools/gts_dump.c b/tools/gts_dump.c
index a20191e..5102611 100644
--- a/tools/gts_dump.c
+++ b/tools/gts_dump.c
@@ -152,8 +152,8 @@ int grib_tool_finalise_action(grib_runtime_options* options)
   return 0;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
-  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
-  return 0;
+    fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+    return 0;
 }
diff --git a/tools/gts_filter.c b/tools/gts_filter.c
index 1b520e3..3953fe7 100644
--- a/tools/gts_filter.c
+++ b/tools/gts_filter.c
@@ -102,7 +102,7 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
     fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
     return 0;
diff --git a/tools/gts_get.c b/tools/gts_get.c
index 26241d1..bbdca70 100644
--- a/tools/gts_get.c
+++ b/tools/gts_get.c
@@ -98,7 +98,7 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
     fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
     return 0;
diff --git a/tools/gts_ls.c b/tools/gts_ls.c
index 455bba8..15f7de3 100644
--- a/tools/gts_ls.c
+++ b/tools/gts_ls.c
@@ -119,7 +119,7 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
     fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
     return 0;
diff --git a/tools/make_dox.ksh b/tools/make_dox.ksh
index 8b543f6..16aa697 100755
--- a/tools/make_dox.ksh
+++ b/tools/make_dox.ksh
@@ -1,6 +1,6 @@
 #!/bin/ksh
 set -ex
-set -A tools grib_dump grib_ls grib_get grib_copy grib_set grib_filter grib_compare grib_get_data grib_keys grib_index_build
+set -A tools grib_dump grib_ls grib_get grib_copy grib_set grib_filter grib_compare grib_get_data grib_index_build
 export DOXYGEN_USAGE=1
 
 cat tools_head.dox > tools.dox
diff --git a/tools/metar_compare.c b/tools/metar_compare.c
index 0d51d0f..eb6e038 100644
--- a/tools/metar_compare.c
+++ b/tools/metar_compare.c
@@ -1166,8 +1166,8 @@ static int compare_handles(grib_handle* h1,grib_handle* h2,grib_runtime_options*
     return err;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
-  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
-  return 0;
+    fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+    return 0;
 }
diff --git a/tools/metar_copy.c b/tools/metar_copy.c
index 2ab6562..4be3ad7 100644
--- a/tools/metar_copy.c
+++ b/tools/metar_copy.c
@@ -111,7 +111,7 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
     fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
     return 0;
diff --git a/tools/metar_dump.c b/tools/metar_dump.c
index 12d4918..d8938e1 100644
--- a/tools/metar_dump.c
+++ b/tools/metar_dump.c
@@ -157,8 +157,8 @@ int grib_tool_finalise_action(grib_runtime_options* options) {
   return 0;
 }
 
-int grib_no_handle_action(int err) {
-  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
-  return 0;
+int grib_no_handle_action(grib_runtime_options* options, int err)
+{
+    fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+    return 0;
 }
-
diff --git a/tools/metar_filter.c b/tools/metar_filter.c
index 76c614f..2a9e8e9 100644
--- a/tools/metar_filter.c
+++ b/tools/metar_filter.c
@@ -100,7 +100,7 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
     fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
     return 0;
diff --git a/tools/metar_get.c b/tools/metar_get.c
index 4e5afe8..363603d 100644
--- a/tools/metar_get.c
+++ b/tools/metar_get.c
@@ -101,7 +101,7 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
     fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
     return 0;
diff --git a/tools/metar_ls.c b/tools/metar_ls.c
index 13e58e9..b5e1707 100644
--- a/tools/metar_ls.c
+++ b/tools/metar_ls.c
@@ -349,8 +349,8 @@ int grib_tool_finalise_action(grib_runtime_options* options) {
   return 0;
 }
 
-int grib_no_handle_action(int err) {
-  fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
-  return 0;
+int grib_no_handle_action(grib_runtime_options* options, int err)
+{
+    fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
+    return 0;
 }
-
diff --git a/tools/taf_dump.c b/tools/taf_dump.c
index 0038161..a742668 100644
--- a/tools/taf_dump.c
+++ b/tools/taf_dump.c
@@ -158,7 +158,7 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
     fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
     return 0;
diff --git a/tools/taf_filter.c b/tools/taf_filter.c
index 39c1773..119969d 100644
--- a/tools/taf_filter.c
+++ b/tools/taf_filter.c
@@ -102,7 +102,7 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
     fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
     return 0;
diff --git a/tools/taf_get.c b/tools/taf_get.c
index d9b738a..3626baf 100644
--- a/tools/taf_get.c
+++ b/tools/taf_get.c
@@ -212,7 +212,7 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
     fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
     return 0;
diff --git a/tools/taf_ls.c b/tools/taf_ls.c
index f64bb8f..423045e 100644
--- a/tools/taf_ls.c
+++ b/tools/taf_ls.c
@@ -269,7 +269,7 @@ int grib_tool_finalise_action(grib_runtime_options* options)
     return 0;
 }
 
-int grib_no_handle_action(int err)
+int grib_no_handle_action(grib_runtime_options* options, int err)
 {
     fprintf(dump_file,"\t\t\"ERROR: unreadable message\"\n");
     return 0;
diff --git a/version.sh b/version.sh
index 13eff13..8f2b9bf 100644
--- a/version.sh
+++ b/version.sh
@@ -13,8 +13,8 @@
 PACKAGE_NAME='eccodes'
 
 # Package version
-ECCODES_MAJOR_VERSION=0
-ECCODES_MINOR_VERSION=16
+ECCODES_MAJOR_VERSION=2
+ECCODES_MINOR_VERSION=0
 ECCODES_REVISION_VERSION=0
 
 ECCODES_CURRENT=1
diff --git a/windows/msvc/grib_api_lib/grib_api_lib.vcproj b/windows/msvc/grib_api_lib/grib_api_lib.vcproj
index 008a97b..a6e2917 100644
--- a/windows/msvc/grib_api_lib/grib_api_lib.vcproj
+++ b/windows/msvc/grib_api_lib/grib_api_lib.vcproj
@@ -421,6 +421,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\src\codes_memfs.c"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\src\compile.c"
 				>
 			</File>
@@ -513,6 +517,14 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\src\grib_accessor_class_bufr_extract_area_subsets.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\src\grib_accessor_class_bufr_extract_datetime_subsets.c"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\src\grib_accessor_class_bufr_extract_subsets.c"
 				>
 			</File>
@@ -525,6 +537,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\src\grib_accessor_class_bufr_simple_thinning.c"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\src\grib_accessor_class_bufr_string_values.c"
 				>
 			</File>
@@ -1377,7 +1393,35 @@
 				>
 			</File>
 			<File
-				RelativePath="..\..\..\src\grib_dumper_class_c_code.c"
+				RelativePath="..\..\..\src\grib_dumper_class_bufr_decode_C.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\src\grib_dumper_class_bufr_decode_filter.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\src\grib_dumper_class_bufr_decode_fortran.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\src\grib_dumper_class_bufr_decode_python.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\src\grib_dumper_class_bufr_encode_C.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\src\grib_dumper_class_bufr_encode_filter.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\src\grib_dumper_class_bufr_encode_fortran.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\src\grib_dumper_class_bufr_encode_python.c"
 				>
 			</File>
 			<File
@@ -1389,6 +1433,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\..\src\grib_dumper_class_grib_encode_C.c"
+				>
+			</File>
+			<File
 				RelativePath="..\..\..\src\grib_dumper_class_json.c"
 				>
 			</File>

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/eccodes.git



More information about the debian-science-commits mailing list